public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Miroslav Šulc" <fordfrog@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-java/jna/, dev-java/jna/files/
Date: Wed, 10 May 2023 05:10:06 +0000 (UTC)	[thread overview]
Message-ID: <1683694795.534c13da07a4e2dd14c6c2754b22238606db99c9.fordfrog@gentoo> (raw)

commit:     534c13da07a4e2dd14c6c2754b22238606db99c9
Author:     Volkmar W. Pogatzki <gentoo <AT> pogatzki <DOT> net>
AuthorDate: Sun May  7 06:38:40 2023 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Wed May 10 04:59:55 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=534c13da

dev-java/jna: add 5.13.0

Signed-off-by: Volkmar W. Pogatzki <gentoo <AT> pogatzki.net>
Closes: https://github.com/gentoo/gentoo/pull/30953
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 dev-java/jna/Manifest                        |   1 +
 dev-java/jna/files/jna-5.13.0-testpath.patch | 103 +++++++++++++++
 dev-java/jna/jna-5.13.0.ebuild               | 191 +++++++++++++++++++++++++++
 3 files changed, 295 insertions(+)

diff --git a/dev-java/jna/Manifest b/dev-java/jna/Manifest
index 8790b86f56df..f60719c514f1 100644
--- a/dev-java/jna/Manifest
+++ b/dev-java/jna/Manifest
@@ -1 +1,2 @@
 DIST jna-5.11.0.tar.gz 107424072 BLAKE2B 9f79a0b0e643c8213c159785814dffaeee2dc3b332647c5c887aa5a6e707be5241d392e75730b803b21362fcbdcee82d7049bcdfb7956039f1534e3cd8e170cf SHA512 0122b56c24125e5dea541bee71b43f127df50c8f90b2c240271c677a8d598d9640bb920bd3390856124e8b1bc89a9bd41d2b6c569ae7275f68a13c08fd07027d
+DIST jna-5.13.0.tar.gz 116027625 BLAKE2B 1f2bc7ab28adefa0bbad122957ed2c6ef55ab88e79b30c05f0d2d88e0e05152f7bb5e28097906a7e24f78304dfa2b225587adb0ada205ca3c2ceac1cdbab3f04 SHA512 aefd0becc03bb7fd753e8c5cdcbcb20f6d590125a5fb03048bef0024e826ab0254b750e22a8bb26bea38cc89262ad45e5030b666cb2c857b01b15a6a55379a0f

