[M3devel] m3cgc1: fatal error: *** bad M3CG version stamp (0x100), expected 0x110
Rodney M. Bates
rodney_bates at lcwb.coop
Fri May 29 05:18:36 CEST 2015
On 05/28/2015 05:15 PM, Rodney M. Bates wrote:
>
>
> On 05/28/2015 12:06 PM, Olaf Wagner wrote:
>> On Thu, 28 May 2015 17:56:20 +0200
>> John Marino <adacore at marino.st> wrote:
>>
>>> On 5/28/2015 17:01, Rodney M. Bates wrote:
>>>> I don't know why that happened. I don't have experience with the
>>>> Python scripts.
>>>>
>>>> Jay?
>>>>
>>>> Also, this script built the compiler before the support libraries
>>>> m3core and libm3. I think there may have been one bootstrap scenario
>>>> where this was the way it needed to be done, but usually it is the
>>>> other way around--these two libraries first.
>>>>
>>>>> Am I doing some kind of obvious mistake?
>>>>>
>>>> No, it's a bootstrap barrier. These pop up somewhat regularly. We
>>>> all usually just build from the most recent development build, which
>>>> works for getting new things tried out initially. But we need to
>>>> make a habit of regularly rebuilding from the previous release to
>>>> flush these out.
>>>
>>> Olaf said, IIUC, that the current code can't be built by the last
>>> release compiler. Putting aside that I believe that should be a hard
>>> requirement for the project, it sounds like maybe the last release can
>>> build it if the build order is fixed (e.g. a better upgrade.py script)?
>>> It's not clear to me what the real situation is.
>>
>> No, this is a misunderstanding. I just said or tried to say that there
>> is no script (yet) that is smart enough to do all the things necessary to
>> build the current compiler on base of 5.8.6.
>>
>>>> You might try scripts/do-cm3-front.sh realclean
>>>> scripts/do-cm3-front.sh buildship
>>>>
>>>> (I usually save /usr/local/cm3/bin/cm3 and /usr/local/cm3/bin/cm3cg
>>>> at this point. The step below does it somewhat redundantly, but only
>>>> one level, unless the version number changes.)
>>>>
>>>> scripts/install-cm3-compiler.sh upgrade.
>>>> From here, you are using the new compiler.
>>>> scripts/do-cm3-<whatever-else-you-want>.sh buildship
>>>>
>>>> That this works, starting with the previous release compiler, is my
>>>> criterion for having removed bootstrap barriers.
>>
>> Rodney, have you really tried that? I'm not sure the steps above will
>> work. I had the feeling that we're missing some intermediate releases, but
>> I might be wrong there.
>>
>
> I have done it a number of times for AMD64_LINUX and LINUXLIBC6, using the
> last release compiler, and successfully building a development compiler,
> for several different development snapshots. The last time was probably
> a few months ago, and I don't think much has happened in the compiler
> and library packages that would make them not compile. It will take a
> me a little time, but I will try it again on these platforms.
>
OK, this is working for me on LINUXLIBC6.
With the release compiler installed:
$ cm3 -version
Critical Mass Modula-3 version 5.8.6
last updated: 2010-04-11
compiled: 2013-09-13 21:38:06
configuration: /usr/local/cm3/bin/cm3.cfg
host: AMD64_LINUX
target: AMD64_LINUX
And a freshly pulled git repository from github,
in cm3/scripts:
1) $ ./do-cm3-all.sh realclean #Clean everything
2) $ ./do-cm3-front.sh buildship #Build a compiler & its support libraries
All compiles succeeded.
4) $ ./install-cm3-compiler.sh upgrade # Install the compiler
$ cm3 -version
Critical Mass Modula-3 version d5.10.0
last updated: 2015-05-21
compiled: 2015-05-29 02:54:41
configuration: /usr/local/cm3/bin/cm3.cfg
host: AMD64_LINUX
target: AMD64_LINUX
Now repeat steps 1 and 2. This will use the newly compiled head compiler.
to rebuild itself. All compiles succeeded.
Finally, $./do-cm3-all.sh buildship #Build the rest.
This compiles all the remaining stuff, none of which is involved in bootstrapping.
All compiles succeeded.
In the past, I often will install the second-time-compiled head compiler and
do it all a third time. After getting this far, this has never failed, and
I didn't do it this time.
New package libunicode uses an addition to Compiler.i3 that is not in the release, so
you have to install the new compiler before compiling libunicode.
>>> My work takes place within a Makefile and moving things in /usr/local
>>> (for example) is actually illegal. Now I could do all this manually for
>>> the purpose of building a new bootstrap, but as I mentioned in a
>>> previous post, it might be more effective to emulate what you guy have
>>> done: essentially build a series of bootstraps at strategic hashes until
>>> I've acquired a compiler that can build this (and then use that product
>>> as bootstrap for FreeBSD ports).
>>>
>>> If I did that approach, I could use a hint on the hashes to try...
>>
>> We should be able to script something that sets up the current compiler
>> at least on a given specific platform with a well-defined environment.
>> I might be able to offer more help in the second week of June, if you
>> can wait until then.
>>
>> Olaf
>>
>
--
Rodney Bates
rodney.m.bates at acm.org
More information about the M3devel
mailing list