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 Debian 6 #74163

Merged
merged 1 commit into from Jul 19, 2020
Merged

Conversation

cuviper
Copy link
Member

@cuviper cuviper commented Jul 8, 2020

This increases the minimum {i686,x86_64}-unknown-linux-gnu platform
from RHEL/CentOS 5 (glibc 2.5 and kernel 2.6.18) to a slightly newer
Debian 6 squeeze (glibc 2.11 and kernel 2.6.32). While that release is
already EOL, it happens to match the minimum common versions of two
enterprise distros that do still need Rust support -- RHEL 6 (glibc 2.12
and kernel 2.6.32) and SLES 11 SP4 (glibc 2.11 and kernel 3.0).

Closes #62516.

@rust-highfive
Copy link
Collaborator

r? @kennytm

(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 Jul 8, 2020
@cuviper
Copy link
Member Author

cuviper commented Jul 8, 2020

This supercedes #73782.
cc @msirringhaus for SLES
r? @Mark-Simulacrum
@bors try

RE: #73782 (comment)

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.

  • glibc itself evaluates this based on how much emulation code could be removed by a new kernel baseline, and what kernels under support would not meet that baseline. They require Linux 3.2 since glibc 2.26.
  • .NET on Linux has a rough policy to drop support for a RHEL version after it leaves Maintenance Support, per the life cycle dates. That would already exclude RHEL 5.
  • qemu and libvirt both have a policy of dropping old distro versions 2 years after a new major version is released. Their assumption is that it becomes less likely that anyone will need new workloads/features on the old OS once there's a new release available.

I think we can't make the same argument about new deployments though, since new Firefox ESR builds are required even on older OSes, and that forces Rust forward along with it. Even then, the fact that I needed RHEL 5 support was an oddity of our internal build system, as we're currently only updating Firefox on RHEL 6 and later.

@bors
Copy link
Contributor

bors commented Jul 8, 2020

⌛ Trying commit cad41f6db84a14edcafb6e1257b64864ef2ea22e with merge 40edca408120f0a8e0b69be3688520c2432b0e7e...

@bors
Copy link
Contributor

bors commented Jul 9, 2020

💥 Test timed out

@cuviper
Copy link
Member Author

cuviper commented Jul 9, 2020

@bors try

@bors
Copy link
Contributor

bors commented Jul 9, 2020

⌛ Trying commit cad41f6db84a14edcafb6e1257b64864ef2ea22e with merge 4f227e3d5f8a312e5c37bab426c28affad30c73a...

@bors
Copy link
Contributor

bors commented Jul 9, 2020

☀️ Try build successful - checks-actions, checks-azure
Build commit: 4f227e3d5f8a312e5c37bab426c28affad30c73a (4f227e3d5f8a312e5c37bab426c28affad30c73a)

@Mark-Simulacrum Mark-Simulacrum added the T-release Relevant to the release subteam, which will review and decide on the PR/issue. label Jul 14, 2020
@Mark-Simulacrum
Copy link
Member

We discussed this in last week's release meeting, and the summary of that discussion was that we plan on posting an RFC formalizing that for the x86_64 linux targets, we plan to have a baseline level of support for the RHEL and SLES versions that are supported (or needed to support current version, due to bootstrapping). Further details will be in the RFC (and to some extent need to be hashed out). In the mean time, though, we will move ahead with this PR through the FCP process.

If people feel that we should wait for the RFC to be posted and approved prior to landing this, please do raise that concern. I personally feel comfortable making a one-off decision to bump support here and then formalizing the process we go through to do so, though.

@rfcbot fcp merge

@rfcbot
Copy link

rfcbot commented Jul 14, 2020

Team member @Mark-Simulacrum has proposed to merge this. The next step is review by the rest of the tagged team members:

Concerns:

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for info about what commands tagged team members can give me.

@rfcbot rfcbot added proposed-final-comment-period Proposed to merge/close by relevant subteam, see T-<team> label. Will enter FCP once signed off. disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. labels Jul 14, 2020
@Mark-Simulacrum Mark-Simulacrum added S-waiting-on-team Status: Awaiting decision from the relevant subteam (see the T-<team> label). and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 14, 2020
@Mark-Simulacrum
Copy link
Member

@rfcbot concern SLES-approval

I would like @msirringhaus to weigh in before we merge this as well.

@cuviper
Copy link
Member Author

cuviper commented Jul 14, 2020

You can inspect the binary artifacts from the try-build above using this tool.

$ rustup-toolchain-install-master 4f227e3d5f8a312e5c37bab426c28affad30c73a

@cuviper
Copy link
Member Author

cuviper commented Jul 14, 2020

Side note, this will also affect other tools that piggy-back on Rust CI images -- I know rustup does.

@msirringhaus
Copy link

I've downloaded the artifacts and compiled a simple "hello world"-program successfully on SLES-11 SP4

@Mark-Simulacrum
Copy link
Member

@rfcbot resolve SLES-approval

@Mark-Simulacrum
Copy link
Member

r=me with try builder removed and FCP done

This increases the minimum `{i686,x86_64}-unknown-linux-gnu` platform
from RHEL/CentOS 5 (glibc 2.5 and kernel 2.6.18) to a slightly newer
Debian 6 `squeeze` (glibc 2.11 and kernel 2.6.32). While that release is
already EOL, it happens to match the minimum common versions of two
enterprise distros that do still need Rust support -- RHEL 6 (glibc 2.12
and kernel 2.6.32) and SLES 11 SP4 (glibc 2.11 and kernel 3.0).
@RalfJung
Copy link
Member

Should https://forge.rust-lang.org/release/platform-support.html be updated to reflect the new minimal kernel version? (Might be good to also give the required glibc there.)

@cuviper
Copy link
Member Author

cuviper commented Jul 19, 2020

Yes we should update the forge, and I agree glibc should be mentioned too. Plus the lower tier Linux targets aren't mentioning this at all, but probably should.

newpavlov added a commit to rust-random/getrandom that referenced this pull request Jul 19, 2020
Minimum supported kernel version got bumped to 2.6.32 in rust-lang/rust#74163
@newpavlov
Copy link
Contributor

@Mark-Simulacrum

we plan on posting an RFC formalizing that for the x86_64 linux targets

Would it be possible to cover Windows and Mac policy in the same RFC as well (and ideally other OSes)? For example, panic has been long broken on Windows XP and we have to use deprecated API for retrieving OS randomness on all non-UWP Windows targets. So it would be nice if XP and Vista support will be dropped as part of this RFC.

@Mark-Simulacrum
Copy link
Member

We'd probably want separate RFCs I think, given that the audience interested in each platform is probably pretty distinct. I imagine once we work through the linux RFC and perhaps land the tier policy RFC @joshtriplett has been working on we can look at Windows and macOS. My impression personally is that we're going to be much more constrained there -- lack of easily available ways of testing older macOS and Windows releases makes it difficult to support those platforms.

cuviper added a commit to cuviper/rust-forge that referenced this pull request Jul 20, 2020
The versions were raised to kernel 2.6.32 and glibc 2.11 in
<rust-lang/rust#74163>.
XAMPPRocky pushed a commit to rust-lang/rust-forge that referenced this pull request Jul 20, 2020
…403)

