[M3devel] package groups question

Jay K jay.krell at cornell.edu
Thu Jul 30 02:35:16 CEST 2009



I'm only going to answer partially for now..
 
 
> Are these really all that is needed
> to build the "minimal" binary distribution?

 
It depends on what you mean.
 
 
The answer is more like, what you need to build is cm3, sometimes mklib (Windows), and sometimes cm3cg (non-Windows).
 
 
That's it. You don't need any packages at all. You don't need m3core/libm3.
 
 
I setup tinderbox a few times recently.
In all cases I setup a new CM3 environment, consisting of exactly cm3, cm3cg, the config directory and the two line cm3.cfg (these were all non-Windows, so far).
 
 
 
What that lets you do is build the whole system, from the bottom of the dependency tree and on up.
 
 
 
HISTORICALLY there have been some wrinkles here.
And it made pretty good sense, I guess, to draw another line.
Whether or not that will happen again, unclear.
 
 
 
The specific wrinkles were:
 
 
-  Old compiler could not compile a new libm3, if new targets had been added
    That has been fixed. Old compiler can build current libm3, current libm3 can build future libm3 with additional targets. Old compiler and current compiler still can't build many past libm3 versions with a different target list than the compiler
 
- Old compiler cannot compile m3core or libm3 that uses LONGINT.
 
 
Now, I have a suspicion that these issues are not extremely rare but just somewhat rare.
 
 
 
All compilation systems written in themselves have a circularity.
The compiler depends on the compiler.
 
 
 
Sometimes the language changes and sometimes you want to or perhaps must use the new language construct in the compiler. At which you have a transition to make.
 
 
 
Let's imagine, crazy, that all the identifiers were changed to lowercase.
If "just" change the compiler, well then, you can't build the compiler.
 
 
 
You have to make the compiler support both forms, keep using the old form, recompile, then change to the new form, and then you could stop accepting the old form.
 
 
 
I feel like I might be missing something though.
 
 
In any case..what are the scenarios?
 - People who don't want to spend any time compiling anything they didn't write and have a lot of network bandwith.
   Give these people "std" or a bunch of binary packages.
   These people, in the extreme impatience form, would not even like Olaf's workspace packages.
 
 
 - People who want to compile as much as possible from source. They don't trust binaries. They want to be sure they can make changes. They want to be sure they can debug through m3core/libm3. They are correctly nervous that if I build cm3 on OpenBSD 4.5, they won't be able to run it on 4.3.
   Today you give these people cm3, cm3cg, and config files.
   But you can do better, you can give them the assembly for cm3, some uncompiled C for cm3, and "full regular source" for cm3cg. This is almost exactly what DEC SRC 3.6 did and almost exactly (or maybe exactly) what John Polstra's "ezm3" FreeBSD "port" does.
  The difference in DEC SRC is that quake was written in C, so the division 
was slightly elsewhere, though you could think of it the same, just 1) more C and 2) the "build scripts" were written in Quake. We would not be able to use quake, at least for cm3 itself (pylib.py !already! generates a makefile and *.sh for this purpose).
 
 
  - Various (infinite) in between situations
     such as people don't want to compile anything, but also are writing fairly simple command line programs. "min" actually satisfies in many cases.
 Think of the C programmer who uses mainly just printf and malloc. Or the C++ programmer who also uses STL. If you give a programmer m3core/libm3, they are in a similar position.
 
 
 
 
 - Jay



