]> git.lizzy.rs Git - rust.git/commit
auto merge of #17288 : alexcrichton/rust/change-snap, r=brson
authorbors <bors@rust-lang.org>
Tue, 16 Sep 2014 02:26:01 +0000 (02:26 +0000)
committerbors <bors@rust-lang.org>
Tue, 16 Sep 2014 02:26:01 +0000 (02:26 +0000)
commitf8426e2e21f1baa0cbb9775eeef1061773103a28
tree410086af33029cb3bdc78df3efd624de2f2d1b92
parent63eaba24d6a7f93061d63337ea1f7083ca892787
parentba0c100f3b544a03f4b0d9f597ad048fbab1b926
auto merge of #17288 : alexcrichton/rust/change-snap, r=brson

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