You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.1 KiB
102 lines
3.1 KiB
# Copyright 2021-2022 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
JAVA_PKG_IUSE="doc source test"
|
|
MAVEN_ID="org.lz4:lz4-java:1.8.0"
|
|
|
|
inherit java-pkg-2 java-ant-2 toolchain-funcs
|
|
|
|
DESCRIPTION="LZ4 compression for Java"
|
|
HOMEPAGE="https://github.com/lz4/lz4-java"
|
|
SRC_URI="https://github.com/lz4/lz4-java/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
|
|
|
|
LICENSE="Apache-2.0"
|
|
SLOT="0"
|
|
KEYWORDS="amd64 ~arm arm64 ppc64 x86"
|
|
|
|
# Tests require com.carrotsearch.randomizedtesting:junit4-ant, which is yet to
|
|
# be packaged. Some extra steps are required before running the tests:
|
|
# 1. Download junit4-ant 2.7.x from https://mvnrepository.com/artifact/com.carrotsearch.randomizedtesting/junit4-ant
|
|
# 2. Set EANT_GENTOO_CLASSPATH_EXTRA to the path to junit4-ant-2.7.*.jar
|
|
# 3. ppc64 only: Install test dependencies that are unkeyworded
|
|
# 4. Set ALLOW_TEST="all"
|
|
RESTRICT="test"
|
|
|
|
CDEPEND="
|
|
app-arch/lz4:=
|
|
"
|
|
|
|
# The version requirement on mvel is strict; mvel-2.4.* generates source files
|
|
# incorrectly, which causes build failure of this package
|
|
DEPEND="
|
|
>=virtual/jdk-1.8:*
|
|
dev-java/mvel:2.3
|
|
dev-libs/xxhash
|
|
test? (
|
|
dev-java/junit:4
|
|
!ppc64? (
|
|
dev-java/randomized-runner:0
|
|
)
|
|
)
|
|
${CDEPEND}
|
|
"
|
|
|
|
RDEPEND="
|
|
>=virtual/jre-1.8:*
|
|
${CDEPEND}
|
|
"
|
|
|
|
# Ant is only needed to generate JNI headers;
|
|
# the JNI shared object will be built by the custom Makefile
|
|
EANT_BUILD_TARGET="compile-java generate-headers"
|
|
EANT_DOC_TARGET="docs"
|
|
EANT_EXTRA_ARGS="-Djava.io.tmpdir=${T}"
|
|
EANT_TEST_GENTOO_CLASSPATH="randomized-runner"
|
|
|
|
pkg_setup() {
|
|
java-pkg-2_pkg_setup
|
|
local build_only_cp="$(java-pkg_getjars --build-only mvel-2.3)"
|
|
if [[ -z "${EANT_GENTOO_CLASSPATH_EXTRA}" ]]; then
|
|
EANT_GENTOO_CLASSPATH_EXTRA="${build_only_cp}"
|
|
else
|
|
EANT_GENTOO_CLASSPATH_EXTRA+=":${build_only_cp}"
|
|
fi
|
|
}
|
|
|
|
src_prepare() {
|
|
eapply "${FILESDIR}/${P}-print-os-props.patch"
|
|
eapply "${FILESDIR}/${P}-skip-ivy.patch"
|
|
cp "${FILESDIR}/${P}-r1-Makefile" Makefile || die "Failed to copy Makefile"
|
|
cp "${FILESDIR}/${P}-gentoo-classpath.xml" gentoo-classpath.xml ||
|
|
die "Failed to copy Gentoo classpath injection XML"
|
|
java-pkg-2_src_prepare
|
|
rm -r src/resources || die "Failed to remove pre-built shared libraries"
|
|
}
|
|
|
|
src_compile() {
|
|
java-pkg-2_src_compile
|
|
emake CC="$(tc-getCC)" JAVA_HOME="${JAVA_HOME}"
|
|
# JNI has already been built by the Makefile at this point
|
|
# Also pretend cpptasks is available, which is required by build.xml
|
|
EANT_EXTRA_ARGS+=" -Dcpptasks.available=true -Dskip.jni=true"
|
|
# Manually call 'ant jar' to include the JNI shared object in JAR
|
|
eant jar -f "${EANT_BUILD_XML}" ${EANT_EXTRA_ARGS}
|
|
}
|
|
|
|
src_test() {
|
|
java-pkg-2_src_test
|
|
}
|
|
|
|
src_install() {
|
|
java-pkg_newjar 'dist/${ivy.module}.jar'
|
|
java-pkg_doso $(find build/jni -name "*.so")
|
|
use doc && java-pkg_dojavadoc build/docs
|
|
# Ant project's 'sources' target generates a source JAR rather than a Zip
|
|
# archive; we simply let java-utils-2.eclass create the source Zip archive
|
|
# from the same source directories the 'sources' target would access
|
|
# https://github.com/lz4/lz4-java/blob/1.8.0/build.xml#L323-L330
|
|
use source && java-pkg_dosrc src/java/* src/java-unsafe/*
|
|
}
|