[M3devel] CM3 report compiler compilation

Rodney M. Bates rodney_bates at lcwb.coop
Fri Oct 7 18:17:33 CEST 2016



On 10/07/2016 03:53 AM, Wolfgang Keller wrote:
> I attempted at compiler compilation and found a few peculiar things.
>
> 1. The Result
>
> Critical Mass Modula-3 version d5.10.0
>    last updated: 2015-05-21
>    compiled: 2016-10-07 03:58:31
>    configuration: /home/user/Projekte/M3-Test2/bin/cm3.cfg
>    host: AMD64_LINUX
>    target: AMD64_LINUX
>
> This is how cm3 identifies.
>
> a) "last updated" - since you modified the sources, should there be a younger date?

Yes.  This is now manually updated in scripts/version.quake.

m3devel list:  We need to do this with every commit, or else automate it.

>
> b) compilation results (executables) as well as configuration file have been put into CM3 (Git version) folders and into the "independent" installation of the older version of CM3, i.e. 5.8.6. I see this critical! The independent installation should stay unmodified in its functionality. Users might wish to continue to use it, e.g. when the newer version proves buggy or otherwise undesirable.
>

Yes, we have been working on this.  You can recreate a clean release installation at
any time, but it's a real pain for intermediate versions during development.  I am
very conservative about saving existing versions before touching the compiler or its
core libraries, either by copying critical executable file and library files, or making
whole copies of /usr/local/cm3.

> c) Erroneous execution. When calling "cm3" in the "cm3ide" directory it does not compile and the text result is
>
> -- begin --
> --- building in AMD64_LINUX ---
>
> ignoring ../src/m3overrides
>
> Fatal Error: bad version stamps: ConnFD.i3
>
> inconsistent opaque object info for type _t1541f475
> super type: _te422a136  data: (size: 64, align: 64)  method: (size: 0)
>   => ConnFD.i3
> super type: _te422a136  data: (size: 192, align: 64)  method: (size: 0)
>   => ThreadPThread.m3
>
> -- end --
>

This is almost certainly a need for complete recompile of cm3ide.  Try, in
the cm3ide directory:

cm3 -realclean
cm3


Within a package, the compiler infers from source code what needs to be recompiled
and does so. Between packages, and for certain kinds of changes in machine-level
types, it can only detect incompatibilities.  This is rare.  The messages are
highly uninformative, but fixing them requires changes to the compiler's internal
intermediate representation, which entails widespread, but mundane code changes.
I have undertaken some of this previously, but it hasn't had the highest priority.

>
> 2. The Way to the Result
>
> a) The following script files require the "executable" file attribute in the file system. By default theiy didn't have it set here, causing several broken compilations. Not sure whether Git provides file attributes conservation in this sense, if yes it is recommendable to make these file settings in the Git version!
>

Hmm, all these are already executable in my local directories.  Possibly this was
left over from when we used CVS.  I didn't quickly find anything in git documentation
about what it does with file attribute bits, but the github website labels upgrade.sh
as "Executable File".

> - upgrade.sh in scripts
>
> - do-pkg.sh in scripts
> - pkgmap.sh in scripts
>
> - configure in m3-sys/m3cc/gcc-4.7
> - move-if-change in m3-sys/m3cc/gcc
>
>
> Regards
>
> - Wolfgang
>
>

-- 
Rodney Bates
rodney.m.bates at acm.org


More information about the M3devel mailing list