From 055fc16cdade530fe821f856ded9faa2d95fd101 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 19 Apr 2025 00:17:45 -0700 Subject: python3-pydantic-core: Upgrade to 2.34.1 Fix RISCV-32 builds while here Signed-off-by: Khem Raj --- .../0001-Upgrade-radium-to-1.0.patch | 540 +++++++++++++++++++++ ...argo.toml-Update-bitvec-to-use-radium-1.x.patch | 59 +++ 2 files changed, 599 insertions(+) create mode 100644 meta-python/recipes-devtools/python/python3-pydantic-core/0001-Upgrade-radium-to-1.0.patch create mode 100644 meta-python/recipes-devtools/python/python3-pydantic-core/0001-cargo.toml-Update-bitvec-to-use-radium-1.x.patch (limited to 'meta-python/recipes-devtools/python/python3-pydantic-core') diff --git a/meta-python/recipes-devtools/python/python3-pydantic-core/0001-Upgrade-radium-to-1.0.patch b/meta-python/recipes-devtools/python/python3-pydantic-core/0001-Upgrade-radium-to-1.0.patch new file mode 100644 index 0000000000..00dcd634f2 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-pydantic-core/0001-Upgrade-radium-to-1.0.patch @@ -0,0 +1,540 @@ +From 87753249fb9ac26acd1eb0135fefded871c24e6c Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 18 Apr 2025 17:54:42 -0700 +Subject: [PATCH] Upgrade radium to 1.0 + +Upstream-Status: Submitted [https://github.com/ferrilab/bitvec/pull/220] +Signed-off-by: Khem Raj +--- + Cargo.toml | 2 +- + src/macros/tests.rs | 256 ++++++++++++++++++++++---------------------- + src/mem.rs | 28 ++--- + src/serdes.rs | 58 +++++----- + src/store.rs | 61 +++++------ + 5 files changed, 207 insertions(+), 198 deletions(-) + +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -55,7 +55,7 @@ version = "^2.0" + default-features = false + + [dependencies.radium] +-version = "0.7" ++version = "1" + + [dependencies.serde] + version = "1" +--- a/src/macros/tests.rs ++++ b/src/macros/tests.rs +@@ -231,50 +231,52 @@ fn compile_bits() { + let _: &BitSlice = bits![u64, crate::order::Msb0; 1; 100]; + } + +- radium::if_atomic! { +- if atomic(8) { +- let _: &BitSlice = bits![AtomicU8, LocalBits; 0, 1]; +- let _: &BitSlice = bits![AtomicU8, Lsb0; 0, 1]; +- let _: &BitSlice = bits![AtomicU8, Msb0; 0, 1]; +- let _: &BitSlice = bits![RadiumU8, LocalBits; 1; 100]; +- let _: &BitSlice = bits![RadiumU8, Lsb0; 1; 100]; +- let _: &BitSlice = bits![RadiumU8, Msb0; 1; 100]; +- } +- if atomic(16) { +- let _: &BitSlice = bits![AtomicU16, LocalBits; 0, 1]; +- let _: &BitSlice = bits![AtomicU16, Lsb0; 0, 1]; +- let _: &BitSlice = bits![AtomicU16, Msb0; 0, 1]; +- let _: &BitSlice = bits![RadiumU16, LocalBits; 1; 100]; +- let _: &BitSlice = bits![RadiumU16, Lsb0; 1; 100]; +- let _: &BitSlice = bits![RadiumU16, Msb0; 1; 100]; +- } +- if atomic(32) { +- let _: &BitSlice = bits![AtomicU32, LocalBits; 0, 1]; +- let _: &BitSlice = bits![AtomicU32, Lsb0; 0, 1]; +- let _: &BitSlice = bits![AtomicU32, Msb0; 0, 1]; +- let _: &BitSlice = bits![RadiumU32, LocalBits; 1; 100]; +- let _: &BitSlice = bits![RadiumU32, Lsb0; 1; 100]; +- let _: &BitSlice = bits![RadiumU32, Msb0; 1; 100]; +- } +- if atomic(size) { +- let _: &BitSlice = bits![AtomicUsize, LocalBits; 0, 1]; +- let _: &BitSlice = bits![AtomicUsize, Lsb0; 0, 1]; +- let _: &BitSlice = bits![AtomicUsize, Msb0; 0, 1]; +- let _: &BitSlice = bits![RadiumUsize, LocalBits; 1; 100]; +- let _: &BitSlice = bits![RadiumUsize, Lsb0; 1; 100]; +- let _: &BitSlice = bits![RadiumUsize, Msb0; 1; 100]; +- } ++ #[cfg(target_has_atomic = "8")] ++ { ++ let _: &BitSlice = bits![AtomicU8, LocalBits; 0, 1]; ++ let _: &BitSlice = bits![AtomicU8, Lsb0; 0, 1]; ++ let _: &BitSlice = bits![AtomicU8, Msb0; 0, 1]; ++ let _: &BitSlice = bits![RadiumU8, LocalBits; 1; 100]; ++ let _: &BitSlice = bits![RadiumU8, Lsb0; 1; 100]; ++ let _: &BitSlice = bits![RadiumU8, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "16")] ++ { ++ let _: &BitSlice = bits![AtomicU16, LocalBits; 0, 1]; ++ let _: &BitSlice = bits![AtomicU16, Lsb0; 0, 1]; ++ let _: &BitSlice = bits![AtomicU16, Msb0; 0, 1]; ++ let _: &BitSlice = bits![RadiumU16, LocalBits; 1; 100]; ++ let _: &BitSlice = bits![RadiumU16, Lsb0; 1; 100]; ++ let _: &BitSlice = bits![RadiumU16, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "32")] ++ { ++ let _: &BitSlice = bits![AtomicU32, LocalBits; 0, 1]; ++ let _: &BitSlice = bits![AtomicU32, Lsb0; 0, 1]; ++ let _: &BitSlice = bits![AtomicU32, Msb0; 0, 1]; ++ let _: &BitSlice = bits![RadiumU32, LocalBits; 1; 100]; ++ let _: &BitSlice = bits![RadiumU32, Lsb0; 1; 100]; ++ let _: &BitSlice = bits![RadiumU32, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "ptr")] ++ { ++ let _: &BitSlice = bits![AtomicUsize, LocalBits; 0, 1]; ++ let _: &BitSlice = bits![AtomicUsize, Lsb0; 0, 1]; ++ let _: &BitSlice = bits![AtomicUsize, Msb0; 0, 1]; ++ let _: &BitSlice = bits![RadiumUsize, LocalBits; 1; 100]; ++ let _: &BitSlice = bits![RadiumUsize, Lsb0; 1; 100]; ++ let _: &BitSlice = bits![RadiumUsize, Msb0; 1; 100]; + } ++ + #[cfg(target_pointer_width = "64")] +- radium::if_atomic! { +- if atomic(64) { +- let _: &BitSlice = bits![AtomicU64, LocalBits; 0, 1]; +- let _: &BitSlice = bits![AtomicU64, Lsb0; 0, 1]; +- let _: &BitSlice = bits![AtomicU64, Msb0; 0, 1]; +- let _: &BitSlice = bits![RadiumU64, LocalBits; 1; 100]; +- let _: &BitSlice = bits![RadiumU64, Lsb0; 1; 100]; +- let _: &BitSlice = bits![RadiumU64, Msb0; 1; 100]; +- } ++ #[cfg(target_has_atomic = "64")] ++ { ++ let _: &BitSlice = bits![AtomicU64, LocalBits; 0, 1]; ++ let _: &BitSlice = bits![AtomicU64, Lsb0; 0, 1]; ++ let _: &BitSlice = bits![AtomicU64, Msb0; 0, 1]; ++ let _: &BitSlice = bits![RadiumU64, LocalBits; 1; 100]; ++ let _: &BitSlice = bits![RadiumU64, Lsb0; 1; 100]; ++ let _: &BitSlice = bits![RadiumU64, Msb0; 1; 100]; + } + } + +@@ -346,50 +348,51 @@ fn compile_bitvec() { + bitvec![Cell, crate::order::Msb0; 1; 100]; + let _: BitVec = bitvec![u64, crate::order::Msb0; 1; 100]; + } +- radium::if_atomic! { +- if atomic(8) { +- let _: BitVec =bitvec![AtomicU8, LocalBits; 0, 1]; +- let _: BitVec =bitvec![AtomicU8, Lsb0; 0, 1]; +- let _: BitVec =bitvec![AtomicU8, Msb0; 0, 1]; +- let _: BitVec =bitvec![RadiumU8, LocalBits; 1; 100]; +- let _: BitVec =bitvec![RadiumU8, Lsb0; 1; 100]; +- let _: BitVec =bitvec![RadiumU8, Msb0; 1; 100]; +- } +- if atomic(16) { +- let _: BitVec =bitvec![AtomicU16, LocalBits; 0, 1]; +- let _: BitVec =bitvec![AtomicU16, Lsb0; 0, 1]; +- let _: BitVec =bitvec![AtomicU16, Msb0; 0, 1]; +- let _: BitVec =bitvec![RadiumU16, LocalBits; 1; 100]; +- let _: BitVec =bitvec![RadiumU16, Lsb0; 1; 100]; +- let _: BitVec =bitvec![RadiumU16, Msb0; 1; 100]; +- } +- if atomic(32) { +- let _: BitVec =bitvec![AtomicU32, LocalBits; 0, 1]; +- let _: BitVec =bitvec![AtomicU32, Lsb0; 0, 1]; +- let _: BitVec =bitvec![AtomicU32, Msb0; 0, 1]; +- let _: BitVec =bitvec![RadiumU32, LocalBits; 1; 100]; +- let _: BitVec =bitvec![RadiumU32, Lsb0; 1; 100]; +- let _: BitVec =bitvec![RadiumU32, Msb0; 1; 100]; +- } +- if atomic(size) { +- let _: BitVec =bitvec![AtomicUsize, LocalBits; 0, 1]; +- let _: BitVec =bitvec![AtomicUsize, Lsb0; 0, 1]; +- let _: BitVec =bitvec![AtomicUsize, Msb0; 0, 1]; +- let _: BitVec =bitvec![RadiumUsize, LocalBits; 1; 100]; +- let _: BitVec =bitvec![RadiumUsize, Lsb0; 1; 100]; +- let _: BitVec =bitvec![RadiumUsize, Msb0; 1; 100]; +- } ++ #[cfg(target_has_atomic = "8")] ++ { ++ let _: BitVec =bitvec![AtomicU8, LocalBits; 0, 1]; ++ let _: BitVec =bitvec![AtomicU8, Lsb0; 0, 1]; ++ let _: BitVec =bitvec![AtomicU8, Msb0; 0, 1]; ++ let _: BitVec =bitvec![RadiumU8, LocalBits; 1; 100]; ++ let _: BitVec =bitvec![RadiumU8, Lsb0; 1; 100]; ++ let _: BitVec =bitvec![RadiumU8, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "16")] ++ { ++ let _: BitVec =bitvec![AtomicU16, LocalBits; 0, 1]; ++ let _: BitVec =bitvec![AtomicU16, Lsb0; 0, 1]; ++ let _: BitVec =bitvec![AtomicU16, Msb0; 0, 1]; ++ let _: BitVec =bitvec![RadiumU16, LocalBits; 1; 100]; ++ let _: BitVec =bitvec![RadiumU16, Lsb0; 1; 100]; ++ let _: BitVec =bitvec![RadiumU16, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "32")] ++ { ++ let _: BitVec =bitvec![AtomicU32, LocalBits; 0, 1]; ++ let _: BitVec =bitvec![AtomicU32, Lsb0; 0, 1]; ++ let _: BitVec =bitvec![AtomicU32, Msb0; 0, 1]; ++ let _: BitVec =bitvec![RadiumU32, LocalBits; 1; 100]; ++ let _: BitVec =bitvec![RadiumU32, Lsb0; 1; 100]; ++ let _: BitVec =bitvec![RadiumU32, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "ptr")] ++ { ++ let _: BitVec =bitvec![AtomicUsize, LocalBits; 0, 1]; ++ let _: BitVec =bitvec![AtomicUsize, Lsb0; 0, 1]; ++ let _: BitVec =bitvec![AtomicUsize, Msb0; 0, 1]; ++ let _: BitVec =bitvec![RadiumUsize, LocalBits; 1; 100]; ++ let _: BitVec =bitvec![RadiumUsize, Lsb0; 1; 100]; ++ let _: BitVec =bitvec![RadiumUsize, Msb0; 1; 100]; + } + #[cfg(target_pointer_width = "64")] +- radium::if_atomic! { +- if atomic(64) { +- let _: BitVec =bitvec![AtomicU64, LocalBits; 0, 1]; +- let _: BitVec =bitvec![AtomicU64, Lsb0; 0, 1]; +- let _: BitVec =bitvec![AtomicU64, Msb0; 0, 1]; +- let _: BitVec =bitvec![RadiumU64, LocalBits; 1; 100]; +- let _: BitVec =bitvec![RadiumU64, Lsb0; 1; 100]; +- let _: BitVec =bitvec![RadiumU64, Msb0; 1; 100]; +- } ++ #[cfg(target_has_atomic = "64")] ++ { ++ let _: BitVec =bitvec![AtomicU64, LocalBits; 0, 1]; ++ let _: BitVec =bitvec![AtomicU64, Lsb0; 0, 1]; ++ let _: BitVec =bitvec![AtomicU64, Msb0; 0, 1]; ++ let _: BitVec =bitvec![RadiumU64, LocalBits; 1; 100]; ++ let _: BitVec =bitvec![RadiumU64, Lsb0; 1; 100]; ++ let _: BitVec =bitvec![RadiumU64, Msb0; 1; 100]; + } + } + +@@ -461,50 +464,51 @@ fn compile_bitbox() { + bitbox![Cell, crate::order::Msb0; 1; 100]; + let _: BitBox = bitbox![u64, crate::order::Msb0; 1; 100]; + } +- radium::if_atomic! { +- if atomic(8) { +- let _: BitBox =bitbox![AtomicU8, LocalBits; 0, 1]; +- let _: BitBox =bitbox![AtomicU8, Lsb0; 0, 1]; +- let _: BitBox =bitbox![AtomicU8, Msb0; 0, 1]; +- let _: BitBox =bitbox![RadiumU8, LocalBits; 1; 100]; +- let _: BitBox =bitbox![RadiumU8, Lsb0; 1; 100]; +- let _: BitBox =bitbox![RadiumU8, Msb0; 1; 100]; +- } +- if atomic(16) { +- let _: BitBox =bitbox![AtomicU16, LocalBits; 0, 1]; +- let _: BitBox =bitbox![AtomicU16, Lsb0; 0, 1]; +- let _: BitBox =bitbox![AtomicU16, Msb0; 0, 1]; +- let _: BitBox =bitbox![RadiumU16, LocalBits; 1; 100]; +- let _: BitBox =bitbox![RadiumU16, Lsb0; 1; 100]; +- let _: BitBox =bitbox![RadiumU16, Msb0; 1; 100]; +- } +- if atomic(32) { +- let _: BitBox =bitbox![AtomicU32, LocalBits; 0, 1]; +- let _: BitBox =bitbox![AtomicU32, Lsb0; 0, 1]; +- let _: BitBox =bitbox![AtomicU32, Msb0; 0, 1]; +- let _: BitBox =bitbox![RadiumU32, LocalBits; 1; 100]; +- let _: BitBox =bitbox![RadiumU32, Lsb0; 1; 100]; +- let _: BitBox =bitbox![RadiumU32, Msb0; 1; 100]; +- } +- if atomic(size) { +- let _: BitBox =bitbox![AtomicUsize, LocalBits; 0, 1]; +- let _: BitBox =bitbox![AtomicUsize, Lsb0; 0, 1]; +- let _: BitBox =bitbox![AtomicUsize, Msb0; 0, 1]; +- let _: BitBox =bitbox![RadiumUsize, LocalBits; 1; 100]; +- let _: BitBox =bitbox![RadiumUsize, Lsb0; 1; 100]; +- let _: BitBox =bitbox![RadiumUsize, Msb0; 1; 100]; +- } ++ #[cfg(target_has_atomic = "8")] ++ { ++ let _: BitBox =bitbox![AtomicU8, LocalBits; 0, 1]; ++ let _: BitBox =bitbox![AtomicU8, Lsb0; 0, 1]; ++ let _: BitBox =bitbox![AtomicU8, Msb0; 0, 1]; ++ let _: BitBox =bitbox![RadiumU8, LocalBits; 1; 100]; ++ let _: BitBox =bitbox![RadiumU8, Lsb0; 1; 100]; ++ let _: BitBox =bitbox![RadiumU8, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "16")] ++ { ++ let _: BitBox =bitbox![AtomicU16, LocalBits; 0, 1]; ++ let _: BitBox =bitbox![AtomicU16, Lsb0; 0, 1]; ++ let _: BitBox =bitbox![AtomicU16, Msb0; 0, 1]; ++ let _: BitBox =bitbox![RadiumU16, LocalBits; 1; 100]; ++ let _: BitBox =bitbox![RadiumU16, Lsb0; 1; 100]; ++ let _: BitBox =bitbox![RadiumU16, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "32")] ++ { ++ let _: BitBox =bitbox![AtomicU32, LocalBits; 0, 1]; ++ let _: BitBox =bitbox![AtomicU32, Lsb0; 0, 1]; ++ let _: BitBox =bitbox![AtomicU32, Msb0; 0, 1]; ++ let _: BitBox =bitbox![RadiumU32, LocalBits; 1; 100]; ++ let _: BitBox =bitbox![RadiumU32, Lsb0; 1; 100]; ++ let _: BitBox =bitbox![RadiumU32, Msb0; 1; 100]; ++ } ++ #[cfg(target_has_atomic = "ptr")] ++ { ++ let _: BitBox =bitbox![AtomicUsize, LocalBits; 0, 1]; ++ let _: BitBox =bitbox![AtomicUsize, Lsb0; 0, 1]; ++ let _: BitBox =bitbox![AtomicUsize, Msb0; 0, 1]; ++ let _: BitBox =bitbox![RadiumUsize, LocalBits; 1; 100]; ++ let _: BitBox =bitbox![RadiumUsize, Lsb0; 1; 100]; ++ let _: BitBox =bitbox![RadiumUsize, Msb0; 1; 100]; + } + #[cfg(target_pointer_width = "64")] +- radium::if_atomic! { +- if atomic(64) { +- let _: BitBox =bitbox![AtomicU64, LocalBits; 0, 1]; +- let _: BitBox =bitbox![AtomicU64, Lsb0; 0, 1]; +- let _: BitBox =bitbox![AtomicU64, Msb0; 0, 1]; +- let _: BitBox =bitbox![RadiumU64, LocalBits; 1; 100]; +- let _: BitBox =bitbox![RadiumU64, Lsb0; 1; 100]; +- let _: BitBox =bitbox![RadiumU64, Msb0; 1; 100]; +- } ++ #[cfg(target_has_atomic = "64")] ++ { ++ let _: BitBox =bitbox![AtomicU64, LocalBits; 0, 1]; ++ let _: BitBox =bitbox![AtomicU64, Lsb0; 0, 1]; ++ let _: BitBox =bitbox![AtomicU64, Msb0; 0, 1]; ++ let _: BitBox =bitbox![RadiumU64, LocalBits; 1; 100]; ++ let _: BitBox =bitbox![RadiumU64, Lsb0; 1; 100]; ++ let _: BitBox =bitbox![RadiumU64, Msb0; 1; 100]; + } + } + +--- a/src/mem.rs ++++ b/src/mem.rs +@@ -101,30 +101,30 @@ macro_rules! element { + } + } + +- radium::if_atomic!( if atomic($size) { +- use core::sync::atomic::$atom; +- impl BitElement<$atom> { +- /// Creates a new element wrapper from a raw integer. +- pub const fn new(elem: $bare) -> Self { +- Self { +- elem: <$atom>::new(elem), +- } ++ #[cfg(target_has_atomic = $size)] ++ use core::sync::atomic::$atom; ++ #[cfg(target_has_atomic = $size)] ++ impl BitElement<$atom> { ++ /// Creates a new element wrapper from a raw integer. ++ pub const fn new(elem: $bare) -> Self { ++ Self { ++ elem: <$atom>::new(elem), + } + } +- }); ++ } + )+ }; + } + + element! { +- 8, u8 => AtomicU8; +- 16, u16 => AtomicU16; +- 32, u32 => AtomicU32; ++ "8", u8 => AtomicU8; ++ "16", u16 => AtomicU16; ++ "32", u32 => AtomicU32; + } + + #[cfg(target_pointer_width = "64")] +-element!(64, u64 => AtomicU64); ++element!("64", u64 => AtomicU64); + +-element!(size, usize => AtomicUsize); ++element!("ptr", usize => AtomicUsize); + + #[cfg(test)] + mod tests { +--- a/src/serdes.rs ++++ b/src/serdes.rs +@@ -112,36 +112,39 @@ mod tests { + Msb0 @ RadiumU8, RadiumU16, RadiumU32, RadiumUsize; + LocalBits @ RadiumU8, RadiumU16, RadiumU32, RadiumUsize; + } +- radium::if_atomic! { +- if atomic(8) { +- check_impl! { +- Lsb0 @ AtomicU8; +- Msb0 @ AtomicU8; +- LocalBits @ AtomicU8; +- } ++ #[cfg(target_has_atomic = "8")] ++ { ++ check_impl! { ++ Lsb0 @ AtomicU8; ++ Msb0 @ AtomicU8; ++ LocalBits @ AtomicU8; + } +- if atomic(16) { +- check_impl! { +- Lsb0 @ AtomicU16; +- Msb0 @ AtomicU16; +- LocalBits @ AtomicU16; +- } ++ } ++ #[cfg(target_has_atomic = "16")] ++ { ++ check_impl! { ++ Lsb0 @ AtomicU16; ++ Msb0 @ AtomicU16; ++ LocalBits @ AtomicU16; + } +- if atomic(32) { +- check_impl! { +- Lsb0 @ AtomicU32; +- Msb0 @ AtomicU32; +- LocalBits @ AtomicU32; +- } ++ } ++ #[cfg(target_has_atomic = "32")] ++ { ++ check_impl! { ++ Lsb0 @ AtomicU32; ++ Msb0 @ AtomicU32; ++ LocalBits @ AtomicU32; + } +- if atomic(ptr) { +- check_impl! { +- Lsb0 @ AtomicUsize; +- Msb0 @ AtomicUsize; +- LocalBits @ AtomicUsize; +- } ++ } ++ #[cfg(target_has_atomic = "ptr")] ++ { ++ check_impl! { ++ Lsb0 @ AtomicUsize; ++ Msb0 @ AtomicUsize; ++ LocalBits @ AtomicUsize; + } + } ++ + #[cfg(target_pointer_width = "64")] + check_impl! { + Lsb0 @ u64, RadiumU64; +@@ -149,12 +152,13 @@ mod tests { + LocalBits @ u64, RadiumU64; + } + #[cfg(target_pointer_width = "64")] +- radium::if_atomic!(if atomic(64) { ++ #[cfg(target_has_atomic = "64")] ++ { + check_impl! { + Lsb0 @ AtomicU64; + Msb0 @ AtomicU64; + LocalBits @ AtomicU64; + } +- }); ++ } + } + } +--- a/src/store.rs ++++ b/src/store.rs +@@ -199,49 +199,49 @@ store!(usize => BitSafeUsize); + /// Generates `BitStore` implementations for atomic types. + macro_rules! atomic { + ($($size:tt, $base:ty => $atom:ident);+ $(;)?) => { $( +- radium::if_atomic!(if atomic($size) { +- use core::sync::atomic::$atom; ++ #[cfg(target_has_atomic = $size)] ++ use core::sync::atomic::$atom; + +- impl BitStore for $atom { +- type Mem = $base; +- type Access = Self; +- type Alias = Self; +- type Unalias = Self; +- +- const ZERO: Self = ::new(0); +- +- #[inline] +- fn new(value: Self::Mem) -> Self { ::new(value) } +- +- #[inline] +- fn load_value(&self) -> Self::Mem { +- self.load(core::sync::atomic::Ordering::Relaxed) +- } +- +- #[inline] +- fn store_value(&mut self, value: Self::Mem) { +- *self = Self::new(value); +- } +- +- const ALIGNED_TO_SIZE: [(); 1] +- = [(); mem::aligned_to_size::() as usize]; ++ #[cfg(target_has_atomic = $size)] ++ impl BitStore for $atom { ++ type Mem = $base; ++ type Access = Self; ++ type Alias = Self; ++ type Unalias = Self; ++ ++ const ZERO: Self = ::new(0); ++ ++ #[inline] ++ fn new(value: Self::Mem) -> Self { ::new(value) } ++ ++ #[inline] ++ fn load_value(&self) -> Self::Mem { ++ self.load(core::sync::atomic::Ordering::Relaxed) ++ } + +- const ALIAS_WIDTH: [(); 1] = [()]; ++ #[inline] ++ fn store_value(&mut self, value: Self::Mem) { ++ *self = Self::new(value); + } +- }); ++ ++ const ALIGNED_TO_SIZE: [(); 1] ++ = [(); mem::aligned_to_size::() as usize]; ++ ++ const ALIAS_WIDTH: [(); 1] = [()]; ++ } + )+ }; + } + + atomic! { +- 8, u8 => AtomicU8; +- 16, u16 => AtomicU16; +- 32, u32 => AtomicU32; ++ "8", u8 => AtomicU8; ++ "16", u16 => AtomicU16; ++ "32", u32 => AtomicU32; + } + + #[cfg(target_pointer_width = "64")] +-atomic!(64, u64 => AtomicU64); ++atomic!("64", u64 => AtomicU64); + +-atomic!(size, usize => AtomicUsize); ++atomic!("ptr", usize => AtomicUsize); + + #[cfg(test)] + mod tests { +@@ -265,11 +265,12 @@ mod tests { + cell.store_value(39); + assert_eq!(cell.load_value(), 39); + +- radium::if_atomic!(if atomic(size) { ++ #[cfg(target_has_atomic = "ptr")] ++ { + let mut atom = AtomicUsize::new(0); + atom.store_value(57); + assert_eq!(atom.load_value(), 57); +- }); ++ } + } + + /// Unaliased `BitSlice`s are universally threadsafe, because they satisfy diff --git a/meta-python/recipes-devtools/python/python3-pydantic-core/0001-cargo.toml-Update-bitvec-to-use-radium-1.x.patch b/meta-python/recipes-devtools/python/python3-pydantic-core/0001-cargo.toml-Update-bitvec-to-use-radium-1.x.patch new file mode 100644 index 0000000000..4f2012e8a2 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-pydantic-core/0001-cargo.toml-Update-bitvec-to-use-radium-1.x.patch @@ -0,0 +1,59 @@ +From 560c73cffabc1c2e66552d7c248c0928211d3dea Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 19 Apr 2025 00:09:42 -0700 +Subject: [PATCH] cargo.toml: Update bitvec to use radium 1.x + +Upstream-Status: Submitted [https://github.com/ferrilab/bitvec/pull/220] + +Signed-off-by: Khem Raj +--- + Cargo.lock | 25 +++++++++++++++++++++++-- + Cargo.toml | 1 + + 2 files changed, 24 insertions(+), 2 deletions(-) + +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -27,6 +27,8 @@ include = [ + rust-version = "1.75" + + [dependencies] ++#bitvec = { git = "https://github.com/alexanderkjall/bitvec", branch = "upgrade-radium-to-1" } ++radium = "1" + # TODO it would be very nice to remove the "py-clone" feature as it can panic, + # but needs a bit of work to make sure it's not used in the codebase + pyo3 = { version = "0.24", features = ["generate-import-lib", "num-bigint", "py-clone"] } +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -43,7 +43,7 @@ source = "registry+https://github.com/ru + checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" + dependencies = [ + "funty", +- "radium", ++ "radium 1.1.0", + "tap", + "wyz", + ] +@@ -436,6 +436,7 @@ dependencies = [ + "num-traits", + "pyo3", + "pyo3-build-config", ++ "radium 1.1.0", + "regex", + "serde", + "serde_json", +@@ -538,6 +539,15 @@ source = "registry+https://github.com/ru + checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + + [[package]] ++name = "radium" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "db0b76288902db304c864a12046b73d2d895cc34a4bb8137baaeebe9978a072c" ++dependencies = [ ++ "cfg-if", ++] ++ ++[[package]] + name = "regex" + version = "1.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" -- cgit v1.2.3-54-g00ecf