Problem
The distributed builds of rustup on some arches require relatively recent GLIBC symbols, newer than the baseline used by rustc itself. Especially, those that build rustup with ubuntu:18.04 cross-gcc will be tied to a similar OS ABI, while rustc supports older systems than that.
This bug is a continuation of #1339.
Steps
For example, on RHEL 7.6 ppc64:
$ rpm -q glibc
glibc-2.17-260.el7.ppc64
$ curl https://sh.rustup.rs -sSf | sh
info: downloading installer
/tmp/tmp.VElBcOx0vj/rustup-init: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /tmp/tmp.VElBcOx0vj/rustup-init)
/tmp/tmp.VElBcOx0vj/rustup-init: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /tmp/tmp.VElBcOx0vj/rustup-init)
Possible Solution(s)
Rust's own docker images use careful cross toolchains to maintain ABI, and I think rustup could just reuse those same docker images.
Notes
For the currently available linux-gnu binaries, I see:
$ for f in */rustup-init; do echo $f; eu-readelf -V $f | grep -o 'Name: GLIBC\S*' | sort -V | tail -n1; done
aarch64-unknown-linux-gnu/rustup-init
Name: GLIBC_2.17
arm-unknown-linux-gnueabihf/rustup-init
Name: GLIBC_2.16
arm-unknown-linux-gnueabi/rustup-init
Name: GLIBC_2.16
armv7-unknown-linux-gnueabihf/rustup-init
Name: GLIBC_2.16
i686-unknown-linux-gnu/rustup-init
Name: GLIBC_2.3.4
mips64el-unknown-linux-gnuabi64/rustup-init
Name: GLIBC_2.25
mips64-unknown-linux-gnuabi64/rustup-init
Name: GLIBC_2.25
mipsel-unknown-linux-gnu/rustup-init
Name: GLIBC_2.25
mips-unknown-linux-gnu/rustup-init
Name: GLIBC_2.25
powerpc64le-unknown-linux-gnu/rustup-init
Name: GLIBC_2.25
powerpc64-unknown-linux-gnu/rustup-init
Name: GLIBC_2.25
powerpc-unknown-linux-gnu/rustup-init
Name: GLIBC_2.25
s390x-unknown-linux-gnu/rustup-init
Name: GLIBC_2.25
x86_64-unknown-linux-gnu/rustup-init
Name: GLIBC_2.3.4
All of those requiring GLIBC_2.25 are problematic: mips*, powerpc*, and s390x.
Rust currently uses ubuntu:16.04 toolchains for all mips* targets, RHEL6-ish toolchains for powerpc, powerpc64, and s390x, and RHEL7-ish toolchains for powerpc64le.
Problem
The distributed builds of
rustupon some arches require relatively recent GLIBC symbols, newer than the baseline used byrustcitself. Especially, those that buildrustupwithubuntu:18.04cross-gcc will be tied to a similar OS ABI, whilerustcsupports older systems than that.This bug is a continuation of #1339.
Steps
For example, on RHEL 7.6 ppc64:
Possible Solution(s)
Rust's own docker images use careful cross toolchains to maintain ABI, and I think
rustupcould just reuse those same docker images.Notes
For the currently available linux-gnu binaries, I see:
All of those requiring
GLIBC_2.25are problematic: mips*, powerpc*, and s390x.Rust currently uses
ubuntu:16.04toolchains for all mips* targets, RHEL6-ish toolchains for powerpc, powerpc64, and s390x, and RHEL7-ish toolchains for powerpc64le.