<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
<DIV>  > Sounds like your upgrade script</DIV>
<DIV> </DIV>
<DIV>Based on someone else's upgrade.sh.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> > The alternative is to fold sysutils into m3core, where it can be used directly</DIV>
 <BR>
  Merging sysutils into m3core doesn't quite work,  <BR>  again only or due to bootstrapping from older builds.  <BR>
<BR>  The compiler uses sysutils. Older builds don't have it at all,  <BR>  and can't build m3core...but maybe again, make that hand patch  <BR>  Long.Rep = INTEGER? Or have an up to date compiler.  <BR> <BR><BR> <BR>  Pointless statement I'm making though, it devolves to:  <BR>  <BR>  <BR>    - have an up to date m3core in bootstrap   <BR>    - or have sysutils in bootstrap, which implies up to date m3core   <BR>    - or merge sysutils with m3core, which implies up to date m3core (and the second)   <BR>
   => "have an up to date m3core" (and LONGINT capable compiler)  <BR>
 <BR>
And I think merging them is a fine idea.<BR>
I generally like fewer larger pieces of reusable code, though<BR>
the counterpoint is to have more smaller independently changable pieces.<BR>
 <BR>
<BR> Probably the scripts and/or m3makefiles should probe the compiler version <BR> and/or m3core version and/or sysutils presence and error clearly if it is too old/absent. <BR>
<BR> Possibly some "feature detection" feature is needed. <BR>
<BR> The compiler can just define Quake variables willy/nilly. <BR>  if defined("HAS_LONGINT")  <BR>
 Less clear how to probe m3core capability. <BR>   Can try compiling a little program against the old WaitProcess signature. <BR>   I'm leary of anything that resembles autoconf though (though I have autoconf-ish<BR>   stuff in my config files already, probing some cm3cg and cm3 behavior). <BR>
  Oh...I looked at WaitProcess history. It looks like I introduced it, in 2008. <BR>  So..while it never returned the full status word, there also wasn't much history <BR>   to change. <BR>
  Compiler could expose m3core functionality via variables too, though that..is wrong.<BR>   It could only expose the m3core it is linked to, not the one it is building.<BR>   I guess the only way really is to define a version or date constant and folks<BR>    can write constant expressions based on it, though that doesn't get you very far.<BR>
<BR> Less clear how to correctly probe for package existance. <BR> Easy to do ad-hoc by probing package store files, not sure what is the right way. <BR>
 <BR>
 <BR>
  I also want to try this "import_pkg" directive I see in the docs. It might help a lot here,<BR>  if I understand it, and if it actually exists and resembles the doc I read.<BR>
  It sounds like it recompiles a package's source as part of another package, statically<BR>
   linking it. It would be bloating in the absence of build_standalone(), but not in its presence. <BR>
 <BR>
 <BR>
 > No!  I did not want to do have this hack <BR>
<BR> Are the hacks this time in sysutils really so bad?<BR> m3core is left unadulterated.<BR> sysutils assumes waitpid(0) won't deadlock, which is true of kernel threads and cm3's use.<BR>
 <BR> - Jay<BR><BR><BR><BR>

<HR id=stopSpelling>
<BR>
From: hosking@cs.purdue.edu<BR>To: jay.krell@cornell.edu<BR>Date: Wed, 14 Jan 2009 10:11:36 +1100<BR>CC: jkrell@elego.de; m3devel@elegosoft.com<BR>Subject: Re: [M3devel] [M3commit] CVS Update: cm3<BR><BR><BR>
<DIV><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV style="WORD-WRAP: break-word"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate"><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV>On 14 Jan 2009, at 01:54, Jay wrote:</DIV></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></DIV></SPAN></DIV>
<DIV><BR class=EC_Apple-interchange-newline>
<BLOCKQUOTE><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"> > fix for old compilers that can't compile LONGINT: define LongRep.T = INTEGER<BR><BR>Is that what bootstrapping should do?<BR> Automate that little patch for the first pass and undo it in the second?<BR> Then always building in dependency order?</DIV></SPAN></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>I would prefer to get all the bootstrap archives LONGINT-capable.  Just do the patch by hand to build the initial archives and then forget about it.</DIV><BR>
<BLOCKQUOTE><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Tonight I was trying to build from PPC_DARWIN 5.5.0.<BR>I figured, heck, maybe it supports LONGINT already, maybe I should just try<BR>building up in dependency order.<BR>But then I hit the problem of Compiler.i3 mismatch due to new targets.</DIV></SPAN></BLOCKQUOTE>
<DIV><BR></DIV>
<BLOCKQUOTE><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">So...is that correct?<BR>Does building in dependency order predictably fail if compiler has fewer targets than runtime?<BR>But starting with existing m3core/libm3 and first building the compiler against them predictably works?</DIV></SPAN></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>Yes, it works.</DIV><BR>
<BLOCKQUOTE><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">I've added targets a bunch and usually don't have a problem, but I can't say for certain what<BR>order I do things when I do this.<BR>Certainly "upgrade.py skipgcc" is something I run fairly often.<BR>It is very fast on NT386 (and unlike upgrade.sh, it doesn't build all of std).</DIV></SPAN></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>Sounds like your upgrade script</DIV><BR>
<BLOCKQUOTE><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">For now I put in two small hacks to sysutils, so it works with old m3core.</DIV></SPAN></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>No!  I did not want to do have this hack.  Let's just fix the boot archives to handle new m3core and have sysutils work as expected.  The alternative is to fold sysutils into m3core, where it can be used directly.  That might be a better solution given the dependency.  Thoughts?</DIV><BR>
<BLOCKQUOTE><SPAN class=EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<DIV>
<DIV>
<BLOCKQUOTE><SPAN class=EC_EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<DIV>
<BLOCKQUOTE><SPAN class=EC_EC_EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_EC_EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<DIV>
<DIV>
<BLOCKQUOTE><SPAN class=EC_EC_EC_EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_EC_EC_EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<DIV>
<BLOCKQUOTE><SPAN class=EC_EC_EC_EC_EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_EC_EC_EC_EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<DIV>
<DIV>
<BLOCKQUOTE><SPAN class=EC_EC_EC_EC_EC_EC_Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate">
<DIV class=EC_EC_EC_EC_EC_EC_hmmessage style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"> </DIV></SPAN></BLOCKQUOTE></DIV></DIV></DIV></SPAN></BLOCKQUOTE></DIV></DIV></SPAN></BLOCKQUOTE></DIV></DIV></DIV></SPAN></BLOCKQUOTE></DIV></DIV></SPAN></BLOCKQUOTE></DIV></DIV></DIV></SPAN></BLOCKQUOTE></DIV></body>
</html>