summaryrefslogtreecommitdiff
path: root/dev-java/lz4-java
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-03-20 00:40:44 +0000
committerV3n3RiX <venerix@koprulu.sector>2022-03-20 00:40:44 +0000
commit4cbcc855382a06088e2f016f62cafdbcb7e40665 (patch)
tree356496503d52354aa6d9f2d36126302fed5f3a73 /dev-java/lz4-java
parentfcc5224904648a8e6eb528d7603154160a20022f (diff)
gentoo resync : 20.03.2022
Diffstat (limited to 'dev-java/lz4-java')
-rw-r--r--dev-java/lz4-java/Manifest7
-rw-r--r--dev-java/lz4-java/files/lz4-java-1.8.0-gentoo-classpath.xml7
-rw-r--r--dev-java/lz4-java/files/lz4-java-1.8.0-print-os-props.patch31
-rw-r--r--dev-java/lz4-java/files/lz4-java-1.8.0-r1-Makefile47
-rw-r--r--dev-java/lz4-java/files/lz4-java-1.8.0-skip-ivy.patch91
-rw-r--r--dev-java/lz4-java/lz4-java-1.8.0-r1.ebuild101
-rw-r--r--dev-java/lz4-java/metadata.xml11
7 files changed, 295 insertions, 0 deletions
diff --git a/dev-java/lz4-java/Manifest b/dev-java/lz4-java/Manifest
new file mode 100644
index 000000000000..7f55cf8059ad
--- /dev/null
+++ b/dev-java/lz4-java/Manifest
@@ -0,0 +1,7 @@
+AUX lz4-java-1.8.0-gentoo-classpath.xml 179 BLAKE2B 78a1d2615b0ceca3990b58891fa560ed2eeabb8dff397cef99b9f3281cb3d70a563257639051f2f96fa574fe5edefe3bae231a6553a6c1daf96df5e97a44aaee SHA512 b815a4f876a9d8fc30b1c68ec4b8c2fbee5e544247d5272af033d04ffb60fe018713b15f04740348306411c69775bcbc339e30df35bb147a208d119e1c11c017
+AUX lz4-java-1.8.0-print-os-props.patch 880 BLAKE2B 53256984d5afc08d85bee460f6f7ce4a333ea5960fbe3a6a6322338477d701582ee33bf52b05ec3105147fca3ea58424f82b742f965b6d638e56b5cf7e0f3135 SHA512 9c5dedab3cfa09014f9235d4a20dc9a7136b6925d53840e0721c7a58d7a2d2faa3e066440a7e23be60e79c1817813a683a9e76c9947d23ac168882421a498f5b
+AUX lz4-java-1.8.0-r1-Makefile 1528 BLAKE2B e3f8825785c329fc2c9a480dc5e7dbb00268a87d0fa84fb09c70af5259f7a108970c9abbbd9276218d7ae3500ae28d5b4a782e1e9e80046af0e394d8a677944d SHA512 1b391cf872cfdc30e7b7b3f74b7cf4b6f1d9c8268be2556cfce4b9f51fe8bd5c1bf717bdfd2c7a5b05db63231ccb5b315fd34de7aa96e4eb418124bf4c47d3dd
+AUX lz4-java-1.8.0-skip-ivy.patch 3236 BLAKE2B cae70a2600d8bc6f3e89e901728261d23102ec61ae35dfe678542953ecd5467f33d724154903dae3e7214c4c5bfcbf5b6956ae70f7806e270a9cb747b3661d47 SHA512 fd24db414b0944cac78e0b39014d9de38d694e958352d9dc4b83560c84c16790844f197a80bb4f90f084bb882406992ed72da5e54dc774122a347c2df2c76301
+DIST lz4-java-1.8.0.tar.gz 1069398 BLAKE2B 02ee363fc42eeeade01f04649416dd874513f4517264c6e1b6474d64e8b81e2ee9ff1f55e51b508608929e8d78cb30e98d929cc4a118c03f86b0e69bae237e8a SHA512 ae78748d984d2ede18018d5e9ae6aee0d5fe6ac8b56d717f863968cfad6e9f85b62305692345ba16002bee68278e87a0364aa98aeb92e2af6dc169e5d5b612d4
+EBUILD lz4-java-1.8.0-r1.ebuild 3162 BLAKE2B af48a8774cc7e0c67fbeea0b48383fc48b909d90cc05f03217846f082741416253dd215b073cb41cf1508b2b42eb7b22b45ba9191b8a739ce0276de078b40209 SHA512 0fd583fcfba0fb4760c263aec6a2d4cb3334c7c780c47ebee392ce3c78e4b6a1f0bc181a9d7470e49ce48e9bc72166bb785a522a29e4842fe640629fd5ed00e9
+MISC metadata.xml 313 BLAKE2B 08a0f9bbda1bcbc57ad87da568cb744824936147acbf6cc4d2693b957ebbf52454548d9f4ee568f7d1de864406c8a6af487cf6c8775d7cfa3f0a6029640d5d23 SHA512 1b33a50efd738cfbaf5fd163bbeb26736a0d4db2b1c68ff22d6d97931aa67043b2629900fcea3870afb99c6c6792db139361107f21dd87e75522287ae55c68f8
diff --git a/dev-java/lz4-java/files/lz4-java-1.8.0-gentoo-classpath.xml b/dev-java/lz4-java/files/lz4-java-1.8.0-gentoo-classpath.xml
new file mode 100644
index 000000000000..2392679c4a69
--- /dev/null
+++ b/dev-java/lz4-java/files/lz4-java-1.8.0-gentoo-classpath.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<project name="gentoo-classpath">
+ <path id="mvel.classpath">
+ <pathelement path="${gentoo.classpath}" />
+ </path>
+</project>
diff --git a/dev-java/lz4-java/files/lz4-java-1.8.0-print-os-props.patch b/dev-java/lz4-java/files/lz4-java-1.8.0-print-os-props.patch
new file mode 100644
index 000000000000..d4363b6853e4
--- /dev/null
+++ b/dev-java/lz4-java/files/lz4-java-1.8.0-print-os-props.patch
@@ -0,0 +1,31 @@
+From b8d50d44ba1c0e4b5bf297f7499ad0fb5b82706e Mon Sep 17 00:00:00 2001
+From: Yuan Liao <liaoyuan@gmail.com>
+Date: Wed, 19 Jan 2022 10:09:14 -0800
+Subject: [PATCH] build.xml: Add target that prints JVM system properties os.*
+
+The Gentoo custom JNI Makefile needs some of those properties.
+
+Signed-off-by: Yuan Liao <liaoyuan@gmail.com>
+---
+ build.xml | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/build.xml b/build.xml
+index b7940ab..96e52ea 100644
+--- a/build.xml
++++ b/build.xml
+@@ -62,6 +62,11 @@
+ <javaversion atleast="10"/>
+ </condition>
+
++ <target name="os-props"
++ description="echo values of JVM system properties os.* to file os.properties">
++ <echoproperties prefix="os." destfile="os.properties" />
++ </target>
++
+ <target name="clean" description="clean working copy">
+ <delete dir="${build}" />
+ <delete dir="${dist}" />
+--
+2.34.1
+
diff --git a/dev-java/lz4-java/files/lz4-java-1.8.0-r1-Makefile b/dev-java/lz4-java/files/lz4-java-1.8.0-r1-Makefile
new file mode 100644
index 000000000000..4a766552c65e
--- /dev/null
+++ b/dev-java/lz4-java/files/lz4-java-1.8.0-r1-Makefile
@@ -0,0 +1,47 @@
+# Gentoo custom Makefile for the JNI portion of lz4-java
+#
+# Adapted from the logic for target "compile-jni" in build.xml,
+# but uses lz4 installed on the system. This Makefile respects
+# custom CFLAGS and LDFLAGS settings, whereas build.xml does not.
+
+# Java system properties read by build.xml
+PLATFORM ?= linux
+SRC ?= src
+BUILD ?= build
+JAVA_HOME ?=
+# Requires lz4-java-*-print-os-props.patch
+OS_ARCH := $(shell ant os-props 2>&1 > /dev/null && \
+ grep 'os\.arch=' os.properties | sed -e 's/os\.arch=//')
+
+MKDIR_P = mkdir -p
+
+SRC_DIR := $(SRC)/jni
+OBJS_DIR_PREFIX := $(BUILD)/objects
+OBJS_DIR := $(OBJS_DIR_PREFIX)/$(SRC_DIR)
+OUT_DIR := $(BUILD)/jni/net/jpountz/util/$(PLATFORM)/$(OS_ARCH)
+
+SRC_FILES := $(wildcard $(SRC_DIR)/*.c)
+OBJS := $(addprefix $(OBJS_DIR_PREFIX)/,$(SRC_FILES:.c=.o))
+SONAME = liblz4-java.so
+
+# C compiler arguments may be obtained by running 'ant -v compile-jni',
+# as long as dev-java/cpptasks is in the classpath
+CFLAGS := -fPIC $(CFLAGS)
+
+$(OUT_DIR)/$(SONAME): $(OBJS) | $(OUT_DIR)
+ # '-llz4' must be listed after this package's objects
+ # https://wiki.gentoo.org/wiki/Project:Quality_Assurance/As-needed#Importance_of_linking_order
+ $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^ -llz4
+
+$(OBJS_DIR_PREFIX)/%.o: %.c | $(OBJS_DIR)
+ $(CC) $(CFLAGS) -c -o $@ \
+ -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/$(PLATFORM) \
+ -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/$(PLATFORM) \
+ -I$(BUILD)/jni-headers \
+ $<
+
+$(OUT_DIR):
+ $(MKDIR_P) $@
+
+$(OBJS_DIR):
+ $(MKDIR_P) $@
diff --git a/dev-java/lz4-java/files/lz4-java-1.8.0-skip-ivy.patch b/dev-java/lz4-java/files/lz4-java-1.8.0-skip-ivy.patch
new file mode 100644
index 000000000000..26c09e147072
--- /dev/null
+++ b/dev-java/lz4-java/files/lz4-java-1.8.0-skip-ivy.patch
@@ -0,0 +1,91 @@
+From 95ae85542f39cecd1af6a3e661ad6120195d2304 Mon Sep 17 00:00:00 2001
+From: Yuan Liao <liaoyuan@gmail.com>
+Date: Mon, 20 Dec 2021 09:57:31 -0800
+Subject: [PATCH] build.xml: Skip Ivy logic and use Gentoo classpath
+
+Signed-off-by: Yuan Liao <liaoyuan@gmail.com>
+---
+ build.xml | 22 +++++++---------------
+ 1 file changed, 7 insertions(+), 15 deletions(-)
+
+diff --git a/build.xml b/build.xml
+index b7940ab..ff321c6 100644
+--- a/build.xml
++++ b/build.xml
+@@ -20,6 +20,8 @@
+ xmlns:junit4="antlib:com.carrotsearch.junit4"
+ xmlns:mvn="antlib:org.apache.maven.artifact.ant">
+
++ <import file="gentoo-classpath.xml" />
++
+ <property name="src" location="src"/>
+ <property name="build" location="build"/>
+ <property name="dist" location="dist"/>
+@@ -81,8 +83,6 @@
+ </target>
+
+ <target name="install-cpptasks" unless="cpptasks.available">
+- <ivy:cachepath organisation="ant-contrib" module="cpptasks" revision="1.0b5"
+- inline="true" conf="default" transitive="true" pathid="cpptasks.classpath"/>
+ <taskdef uri="antlib:net.sf.antcontrib.cpptasks" resource="net/sf/antcontrib/cpptasks/antlib.xml" classpathref="cpptasks.classpath"/>
+ <property name="cpptasks.available" value="true"/>
+ </target>
+@@ -117,22 +117,14 @@
+
+ <target name="init">
+ <tstamp />
+- <ivy:resolve file="${ivy.xml.name}" conf="test" />
+- <ivy:retrieve />
+ </target>
+
+ <target name="install-junit4" depends="init" unless="junit4.available">
+- <taskdef uri="antlib:com.carrotsearch.junit4">
+- <classpath>
+- <fileset dir="${lib}" includes="*.jar" />
+- </classpath>
+- </taskdef>
++ <taskdef uri="antlib:com.carrotsearch.junit4" resource="com/carrotsearch/junit4/antlib.xml" classpath="${gentoo.classpath}"/>
+ <property name="junit4.available" value="true" />
+ </target>
+
+ <target name="generate-sources" depends="init">
+- <ivy:cachepath organisation="org.mvel" module="mvel2" revision="2.3.2.Final"
+- inline="true" conf="default" transitive="true" pathid="mvel.classpath"/>
+ <mkdir dir="${build}/java" />
+ <java
+ fork="true"
+@@ -244,12 +236,12 @@
+ <pathelement path="${build}/classes" />
+ <pathelement path="${build}/unsafe-classes" />
+ <pathelement path="${build}/generated-classes" />
+- <fileset dir="lib" includes="*.jar" />
++ <pathelement path="${gentoo.classpath}" />
+ </path>
+
+ <path id="compile.tests.classpath.with.jar">
+ <pathelement path="${lz4-java.jar}" />
+- <fileset dir="lib" includes="*.jar" />
++ <pathelement path="${gentoo.classpath}" />
+ </path>
+
+ <path id="test.classpath">
+@@ -260,14 +252,14 @@
+ <pathelement path="${build}/unsafe-classes" />
+ <pathelement path="${build}/generated-classes" />
+ <pathelement path="${build}/test-classes" />
+- <fileset dir="${lib}" includes="*.jar" />
++ <pathelement path="${gentoo.classpath}" />
+ </path>
+
+ <path id="test.classpath.with.jar">
+ <pathelement path="${lz4-java.jar}" />
+ <pathelement path="${src}/test-resources" />
+ <pathelement path="${build}/test-classes" />
+- <fileset dir="${lib}" includes="*.jar" />
++ <pathelement path="${gentoo.classpath}" />
+ </path>
+
+ <target name="test" description="run tests">
+--
+2.32.0
+
diff --git a/dev-java/lz4-java/lz4-java-1.8.0-r1.ebuild b/dev-java/lz4-java/lz4-java-1.8.0-r1.ebuild
new file mode 100644
index 000000000000..993a8803f183
--- /dev/null
+++ b/dev-java/lz4-java/lz4-java-1.8.0-r1.ebuild
@@ -0,0 +1,101 @@
+# 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/*
+}
diff --git a/dev-java/lz4-java/metadata.xml b/dev-java/lz4-java/metadata.xml
new file mode 100644
index 000000000000..576cd0ee41f1
--- /dev/null
+++ b/dev-java/lz4-java/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>java@gentoo.org</email>
+ <name>Java</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">lz4/lz4-java</remote-id>
+ </upstream>
+</pkgmetadata>