<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Btw, I must say, that Modula-3 often bucks the trend, often with reason and benefit.<BR>
However the "trend" has a lot of people behind it, using it, fixing it, making sure it works.<BR>
The "trend", the popular practice, would include put the files in /usr/local/cm3/lib and not pkg.<BR>
  Or, well, pkg could be an unused copy, but that's fairly pointless and wasteful.<BR>
 <BR>
My use of hardlinks is not exactly "trendy".<BR>
But I was kinda sorta not breaking the "pkg philosophy".<BR>
It's like the putting an extra unused copy in pkg, but without much space wastage (just directory entries)<BR><BR>
At least then the whole symlink/root thing can go away at least.<BR>
Though just using a relative path to get the source file or copying and commiting a smaller piece of it, would be ok..if someone wants hardlink primitive in cm3 for some reason still.<BR>
 <BR>
 <BR>
The runpath won't be huge then also, no matter how all the other debating goes.<BR>
 <BR>
 <BR>
I need some time to settle down and think about it and /try it out/ but at the moment I'm tempted by the ditching of pkg for .so files and just them in lib. It will require probably new builder and config file changes.<BR>
Really the current hardlink solution is extremely close to this, but again, also not "trendy".<BR>
.a/.sa files would remain where they are, in pkg, though, of course, there is "very trendy" precedent against that too.<BR>
 <BR>
And then, er...what is left in pkg?<BR>
 <BR>
 - Jay<BR> <BR>
<HR id=stopSpelling>
From: jay.krell@cornell.edu<BR>To: jay.krell@cornell.edu; hosking@cs.purdue.edu; m3devel@elegosoft.com<BR>Date: Thu, 2 Jul 2009 19:23:55 +0000<BR>Subject: Re: [M3devel] ROOT<BR><BR>
<STYLE>
.ExternalClass .EC_hmmessage P
{padding:0px;}
.ExternalClass body.EC_hmmessage
{font-size:10pt;font-family:Verdana;}
</STYLE>
<BR><SPAN>>> But why would you compile a new cm3 with an old m3core?</SPAN><BR><SPAN></SPAN> <BR><SPAN>That is what the "release" builds do on the Tinderbox.</SPAN><BR><SPAN>  If you can fix that, please do. :)<BR>Notice how I broke them the other day?<BR>But not the "last ok" build?</SPAN><BR><SPAN><BR>They start with a 5.4 compiler.<BR> They do NOT build m3core, libm3.<BR> Not sure about m3cc.<BR> They start with sysutils, then, in whatever order,<BR>   m3quake, m3middle, m3front, m3back, cm3.<BR> Then they use that new cm3 to build<BR>   m3cc if not done already <BR>  (clean)<BR>   m3core, libm3, sysutils, m3front/quake/back/middle, cm3.<BR><BR>At some point, you know, cm3 could not build m3core, when<BR>cm3 didn't know about LONGINT and m3core used it.<BR>I don't know if 5.4 is such a version.<BR></SPAN> <BR><SPAN></SPAN> <BR><SPAN> > I thought the use of -rpath overcomes the need for LD_LIBRARY_PATH?</SPAN><BR><SPAN></SPAN> <BR><SPAN>That's not the entire story.</SPAN><BR><SPAN>If you use -rpath and point to /usr/local/cm3/pkg/foo/linux, then</SPAN><BR><SPAN>  - you end up with a huge presumably inefficient runpath</SPAN><BR><SPAN>   This can be addressed by using /usr/local/cm3/lib instead.</SPAN><BR><SPAN></SPAN> <BR><SPAN>  - you end up with insecure /tmp for distribution builds</SPAN><BR><SPAN>  This can be addressed by using $origin or changing how distribution builds are done.</SPAN><BR><SPAN></SPAN> <BR> - You can't "easily" move the install. Though there are utilities in various OSes to edit the paths later, or you can relink upon install. I didn't make that strategy up.<BR><BR><SPAN>  > Is LD_LIBRARY_PATH so bad if you insist on moving the libraries someplace other than the rpath used in their linkage?</SPAN><BR><SPAN></SPAN>
<BLOCKQUOTE><SPAN></SPAN> <BR><SPAN>I don't understand. Right, if you want to move stuff around, LD_LIBRARY_PATH is one solution. $origin is another. They aren't equivalent and they have various pluses/minus. Searching the web definitely leads me to favor $origin.</SPAN><BR><SPAN>"The Sun linker developer say so." Plus, LD_LIBRARY_PATH is not scoped to a particular executable, unless you use wrapper scripts. /etc/ld.so.conf or such on birch including /usr/local/cm3/lib broke my own use of my $HOME/cm3/bin, because those binaries are supposed to use $HOME/cm3/lib, but there is (often) just one LD_LIBRARY_PATH, again, unless you write wrapper scripts.</SPAN><BR><SPAN></SPAN> <BR>
<DIV>If we force everyone to install to /usr/local/cm3 or /opt/cm3, the issue is reduced, granted<BR></DIV>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE>
<BLOCKQUOTE><SPAN>- Jay</SPAN><BR></BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE>
<BLOCKQUOTE><SPAN>________________________________</SPAN><BR></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>CC: <A href="mailto:m3devel@elegosoft.com"><A href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</A></A></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>From: <A href="mailto:hosking@cs.purdue.edu"><A href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</A></A></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>To: <A href="mailto:jay.krell@cornell.edu"><A href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</A></A></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Subject: Re: [M3devel] ROOT</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Date: Thu, 2 Jul 2009 12:40:18 -0400</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>I'm not talking about m3overrides. That is a arguably a special-purpose hack. We shouldn't layer a hack into the *normal* build process.</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Antony Hosking | Associate Professor | Computer Science | Purdue University</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>305 N. University Street | West Lafayette | IN 47907 | USA</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Office +1 765 494 6001 | Mobile +1 765 427 5484</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>On 2 Jul 2009, at 12:19, Jay wrote:</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Seems broken to me to depend on</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>the source directory structure</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Like m3overrides? But yes, I agree.</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>m3overrides seems broken too.</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>- Jay</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>----------------------------------------</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>From: <A href="mailto:hosking@cs.purdue.edu"><A href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</A></A></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>To: <A href="mailto:m3devel@elegosoft.com"><A href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</A></A></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Date: Thu, 2 Jul 2009 11:49:34 -0400</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Subject: [M3devel] ROOT</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Where did variable ROOT come from? Do I really need to define it?</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>Seems broken to me to depend on the source directory structure as it</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN>sets that structure in stone.</SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE><SPAN></SPAN><BR></BLOCKQUOTE></BLOCKQUOTE><SPAN></SPAN>
<DIV><BR><SPAN></SPAN><BR></DIV></BLOCKQUOTE></body>
</html>