[M3devel] FW: buildlocal vs. buildglobal vs. buildship explanation
Randy Coleburn
rcoleburn at scires.com
Sat Jan 19 02:35:55 CET 2008
Jay:
I understand the cm3 package and build system. I just didn't know what "buildglobal" meant.
>From your explanation, I take it that buildglobal = (cm3 -build) + (cm3 -ship) together on a per package basis.
If this is true, then buildglobal == buildship; i.e., there is no difference.
You stated that the default of the script is buildlocal and I gather buildlocal = (cm3 -build -override). If so, I now see why I was confused. The default for the compiler is not to include the overrides file (at least that is my recollection from the 4.1 days--maybe its different now). So in my way of thinking, buildlocal = (cm3 -build) without doing any shipping. Perhaps a more self-explanatory option name for (cm3 -build -override) would be "buildoverrides". The system won't let you ship a package built with overrides, so that is why I ran into trouble trying to get everything installed using do-cm3-std without passing the buildship or buildglobal option.
I've always liked the cm3 way of having a private source package tree where folks work on the code and then having a separate public package tree where folks "ship" their finished product. Yes, I know you wind up having the code in two places, but then you can "clean" up the derived files in your private tree to save space if needed.
The old "reactor" documentation did a fairly good job of explaining the cm3 package concept and the idea of public and private repositories. I'm attempting to convert this document into something we can put back in the cvs repository. I have to take out all the trademarks and replace the graphics etc so it is a painful process without the original electronic source. I've resorted to scanning it in via a scanner and making edits.
Regards,
Randy
>>> Jay <jayk123 at hotmail.com> 1/18/2008 7:56 PM >>>
one more try darnit....
From: jayk123 at hotmail.com
To: jayk123 at hotmail.com
Subject: buildlocal vs.
Date: Sat, 19 Jan 2008 00:55:31 +0000
"Ship" means "Install"
Let's say your install is at
c:\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.lib
c:\cm3\pkg\libm3\nt386\libm3.dll
c:\dev2\cm3\m3-libs\libm3\nt386\libm3.lib
c:\dev2\cm3\m3-libs\libm3\nt386\libm3.dll
You will have much 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 directory
It does it 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 that
match 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 must
buildship and you must do it in dependncy order.
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.
- Jay
Climb to the top of the charts! Play the word scramble challenge with star power. Play now! ( 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/20080118/51a724ef/attachment-0002.html>
More information about the M3devel
mailing list