198 lines
5.2 KiB
Bash
198 lines
5.2 KiB
Bash
# 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"
|
|
"${FILESDIR}/jna-5.13.0-LibCTest.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)"
|
|
STRIP=true
|
|
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 \
|
|
-C test com/sun/jna/data || 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.NativeTest # Needs to run separately
|
|
com.sun.jna.TypeMapperTest # 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
|
|
|
|
JAVA_TEST_RUN_ONLY=( com.sun.jna.TypeMapperTest )
|
|
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
|
|
}
|