]> git.lizzy.rs Git - rust.git/commit
Change the last linux 64-bit snapshot
authorAlex Crichton <alex@alexcrichton.com>
Mon, 15 Sep 2014 18:17:00 +0000 (11:17 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 16 Sep 2014 01:14:26 +0000 (18:14 -0700)
commitba0c100f3b544a03f4b0d9f597ad048fbab1b926
tree0e790ddca2f983788660f897074e862620975a65
parent1f5ee97184db63196713cf05fe834e6f32537e30
Change the last linux 64-bit snapshot

I'm rotating in some CentOS 5.10 bots so we *actually* build on Linux 2.6.18
like we advertise doing so. Currently the snapshots are incompatible with CentOS
5.10 due to snapshots requiring glibc 2.6 and CentOS 5.10 having glibc 2.5.

It turns out that rustc only requires *one* symbol from glibc 2.6, which is
`futimens`. The rust distribution itself does not use this symbol, but LLVM
conditionally detects it and then uses it. This symbol isn't even called as part
of the compilation process, so we don't even need it!

The new snapshot was generated following these instructions [1]:

1. Download the current x86_64 linux snapshot and unpack it.
2. Open the rustc binary in a hex editor.
3. Change the linkage against glibc 2.6 from strong to *weak*
4. Write changes and re-run src/etc/make-snapshot.py
5. Upload new tarball to S3

On CentOS 5.10 a warning is printed each time the snapshot runs that the symbol
cannot be found (anyone with glibc 2.6+ does not have this warning printed). The
key part is that we can *bootstrap* on CentOS 5.10 at this point. The next
snapshot will be naturally compatible with glibc 2.3 (even older!) and will not
need to be manually edited.

[1]: http://jamesbond3142.no-ip.org/wiki/wiki.cgi/NewAppsOnOldGlibc
src/snapshots.txt