On 7-Feb-08, at 10:19 AM, Bradley Lucier wrote:
Marc:
How does one update the old sources with mercurial and rebuild gambit instead of just downloading the newest tarball?
Try this:
download 4.2.0 make bootstrap hg pull hg update make
It fails. It doesn't seem to be much use to have version control when every 0.0.1 update causes you to have to re-download the tarball.
It fails because Gambit is bootstrapped using Gambit. So you can't update in one operation to a newer release that is different from the one in your current working copy, because your working copy has a compiler which is not able to generate code for the runtime of the newer release. Often it is just a version number mismatch, but sometimes it is a more substantial change. The compiler has to be updated first and built, and then you can update the runtime system and build it with the new compiler. This is why a new release is (normally) committed to the public repository in 2 changesets. The first is the change that was done to the compiler, and the second is the change to the runtime system. For example:
changeset 76: Added tag v4.2.0 for changeset 57ffc3d96592 changeset 75: [RUNTIME CHANGES NEEDED FOR v4.2.0] Changed version of runtime using misc/changev changeset 74: [COMPILER CHANGES NEEDED FOR v4.2.0] Changed version in compiler
So you first need to update to the compiler changeset (74) with:
hg update -r 74
then
make bootstrap
then you need to update to the runtime changeset (75) with:
hg update -r 75
then
make
then you are good for subsequent updates, until the next release.
Unfortunately I forgot to create a changeset for the v4.2.1 compiler, so these steps won't work with v4.2.1 . I will add some makefile rules to automate all of this so that a "make update" will do the right thing.
Marc