* Update i686/x86_64 linux-gnu minimum requirements

The versions were raised to kernel 2.6.32 and glibc 2.11 in
<rust-lang/rust#74163>.

* Specify kernel/glibc support for more linux-gnu targets

This reflects the status quo for targets that are built with manually
controlled toolchains, e.g. using crosstool-ng.

* Specify kernel/glibc for linux-gnu targets built on Ubuntu 16.04

* Specify kernel/glibc for linux-gnu targets built on Ubuntu 18.04
cuviper added a commit to cuviper/rust that referenced this pull request Jul 21, 2020
Now that rust-lang#74163 updated the minimum Linux kernel to 2.6.32, we can
assume the availability of APIs that open file descriptors that are
already set to close on exec, including the flags `O_CLOEXEC`,
`SOCK_CLOEXEC`, and `F_DUPFD_CLOEXEC`.
josephlr pushed a commit to rust-random/getrandom that referenced this pull request Jul 22, 2020
Minimum supported kernel version got bumped to 2.6.32 in rust-lang/rust#74163
Manishearth added a commit to Manishearth/rust that referenced this pull request Jul 23, 2020
Remove Linux workarounds for missing CLOEXEC support

Now that rust-lang#74163 updated the minimum Linux kernel to 2.6.32, we can
assume the availability of APIs that open file descriptors that are
already set to close on exec, including the flags `O_CLOEXEC`,
`SOCK_CLOEXEC`, and `F_DUPFD_CLOEXEC`.

