On Thu, 12 Apr 2012 15:46:21 EDT Marc Feeley feeley@iro.umontreal.ca wrote:
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 a ll 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 commited to the repository.
I think the key idea is that bootstrap .c files must not be in the same place as generated .c files otherwise If/when you make local changes there will be conficts when you later do a git pull. I'v seen a similar problem in OS projects (where you need an initial set of binaries to get anything done but later you want to install locally built binaries in the same place).
Separating them also helps when you don't catch your mistake until after the buggy compiler generates a new set of .c file (and you have already installed it)!
How about if `make bootstrap' fetches .c files from a gambit-bootstrap repo strictly for bootstrapping?
"make commit-major" can then copy generated files to the separate gambit-bootstrap repo and commit them there. I like a separate repo because you can then blow it away once bootstrapped -- typical users won't want it beyond the initial bootstrap. Also note that what you really want is an initial gambit binary -- generated .c files is just one way to get it. I'd be happy to just start with a signed binary for my platform!