[M3devel] [Modula-3] Release engineering

Peter Eiserloh eiserlohpp at yahoo.com
Wed May 6 19:04:12 CEST 2009


Hi Olaf,

Please help support distribution packaging (various Linux, or BSD ports)
by adding to your list:

  o Design the cm3 installation to be long term.

  o Allow cm3 to be installed into /usr, instead of /usr/local.

  o Allow installation to temporary root during package building.

  o Specify guidelines for which m3.pkgs go into which distribution
    packages (rpm, deb).  List the suggested package names.

  o Documentation: Write manual page for cm3.

  o Conform where possible to the FHS.

  o Allow easy cross compiling.

  o (lower priority) Use long form options.

Explaination: 

(0) Only the administrator should install packages into the system.
If a user wants to play with a recent version of CM3, they should be
able to install into their home directory.  This will allow the 
other users of the machine to continue using the known good compiler
even though one user is experimenting with buggy new features of
the compiler.  This will also allow easier cross compiling.

(1) /usr/local is only for files/packages manually installed
by the superuser.  Distributions are expected (in debian, required) to
install into "/usr" (or if required to boot, into "/", eg., /sbin/mount).

(2) The build process of a package usually installs all files into a
subdirectory where the internal paths mimic the final installation paths
(/home/peter/src/modula3/cm3/src-all-20090506/debian/cm3-compiler).
Libraries and executable's link paths should be adjusted to their
final installation paths, not the temporary.  

(3) May I suggest this start: cm3-compiler, cm3-corelibs (minimal
install: m3core, libm3 binaries), cm3-devel (source code to m3core,
and libm3), ..., etc.

What I don't want to see is the mass installation of a complete
development system simply because the user wanted to use a program
written in Modula-3.  

(4) Debian at least requires a manual page for executables.  A bug
will be written against any package that installs user (or superuser)
binaries without a manual page.

(5) The Filesystem Hierarchy Standard (FHS) http://www.pathname.com/fhs/
says things such as libraries are not execuables invocable by the user
so don't put them in $(prefix)/bin.  Okay, MS-Windows violates this all
the time, but they are "special".  Can we move cm3.cfg out of the binary
directory (where there should only be executables), and into 
${CM3_PATH}/etc.

Something like:
   mypath := FindAbsolutePath(argv[0]);
   cm3_bin_path := DirName(mypath);
   cm3_path := DirName(cm3_bin_path);
   cm3_etc_path := cm3_path & "/etc";
   cm3_config_filename = cm3_etc_path & "/cm3.cfg";

(6) Cross compiling: the cm3.cfg should be a one liner, which includes
the configuration of the installed target machine .  
   cm3.cfg:
      Include("AMD64_LINUX");

When cross compiling the user should be able to specify the actual config file for the desired TARGET machine.  

(7) Although each program is free to define is command line arguments
and options, a set of conventions has been in place for at least
15 years or more.  GCC of course (being an older program) violates
these "recent" conventions.

Options start with a dash.  Single letter options start with a
single dash, and multiple options may be collected into one
sequence (ie, "-shared", means -s, -h, -a, -r, -e, -d).  Long
options use two dashes and signify that the sequence of characters
are to be used as a complete string (ie, "--shared" means generate
a "shared" library).  Long options that take an argument are formed
with an equal sign (eg. "--config=/home/peter/cm3/etc/cm3.cfg").

Instead of "-version" with a single dash, long form options use
two dashes "--version", a single dash "-v" could also be mapped
to be an alias of that option.


Sorry for being long winded, but my system administrator is a 
real hard ass, every time I see myself in the mirror, he reminds
me of that.

Peter

+--------------------------------------------------------+
| Peter P. Eiserloh                                      |
+--------------------------------------------------------+


      



More information about the M3devel mailing list