Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Update dist-{i686,x86_64}-linux to CentOS 6 #73782

Closed
wants to merge 2 commits into from

Conversation

cuviper
Copy link
Member

@cuviper cuviper commented Jun 27, 2020

This has the effect of raising the minimum x86 Linux support to match CentOS 6 / RHEL 6, with kernel 2.6.32 and glibc 2.12.

For my own part as a Red Hat employee, I needed RHEL 5 kernel support so I could run on the builders we use for RHEL 6 packaging, where we are still shipping Firefox updates. That support will end in November, so Firefox 78 ESR is the last rebase it will see, which only needs Rust 1.41. Therefore, we will be fine with Rust raising its minimum to RHEL 6, which I will need for a while yet in building RHEL 7 packages.

Closes #62516.

@rust-highfive
Copy link
Collaborator

r? @Mark-Simulacrum

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 27, 2020
@cuviper
Copy link
Member Author

cuviper commented Jun 27, 2020

This will likely need team signoffs from release and maybe core, and we should check the state of other LTS distros in comparison. In the meantime though, I've enabled dist-i686-linux so I can try them both in CI:

@bors try

@bors
Copy link
Contributor

bors commented Jun 27, 2020

⌛ Trying commit 2a76497 with merge 77e12497be36e6074af6ef4c6160b2d7bb4f16c1...

@bors
Copy link
Contributor

bors commented Jun 27, 2020

💥 Test timed out

@cuviper
Copy link
Member Author

cuviper commented Jun 27, 2020

Docket rebuilds take a while, but it should be cached now.

@bors try

@bors
Copy link
Contributor

bors commented Jun 27, 2020

⌛ Trying commit 2a76497 with merge 5511acc2b74d15a455b790c5f3c1062c5d3970e8...

@bors
Copy link
Contributor

bors commented Jun 27, 2020

☀️ Try build successful - checks-azure
Build commit: 5511acc2b74d15a455b790c5f3c1062c5d3970e8 (5511acc2b74d15a455b790c5f3c1062c5d3970e8)

@Mark-Simulacrum
Copy link
Member

I agree that this seems like a reasonable step, but I do think trying to conduct some kind of survey would be good as to whether people need these older kernel versions supported. I'm not sure where we would do so, though.

Another question is what other languages support. I think the C++ standard library only very recently gained file system support, so maybe asking there isn't too significant. I don't know without doing research what else we could look at.

Maybe you could ask internally if there's other things that are dropping support for RHEL 5 now (or in November)? Being able to look at how other's have made that decision would be helpful I think.

@mati865
Copy link
Contributor

mati865 commented Jun 28, 2020

we should check the state of other LTS distros in comparison

Oldest non EOL Ubuntu is 14.04 with glibc 2.19 and 3.13 kernel: https://wiki.ubuntu.com/Releases
Debian is similar but has been released with 3.16 kernel.

@cuviper
Copy link
Member Author

cuviper commented Jun 29, 2020

Oldest non EOL Ubuntu is 14.04 with glibc 2.19 and 3.13 kernel: https://wiki.ubuntu.com/Releases
Debian is similar but has been released with 3.16 kernel.

Heh, even RHEL 7 is older than that with glibc 2.17 and kernel 3.10.

SUSE would be the other really long-term provider, but I don't know if we have any contacts in the Rust community. SLES 11 SP4 has glibc 2.11.3 and kernel 3.0, so that could be a problem with symbol versions compared to RHEL 6's glibc 2.12. However, in their lifecycle table this is past general support and into LTSS -- if that's like Red Hat's ELS, it wouldn't include any new package versions, only fixes. So I don't know if anyone would need new rustc versions to continue running there.

Maybe you could ask internally if there's other things that are dropping support for RHEL 5 now (or in November)? Being able to look at how other's have made that decision would be helpful I think.

I'll ask around for other examples.

But really, I think Rust is in kind of a special place here compared to other toolchains. Most packages are much more conservative about rebasing at all, but Firefox is special due to its security position and the ever evolving web, so it's not really feasible to maintain longer than ESR already does. And since new Firefox requires new Rust, we end up needing those new toolchain versions even for older systems.

