All of lore.kernel.org
 help / color / mirror / Atom feed
From: Khem Raj <raj.khem@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: Khem Raj <raj.khem@gmail.com>
Subject: [PATCH v3] python3-maturin: Backport a libc build fix for riscv32
Date: Sat, 12 Apr 2025 00:26:19 -0700	[thread overview]
Message-ID: <20250412072619.1831014-1-raj.khem@gmail.com> (raw)

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}"


                 reply	other threads:[~2025-04-12  7:26 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250412072619.1831014-1-raj.khem@gmail.com \
    --to=raj.khem@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.