[M3devel] CM3 RELENG: suggestion for distribution packages

jay.krell at cornell.edu jay.krell at cornell.edu
Fri May 29 04:48:02 CEST 2009


I missed a question: we only currently support Microsoft Visual C++  
for NT386, pretty much any version, and gcc for MIN/GNU but consider  
those maybe not well supported by me. I am aware of a number of  
alternatives such as OpenWatcom, Digital Mars, Borland, lcc, old  
Symantec, old Metrowerks, I have used them all some but nothing real  
yet and not near top of my list by far.

  - Jay (phone)

On May 28, 2009, at 6:17 PM, Jay <jay.krell at cornell.edu> wrote:

>   >  I know Jay has been making great strides with the config files,  
> but
>   > I don't believe everyone is "clued-into" what has been done and  
> the rationale behind it
>
> Here's a summary:
>
>  - The config files used to each be
>  independent, but /highly/ redundant.
>  They had a lot of identical or nearly-and-could-be code.
>  I factored a lot, so there is shared code.
>  Worse -- besides the redundancy between the
>  different platforms, every config file was duplicated
>  twice in the tree with very minor differences.
>  It was confusing and a maintenance problem.
>
>  - The installer would write full paths
>    to compiler/linker. That is one viable approach.
>    If people really like that, we should factor it in somehow.
>    What I do instead is just run leaf "gcc", "cl", etc.
>    and depend on $PATH search.
>    Also regarding paths to libraries, I found what
>    they were on each of my system and assume they
>    are pretty well standardized. If someone really
>    has a custom layout, they will need to edit the files.
>    If someone doesn't want the gcc that comes first
>    in $PATH, they will either need to change $PATH
>    or edit the file.
>
>    At some point, you know, if someone wants something
>    different, they can also edit the source to cm3 and rebuild it.
>    If the config files can be made correct enough
>    for enough people, you can consider these things
>    in the same category.
>
>    You know, you don't install all *.sh, *.pl, *.py code to /etc.
>    You pick some "knobs". Not too many, not too few.
>    There were generally more than necessary before I believe.
>    But maybe I'm wrong here?
>
>    On *BSD some things would not be in the default install, but
>   there'd be a port/package, so where the port installed, I'd use  
> that path.
>   This is grayer, since you can also install things yourself and the
>   default from "upstream" might be different.
>
>   On Mac OSX I would generally get the third party package and
>   find its default.
>
>   e.g. postgresql.
>
>   Something more is probably needed here, like file existance checks.
>
>  - Full path to the cm3 install implemented via path() and walking
>    from there. path() is the path of the quake config file
>    that calls it. cm3.cfg knows it is next to the compiler, or maybe
>    in a sibling directory to it, that the install root is path()/..
>
>  - I have some semantic changes such as use of $ORIGIN,
>  use of hardlinks instead of symlinks (so $ORIGIN works better),
>  updating NT386 for use with current and older tools, to
>  statically link in shared data (the set/hand stuff).
>
>
>  - I introduced an optional toplevel cm3.cfg that
>    probes around for the "real" config file, such
>    as to use the current one in the source tree,
>    so I don't have to keep copying it around, or
>    or to use one based on an an environment variable
>    specifying target platform. Probing around
>    in the source tree is not appropriate for
>    a "release" version and that is taken into
>    account. There is also probing around in the release
>    directory. There is also probing for a backend,
>    again for cross build purposes. The exact probed
>    paths and their sequence is certainly up to debate.
>
>  - In terms of compatibility, there are also runtime checks, so that
>    older cm3cg isn't given an -m32 flag that is rejects, stuff like  
> that.
>    Also workarounds for bootstraping from a compiler with the old GC  
> implementation.
>
>   After this release I think we'll declare that you can only  
> bootstrap from
>    this release or newer and remove various compatibility hacks.  
> Maybe.
>
>  - Jay
>
>
> Date: Thu, 28 May 2009 11:52:49 -0400
> From: rcoleburn at scires.com
> To: m3devel at elegosoft.com
> Subject: Re: [M3devel] CM3 RELENG: suggestion for distribution  
> packages
>
> Of course, there are platforms that don't use etc, like Windows.
>
> I'm ok with whatever approach makes sense for the given platforms  
> wrt configuration files; however, I will point out that for those of  
> us who've been using Modula-3 for a long time, that we are used to  
> having to mess around with the config files to get things to work  
> correctly.  I'm all for simplifying things and would love NOT to  
> HAVE to mess with the config files, as long as whatever approach is  
> taken allows for adequate flexibility in adapting to particular  
> installation requirements.
>
> On a Windows platform, most programs are stored in %ProgramFiles%,  
> typically "C:\Program Files", but CM3 is more than a program, it is  
> a repository of packages etc.  Typically, ordinary users don't get  
> write privileges to %ProgramFiles%.  So, I've always put my  
> installation in "C:\cm3", but then some folks might have multiple  
> drives and partitions and want to put it somewhere else.  Indeed, I  
> once used "D:\cm3".
>
> Another thing that the config files had to be adapted for in the  
> past was where to find the C compiler, libraries, and linker.   
> Today, we have the free Microsoft Visual Studio tools, but there are  
> other vendors of C compilers and linkers.  Which of these will the  
> config files support?
>
> Critical Mass also adapted the config file to tell "Reactor" where  
> to find certain things.  Of course, now we have CM3IDE as the  
> replacement for Reactor and I've tried to adapt the code to deal  
> with some of Jay's changes to the config files.
>
> My 2 cents:  Whatever is decided, we need to document it, and make  
> it widely known (i.e., publicize it) so that us old timers  
> understand whether we should or should not keep tweaking the config  
> files.  I know Jay has been making great strides with the config  
> files, but I don't believe everyone is "clued-into" what has been  
> done and the rationale behind it, hence the need for some publicized  
> documentation.  Then, we need to go back and revise old  
> documentation, such as that with CM3IDE, to reflect the new  
> reality.  I can make doc changes, but I need to understand new  
> content first.
>
> Regards,
> Randy
>



More information about the M3devel mailing list