[M3devel] upgrade fails with compilation error in m3quake

Rodney M. Bates rodney_bates at lcwb.coop
Thu Nov 19 22:03:00 CET 2015

It looks like a bootstrap barrier.  My installed compiler does not complain.
The first argument has type LONGCARD, declared at m3-libs/libm3/src/os/Common/File.i3:34
This was changed from CARDINAL in 2010, no doubt to handle big files on 32-bit systems.
The compiler was changed to allow this at similar time.

I made changes to the failing code in QScanner in June of 2014, but it would have had
the same failure even before.

I'm not sure of the easiest way to proceed.  Figuring out what the intermediate step
would be could be tedious.  You might consider just editing the type in File.i3
to CARDINAL temporarily, to build a compiler, then change it back and recompile with
that.  But then, there could possibly be other such problems.

But in general, we should have an upgrade procedure that anybody can use, starting with
the release compiler, and no such manual stuff.  I suppose trying to compile the
current libm3 before the current compiler is the source of the problem.  Can you easily
recompile the compiler with your old libraries?   We seem to have had some bootstrap
barriers that require doing the libraries before the compiler and others the other
way around, which makes having a general procedure problematic.

Any ideas, Jay?

On 11/19/2015 01:42 PM, Olaf Wagner wrote:
> Anybody feels guilty?
> Or do I just need an intermediate step now to upgrade from a compiler
> from 2009?
> === package m3-sys/m3quake ===
>   +++ cm3 -build -DROOT='/home/wagner/work/cm3-github-ssh' $RARGS  && cm3 -ship $RARGS -DROOT='/home/wagner/work/cm3-github-ssh'  +++
> --- building in FreeBSD4 ---
> ignoring ../src/m3overrides
> new source -> compiling Quake.i3
> new source -> compiling QCompiler.i3
> new source -> compiling QCode.i3
> new source -> compiling QValue.i3
> new source -> compiling QVSeq.i3
> new source -> compiling QVTbl.i3
> new source -> compiling QVal.i3
> new source -> compiling QPromise.i3
> new source -> compiling QPromiseSeq.i3
> new source -> compiling QMachine.i3
> new source -> compiling QToken.i3
> new source -> compiling QIdent.i3
> new source -> compiling Quake.m3
> new source -> compiling QToken.m3
> new source -> compiling QIdent.m3
> new source -> compiling QScanner.i3
> new source -> compiling QScanner.m3
> "../src/QScanner.m3", line 47: VAL: first argument must be an INTEGER
> 1 error encountered
> Olaf

Rodney Bates
rodney.m.bates at acm.org

More information about the M3devel mailing list