________________________________
> Date: Wed, 29 Jul 2009 19:36:45 -0400
> From: rcoleburn at scires.com
> To: m3devel at elegosoft.com
> Subject: [M3devel] package groups question
>
>
>
>
>
>
>
> In reviewing PkgInfo.txt, I find that the "min" group has the following 3 members:
>
>
> m3-win\import-libs
> m3-libs\m3core
> m3-libs\libm3
>
>
>
> Are these really all that is needed to build the "minimal" binary distribution?
>
>
>
> I also ran across group "front" whose members are:
>
> m3-win\import-libs
> m3-sys\m3cc
> m3-libs\m3core
> m3-libs\libm3
> m3-libs\sysutils
> m3-sys\m3middle
> m3-sys\m3objfile
> m3-sys\m3linker
> m3-sys\m3back
> m3-sys\m3front
> m3-sys\m3quake
> m3-sys\cm3
> m3-sys\mklib
>
>
>
> What is the purpose of this group?
>
>
>
> Just in case anyone is interested, my "do-cm3.cmd" script has the capability to enumerate the package groupings. Here is what I find:
>
>
>
>
> C:\cm3\Sandbox\scripts\win>do-cm3 showtags all
>
> ====== ---------------------------------
> do-cm3, v1.07, 7/29/2009, Randy Coleburn
> ====== ---------------------------------
>
> CM3 ARGS = showtags
> PkgInfo = C:\cm3\Sandbox\scripts\pkginfo.txt
> Pkg Tree = C:\cm3\Sandbox\
> Group = all
>
> Enumerating group tags in "C:\cm3\Sandbox\scripts\pkginfo.txt" ...
> ... one moment please ...
>
> Group Tags:
> ----------
> base
> core
> front
> min
> std
> gui
> comm
> caltech-parser
> m3gnudevtool
> devlib
> tool
> m3gdb
> math
> m3devtool
> obliq
> webdev
> database
> anim
> cvsup
> juno
> demo
> game
> ---END-of-LIST---
>
> Enumerating group "all" ... one moment please ...
>
> Packages in Group="base":
> ------------------------------------------------------------------------------
> import-libs
> m3core
> libm3
> m3middle
> m3quake
> m3scanner
> m3tools
> m3bundle
> mklib
> bitvector
> digraph
> parseparams
> realgeometry
> set
> slisp
> sortedtableextras
> table-list
> tempfiles
> tcp
> tapi
> serial
> ---END-of-List---
>
>
> Packages in Group="core":
> ------------------------------------------------------------------------------
> import-libs
> m3cc
> m3core
> libm3
> patternmatching
> sysutils
> unittest
> m3middle
> m3objfile
> m3linker
> m3back
> m3front
> m3quake
> cm3
> m3scanner
> m3tools
> m3bundle
> mklib
> bitvector
> digraph
> parseparams
> realgeometry
> set
> slisp
> sortedtableextras
> table-list
> tempfiles
> tcp
> ---END-of-List---
>
>
> Packages in Group="front":
> ------------------------------------------------------------------------------
> import-libs
> m3cc
> m3core
> libm3
> sysutils
> m3middle
> m3objfile
> m3linker
> m3back
> m3front
> m3quake
> cm3
> mklib
> ---END-of-List---
>
>
> Packages in Group="min":
> ------------------------------------------------------------------------------
> import-libs
> m3core
> libm3
> ---END-of-List---
>
>
> Packages in Group="std":
> ------------------------------------------------------------------------------
> import-libs
> m3core
> libm3
> windowsResources
> patternmatching
> sysutils
> unittest
> m3middle
> m3quake
> m3scanner
> m3tools
> m3cgcat
> m3cggen
> m3gdb
> m3bundle
> mklib
> fix_nl
> libdump
> arithmetic
> unittest-numeric
> bitvector
> digraph
> parseparams
> realgeometry
> set
> slisp
> sortedtableextras
> table-list
> tempfiles
> tcl
> tcp
> cm3ide
> udp
> libsio
> libbuf
> debug
> listfuncs
> embutils
> m3tk-misc
> http
> binIO
> commandrw
> tapi
> serial
> m3tk
> mtex
> m3totex
> m3tohtml
> m3scan
> m3markup
> m3browser
> cmpdir
> cmpfp
> dirfp
> uniq
> netobj
> netobjd
> stubgen
> events
> rdwr
> sharedobj
> sharedobjgen
> odbc
> postgres95
> db
> smalldb
> stablegen
> stable
> X11R4
> ui
> PEX
> vbtkit
> cmvbt
> jvideo
> videovbt
> m3-www/web
> m3-www/proxy
> formsvbtpixmaps
> formsvbt
> formsview
> formsedit
> codeview
> cvsup/suplib
> cvsup/client
> cvsup/server
> cvsup/cvpasswd
> mg
> mgkit
> opengl
> anim3D
> zeus
> m3zume
> synloc
> synex
> metasyn
> obliqrt
> obliqparse
> obliqprint
> obliq
> obliqlibemb
> obliqlibm3
> obliqlibui
> obliqlibanim
> obliqsrvstd
> obliqsrvui
> obliqbinmin
> obliqbinstd
> obliqbinui
> obliqbinanim
> visualobliq
> vocgi
> voquery
> vorun
> webvbt
> recordheap
> rehearsecode
> replayheap
> showheap
> shownew
> showthread
> juno-2/juno-app/pkl-fonts
> juno-2/juno-machine
> juno-2/juno-compiler
> juno-2/juno-app
> cube
> calculator
> fisheye
> mentor
> ---END-of-List---
>
>
> Packages in Group="gui":
> ------------------------------------------------------------------------------
> import-libs
> tcp
> X11R4
> ui
> vbtkit
> cmvbt
> jvideo
> videovbt
> formsvbtpixmaps
> formsvbt
> formsview
> formsedit
> opengl
> webvbt
> kate
> m3-ui/bicycle
> ---END-of-List---
>
>
> Packages in Group="comm":
> ------------------------------------------------------------------------------
> import-libs
> tcp
> udp
> m3tk-misc
> tapi
> serial
> m3tk
> netobj
> netobjd
> stubgen
> ---END-of-List---
>
>
> Packages in Group="caltech-parser":
> ------------------------------------------------------------------------------
> import-libs
> cit_common
> m3tmplhack
> cit_util
> term
> paneman
> paneman/kemacs
> drawcontext
> drawcontext/dcpane
> drawcontext/kgv
> hack
> m3browserhack
> parserlib/ktoklib
> parserlib/klexlib
> parserlib/kyacclib
> parserlib/ktok
> parserlib/klex
> parserlib/kyacc
> parserlib/kext
> parserlib/parserlib
> parserlib/parserlib/test
> ---END-of-List---
>
>
> Packages in Group="m3gnudevtool":
> ------------------------------------------------------------------------------
> m3cc
> m3gdb
> ---END-of-List---
>
>
> Packages in Group="devlib":
> ------------------------------------------------------------------------------
> windowsResources
> udp
> libsio
> libbuf
> debug
> listfuncs
> m3tk-misc
> binIO
> commandrw
> tapi
> serial
> m3tk
> m3scan
> m3markup
> events
> rdwr
> deepcopy
> sgml
> ---END-of-List---
>
>
> Packages in Group="tool":
> ------------------------------------------------------------------------------
> m3staloneback
> m3cgcat
> m3cggen
> fix_nl
> libdump
> cmpdir
> cmpfp
> dirfp
> uniq
> ---END-of-List---
>
>
> Packages in Group="m3gdb":
> ------------------------------------------------------------------------------
> m3gdb
> ---END-of-List---
>
>
> Packages in Group="math":
> ------------------------------------------------------------------------------
> arithmetic
> unittest-numeric
> ---END-of-List---
>
>
> Packages in Group="m3devtool":
> ------------------------------------------------------------------------------
> cm3ide
> m3totex
> m3tohtml
> m3browser
> netobj
> netobjd
> stubgen
> sharedobj
> sharedobjgen
> stablegen
> stable
> formsview
> formsedit
> recordheap
> rehearsecode
> replayheap
> showheap
> shownew
> showthread
> pp
> ---END-of-List---
>
>
> Packages in Group="obliq":
> ------------------------------------------------------------------------------
> embutils
> synloc
> synex
> metasyn
> obliqrt
> obliqparse
> obliqprint
> obliq
> obliqlibemb
> obliqlibm3
> obliqlibui
> obliqlibanim
> obliqsrvstd
> obliqsrvui
> obliqbinmin
> obliqbinstd
> obliqbinui
> obliqbinanim
> obliqlib3D
> visualobliq
> vocgi
> voquery
> vorun
> ---END-of-List---
>
>
> Packages in Group="webdev":
> ------------------------------------------------------------------------------
> http
> m3-www/web
> m3-www/proxy
> webvbt
> deckscape
> webscape
> webcat
> ---END-of-List---
>
>
> Packages in Group="database":
> ------------------------------------------------------------------------------
> odbc
> postgres95
> db
> smalldb
> ---END-of-List---
>
>
> Packages in Group="anim":
> ------------------------------------------------------------------------------
> codeview
> mg
> mgkit
> anim3D
> zeus
> m3zume
> mentor
> ---END-of-List---
>
>
> Packages in Group="cvsup":
> ------------------------------------------------------------------------------
> cvsup/suplib
> cvsup/client
> cvsup/server
> cvsup/cvpasswd
> ---END-of-List---
>
>
> Packages in Group="juno":
> ------------------------------------------------------------------------------
> juno-2/juno-app/pkl-fonts
> juno-2/juno-machine
> juno-2/juno-compiler
> juno-2/juno-app
> ---END-of-List---
>
>
> Packages in Group="demo":
> ------------------------------------------------------------------------------
> cube
> calculator
> fisheye
> ---END-of-List---
>
>
> Packages in Group="game":
> ------------------------------------------------------------------------------
> m3-games/badbricks
> m3-games/columns
> m3-games/fours
> m3-games/maze
> m3-games/solitaire
> m3-games/tetris
> ---END-of-List---
>
> ===END do-cm3===
>
> C:\cm3\Sandbox\scripts\win>
>
>
>
>
> Regards,
>
> Randy Coleburn


More information about the M3devel mailing list