[M3devel] FW: buildlocal vs. buildglobal vs. buildship explanation

Jay jayk123 at hotmail.com
Sat Jan 19 01:50:35 CET 2008


Besides getting truncated, newlines often get stripped from my emails.
I wish for working email..




From: jayk123 at hotmail.comTo: m3devel at elegosoft.comSubject: buildlocal vs. buildglobal vs. buildship explanationDate: Sat, 19 Jan 2008 00:47:11 +0000


I'm not sure I can explain this well or if I fully understand it.
 "Ship" means "Install"
 
Let's say your install is atc:\cm3
and your source is at
c:\dev2\cm3
(I would use dev, but Unix took it.)
Depending on the state of things, you probably two of many things:
c:\cm3\pkg\libm3\nt386\libm3.libc:\cm3\pkg\libm3\nt386\libm3.dllc:\dev2\cm3\m3-libs\libm3\nt386\libm3.libc:\dev2\cm3\m3-libs\libm3\nt386\libm3.dll
 You will have more in \dev2\cm3\m3-libs\libm3\nt386.
When you build stuff, you can use the installed dependencies or the just built dependencies.
buildlocal uses the just built dependencies.
buildglobal uses the installed dependencies
buildship build and ships (installs) each directoryIt does it in one pass:  buildship pkg1 pkg1  =>   build pkg1       ship pkg1       build pkg2       ship pkg2
and NOT        build pkg1       build pkg2       ship pkg1       ship pkg2
You may only ship/install outputs that are builtglobal.Outputs are presumed to only be valid if "amidst" dependencies thatmatch the declarations and such they were built against -- i.e. the headers, in C.
If you are starting with a minimal install, with just m3core and libm3, then you mustbuildship and you must do it in dependency order. (I just derived this rule, might be wrong.)
It only matters for certain types of changes, and then it can really matter.
You might change the format of some compiler-produced runtime-consumed data.
You might have a bunch of .sos/.dlls. They can only work with each other  if they match in certain ways. Again, ways which don't change that often,  but sometimes do -- like changing public types.
 This is why you can get "fingerprint mismatches" -- when code has different  notions as to a type definition.I guess that is when the "ship checking" is either inadequate or circumvented.
 It makes me wonder.What if there was a compilation mode in which all types were opaque.If all record field access to records defined in other packages were implementedby non-inlined dynamically linked getter/setter functions.It would be slow.
 It would be much more amenable to type changes -- removal/renaming/retyping ofexisting fields being the remaining "problems".Actually adding would be a problem too, clients of the new could not run against the old.
  - Jay
_________________________________________________________________
Climb to the top of the charts!  Play the word scramble challenge with star power.
http://club.live.com/star_shuffle.aspx?icid=starshuffle_wlmailtextlink_jan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20080119/8e0ea4b9/attachment-0001.html>


More information about the M3devel mailing list