public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-apps/dtc/files/, sys-apps/dtc/
Date: Sun, 27 Apr 2025 22:53:05 +0000 (UTC)	[thread overview]
Message-ID: <1745794345.bfafbcc5b6aaf3ea33eb905c6d44fbce586777d6.sam@gentoo> (raw)

commit:     bfafbcc5b6aaf3ea33eb905c6d44fbce586777d6
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 27 22:45:14 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Apr 27 22:52:25 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bfafbcc5

sys-apps/dtc: fix USE=python tests w/ >=swig-4.3, fix tests w/ glibc-2.41

Closes: https://bugs.gentoo.org/953525
Thanks-to: Sergei Trofimovich <slyich <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../dtc/{dtc-9999.ebuild => dtc-1.7.2-r1.ebuild}   | 13 +++-
 sys-apps/dtc/dtc-9999.ebuild                       |  8 +-
 .../dtc/files/dtc-1.7.2-glibc-2.41-execstack.patch | 41 ++++++++++
 sys-apps/dtc/files/dtc-1.7.2-swig-4.3.patch        | 89 ++++++++++++++++++++++
 4 files changed, 149 insertions(+), 2 deletions(-)

diff --git a/sys-apps/dtc/dtc-9999.ebuild b/sys-apps/dtc/dtc-1.7.2-r1.ebuild
similarity index 84%
copy from sys-apps/dtc/dtc-9999.ebuild
copy to sys-apps/dtc/dtc-1.7.2-r1.ebuild
index 6e62aa622851..964f035d268d 100644
--- a/sys-apps/dtc/dtc-9999.ebuild
+++ b/sys-apps/dtc/dtc-1.7.2-r1.ebuild
@@ -11,7 +11,7 @@ if [[ ${PV} == 9999 ]] ; then
 	inherit git-r3
 else
 	SRC_URI="https://www.kernel.org/pub/software/utils/${PN}/${P}.tar.xz"
-	KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+	KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
 fi
 
 DESCRIPTION="Open Firmware device tree compiler"
@@ -48,6 +48,11 @@ DOCS=(
 	Documentation/manual.txt
 )
 
