commit:     46a3260c72f0a4d918daa3f313f8e586f12475f4
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 25 06:11:45 2022 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Sun Sep 25 06:37:04 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=46a3260c

dev-lang/rust: fix 1.64.0 build on sparc

Issue: https://github.com/bytecodealliance/rustix/issues/408
Bug: https://bugs.gentoo.org/872725
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 ...64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch | 60 ++++++++++++++++++++++
 dev-lang/rust/rust-1.64.0.ebuild                   | 11 ++++
 2 files changed, 71 insertions(+)

diff --git 
a/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch 
b/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
new file mode 100644
index 000000000000..5d685baac569
--- /dev/null
+++ b/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
@@ -0,0 +1,60 @@
+From 3fd653f3978e5ec2249c37eb08934bfe343e9198 Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev <[email protected]>
+Date: Sat, 24 Sep 2022 23:09:38 -0700
+Subject: [PATCH] vendor/rustix: sparc has no SIGSTKFLT
+
+gyakovlev: removed checkum HUNK
+
+---
+ vendor/rustix/.cargo-checksum.json               | 2 +-
+ vendor/rustix/src/imp/libc/process/types.rs      | 4 ++++
+ vendor/rustix/src/imp/linux_raw/process/types.rs | 4 ++--
+ 3 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/vendor/rustix/src/imp/libc/process/types.rs 
b/vendor/rustix/src/imp/libc/process/types.rs
+index 60d629d..1278cee 100644
+--- a/vendor/rustix/src/imp/libc/process/types.rs
++++ b/vendor/rustix/src/imp/libc/process/types.rs
+@@ -197,6 +197,8 @@ pub enum Signal {
+         target_os = "macos",
+         target_os = "netbsd",
+         target_os = "openbsd",
++        target_arch = "sparc",
++        target_arch = "sparc64",
+         all(
+             any(target_os = "android", target_os = "linux"),
+             any(target_arch = "mips", target_arch = "mips64"),
+@@ -274,6 +276,8 @@ impl Signal {
+                 target_os = "macos",
+                 target_os = "netbsd",
+                 target_os = "openbsd",
++                target_arch = "sparc",
++                target_arch = "sparc64",
+                 all(
+                     any(target_os = "android", target_os = "linux"),
+                     any(target_arch = "mips", target_arch = "mips64"),
+diff --git a/vendor/rustix/src/imp/linux_raw/process/types.rs 
b/vendor/rustix/src/imp/linux_raw/process/types.rs
+index 53e2c7d..859a108 100644
+--- a/vendor/rustix/src/imp/linux_raw/process/types.rs
++++ b/vendor/rustix/src/imp/linux_raw/process/types.rs
+@@ -119,7 +119,7 @@ pub enum Signal {
+     /// `SIGTERM`
+     Term = linux_raw_sys::general::SIGTERM,
+     /// `SIGSTKFLT`
+-    #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
++    #[cfg(not(any(target_arch = "mips", target_arch = "mips64", target_arch = 
"sparc", target_arch = "sparc64")))]
+     Stkflt = linux_raw_sys::general::SIGSTKFLT,
+     /// `SIGCHLD`
+     #[doc(alias = "Chld")]
+@@ -179,7 +179,7 @@ impl Signal {
+             linux_raw_sys::general::SIGPIPE => Some(Self::Pipe),
+             linux_raw_sys::general::SIGALRM => Some(Self::Alarm),
+             linux_raw_sys::general::SIGTERM => Some(Self::Term),
+-            #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
++            #[cfg(not(any(target_arch = "mips", target_arch = "mips64", 
target_arch = "sparc", target_arch = "sparc64")))]
+             linux_raw_sys::general::SIGSTKFLT => Some(Self::Stkflt),
+             linux_raw_sys::general::SIGCHLD => Some(Self::Child),
+             linux_raw_sys::general::SIGCONT => Some(Self::Cont),
+-- 
+2.37.3
+

diff --git a/dev-lang/rust/rust-1.64.0.ebuild b/dev-lang/rust/rust-1.64.0.ebuild
index 0300d3cc4b10..9f7e86a87d56 100644
--- a/dev-lang/rust/rust-1.64.0.ebuild
+++ b/dev-lang/rust/rust-1.64.0.ebuild
@@ -163,6 +163,7 @@ 
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
 PATCHES=(
        "${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
        "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
+       "${FILESDIR}"/${PV}-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
 )
 
 S="${WORKDIR}/${MY_P}-src"
@@ -270,6 +271,16 @@ esetup_unwind_hack() {
 }
 
 src_prepare() {
+       # this supidity is needed because patch is too large to be in filesdir
+       # and if we move it to devspace - it lacks checksum for sig verification
+       if [[ "${PV}" == 1.64.0 ]]; then
+                       sed -i \
+                       -e 
's/516ba32a547b46a8e80ad20d4a17bf24a00bff0b69b74f56df119f770f3dfff6/fc7eb88c2f5104865379128b76767d36ce5b5fdb9f3483e683d150e514ebc3a3/'
 \
+                       -e 
's/fba10dc8ca9eaf4d481cb82bd1540cf5c05620533c44f917c09a22ea55ef408c/9cc4d1b4511a1f0d91231eb0f11c67ae5e8e38e4becd0bf5eb9e26d043796056/'
 \
+                       vendor/rustix/.cargo-checksum.json || die
+       else
+               die "remove sed mr forgetful maintainer"
+       fi
        if ! use system-bootstrap; then
                has_version sys-devel/gcc || esetup_unwind_hack
                local rust_stage0_root="${WORKDIR}"/rust-stage0

Reply via email to