@Mark-Simulacrum Mark-Simulacrum added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 30, 2020
@msirringhaus
Copy link

SUSE Firefox Maintainer here: I'd like to veto this PR :-)
Yes, SUSE SLE-11 SP4 is in LTSS until 2022, and yes we have to provide regular Firefox updates.
"Exotic" archs like s390x, ppc64, ... are already broken, as Ubuntu 16.04 (which is the current build OS for those platforms) has already a too new glibc. Please don't also break x86_64, if possible.

@Mark-Simulacrum
Copy link
Member

Hm, does SUSE use binaries from the Rust project for those targets?

@msirringhaus
Copy link

Ideally, we want to build a new compiler version with an old one. But sometimes we have to bootstrap, using the binaries from rust-lang.org/dist

@cuviper
Copy link
Member Author

cuviper commented Jul 2, 2020

@msirringhaus Did I get the versions right for SLES 11 SP4 -- glibc 2.11.3 and kernel 3.0? Then to support both SLES 11 and RHEL6, we'll need to use the least-common versions, glibc 2.11 and kernel 2.6.32.

"Exotic" archs like s390x, ppc64, ... are already broken, as Ubuntu 16.04 (which is the current build OS for those platforms) has already a too new glibc.

The build OS shouldn't be directly relevant anymore. They did once use Ubuntu's cross toolchains, but way back in #39382 I switched those to manual cross toolchains, configured as RHEL6-ish for s390x and powerpc/powerpc64(be), and RHEL7-ish for powerpc64le. If you need to push those back further for SLES, it may be possible. If you or someone else at SUSE would like to work on that, I'd be happy to review it.

Maybe we could also move i686 and x86_64 to crosstool-ng to get a common baseline of glibc 2.11 and kernel 2.6.32, as mentioned above. I'll look into that as a replacement for this PR.

@cuviper
Copy link
Member Author

cuviper commented Jul 3, 2020

I'm having trouble with using crosstool for i686/x86_64, being not really a cross build in this case. We've specialized this target to use CC=clang and ThinLTO LLVM builds, which is proving to be a pain to integrate.

Then to support both SLES 11 and RHEL6, we'll need to use the least-common versions, glibc 2.11 and kernel 2.6.32.

It turns out this also matches Debian 6 (squeeze), which has a docker image, so I'll try that.

@msirringhaus
Copy link

@msirringhaus Did I get the versions right for SLES 11 SP4 -- glibc 2.11.3 and kernel 3.0?

Yes that is correct.

The build OS shouldn't be directly relevant anymore. They did once use Ubuntu's cross toolchains, but way back in #39382 I switched those to manual cross toolchains, configured as RHEL6-ish for s390x and powerpc/powerpc64(be), and RHEL7-ish for powerpc64le. If you need to push those back further for SLES, it may be possible. If you or someone else at SUSE would like to work on that, I'd be happy to review it.

I'll try to familiarize myself with the setup and see what I can do. This could take some time, though :-)

@cuviper
Copy link
Member Author

cuviper commented Jul 19, 2020

Replaced by #74163, which has merged.

Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Jul 24, 2020
Downgrade glibc to 2.11.1 for ppc, ppc64 and s390x

As discussed in rust-lang#73782
I've tested these changes on rust 1.43.0 for all the specified archs and used the resulting binaries to bootstrap building rust 1.43.1.
I've also shortly tested these changes on master on ppc64.
Manishearth added a commit to Manishearth/rust that referenced this pull request Jul 24, 2020
Downgrade glibc to 2.11.1 for ppc, ppc64 and s390x

As discussed in rust-lang#73782
I've tested these changes on rust 1.43.0 for all the specified archs and used the resulting binaries to bootstrap building rust 1.43.1.
I've also shortly tested these changes on master on ppc64.
@cuviper cuviper deleted the centos6 branch August 9, 2020 23:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

libstd: Drop RHEL 5 support, Increase Minimum kernel version to 2.6.27
6 participants