[gambit-list] Automatic build system for Gambit

Paul Wolneykien manowar at altlinux.org
Wed Mar 30 05:34:25 EDT 2011


30.03.2011 01:47, Marc Feeley пишет:
> The sources in the git repo are sufficient to build Gambit from scratch.  I think the problem you are experiencing is that when you do a "git pull" the modification date of the .scm files is more recent than the corresponding .c file.  So "make" thinks the .scm files have been modified since the last compilation by gsc-comp (to compile .scm -> .c).
> 
> Could you check if a
> 
>    touch */*.c
>    make
> 
> works?

  No. It results in the following:

[builder at altair gambit-4.6.0]$ touch */*.c
[builder at altair gambit-4.6.0]$ make
making all in include
...
make[1]: Leaving directory `/usr/src/RPM/BUILD/gambit-4.6.0/include'
making all in lib
make[1]: Entering directory `/usr/src/RPM/BUILD/gambit-4.6.0/lib'
LD_LIBRARY_PATH=../lib:../gsi:../gsc: ../gsc-comp
-:~~bin=../bin,~~lib=../lib,~~include=../include -f -c -check _io.scm
/bin/sh: ../gsc-comp: No such file or directory
make[1]: *** [_io.c] Error 127
make[1]: Leaving directory `/usr/src/RPM/BUILD/gambit-4.6.0/lib'
make: *** [all-recursive] Error 1


  Same with `make bootstrap'. It looks for gsc-comp in the source root.
So I've tried to use /usr/bin/gambit (v4.5.3) for that purpose, copying
it to gsc-comp. It results in the following:

[builder at altair gambit-4.6.0]$ touch */*.c
[builder at altair gambit-4.6.0]$ make
making all in include
make[1]: Entering directory `/usr/src/RPM/BUILD/gambit-4.6.0/include'
...
make[1]: Leaving directory `/usr/src/RPM/BUILD/gambit-4.6.0/include'
making all in lib
make[1]: Entering directory `/usr/src/RPM/BUILD/gambit-4.6.0/lib'
LD_LIBRARY_PATH=../lib:../gsi:../gsc: ../gsc-comp
-:~~bin=../bin,~~lib=../lib,~~include=../include -f -c -check _io.scm
...
In file included from ../include/gambit.h:12:0,
                 from _io.c:1342:
../include/gambit-not406000.h:1:2: error: #error "The version indicated
in ___VERSION is not supported by gambit.h"
../include/gambit-not406000.h:2:2: error: #error "You are probably
compiling C code generated by a Gambit compiler earlier or later than
v4.6.0"
../include/gambit-not406000.h:3:2: error: #error "___VERSION will be set
to 406000 to reduce other errors"
make[1]: *** [_io.o] Error 1
make[1]: Leaving directory `/usr/src/RPM/BUILD/gambit-4.6.0/lib'
make: *** [all-recursive] Error 1

  Same with `make bootstrap'.

  May be the bootstrap compiler for v4.6.0 should be built from the
v4.5.3 sources using /usr/bin/gsc v4.5.3?

> 
> By the way, it would be really nice to have an automatic build of Gambit on different systems (RPM, MacPorts, CYGWIN, etc).  Is that something you want to do, or just for your own purposes?

  Yes, it would be nice. I do it for the ALT Linux community purposes :)
The central thing is building gambit-*.rpm directly from the git repo.
When that is configured and works the repo updates and builds can be
handled automatically (up to a build/packaging error).
  Our RPM packages have a lot of metadata: libraries/symbols
provided/required by a package are automatically calculated during the
build process. Having that rich set of metatada the ALTLinux RPM can be
converted to a package for any other distro.
  When the build from a git repo process for x86 (32-64bit) would be set
up, I'll try to port it to the ARM (Marvell) platform.

  The Gear/Hasher build system:

  http://en.altlinux.org/Hasher

  http://en.altlinux.org/Gear

  is mostly a set of portable shell scripts. Potentially these tools can
be ported to any system, including Mac. But as far as I know, some
features of the Linux kernel are used to provide the necessary isolation
for the build process.


  Paul.

> 
> Marc
> 
> On 2011-03-29, at 3:30 PM, Paul Wolneykien wrote:
> 
>>
>>  Hi,
>>
>>  I'm thinking of a semi-automatic system for building new releases of
>> Gambit tracking the main Git repository at
>> http://www.iro.umontreal.ca/~gambit/repo/gambit.git . I suppose the
>> process as follows: when a new release tag is published, the procedure
>> updates the local branch and build a new version of the Gambit, possibly
>> with the help of a previously built one.
>>  The main problem with that is that I can't see a way to provide a
>> consequently updated build environment as stated in
>> http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Contributing_Patches_to_Gambit_Source_Code.
>> The only thing that can be consequently updated is the clean local
>> source tree (with no generated files) as it published at the main Git
>> repository. That's because each build is handled in a separate
>> environment constructing from scratch. However, the result of a previous
>> build is available in the form of RPM package. So I've tried to use a
>> previous version of Gambit (4.5.3) to build the fresh release (4.6.0)
>> linking /usr/bin/gsc to gsc-comp in the source tree root: both `make
>> bootstrap' and `make' finished with an error message about gsc version
>> incompatibility.
>>
>>  Dear community, is it generally possible to build Gambit:
>>
>>  a) having only the sources published at the main Git repository?
>>
>>  b) having only a) and a previous version of Gambit installed?
>>
>>  If not, is the *-devel tarball is absolutely necessary to build
>> Gambit? And if so, can it be prepared from the main Git repository?
>>
>>
>>  Best regards,
>>
>>  Paul.
>>
>> _______________________________________________
>> Gambit-list mailing list
>> Gambit-list at iro.umontreal.ca
>> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list




More information about the Gambit-list mailing list