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@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