* [PATCH v3] python3-maturin: Backport a libc build fix for riscv32
@ 2025-04-12 7:26 Khem Raj
0 siblings, 0 replies; only message in thread
From: Khem Raj @ 2025-04-12 7:26 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
There is a libc patch needed to fix rustix 0.38.x build
It is already fixed in latest libc upstream, backport it
here
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
v2: Right fix is in libc not rustix, update the patch accordingly
v3: Use the final fix applied to rust libc upstream for the backport
...l-codes-on-riscv32gc-unknown-linux-g.patch | 110 ++++++++++++++++++
.../python/python3-maturin_1.8.3.bb | 1 +
2 files changed, 111 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-maturin/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch
diff --git a/meta/recipes-devtools/python/python3-maturin/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch b/meta/recipes-devtools/python/python3-maturin/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch
new file mode 100644
index 00000000000..aceefa7967e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin/0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch
@@ -0,0 +1,110 @@
+From 4b439b0953573e0383da7e092b1f516ba21f3398 Mon Sep 17 00:00:00 2001
+From: Dan Gohman <dev@sunfishcode.online>
+Date: Sun, 6 Apr 2025 05:22:49 -0700
+Subject: [PATCH] Define Linux ioctl codes on more architectures.
+
+Define ioctl codes including `FICLONE` and `FS_IOC32_GETVERSION` using
+`_IOR` and `_IOW` so that they're automatically supported on all
+architectures, including riscv32gc-unknown-linux-gnu.
+
+Upstream-Status: Backport [https://github.com/rust-lang/libc/pull/4382/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/unix/linux_like/linux/arch/generic/mod.rs | 75 ++++---------------
+ 1 file changed, 15 insertions(+), 60 deletions(-)
+
+--- a/src/unix/linux_like/linux/arch/generic/mod.rs
++++ b/src/unix/linux_like/linux/arch/generic/mod.rs
+@@ -1,5 +1,5 @@
+ use crate::prelude::*;
+-use crate::Ioctl;
++use crate::{Ioctl, _IOR, _IOW};
+
+ s! {
+ pub struct termios2 {
+@@ -116,21 +116,8 @@ cfg_if! {
+ // pub const SO_PREFER_BUSY_POLL: c_int = 69;
+ // pub const SO_BUSY_POLL_BUDGET: c_int = 70;
+
+-cfg_if! {
+- if #[cfg(any(
+- target_arch = "x86",
+- target_arch = "x86_64",
+- target_arch = "arm",
+- target_arch = "aarch64",
+- target_arch = "riscv64",
+- target_arch = "s390x",
+- target_arch = "csky",
+- target_arch = "loongarch64"
+- ))] {
+- pub const FICLONE: c_ulong = 0x40049409;
+- pub const FICLONERANGE: c_ulong = 0x4020940D;
+- }
+-}
++pub const FICLONE: Ioctl = _IOW::<c_int>(0x94, 9) as Ioctl;
++pub const FICLONERANGE: Ioctl = _IOW::<crate::file_clone_range>(0x94, 13) as Ioctl;
+
+ // Defined in unix/linux_like/mod.rs
+ // pub const SCM_TIMESTAMP: c_int = SO_TIMESTAMP;
+@@ -248,49 +235,18 @@ pub const TUNGETVNETBE: Ioctl = 0x800454
+ pub const TUNSETSTEERINGEBPF: Ioctl = 0x800454e0;
+ pub const TUNSETFILTEREBPF: Ioctl = 0x800454e1;
+
+-cfg_if! {
+- // Those type are constructed using the _IOC macro
+- // DD-SS_SSSS_SSSS_SSSS-TTTT_TTTT-NNNN_NNNN
+- // where D stands for direction (either None (00), Read (01) or Write (11))
+- // where S stands for size (int, long, struct...)
+- // where T stands for type ('f','v','X'...)
+- // where N stands for NR (NumbeR)
+- if #[cfg(any(
+- target_arch = "x86",
+- target_arch = "arm",
+- target_arch = "csky"
+- ))] {
+- pub const FS_IOC_GETFLAGS: Ioctl = 0x80046601;
+- pub const FS_IOC_SETFLAGS: Ioctl = 0x40046602;
+- pub const FS_IOC_GETVERSION: Ioctl = 0x80047601;
+- pub const FS_IOC_SETVERSION: Ioctl = 0x40047602;
+- pub const FS_IOC32_GETFLAGS: Ioctl = 0x80046601;
+- pub const FS_IOC32_SETFLAGS: Ioctl = 0x40046602;
+- pub const FS_IOC32_GETVERSION: Ioctl = 0x80047601;
+- pub const FS_IOC32_SETVERSION: Ioctl = 0x40047602;
+- pub const TUNATTACHFILTER: Ioctl = 0x400854d5;
+- pub const TUNDETACHFILTER: Ioctl = 0x400854d6;
+- pub const TUNGETFILTER: Ioctl = 0x800854db;
+- } else if #[cfg(any(
+- target_arch = "x86_64",
+- target_arch = "riscv64",
+- target_arch = "aarch64",
+- target_arch = "s390x",
+- target_arch = "loongarch64"
+- ))] {
+- pub const FS_IOC_GETFLAGS: Ioctl = 0x80086601;
+- pub const FS_IOC_SETFLAGS: Ioctl = 0x40086602;
+- pub const FS_IOC_GETVERSION: Ioctl = 0x80087601;
+- pub const FS_IOC_SETVERSION: Ioctl = 0x40087602;
+- pub const FS_IOC32_GETFLAGS: Ioctl = 0x80046601;
+- pub const FS_IOC32_SETFLAGS: Ioctl = 0x40046602;
+- pub const FS_IOC32_GETVERSION: Ioctl = 0x80047601;
+- pub const FS_IOC32_SETVERSION: Ioctl = 0x40047602;
+- pub const TUNATTACHFILTER: Ioctl = 0x401054d5;
+- pub const TUNDETACHFILTER: Ioctl = 0x401054d6;
+- pub const TUNGETFILTER: Ioctl = 0x801054db;
+- }
+-}
++pub const FS_IOC_GETFLAGS: Ioctl = _IOR::<c_long>('f' as u32, 1) as Ioctl;
++pub const FS_IOC_SETFLAGS: Ioctl = _IOW::<c_long>('f' as u32, 2) as Ioctl;
++pub const FS_IOC_GETVERSION: Ioctl = _IOR::<c_long>('v' as u32, 1) as Ioctl;
++pub const FS_IOC_SETVERSION: Ioctl = _IOW::<c_long>('v' as u32, 2) as Ioctl;
++pub const FS_IOC32_GETFLAGS: Ioctl = _IOR::<c_int>('f' as u32, 1) as Ioctl;
++pub const FS_IOC32_SETFLAGS: Ioctl = _IOW::<c_int>('f' as u32, 2) as Ioctl;
++pub const FS_IOC32_GETVERSION: Ioctl = _IOR::<c_int>('v' as u32, 1) as Ioctl;
++pub const FS_IOC32_SETVERSION: Ioctl = _IOW::<c_int>('v' as u32, 2) as Ioctl;
++
++pub const TUNATTACHFILTER: Ioctl = _IOW::<crate::sock_fprog>('T' as u32, 213) as Ioctl;
++pub const TUNDETACHFILTER: Ioctl = _IOW::<crate::sock_fprog>('T' as u32, 214) as Ioctl;
++pub const TUNGETFILTER: Ioctl = _IOR::<crate::sock_fprog>('T' as u32, 219) as Ioctl;
+
+ cfg_if! {
+ if #[cfg(any(target_arch = "arm", target_arch = "s390x"))] {
diff --git a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb
index 17c8fb7083b..3ec4d0c103b 100644
--- a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb
+++ b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb
@@ -5,6 +5,7 @@ LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "file://license-apache;md5=1836efb2eb779966696f473ee8540542 \
file://license-mit;md5=85fd3b67069cff784d98ebfc7d5c0797"
+SRC_URI += "file://0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch;patchdir=${CARGO_VENDORING_DIRECTORY}/libc-0.2.167"
SRC_URI[sha256sum] = "304762f86fd53a8031b1bf006d12572a2aa0a5235485031113195cc0152e1e12"
S = "${WORKDIR}/maturin-${PV}"
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2025-04-12 7:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-12 7:26 [PATCH v3] python3-maturin: Backport a libc build fix for riscv32 Khem Raj
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.