summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2025-04-05 14:51:30 -0700
committerKhem Raj <raj.khem@gmail.com>2025-04-06 11:06:42 -0700
commit82056b92459607ea69b0133308685c4872cb19b7 (patch)
treea681ce9197da7ddbe5bf4cffadef48027144ba7a
parent8bca12516cb1c1904c371d583706861c215680b3 (diff)
downloadmeta-openembedded-82056b92459607ea69b0133308685c4872cb19b7.tar.gz
thin-provisioning-tools: Fix build on riscv32
Rustix crate needs libc crate to be patched Fix build on 32-bit hosts without 64bit atomics Use portable-atomic crate for 64bit atomics, helps 32bit arches without 64bit atomic intrinsics. Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc4
-rw-r--r--meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch38
-rw-r--r--meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Use-portable-atomics-crate.patch86
-rw-r--r--meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb2
4 files changed, 128 insertions, 2 deletions
diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc
index 65dda50739..e06fc31905 100644
--- a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc
+++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc
@@ -78,7 +78,7 @@ SRC_URI += " \
78 crate://crates.io/once_cell/1.19.0 \ 78 crate://crates.io/once_cell/1.19.0 \
79 crate://crates.io/os_pipe/1.2.1 \ 79 crate://crates.io/os_pipe/1.2.1 \
80 crate://crates.io/pkg-config/0.3.30 \ 80 crate://crates.io/pkg-config/0.3.30 \
81 crate://crates.io/portable-atomic/1.7.0 \ 81 crate://crates.io/portable-atomic/1.11.0 \
82 crate://crates.io/ppv-lite86/0.2.20 \ 82 crate://crates.io/ppv-lite86/0.2.20 \
83 crate://crates.io/predicates/3.1.2 \ 83 crate://crates.io/predicates/3.1.2 \
84 crate://crates.io/predicates-core/1.0.8 \ 84 crate://crates.io/predicates-core/1.0.8 \
@@ -218,7 +218,7 @@ SRC_URI[numtoa-0.1.0.sha256sum] = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26
218SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 218SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
219SRC_URI[os_pipe-1.2.1.sha256sum] = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" 219SRC_URI[os_pipe-1.2.1.sha256sum] = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982"
220SRC_URI[pkg-config-0.3.30.sha256sum] = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 220SRC_URI[pkg-config-0.3.30.sha256sum] = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
221SRC_URI[portable-atomic-1.7.0.sha256sum] = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" 221SRC_URI[portable-atomic-1.11.0.sha256sum] = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
222SRC_URI[ppv-lite86-0.2.20.sha256sum] = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" 222SRC_URI[ppv-lite86-0.2.20.sha256sum] = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
223SRC_URI[predicates-3.1.2.sha256sum] = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" 223SRC_URI[predicates-3.1.2.sha256sum] = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97"
224SRC_URI[predicates-core-1.0.8.sha256sum] = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" 224SRC_URI[predicates-core-1.0.8.sha256sum] = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931"
diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch
new file mode 100644
index 0000000000..ed5f40a881
--- /dev/null
+++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch
@@ -0,0 +1,38 @@
1From 11c494b418570a3fbdfbbbdfbbc4db0108743cc7 Mon Sep 17 00:00:00 2001
2From: Dan Gohman <dev@sunfishcode.online>
3Date: Sun, 6 Apr 2025 05:22:49 -0700
4Subject: [PATCH] Define more ioctl codes on riscv32gc-unknown-linux-gnu
5
6Define ioctl codes including `FICLONE` and `FS_IOC32_GETVERSION` on
7riscv32gc-unknown-linux-gnu.
8
9Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/4382]
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 src/unix/linux_like/linux/arch/generic/mod.rs | 6 +++++-
13 1 file changed, 5 insertions(+), 1 deletion(-)
14
15diff --git a/src/unix/linux_like/linux/arch/generic/mod.rs b/src/unix/linux_like/linux/arch/generic/mod.rs
16index 2f437e1..db1f1e7 100644
17--- a/src/unix/linux_like/linux/arch/generic/mod.rs
18+++ b/src/unix/linux_like/linux/arch/generic/mod.rs
19@@ -114,6 +114,7 @@ cfg_if! {
20 target_arch = "x86_64",
21 target_arch = "arm",
22 target_arch = "aarch64",
23+ target_arch = "riscv32",
24 target_arch = "riscv64",
25 target_arch = "s390x",
26 target_arch = "csky",
27@@ -218,7 +219,10 @@ cfg_if! {
28 // where S stands for size (int, long, struct...)
29 // where T stands for type ('f','v','X'...)
30 // where N stands for NR (NumbeR)
31- if #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "csky"))] {
32+ if #[cfg(any(target_arch = "x86",
33+ target_arch = "arm",
34+ target_arch = "riscv32",
35+ target_arch = "csky"))] {
36 pub const FS_IOC_GETFLAGS: ::Ioctl = 0x80046601;
37 pub const FS_IOC_SETFLAGS: ::Ioctl = 0x40046602;
38 pub const FS_IOC_GETVERSION: ::Ioctl = 0x80047601;
diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Use-portable-atomics-crate.patch b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Use-portable-atomics-crate.patch
new file mode 100644
index 0000000000..54d4fb4ae3
--- /dev/null
+++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools/0001-Use-portable-atomics-crate.patch
@@ -0,0 +1,86 @@
1From aa7186a69f8fb46cdb736e03682deb77f993103b Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 5 Apr 2025 18:53:03 -0700
4Subject: [PATCH] Use portable atomics crate
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9This extends building thing-provisioning-tools for
1032bit architectures without 64bit atomics support e.g.
11armv5, mips, ppc32 and riscv32. More info on portable-atomics [1]
12
13Fixes
14
15error[E0432]: unresolved import `std::sync::atomic::AtomicU64`
16│ 232 --> src/cache/writeback.rs:6:25
17│ 234 | use std::sync::atomic::{AtomicU64, Ordering};
18│ 235 | ^^^^^^^^^
19
20[1] https://crates.io/crates/portable-atomic
21
22Upstream-Status: Submitted [https://github.com/jthornber/thin-provisioning-tools/pull/321]
23Signed-off-by: Khem Raj <raj.khem@gmail.com>
24---
25 Cargo.lock | 5 +++--
26 Cargo.toml | 1 +
27 src/cache/writeback.rs | 2 +-
28 src/thin/stat.rs | 2 +-
29 4 files changed, 6 insertions(+), 4 deletions(-)
30
31--- a/Cargo.lock
32+++ b/Cargo.lock
33@@ -649,9 +649,9 @@ checksum = "d231b230927b5e4ad203db57bbcb
34
35 [[package]]
36 name = "portable-atomic"
37-version = "1.7.0"
38+version = "1.11.0"
39 source = "registry+https://github.com/rust-lang/crates.io-index"
40-checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
41+checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
42
43 [[package]]
44 name = "ppv-lite86"
45@@ -1000,6 +1000,7 @@ dependencies = [
46 "num-derive",
47 "num-traits",
48 "num_cpus",
49+ "portable-atomic",
50 "quick-xml",
51 "quickcheck",
52 "quickcheck_macros",
53--- a/Cargo.toml
54+++ b/Cargo.toml
55@@ -30,6 +30,7 @@ nom = "7.1"
56 num_cpus = "1.16"
57 num-derive = "0.4"
58 num-traits = "0.2"
59+portable-atomic = "1.11"
60 quick-xml = "0.36"
61 rand = "0.8"
62 rangemap = "1.5"
63--- a/src/cache/writeback.rs
64+++ b/src/cache/writeback.rs
65@@ -1,9 +1,9 @@
66 use anyhow::anyhow;
67+use portable_atomic::{AtomicU64, Ordering};
68 use roaring::RoaringBitmap;
69 use std::fs::File;
70 use std::io::Cursor;
71 use std::path::Path;
72-use std::sync::atomic::{AtomicU64, Ordering};
73 use std::sync::mpsc::{self, SyncSender};
74 use std::sync::{Arc, Mutex};
75 use std::thread;
76--- a/src/thin/stat.rs
77+++ b/src/thin/stat.rs
78@@ -1,7 +1,7 @@
79 use anyhow::{anyhow, Result};
80+use portable_atomic::{AtomicU64, Ordering};
81 use std::collections::BTreeMap;
82 use std::path::Path;
83-use std::sync::atomic::{AtomicU64, Ordering};
84 use std::sync::{Arc, Mutex};
85 use std::vec::Vec;
86
diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
index 1981a35934..a60ca11244 100644
--- a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
+++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
@@ -9,6 +9,8 @@ S = "${WORKDIR}/git"
9 9
10SRC_URI = " \ 10SRC_URI = " \
11 git://github.com/jthornber/thin-provisioning-tools;branch=main;protocol=https \ 11 git://github.com/jthornber/thin-provisioning-tools;branch=main;protocol=https \
12 file://0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch;patchdir=${CARGO_VENDORING_DIRECTORY}/libc-0.2.155 \
13 file://0001-Use-portable-atomics-crate.patch \
12 " 14 "
13 15
14# v1.1.0 16# v1.1.0