Skip to content

Commit a188482

Browse files
authored
Merge pull request #102 from Rust-for-Linux/dev/build
build: simplify use of nightly features
2 parents 54f5649 + 885c5d8 commit a188482

22 files changed

+41
-39
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ macrotest = "1.0"
3737
prettyplease = { version = "0.2.37", features = ["verbatim"] }
3838

3939
[lints.rust]
40+
stable_features = "allow"
4041
non_ascii_idents = "deny"
4142
unexpected_cfgs = { level = "warn", check-cfg = [
4243
'cfg(UI_TESTS)',

build.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
1-
use rustc_version::{version, Version};
1+
use rustc_version::{version_meta, Channel, Version};
22

33
fn main() {
4-
println!("cargo::rustc-check-cfg=cfg(RUSTC_LINT_REASONS_IS_STABLE)");
5-
println!("cargo::rustc-check-cfg=cfg(RUSTC_NEW_UNINIT_IS_STABLE)");
4+
println!("cargo::rustc-check-cfg=cfg(USE_RUSTC_FEATURES)");
65
println!("cargo::rustc-check-cfg=cfg(CONFIG_RUSTC_HAS_UNSAFE_PINNED)");
7-
if version().unwrap() >= Version::parse("1.81.0").unwrap()
8-
|| version().unwrap() >= Version::parse("1.81.0-nightly").unwrap()
9-
{
10-
println!("cargo:rustc-cfg=RUSTC_LINT_REASONS_IS_STABLE");
11-
}
12-
if version().unwrap() >= Version::parse("1.82.0").unwrap() {
13-
println!("cargo:rustc-cfg=RUSTC_NEW_UNINIT_IS_STABLE");
6+
7+
let meta = version_meta().unwrap();
8+
9+
let use_feature = meta.channel == Channel::Nightly || std::env::var("RUSTC_BOOTSTRAP").is_ok();
10+
if use_feature {
11+
// Use this cfg option to control whether we should enable features that are already stable
12+
// in some new Rust versions, but are available as unstable features in older Rust versions
13+
// that needs to be supported by the Linux kernel.
14+
println!("cargo:rustc-cfg=USE_RUSTC_FEATURES");
1415
}
15-
if version().unwrap() >= Version::parse("1.89.0-nightly").unwrap() {
16+
17+
if meta.semver >= Version::parse("1.89.0-nightly").unwrap() && use_feature {
1618
println!("cargo:rustc-cfg=CONFIG_RUSTC_HAS_UNSAFE_PINNED");
1719
}
1820
}

examples/big_struct_in_place.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// SPDX-License-Identifier: Apache-2.0 OR MIT
22

3-
#![cfg_attr(not(RUSTC_LINT_REASONS_IS_STABLE), feature(lint_reasons))]
3+
#![cfg_attr(USE_RUSTC_FEATURES, feature(lint_reasons))]
44

55
use pin_init::*;
66

examples/linked_list.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#![allow(clippy::undocumented_unsafe_blocks)]
44
#![cfg_attr(feature = "alloc", feature(allocator_api))]
5-
#![cfg_attr(not(RUSTC_LINT_REASONS_IS_STABLE), feature(lint_reasons))]
5+
#![cfg_attr(USE_RUSTC_FEATURES, feature(lint_reasons))]
66

77
use core::{
88
cell::Cell,

examples/mutex.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#![allow(clippy::undocumented_unsafe_blocks)]
44
#![cfg_attr(feature = "alloc", feature(allocator_api))]
5-
#![cfg_attr(not(RUSTC_LINT_REASONS_IS_STABLE), feature(lint_reasons))]
5+
#![cfg_attr(USE_RUSTC_FEATURES, feature(lint_reasons))]
66
#![allow(clippy::missing_safety_doc)]
77

88
use core::{

examples/pthread_mutex.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// inspired by <https://github.com/nbdd0121/pin-init/blob/trunk/examples/pthread_mutex.rs>
44
#![allow(clippy::undocumented_unsafe_blocks)]
55
#![cfg_attr(feature = "alloc", feature(allocator_api))]
6-
#![cfg_attr(not(RUSTC_LINT_REASONS_IS_STABLE), feature(lint_reasons))]
6+
#![cfg_attr(USE_RUSTC_FEATURES, feature(lint_reasons))]
77

88
#[cfg(not(windows))]
99
mod pthread_mtx {

examples/static_init.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#![allow(clippy::undocumented_unsafe_blocks)]
44
#![cfg_attr(feature = "alloc", feature(allocator_api))]
5-
#![cfg_attr(not(RUSTC_LINT_REASONS_IS_STABLE), feature(lint_reasons))]
5+
#![cfg_attr(USE_RUSTC_FEATURES, feature(lint_reasons))]
66
#![allow(unused_imports)]
77

88
use core::{

internal/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ syn = { version = "2.0.86", features = ["full", "parsing", "visit-mut"] }
2121
rustc_version = "0.4"
2222

2323
[lints.rust]
24+
stable_features = "allow"
2425
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kernel)'] }

internal/build.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
use rustc_version::{version, Version};
1+
use rustc_version::{version_meta, Channel};
22

33
fn main() {
4-
println!("cargo::rustc-check-cfg=cfg(RUSTC_LINT_REASONS_IS_STABLE)");
5-
if version().unwrap() >= Version::parse("1.81.0").unwrap()
6-
|| version().unwrap() >= Version::parse("1.81.0-nightly").unwrap()
7-
{
8-
println!("cargo:rustc-cfg=RUSTC_LINT_REASONS_IS_STABLE");
4+
println!("cargo::rustc-check-cfg=cfg(USE_RUSTC_FEATURES)");
5+
6+
let meta = version_meta().unwrap();
7+
8+
let use_feature = meta.channel == Channel::Nightly || std::env::var("RUSTC_BOOTSTRAP").is_ok();
9+
if use_feature {
10+
println!("cargo:rustc-cfg=USE_RUSTC_FEATURES");
911
}
1012
}

internal/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
//! `pin-init` proc macros.
88
9-
#![cfg_attr(not(RUSTC_LINT_REASONS_IS_STABLE), feature(lint_reasons))]
9+
#![cfg_attr(USE_RUSTC_FEATURES, feature(lint_reasons))]
1010
// Documentation is done in the pin-init crate instead.
1111
#![allow(missing_docs)]
1212

0 commit comments

Comments
 (0)