Auto merge of #119437 - matthiaskrgr:rollup-esf96p6, r=matthiaskrgr
Rollup of 5 pull requests Successful merges: - #119158 (Clean up alloc::sync::Weak Clone implementation) - #119386 (fix typo in `IpAddr::to_canonical`) - #119413 (solaris support on bootstrap lock) - #119424 (Primitive docs: fix confusing `Send` in `&T`'s list) - #119425 (Fix invalid check-cfg Cargo feature diagnostic help) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
d59f06fc64
@ -804,8 +804,6 @@ fn lookup_with_diagnostics(
|
||||
db.span_suggestion(value_span, "there is a expected value with a similar name", format!("\"{best_match}\""), Applicability::MaybeIncorrect);
|
||||
|
||||
}
|
||||
} else if name == sym::feature && is_from_cargo {
|
||||
db.help(format!("consider defining `{name}` as feature in `Cargo.toml`"));
|
||||
} else if let &[first_possibility] = &possibilities[..] {
|
||||
db.span_suggestion(name_span.shrink_to_hi(), "specify a config value", format!(" = \"{first_possibility}\""), Applicability::MaybeIncorrect);
|
||||
}
|
||||
|
@ -2917,20 +2917,17 @@ impl<T: ?Sized, A: Allocator + Clone> Clone for Weak<T, A> {
|
||||
/// ```
|
||||
#[inline]
|
||||
fn clone(&self) -> Weak<T, A> {
|
||||
let inner = if let Some(inner) = self.inner() {
|
||||
inner
|
||||
} else {
|
||||
return Weak { ptr: self.ptr, alloc: self.alloc.clone() };
|
||||
};
|
||||
// See comments in Arc::clone() for why this is relaxed. This can use a
|
||||
// fetch_add (ignoring the lock) because the weak count is only locked
|
||||
// where are *no other* weak pointers in existence. (So we can't be
|
||||
// running this code in that case).
|
||||
let old_size = inner.weak.fetch_add(1, Relaxed);
|
||||
if let Some(inner) = self.inner() {
|
||||
// See comments in Arc::clone() for why this is relaxed. This can use a
|
||||
// fetch_add (ignoring the lock) because the weak count is only locked
|
||||
// where are *no other* weak pointers in existence. (So we can't be
|
||||
// running this code in that case).
|
||||
let old_size = inner.weak.fetch_add(1, Relaxed);
|
||||
|
||||
// See comments in Arc::clone() for why we do this (for mem::forget).
|
||||
if old_size > MAX_REFCOUNT {
|
||||
abort();
|
||||
// See comments in Arc::clone() for why we do this (for mem::forget).
|
||||
if old_size > MAX_REFCOUNT {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
Weak { ptr: self.ptr, alloc: self.alloc.clone() }
|
||||
|
@ -407,7 +407,7 @@ pub const fn is_ipv6(&self) -> bool {
|
||||
}
|
||||
|
||||
/// Converts this address to an `IpAddr::V4` if it is an IPv4-mapped IPv6 addresses, otherwise it
|
||||
/// return `self` as-is.
|
||||
/// returns `self` as-is.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -1348,7 +1348,6 @@ mod prim_usize {}
|
||||
/// * [`Fn`] \(in addition, `&T` references get [`FnMut`] and [`FnOnce`] if `T: Fn`)
|
||||
/// * [`Hash`]
|
||||
/// * [`ToSocketAddrs`]
|
||||
/// * [`Send`] \(`&T` references also require <code>T: [Sync]</code>)
|
||||
/// * [`Sync`]
|
||||
///
|
||||
/// [`std::fmt`]: fmt
|
||||
@ -1366,6 +1365,7 @@ mod prim_usize {}
|
||||
/// * [`ExactSizeIterator`]
|
||||
/// * [`FusedIterator`]
|
||||
/// * [`TrustedLen`]
|
||||
/// * [`Send`]
|
||||
/// * [`io::Write`]
|
||||
/// * [`Read`]
|
||||
/// * [`Seek`]
|
||||
@ -1378,6 +1378,8 @@ mod prim_usize {}
|
||||
/// [`Read`]: ../std/io/trait.Read.html
|
||||
/// [`io::Write`]: ../std/io/trait.Write.html
|
||||
///
|
||||
/// In addition, `&T` references implement [`Send`] if and only if `T` implements [`Sync`].
|
||||
///
|
||||
/// Note that due to method call deref coercion, simply calling a trait method will act like they
|
||||
/// work on references as well as they do on owned values! The implementations described here are
|
||||
/// meant for generic contexts, where the final type `T` is a type parameter or otherwise not
|
||||
|
@ -246,9 +246,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
||||
|
||||
[[package]]
|
||||
name = "errno"
|
||||
version = "0.3.5"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
|
||||
checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys",
|
||||
@ -256,9 +256,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "fd-lock"
|
||||
version = "3.0.13"
|
||||
version = "4.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"
|
||||
checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"rustix",
|
||||
@ -369,9 +369,9 @@ checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.4.10"
|
||||
version = "0.4.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
|
||||
checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
@ -530,9 +530,9 @@ checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.38.19"
|
||||
version = "0.38.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed"
|
||||
checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
|
||||
dependencies = [
|
||||
"bitflags 2.4.1",
|
||||
"errno",
|
||||
@ -620,9 +620,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sysinfo"
|
||||
version = "0.30.1"
|
||||
version = "0.30.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01e979b637815805abbdeea72e4b6d9374dd0efce6524cc65c31e14911dbc671"
|
||||
checksum = "ba2dbd2894d23b2d78dae768d85e323b557ac3ac71a5d917a31536d8f77ebada"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"core-foundation-sys",
|
||||
@ -733,9 +733,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.51.1"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
|
||||
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
|
||||
dependencies = [
|
||||
"windows-core",
|
||||
"windows-targets",
|
||||
@ -743,27 +743,27 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.51.1"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
|
||||
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||
dependencies = [
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.48.0"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||
dependencies = [
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
|
||||
checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
@ -776,45 +776,45 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
||||
checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
||||
checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
||||
checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
||||
checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
||||
checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
||||
checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.48.5"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
||||
checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
|
||||
|
||||
[[package]]
|
||||
name = "xattr"
|
||||
|
@ -38,6 +38,7 @@ cc = "1.0.69"
|
||||
clap = { version = "4.4.7", default-features = false, features = ["std", "usage", "help", "derive", "error-context"] }
|
||||
clap_complete = "4.4.3"
|
||||
cmake = "0.1.38"
|
||||
fd-lock = "4.0"
|
||||
filetime = "0.2"
|
||||
home = "0.5.4"
|
||||
ignore = "0.4.10"
|
||||
@ -61,15 +62,11 @@ xz2 = "0.1"
|
||||
# Dependencies needed by the build-metrics feature
|
||||
sysinfo = { version = "0.30", optional = true }
|
||||
|
||||
# Solaris doesn't support flock() and thus fd-lock is not option now
|
||||
[target.'cfg(not(target_os = "solaris"))'.dependencies]
|
||||
fd-lock = "3.0.13"
|
||||
|
||||
[target.'cfg(windows)'.dependencies.junction]
|
||||
version = "1.0.0"
|
||||
|
||||
[target.'cfg(windows)'.dependencies.windows]
|
||||
version = "0.51.1"
|
||||
version = "0.52"
|
||||
features = [
|
||||
"Win32_Foundation",
|
||||
"Win32_Security",
|
||||
|
@ -6,7 +6,6 @@
|
||||
//! directory in each respective module.
|
||||
|
||||
use std::io::Write;
|
||||
#[cfg(all(any(unix, windows), not(target_os = "solaris")))]
|
||||
use std::process;
|
||||
use std::{
|
||||
env,
|
||||
@ -22,43 +21,35 @@ fn main() {
|
||||
let args = env::args().skip(1).collect::<Vec<_>>();
|
||||
let config = Config::parse(&args);
|
||||
|
||||
#[cfg(all(any(unix, windows), not(target_os = "solaris")))]
|
||||
let mut build_lock;
|
||||
#[cfg(all(any(unix, windows), not(target_os = "solaris")))]
|
||||
let _build_lock_guard;
|
||||
|
||||
if !config.bypass_bootstrap_lock {
|
||||
// Display PID of process holding the lock
|
||||
// PID will be stored in a lock file
|
||||
#[cfg(all(any(unix, windows), not(target_os = "solaris")))]
|
||||
{
|
||||
let path = config.out.join("lock");
|
||||
let pid = match fs::read_to_string(&path) {
|
||||
Ok(contents) => contents,
|
||||
Err(_) => String::new(),
|
||||
};
|
||||
let lock_path = config.out.join("lock");
|
||||
let pid = match fs::read_to_string(&lock_path) {
|
||||
Ok(contents) => contents,
|
||||
Err(_) => String::new(),
|
||||
};
|
||||
|
||||
build_lock = fd_lock::RwLock::new(t!(fs::OpenOptions::new()
|
||||
.write(true)
|
||||
.create(true)
|
||||
.open(&path)));
|
||||
_build_lock_guard = match build_lock.try_write() {
|
||||
Ok(mut lock) => {
|
||||
t!(lock.write(&process::id().to_string().as_ref()));
|
||||
lock
|
||||
}
|
||||
err => {
|
||||
drop(err);
|
||||
println!("WARNING: build directory locked by process {pid}, waiting for lock");
|
||||
let mut lock = t!(build_lock.write());
|
||||
t!(lock.write(&process::id().to_string().as_ref()));
|
||||
lock
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(any(not(any(unix, windows)), target_os = "solaris"))]
|
||||
println!("WARNING: file locking not supported for target, not locking build directory");
|
||||
build_lock = fd_lock::RwLock::new(t!(fs::OpenOptions::new()
|
||||
.write(true)
|
||||
.create(true)
|
||||
.open(&lock_path)));
|
||||
_build_lock_guard = match build_lock.try_write() {
|
||||
Ok(mut lock) => {
|
||||
t!(lock.write(&process::id().to_string().as_ref()));
|
||||
lock
|
||||
}
|
||||
err => {
|
||||
drop(err);
|
||||
println!("WARNING: build directory locked by process {pid}, waiting for lock");
|
||||
let mut lock = t!(build_lock.write());
|
||||
t!(lock.write(&process::id().to_string().as_ref()));
|
||||
lock
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// check_version warnings are not printed during setup
|
||||
|
@ -8,9 +8,18 @@ LL | #[cfg(feature = "serde")]
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
= note: `#[warn(unexpected_cfgs)]` on by default
|
||||
|
||||
warning: unexpected `cfg` condition name: `tokio_unstable`
|
||||
warning: unexpected `cfg` condition name: `feature`
|
||||
--> $DIR/cargo-feature.rs:18:7
|
||||
|
|
||||
LL | #[cfg(feature)]
|
||||
| ^^^^^^^
|
||||
|
|
||||
= help: consider defining some features in `Cargo.toml`
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
|
||||
warning: unexpected `cfg` condition name: `tokio_unstable`
|
||||
--> $DIR/cargo-feature.rs:23:7
|
||||
|
|
||||
LL | #[cfg(tokio_unstable)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
@ -19,7 +28,7 @@ LL | #[cfg(tokio_unstable)]
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
|
||||
warning: unexpected `cfg` condition name: `CONFIG_NVME`
|
||||
--> $DIR/cargo-feature.rs:22:7
|
||||
--> $DIR/cargo-feature.rs:27:7
|
||||
|
|
||||
LL | #[cfg(CONFIG_NVME = "m")]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@ -27,5 +36,5 @@ LL | #[cfg(CONFIG_NVME = "m")]
|
||||
= help: consider using a Cargo feature instead or adding `println!("cargo:rustc-check-cfg=cfg(CONFIG_NVME, values(\"m\"))");` to the top of a `build.rs`
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
|
||||
warning: 3 warnings emitted
|
||||
warning: 4 warnings emitted
|
||||
|
||||
|
@ -15,6 +15,11 @@
|
||||
//[some]~^^ WARNING unexpected `cfg` condition value
|
||||
fn ser() {}
|
||||
|
||||
#[cfg(feature)]
|
||||
//[none]~^ WARNING unexpected `cfg` condition name
|
||||
//[some]~^^ WARNING unexpected `cfg` condition value
|
||||
fn feat() {}
|
||||
|
||||
#[cfg(tokio_unstable)]
|
||||
//~^ WARNING unexpected `cfg` condition name
|
||||
fn tokio() {}
|
||||
|
@ -9,9 +9,18 @@ LL | #[cfg(feature = "serde")]
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
= note: `#[warn(unexpected_cfgs)]` on by default
|
||||
|
||||
warning: unexpected `cfg` condition name: `tokio_unstable`
|
||||
warning: unexpected `cfg` condition value: (none)
|
||||
--> $DIR/cargo-feature.rs:18:7
|
||||
|
|
||||
LL | #[cfg(feature)]
|
||||
| ^^^^^^^- help: specify a config value: `= "bitcode"`
|
||||
|
|
||||
= note: expected values for `feature` are: `bitcode`
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
|
||||
warning: unexpected `cfg` condition name: `tokio_unstable`
|
||||
--> $DIR/cargo-feature.rs:23:7
|
||||
|
|
||||
LL | #[cfg(tokio_unstable)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
@ -20,7 +29,7 @@ LL | #[cfg(tokio_unstable)]
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
|
||||
warning: unexpected `cfg` condition value: `m`
|
||||
--> $DIR/cargo-feature.rs:22:7
|
||||
--> $DIR/cargo-feature.rs:27:7
|
||||
|
|
||||
LL | #[cfg(CONFIG_NVME = "m")]
|
||||
| ^^^^^^^^^^^^^^---
|
||||
@ -31,5 +40,5 @@ LL | #[cfg(CONFIG_NVME = "m")]
|
||||
= help: consider using a Cargo feature instead or adding `println!("cargo:rustc-check-cfg=cfg(CONFIG_NVME, values(\"m\"))");` to the top of a `build.rs`
|
||||
= note: see <https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg> for more information about checking conditional configuration
|
||||
|
||||
warning: 3 warnings emitted
|
||||
warning: 4 warnings emitted
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user