Closes rust-lang#74519.
@rfcbot rfcbot added finished-final-comment-period The final comment period is finished for this PR / Issue. and removed final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. labels Jul 27, 2020
@cuviper cuviper deleted the debian6 branch August 9, 2020 23:36
tmandry added a commit to tmandry/rust that referenced this pull request Sep 1, 2020
README: Adjust Linux and macOS support platform and architecture

cc rust-lang#74163
@tshepang tshepang mentioned this pull request Sep 13, 2020
bors pushed a commit to rust-lang-ci/rust that referenced this pull request Sep 15, 2020
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Sep 16, 2020
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Sep 16, 2020
@cuviper cuviper mentioned this pull request Oct 7, 2020
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 13, 2020
Pkgsrc changes:
 * Remove patches now integrated upstream, many related to SunOS / Illumos.
 * The LLVM fix for powerpc is also now integrated upstream.
 * Adapt those patches where the source has moved or parts are integrated.
 * The randomness patches no longer applies, and I could not find
   where those files went...
 * Provide a separate bootstrap for NetBSD/powerpc 9.0, since apparently
   the C++ ABI is different from 8.0.  Yes, this appears to be specific to
   the NetBSD powerpc ports.

Upstream changes:

Version 1.47.0 (2020-10-08)
==========================

Language
--------
- [Closures will now warn when not used.][74869]

Compiler
--------
- [Stabilized the `-C control-flow-guard` codegen option][73893], which enables
  [Control Flow Guard][1.47.0-cfg] for Windows platforms, and is ignored on
  other platforms.