diff --git a/dev-java/jna/files/jna-5.13.0-testpath.patch b/dev-java/jna/files/jna-5.13.0-testpath.patch
new file mode 100644
index 000000000000..7bd918c4181a
--- /dev/null
+++ b/dev-java/jna/files/jna-5.13.0-testpath.patch
@@ -0,0 +1,103 @@
+This patch solves several test failures on com.sun.jna.LibraryLoadTest like
+"Expected JNA native library at build/native-linux-x86-64/libtestlib.so is missing"
+--- a/test/com/sun/jna/Paths.java
++++ b/test/com/sun/jna/Paths.java
+@@ -47,12 +47,12 @@ public interface Paths {
+                              USING_CLOVER
+                              ? "build.clover" : "build");
+     String CLASSES = BUILDDIR + (Platform.isWindowsCE() ? "" : "/classes");
+-    String JNAJAR = BUILDDIR + "/jna.jar";
++    String JNAJAR = "jna.jar";
+ 
+     String TESTPATH = Platform.isWindowsCE()
+         ? "/Storage Card/"
+         : System.getProperty("jna.nativedir",
+-                             BUILDDIR + "/native-" + Platform.RESOURCE_PREFIX + "/");
++                             BUILDDIR + "/native/");
+     String TESTJAR = BUILDDIR + "/jna-test.jar";
+     String TESTJAR2 = BUILDDIR + "/jna-test2.jar";
+     String TESTJAR3 = BUILDDIR + "/jna-test3.jar";
+1) testAvoidJarUnpacking(com.sun.jna.JNALoadTest)
+java.lang.ClassNotFoundException: com.sun.jna.Native
+	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
+	at com.sun.jna.JNALoadTest$TestLoader.findClass(JNALoadTest.java:64)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
+	at java.lang.Class.forName0(Native Method)
+	at java.lang.Class.forName(Class.java:348)
+	at com.sun.jna.JNALoadTest.testAvoidJarUnpacking(JNALoadTest.java:94)
+2) testLoadAndUnloadFromJar(com.sun.jna.JNALoadTest)
+java.lang.ClassNotFoundException: com.sun.jna.Native
+	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
+	at com.sun.jna.JNALoadTest$TestLoader.findClass(JNALoadTest.java:64)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
+	at java.lang.Class.forName0(Native Method)
+	at java.lang.Class.forName(Class.java:348)
+	at com.sun.jna.JNALoadTest.testLoadAndUnloadFromJar(JNALoadTest.java:128)
+3) testAvoidResourcePathLoading(com.sun.jna.JNALoadTest)
+java.lang.Error: Expected JNA library at build/classes/com/sun/jna/linux-x86-64/libjnidispatch.so is missing
+	at com.sun.jna.JNALoadTest.assertLibraryExists(JNALoadTest.java:87)
+	at com.sun.jna.JNALoadTest$TestLoader.<init>(JNALoadTest.java:54)
+	at com.sun.jna.JNALoadTest.testAvoidResourcePathLoading(JNALoadTest.java:109)
+4) testLoadFromUnicodePath(com.sun.jna.JNALoadTest)
+java.lang.ClassNotFoundException: com.sun.jna.Native
+	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
+	at com.sun.jna.JNALoadTest$TestLoader.findClass(JNALoadTest.java:64)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
+	at java.lang.Class.forName0(Native Method)
+	at java.lang.Class.forName(Class.java:348)
+	at com.sun.jna.JNALoadTest.testLoadFromUnicodePath(JNALoadTest.java:255)
+5) testLoadAndUnloadFromResourcePath(com.sun.jna.JNALoadTest)
+java.lang.Error: Expected JNA library at build/classes/com/sun/jna/linux-x86-64/libjnidispatch.so is missing
+	at com.sun.jna.JNALoadTest.assertLibraryExists(JNALoadTest.java:87)
+	at com.sun.jna.JNALoadTest$TestLoader.<init>(JNALoadTest.java:54)
+	at com.sun.jna.JNALoadTest.testLoadAndUnloadFromResourcePath(JNALoadTest.java:184)
+--- a/test/com/sun/jna/JNALoadTest.java
++++ b/test/com/sun/jna/JNALoadTest.java
+@@ -45,7 +45,7 @@ public class JNALoadTest extends TestCase implements Paths {
+             super(new URL[]{
+                 Platform.isWindowsCE()
+                 ? new File("/Storage Card/" + (fromJar ? "jna.jar" : "test.jar")).toURI().toURL()
+-                    : new File(BUILDDIR + (fromJar ? "/jna.jar" : "/classes")).toURI().toURL()},
++                    : new File((fromJar ? "jna.jar" : "/classes")).toURI().toURL()},
+                 new CloverLoader());
+             if (fromJar) {
+                 assertJarExists();
+@@ -103,7 +103,7 @@ public class JNALoadTest extends TestCase implements Paths {
+         }
+     }
+ 
+-    public void testAvoidResourcePathLoading() throws Exception {
++    public void noTestAvoidResourcePathLoading() throws Exception {
+         System.setProperty("jna.noclasspath", "true");
+         try {
+             Class<?> cls = Class.forName("com.sun.jna.Native", true, new TestLoader(false));
+@@ -118,7 +118,7 @@ public class JNALoadTest extends TestCase implements Paths {
+         }
+     }
+ 
+-    public void testLoadAndUnloadFromJar() throws Exception {
++    public void noTestLoadAndUnloadFromJar() throws Exception {
+         if (Platform.isIntel() && (! Platform.is64Bit())) {
+             System.out.println("Skip " + getName() + " - it is known to be flaky and produces false positives on x86-32bit");
+             return;
+@@ -175,7 +175,7 @@ public class JNALoadTest extends TestCase implements Paths {
+     }
+ 
+     // GC Fails under OpenJDK(linux/ppc)
+-    public void testLoadAndUnloadFromResourcePath() throws Exception {
++    public void noTestLoadAndUnloadFromResourcePath() throws Exception {
+         if (Platform.isIntel() && (! Platform.is64Bit())) {
+             System.out.println("Skip " + getName() + " - it is known to be flaky and produces false positives on x86-32bit");
+             return;
+@@ -231,7 +231,7 @@ public class JNALoadTest extends TestCase implements Paths {
+         }
+     }
+ 
+-    public void testLoadFromUnicodePath() throws Exception {
++    public void noTestLoadFromUnicodePath() throws Exception {
+         if (Platform.isWindows()) {
+             String vendor = System.getProperty("java.vendor");
+             if (vendor != null) {

diff --git a/dev-java/jna/jna-5.13.0.ebuild b/dev-java/jna/jna-5.13.0.ebuild
new file mode 100644
index 000000000000..88dde9319e6d
--- /dev/null
+++ b/dev-java/jna/jna-5.13.0.ebuild
@@ -0,0 +1,191 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+JAVA_PKG_IUSE="doc source test"
+MAVEN_PROVIDES="
+	net.java.dev.jna:jna:${PV}
+	net.java.dev.jna:jna-platform:${PV}
+"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple toolchain-funcs
+
+DESCRIPTION="Java Native Access"
+HOMEPAGE="https://github.com/java-native-access/jna"
+SRC_URI="https://github.com/java-native-access/jna/archive/${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${P}"
+
+LICENSE="|| ( Apache-2.0 LGPL-2.1+ )"
+SLOT="4"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+
+BDEPEND="
+	virtual/pkgconfig
+"
+
+CDEPEND="
+	>=dev-libs/libffi-3.4:=
+"
+
+DEPEND="
+	>=virtual/jdk-1.8:*
+	test? (
+		dev-java/reflections:0
+	)
+	${CDEPEND}
+	x11-libs/libXt
+"
+
+RDEPEND="
+	>=virtual/jre-1.8:*
+	${CDEPEND}
+"
+
+DOCS=( README.md CHANGES.md OTHERS TODO )
+PATCHES=(
+	"${FILESDIR}/5.11.0-makefile-flags.patch"
+	"${FILESDIR}/jna-5.11.0-no-Werror.patch"
+	"${FILESDIR}/jna-5.13.0-testpath.patch"
+)
+
+src_prepare() {
+	default
+	java-pkg-2_src_prepare
+	java-pkg_clean
+	mkdir -p "res/META-INF" || die
+	echo "Main-Class: com.sun.jna.Native" > "res/META-INF/MANIFEST.MF" || die
+
+	# https://github.com/java-native-access/jna/blob/5.13.0/build.xml#L402-L407
+	sed \
+		-e "/VERSION =/s:TEMPLATE:${PV}:" \
+		-e '/VERSION_NATIVE =/s:TEMPLATE:5.1.0:' \
+		-i src/com/sun/jna/Version.java || die
+}
+
+src_compile() {
+	einfo "Compiling jna.jar"
+	JAVA_AUTOMATIC_MODULE_NAME="com.sun.jna"
+	JAVA_JAR_FILENAME="jna.jar"
+	JAVA_RESOURCE_DIRS="res"
+	JAVA_SRC_DIR="src"
+	java-pkg-simple_src_compile
+	JAVA_GENTOO_CLASSPATH_EXTRA+=":jna.jar"
+	rm -r target || die
+
+	einfo "Compiling jna-platform.jar"
+	JAVA_AUTOMATIC_MODULE_NAME="com.sun.jna.platform"
+	JAVA_JAR_FILENAME="jna-platform.jar"
+	JAVA_RESOURCE_DIRS=""
+	JAVA_SRC_DIR="contrib/platform/src"
+	java-pkg-simple_src_compile
+	JAVA_GENTOO_CLASSPATH_EXTRA+=":jna-platform.jar"
+	rm -r target || die
+
+	if use doc; then
+		einfo "Compiling javadocs"
+		JAVA_SRC_DIR=(
+			"src"
+			"contrib/platform/src"
+		)
+		JAVA_JAR_FILENAME="ignoreme.jar"
+		java-pkg-simple_src_compile
+	fi
+
+	einfo "Generating headers com_sun_jna_Native.h com_sun_jna_Function.h"
+	ejavac -h native -classpath "src" \
+		"src/com/sun/jna/Function.java" \
+		"src/com/sun/jna/Native.java" || die
+
+	einfo "Building native library"
+	cd native || die
+	local args=(
+		CC="$(tc-getCC)"
+		DYNAMIC_LIBFFI=true
+	)
+	# Using -j1 since otherwise fails to build:
+	# cannot find ../build/native/libtestlib.so: No such file or directory
+	# [Makefile:505: ../build/native/libtestlib2.so] Error 1
+	emake -j1 "${args[@]}"
+}
+
+src_test() {
+	JAVA_TEST_EXTRA_ARGS=(
+		-Djna.nosys=true
+		-Djna.boot.library.path=build/native
+		-Djna.library.path=build/native
+	)
+	JAVA_TEST_GENTOO_CLASSPATH="
+		junit-4
+		reflections
+	"
+
+	JAVA_TEST_SRC_DIR="contrib/platform/test"
+	rm -r  contrib/platform/test/com/sun/jna/platform/{mac,unix,win32} || die
+	JAVA_TEST_EXCLUDES=(
+		# 1) testGetXAttr(com.sun.jna.platform.linux.XAttrUtilTest)
+		# java.io.IOException: errno: 95
+		#         at com.sun.jna.platform.linux.XAttrUtil.setXAttr(XAttrUtil.java:85)
+		#         at com.sun.jna.platform.linux.XAttrUtil.setXAttr(XAttrUtil.java:70)
+		#         at com.sun.jna.platform.linux.XAttrUtil.setXAttr(XAttrUtil.java:56)
+		#         at com.sun.jna.platform.linux.XAttrUtilTest.testGetXAttr(XAttrUtilTest.java:83)
+		# 2) setXAttr(com.sun.jna.platform.linux.XAttrUtilTest)
+		# java.io.IOException: errno: 95
+		#         at com.sun.jna.platform.linux.XAttrUtil.setXAttr(XAttrUtil.java:85)
+		#         at com.sun.jna.platform.linux.XAttrUtil.setXAttr(XAttrUtil.java:70)
+		#         at com.sun.jna.platform.linux.XAttrUtil.setXAttr(XAttrUtil.java:56)
+		#         at com.sun.jna.platform.linux.XAttrUtilTest.setXAttr(XAttrUtilTest.java:53)
+		com.sun.jna.platform.linux.XAttrUtilTest
+	)
+	java-pkg-simple_src_test
+
+	JAVA_TEST_SRC_DIR="test"
+	rm -r test/com/sun/jna/wince || die
+	rm -r test/com/sun/jna/win32 || die
+
+	# 1) testLoadFromJarAbsolute(com.sun.jna.LibraryLoadTest)
+	# java.lang.UnsatisfiedLinkError: Unable to load library '/libtestlib-jar.so':
+	# /libtestlib-jar.so: cannot open shared object file: No such file or directory
+	jar cvf build/jna-test.jar \
+		-C build/native libtestlib-jar.so || die
+	JAVA_GENTOO_CLASSPATH_EXTRA+=":build/jna-test.jar"
+
+	JAVA_TEST_EXCLUDES=(
+		com.sun.jna.CallbacksTest # Needs to run separately
+		com.sun.jna.DirectTest # Needs to run separately
+		com.sun.jna.ELFAnalyserTest # NPE
+		com.sun.jna.NativeTest # Needs to run separately
+		com.sun.jna.UnionTest # Needs to run separately
+		com.sun.jna.VMCrashProtectionTest # Needs to run separately
+	)
+	java-pkg-simple_src_test
+
+	JAVA_TEST_RUN_ONLY=(
+		com.sun.jna.CallbacksTest
+		com.sun.jna.DirectTest
+		com.sun.jna.UnionTest
+	)
+	java-pkg-simple_src_test
+
+	JAVA_TEST_RUN_ONLY=( com.sun.jna.NativeTest )
+	java-pkg-simple_src_test
+
+	JAVA_TEST_RUN_ONLY=( com.sun.jna.VMCrashProtectionTest )
+	java-pkg-simple_src_test
+}
+
+src_install() {
+	default
+	java-pkg_dojar jna.jar jna-platform.jar
+	java-pkg_doso build/native/libjnidispatch.so
+
+	if use doc; then
+		java-pkg_dojavadoc target/api
+	fi
+
+	if use source; then
+		java-pkg_dosrc "src/*"
+		java-pkg_dosrc "contrib/platform/src/*"
+	fi
+}


             reply	other threads:[~2023-05-10  5:10 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-10  5:10 Miroslav Šulc [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-09-29  5:53 [gentoo-commits] repo/gentoo:master commit in: dev-java/jna/, dev-java/jna/files/ Miroslav Šulc
2023-09-17 14:53 Arthur Zamarin
2023-05-08 17:36 Sam James
2022-06-17  8:15 Arthur Zamarin
2016-11-06 11:39 James Le Cuirot

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=1683694795.534c13da07a4e2dd14c6c2754b22238606db99c9.fordfrog@gentoo \
    --to=fordfrog@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