[gambit-list] Bootstrapping from the Gambit github repo

Marc Feeley feeley at iro.umontreal.ca
Thu Apr 12 15:46:21 EDT 2012


I have been looking into the issue of bootstrapping Gambit directly from the sources on github.  Currently this is not possible.  The latest .tar.gz release (obtained from the Gambit wiki) needs to be built, and then the latest commits must be pulled and compiled in a final "make".  This process confuses novice users and is generally a pain.  It would be much better if a clone of the github repository gave all the required pieces (as is the case for most other projects on github).

This "direct bootstrap" is not possible because the .c files generated by the Gambit compiler from the .scm files when compiling itself are not stored on the github repository.  The generated .c files are very large and including all versions would make the repository considerably larger.

I am proposing to include the generated .c files in the repo, but only commit changes occasionally.  Basically, every time a new release would be published (i.e. a .tar.gz with a new version number) the new .c files would be committed to the repository.

I have put on github a mockup of the sources to demonstrate how this would work.  The repo is at https://github.com/feeley/test9 .

To build the mockup from github, start with these commands:

  git clone git at github.com:feeley/test9.git
  cd test9
  make bootstrap

This will create the gsc-boot executable (the Gambit compiler which can be used to recompile the Gambit .scm files from scratch should they be changed, or new versions pulled from the repo).  Now we can remove the (possibly stale) generated .c files obtained from the repo and regenerate the correct .c files with the new gsc-boot:

  make bootclean
  make

When commiting changes to the repo, two make targets can be used:

  make commit

when the generated .c files should not be added to the repository, and

  make commit-major

when the generated .c files should be added to the repository (typically when a new release is created).

I would be interested in having some feedback on this change before going ahead with them on the actual Gambit source code.

Marc




More information about the Gambit-list mailing list