+PATCHES=(
+	"${FILESDIR}"/${P}-swig-4.3.patch
+	"${FILESDIR}"/${P}-glibc-2.41-execstack.patch
+)
+
 pkg_setup() {
 	if use python ; then
 		export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
@@ -69,3 +74,9 @@ src_configure() {
 
 	meson_src_configure
 }
+
+src_install() {
+	meson_src_install
+
+	use python && python_optimize "${ED}"
+}

diff --git a/sys-apps/dtc/dtc-9999.ebuild b/sys-apps/dtc/dtc-9999.ebuild
index 6e62aa622851..3f84b5746faf 100644
--- a/sys-apps/dtc/dtc-9999.ebuild
+++ b/sys-apps/dtc/dtc-9999.ebuild
@@ -11,7 +11,7 @@ if [[ ${PV} == 9999 ]] ; then
 	inherit git-r3
 else
 	SRC_URI="https://www.kernel.org/pub/software/utils/${PN}/${P}.tar.xz"
-	KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+	KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
 fi
 
 DESCRIPTION="Open Firmware device tree compiler"
@@ -69,3 +69,9 @@ src_configure() {
 
 	meson_src_configure
 }
+
+src_install() {
+	meson_src_install
+
+	use python && python_optimize "${ED}"
+}

diff --git a/sys-apps/dtc/files/dtc-1.7.2-glibc-2.41-execstack.patch b/sys-apps/dtc/files/dtc-1.7.2-glibc-2.41-execstack.patch
new file mode 100644
index 000000000000..3e51b3897d1a
--- /dev/null
+++ b/sys-apps/dtc/files/dtc-1.7.2-glibc-2.41-execstack.patch
@@ -0,0 +1,41 @@
+https://github.com/dgibson/dtc/issues/163
+https://git.kernel.org/pub/scm/utils/dtc/dtc.git/commit/?id=ce1d8588880aecd7af264e422a16a8b33617cef7
+
+From ce1d8588880aecd7af264e422a16a8b33617cef7 Mon Sep 17 00:00:00 2001
+From: David Gibson <david@gibson.dropbear.id.au>
+Date: Wed, 5 Feb 2025 13:39:43 +1100
+Subject: tests: When building .so from -O asm output mark as non-executable
+ stack
+
+For certain tests, we take the output from dtc -O asm and build it into
+a .so shared library which we then dlopen() for further tests.  Because we
+don't mark it otherwise, it's treated as requiring an executable stack,
+which dlopen() refuses to open as of glibc-2.41.
+
+Of course, the library is pure data, no code, so it certainly doesn't need
+an executable stack.  Add the -znoexecstack linker option to avoid the
+error.
+
+Fixes: https://github.com/dgibson/dtc/issues/163
+
+Reported-by: Xi Ruoyao <xry111@xry111.site>
+Signed-off-by: David Gibson <david@gibson.dropbear.id.a>
+---
+ tests/run_tests.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/run_tests.sh b/tests/run_tests.sh
+index 937b128..f0b51c0 100755
+--- a/tests/run_tests.sh
++++ b/tests/run_tests.sh
+@@ -201,7 +201,7 @@ run_dtc_test () {
+ }
+ 
+ asm_to_so () {
+-    $CC -shared -o $1.test.so "$SRCDIR/data.S" $1.test.s
++    $CC -shared -Wl,-znoexecstack -o $1.test.so "$SRCDIR/data.S" $1.test.s
+ }
+ 
+ asm_to_so_test () {
+-- 
+cgit 1.2.3-korg

diff --git a/sys-apps/dtc/files/dtc-1.7.2-swig-4.3.patch b/sys-apps/dtc/files/dtc-1.7.2-swig-4.3.patch
new file mode 100644
index 000000000000..915268c011ae
--- /dev/null
+++ b/sys-apps/dtc/files/dtc-1.7.2-swig-4.3.patch
@@ -0,0 +1,89 @@
+https://git.kernel.org/pub/scm/utils/dtc/dtc.git/commit/?id=9a969f3b70b07bbf1c9df44a38d7f8d1d3a6e2a5
+
+From 9a969f3b70b07bbf1c9df44a38d7f8d1d3a6e2a5 Mon Sep 17 00:00:00 2001
+From: Brandon Maier <brandon.maier@gmail.com>
+Date: Sun, 24 Nov 2024 15:48:04 -0600
+Subject: pylibfdt/libfdt.i: fix backwards compatibility of return values
+
+When our Python functions wrap `fdt_getprop()` they return a list
+containing `[*data, length]`.
+
+In SWIG v4.2 and earlier SWIG would discard `*data` if it is NULL/None.
+Causing the return value to just be `length`.
+
+But starting in SWIG v4.3 it no longer discards `*data`. So the return
+value is now `[None, length]`.
+
+Handle this compatibility issue in libfdt.i by checking if the return
+value looks like the older 4.2 return value, and casting it to the newer
+style.
+
+See https://github.com/swig/swig/pull/2907
+
+Signed-off-by: Brandon Maier <brandon.maier@gmail.com>
+Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
+---
+ pylibfdt/libfdt.i | 25 ++++++++++++++-----------
+ 1 file changed, 14 insertions(+), 11 deletions(-)
+
+diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
+index 9f5b6a9..bb9985c 100644
+--- a/pylibfdt/libfdt.i
++++ b/pylibfdt/libfdt.i
+@@ -114,11 +114,14 @@ def check_err_null(val, quiet=()):
+         FdtException if val indicates an error was reported and the error
+         is not in @quiet.
+     """
+-    # Normally a list is returned which contains the data and its length.
+-    # If we get just an integer error code, it means the function failed.
++    # Compatibility for SWIG v4.2 and earlier. SWIG 4.2 would drop the first
++    # item from the list if it was None, returning only the second item.
+     if not isinstance(val, list):
+-        if -val not in quiet:
+-            raise FdtException(val)
++        val = [None, val]
++
++    if val[0] is None:
++        if -val[1] not in quiet:
++            raise FdtException(val[1])
+     return val
+ 
+ class FdtRo(object):
+@@ -395,8 +398,8 @@ class FdtRo(object):
+         """
+         pdata = check_err_null(
+                 fdt_get_property_by_offset(self._fdt, prop_offset), quiet)
+-        if isinstance(pdata, (int)):
+-            return pdata
++        if pdata[0] is None:
++            return pdata[1]
+         return Property(pdata[0], pdata[1])
+ 
+     def getprop(self, nodeoffset, prop_name, quiet=()):
+@@ -417,8 +420,8 @@ class FdtRo(object):
+         """
+         pdata = check_err_null(fdt_getprop(self._fdt, nodeoffset, prop_name),
+                                quiet)
+-        if isinstance(pdata, (int)):
+-            return pdata
++        if pdata[0] is None:
++            return pdata[1]
+         return Property(prop_name, bytearray(pdata[0]))
+ 
+     def hasprop(self, nodeoffset, prop_name, quiet=()):
+@@ -444,10 +447,10 @@ class FdtRo(object):
+         """
+         pdata = check_err_null(fdt_getprop(self._fdt, nodeoffset, prop_name),
+                                quiet + (NOTFOUND,))
+-        if isinstance(pdata, (int)):
+-            if pdata == -NOTFOUND:
++        if pdata[0] is None:
++            if pdata[1] == -NOTFOUND:
+                 return False
+-            return pdata
++            return pdata[1]
+         return True
+ 
+     def get_phandle(self, nodeoffset):
+-- 
+cgit 1.2.3-korg


             reply	other threads:[~2025-04-27 22:53 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-27 22:53 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-11-11 19:26 [gentoo-commits] repo/gentoo:master commit in: sys-apps/dtc/files/, sys-apps/dtc/ Andreas Sturmlechner
2024-06-02 16:05 Craig Andrews
2020-03-07  9:39 Sergei Trofimovich
2019-04-29  6:48 Matthias Maier
2018-01-10  5:50 Mike Frysinger
2016-01-04 22:26 Mike Frysinger

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=1745794345.bfafbcc5b6aaf3ea33eb905c6d44fbce586777d6.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox