commit:     2d67ebbf58c156b92a1ef37bec35e3d780a5f746
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Jul  5 22:06:48 2020 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 18:15:24 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2d67ebbf

sci-libs/libsigrok: Fix build with IUSE=java and >=dev-lang/swig-4

See also: https://sigrok.org/bugzilla/show_bug.cgi?id=1527

Package-Manager: Portage-2.3.103, Repoman-2.3.23
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../libsigrok/files/libsigrok-0.5.2-swig-4.patch   | 37 ++++++++++++++++++++++
 sci-libs/libsigrok/libsigrok-0.5.2.ebuild          |  3 ++
 2 files changed, 40 insertions(+)

diff --git a/sci-libs/libsigrok/files/libsigrok-0.5.2-swig-4.patch 
b/sci-libs/libsigrok/files/libsigrok-0.5.2-swig-4.patch
new file mode 100644
index 00000000000..3c5dd85a510
--- /dev/null
+++ b/sci-libs/libsigrok/files/libsigrok-0.5.2-swig-4.patch
@@ -0,0 +1,37 @@
+From e803574173bdac8a7f33085a648c29eaf248a394 Mon Sep 17 00:00:00 2001
+From: Uwe Hermann <u...@hermann-uwe.de>
+Date: Sat, 4 Apr 2020 21:54:13 +0200
+Subject: [PATCH 1/1] bindings/java: Fix build issue with SWIG 4.x.
+
+Tested with SWIG 3.x and SWIG 4.x.
+
+This fixes bug #1527.
+---
+ bindings/java/org/sigrok/core/classes/classes.i | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/bindings/java/org/sigrok/core/classes/classes.i 
b/bindings/java/org/sigrok/core/classes/classes.i
+index 75793b25..e953fe5d 100644
+--- a/bindings/java/org/sigrok/core/classes/classes.i
++++ b/bindings/java/org/sigrok/core/classes/classes.i
+@@ -94,10 +94,18 @@ VECTOR(std::shared_ptr<sigrok::HardwareDevice>, 
HardwareDevice)
+   "java.util.Map<JKey, JValue>"
+ 
+ %typemap(javain,
++/* SWIG 4.0.0 changed the std::map wrappers in an incompatible way. */
++#if SWIG_VERSION >= 0x040000
++    pre="  $javaclassname temp$javainput = new $javaclassname();
++    for (java.util.Map.Entry<JKey, JValue> entry : $javainput.entrySet())
++      temp$javainput.put(entry.getKey(), entry.getValue());",
++    pgcppname="temp$javainput")
++#else
+     pre="  $javaclassname temp$javainput = new $javaclassname();
+     for (java.util.Map.Entry<JKey, JValue> entry : $javainput.entrySet())
+       temp$javainput.set(entry.getKey(), entry.getValue());",
+     pgcppname="temp$javainput")
++#endif
+   std::map< CKey, CValue > "$javaclassname.getCPtr(temp$javainput)"
+ 
+ %typemap(javaout) std::map< CKey, CValue > {
+-- 
+2.24.0.rc2

diff --git a/sci-libs/libsigrok/libsigrok-0.5.2.ebuild 
b/sci-libs/libsigrok/libsigrok-0.5.2.ebuild
index ba30bc5fe2d..03ae49481ed 100644
--- a/sci-libs/libsigrok/libsigrok-0.5.2.ebuild
+++ b/sci-libs/libsigrok/libsigrok-0.5.2.ebuild
@@ -67,6 +67,9 @@ DEPEND="${LIB_DEPEND//\[static-libs(+)]}
 
 S="${WORKDIR}"/${P}
 
+# https://sigrok.org/bugzilla/show_bug.cgi?id=1527
+PATCHES=( "${FILESDIR}/${P}-swig-4.patch" )
+
 pkg_setup() {
        use python && python_setup
        use ruby && ruby-ng_pkg_setup

Reply via email to