- [Upgraded to LLVM 11.][73526]
- [Added tier 3\* support for the `thumbv4t-none-eabi` target.][74419]
- [Upgrade the FreeBSD toolchain to version 11.4][75204]
- [`RUST_BACKTRACE`'s output is now more compact.][75048]

\* Refer to Rust's [platform support page][forge-platform-support] for more
information on Rust's tiered platform support.

Libraries
---------
- [`CStr` now implements `Index<RangeFrom<usize>>`.][74021]
- [Traits in `std`/`core` are now implemented for arrays of any length, not just
  those of length less than 33.][74060]
- [`ops::RangeFull` and `ops::Range` now implement Default.][73197]
- [`panic::Location` now implements `Copy`, `Clone`, `Eq`, `Hash`, `Ord`,
  `PartialEq`, and `PartialOrd`.][73583]

Stabilized APIs
---------------
- [`Ident::new_raw`]
- [`Range::is_empty`]
- [`RangeInclusive::is_empty`]
- [`Result::as_deref`]
- [`Result::as_deref_mut`]
- [`Vec::leak`]
- [`pointer::offset_from`]
- [`f32::TAU`]
- [`f64::TAU`]

The following previously stable APIs have now been made const.

- [The `new` method for all `NonZero` integers.][73858]
- [The `checked_add`,`checked_sub`,`checked_mul`,`checked_neg`, `checked_shl`,
  `checked_shr`, `saturating_add`, `saturating_sub`, and `saturating_mul`
  methods for all integers.][73858]
- [The `checked_abs`, `saturating_abs`, `saturating_neg`, and `signum`  for all
  signed integers.][73858]
- [The `is_ascii_alphabetic`, `is_ascii_uppercase`, `is_ascii_lowercase`,
  `is_ascii_alphanumeric`, `is_ascii_digit`, `is_ascii_hexdigit`,
  `is_ascii_punctuation`, `is_ascii_graphic`, `is_ascii_whitespace`, and
  `is_ascii_control` methods for `char` and `u8`.][73858]

Cargo
-----
- [`build-dependencies` are now built with opt-level 0 by default.][cargo/8500]
  You can override this by setting the following in your `Cargo.toml`.
  ```toml
  [profile.release.build-override]
  opt-level = 3
  ```
- [`cargo-help` will now display man pages for commands rather just the
  `--help` text.][cargo/8456]
- [`cargo-metadata` now emits a `test` field indicating if a target has
  tests enabled.][cargo/8478]
- [`workspace.default-members` now respects `workspace.exclude`.][cargo/8485]
- [`cargo-publish` will now use an alternative registry by default if it's the
  only registry specified in `package.publish`.][cargo/8571]

Misc
----
- [Added a help button beside Rustdoc's searchbar that explains rustdoc's
  type based search.][75366]
- [Added the Ayu theme to rustdoc.][71237]

Compatibility Notes
-------------------
- [Bumped the minimum supported Emscripten version to 1.39.20.][75716]
- [Fixed a regression parsing `{} && false` in tail expressions.][74650]
- [Added changes to how proc-macros are expanded in `macro_rules!` that should
  help to preserve more span information.][73084] These changes may cause
  compiliation errors if your macro was unhygenic or didn't correctly handle
  `Delimiter::None`.
- [Moved support for the CloudABI target to tier 3.][75568]
- [`linux-gnu` targets now require minimum kernel 2.6.32 and glibc 2.11.][74163]

Internal Only
--------
- [Improved default settings for bootstrapping in `x.py`.][73964]
  You can read details about this change in the ["Changes to `x.py`
  defaults"](https://blog.rust-lang.org/inside-rust/2020/08/30/changes-to-x-py-defaults.html)
  post on the Inside Rust blog.

- [Added the `rustc-docs` component.][75560] This allows you to install
  and read the documentation for the compiler internal APIs. (Currently only
  available for `x86_64-unknown-linux-gnu`.)

[1.47.0-cfg]: https://docs.microsoft.com/en-us/windows/win32/secbp/control-flow-guard
[76980]: rust-lang/rust#76980
[75048]: rust-lang/rust#75048
[74163]: rust-lang/rust#74163
[71237]: rust-lang/rust#71237
[74869]: rust-lang/rust#74869
[73858]: rust-lang/rust#73858
[75716]: rust-lang/rust#75716
[75908]: rust-lang/rust#75908
[75516]: rust-lang/rust#75516
[75560]: rust-lang/rust#75560
[75568]: rust-lang/rust#75568
[75366]: rust-lang/rust#75366
[75204]: rust-lang/rust#75204
[74650]: rust-lang/rust#74650
[74419]: rust-lang/rust#74419
[73964]: rust-lang/rust#73964
[74021]: rust-lang/rust#74021
[74060]: rust-lang/rust#74060
[73893]: rust-lang/rust#73893
[73526]: rust-lang/rust#73526
[73583]: rust-lang/rust#73583
[73084]: rust-lang/rust#73084
[73197]: rust-lang/rust#73197
[72488]: rust-lang/rust#72488
[cargo/8456]: rust-lang/cargo#8456
[cargo/8478]: rust-lang/cargo#8478
[cargo/8485]: rust-lang/cargo#8485
[cargo/8500]: rust-lang/cargo#8500
[cargo/8571]: rust-lang/cargo#8571
[`Ident::new_raw`]:  https://doc.rust-lang.org/nightly/proc_macro/struct.Ident.html#method.new_raw
[`Range::is_empty`]: https://doc.rust-lang.org/nightly/std/ops/struct.Range.html#method.is_empty
[`RangeInclusive::is_empty`]: https://doc.rust-lang.org/nightly/std/ops/struct.RangeInclusive.html#method.is_empty
[`Result::as_deref_mut`]: https://doc.rust-lang.org/nightly/std/result/enum.Result.html#method.as_deref_mut
[`Result::as_deref`]: https://doc.rust-lang.org/nightly/std/result/enum.Result.html#method.as_deref
[`TypeId::of`]: https://doc.rust-lang.org/nightly/std/any/struct.TypeId.html#method.of
[`Vec::leak`]: https://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.leak
[`f32::TAU`]: https://doc.rust-lang.org/nightly/std/f32/consts/constant.TAU.html
[`f64::TAU`]: https://doc.rust-lang.org/nightly/std/f64/consts/constant.TAU.html
[`pointer::offset_from`]: https://doc.rust-lang.org/nightly/std/primitive.pointer.html#method.offset_from
@cuviper cuviper added this to the 1.47.0 milestone May 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. finished-final-comment-period The final comment period is finished for this PR / Issue. merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-release Relevant to the release subteam, which will review and decide on the PR/issue.
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
9 participants