From 534c13da07a4e2dd14c6c2754b22238606db99c9 Mon Sep 17 00:00:00 2001 From: "Volkmar W. Pogatzki" Date: Sun, 7 May 2023 08:38:40 +0200 Subject: dev-java/jna: add 5.13.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Volkmar W. Pogatzki Closes: https://github.com/gentoo/gentoo/pull/30953 Signed-off-by: Miroslav Ć ulc --- 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(+) create mode 100644 dev-java/jna/files/jna-5.13.0-testpath.patch create mode 100644 dev-java/jna/jna-5.13.0.ebuild (limited to 'dev-java/jna') 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.(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.(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 +} -- cgit v1.2.3-65-gdbad