Skip to content

Commit

Permalink
dev-java/batik: add 1.16
Browse files Browse the repository at this point in the history
Bug: https://bugs.gentoo.org/903600
Signed-off-by: Volkmar W. Pogatzki <gentoo@pogatzki.net>
  • Loading branch information
vaukai committed Mar 30, 2023
1 parent a66eacf commit d11ff5b
Show file tree
Hide file tree
Showing 2 changed files with 231 additions and 0 deletions.
2 changes: 2 additions & 0 deletions dev-java/batik/Manifest
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
DIST batik-src-1.14.tar.gz 17647867 BLAKE2B 9385e77e739ece921012310a53953a6e258a5d748987e85dd20783ca248ae55619db6472b7590a45fe40a1b51c693478a37a7dbe1a958b42392c525e5f228815 SHA512 689c52f58f8f0456c89bd18745d2d92e7590b9054bea71b96be87d44977057d583e78504cbf14afc3e0c585d2383dac3009c7c421de868c847db045e921da8fb
DIST batik-src-1.16.tar.gz 13495722 BLAKE2B 041442b5485588a23b6e335cc46630b3c73fb8a36157e8bc77baa7b399bf7986549039f27e89727ebc98b8492095b957c8c6deb12b232a39784844e4c5edf6ab SHA512 024ab7a204d00b6c855e26c62a326dfcde5fb486a7635890c6fcb37d421c7195ae04b3d292daabc0fcb6564f55bfa93d6fef15cf4c2dad77e569ca17d1eeb250
DIST batik-src-1.16.tar.gz.asc 833 BLAKE2B fdcfb26b9cc0d4fb0c37ce42d65628629ab0c27257ebe07715d5b2786500515125a240957c9ba76333aa54320905273031354cf09ee29e3a79fc7529640ebf03 SHA512 7fc3450d2b4d19e03528707fc20d6e18af926938ad24ad7460cc1c423c6c40507059fff2e2921d82fc582a4b486a75141fb407d450b043e2cc5007e0c2d486ea
229 changes: 229 additions & 0 deletions dev-java/batik/batik-1.16.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
# 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_ID="org.apache.xmlgraphics:batik:${PV}"
JAVA_TESTING_FRAMEWORKS="junit-4"

inherit desktop java-pkg-2 java-pkg-simple xdg-utils verify-sig

DESCRIPTION="XML Graphics Batik"
HOMEPAGE="https://xmlgraphics.apache.org/batik/"
SRC_URI="mirror://apache/xmlgraphics/batik/source/batik-src-${PV}.tar.gz
verify-sig? ( https://downloads.apache.org/xmlgraphics/batik/source/batik-src-${PV}.tar.gz.asc )"
S="${WORKDIR}/batik-${PV}"

LICENSE="Apache-2.0"
SLOT="1.16"
KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"

CP_DEPEND="
dev-java/jacl:0
dev-java/rhino:1.6
dev-java/xalan:0
dev-java/xml-commons-external:1.4
dev-java/xmlgraphics-commons:2
"

DEPEND="
${CP_DEPEND}
>=virtual/jdk-1.8:*
"

RDEPEND="
${CP_DEPEND}
>=virtual/jre-1.8:*
"

BDEPEND="verify-sig? ( sec-keys/openpgp-keys-apache-xmlgraphics-batik )"
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}/usr/share/openpgp-keys/xmlgraphics-batik.apache.org.asc"

DOCS=( CHANGES NOTICE README )

# Modules batik-rasterizer-ext and batik-squiggle-ext, upstream puts their jar files in the extensions
# directory, see batik-extension/src/main/resources/org/apache/batik/extensions/README.txt
# We comment them out but keep them in the mudules list for later.
# The same for batik-test-old which depends on fop-transcoder-allinone which itself depends on batik.
# We also don't build batik-shared-resources since we install those resources on global scope.
# And we don't build batik-all. Instead we install the modules.
# BATIK_MODULES is the "Reactor Build Order" extracted from the output of "mvn dependency:tree":
# mvn -DskipTests dependency:tree \
# | sed -n '/Reactor Build Order:/,/Building org/p' \
# | cut -d':' -f2 | cut -d' ' -f1 | grep 'batik-' || die
BATIK_MODULES=(
# batik-shared-resources
batik-constants
batik-i18n
batik-test
batik-util
batik-awt-util
batik-css
batik-ext
batik-xml
batik-dom
batik-parser
batik-svg-dom
batik-anim
batik-gvt
batik-script
batik-bridge
batik-svggen
batik-transcoder
batik-codec
batik-extension
batik-gui-util
batik-svgrasterizer
# batik-rasterizer-ext
batik-rasterizer
batik-slideshow
batik-swing
batik-svgbrowser
# batik-squiggle-ext
batik-squiggle
batik-svgpp
batik-ttf2svg
# batik-all
batik-test-swing
batik-test-svg
# batik-test-old
)

src_prepare() {
java-pkg_clean
java-pkg-2_src_prepare
# We drop support for jython due to bug #825486.
rm batik-script/src/main/java/org/apache/batik/script/jpython/JPythonInterpreter.java || die
rm batik-script/src/main/java/org/apache/batik/script/jpython/JPythonInterpreterFactory.java || die
}

src_compile() {
# We loop over the modules list and compile the jar files.
local module
for module in "${BATIK_MODULES[@]}"; do
einfo "Compiling ${module}"

JAVA_JAR_FILENAME="${module}.jar"
JAVA_MAIN_CLASS=""
JAVA_RESOURCE_DIRS=""
JAVA_SRC_DIR=""

# Not all of the modules have resources.
if [[ -d "${module}/src/main/resources" ]]; then
JAVA_RESOURCE_DIRS="${module}/src/main/resources"
fi

# Get Main-Class from the module's pom.xml
JAVA_MAIN_CLASS=$( sed -n 's:.*<mainClass>\(.*\)</mainClass>:\1:p' "${module}/pom.xml" )

# Some modules don't have source code.
if [[ -d "${module}/src/main/java/org" ]]; then
JAVA_SRC_DIR="${module}/src/main/java"
java-pkg-simple_src_compile
else
# This case applies to batik-rasterizer.
if [[ -d "${module}/src/main/resources/org" ]]; then
jar -cfe "${module}.jar" "${JAVA_MAIN_CLASS}" -C "${module}/src/main/resources" . || die
# Else for batik-squiggle (also batik-rasterizer-ext, batik-squiggle-ext)
else
# Create the JAR file (not possible without adding at least one file).
jar -cfe "${module}.jar" "${JAVA_MAIN_CLASS}" -C . README || die
zip -d "${module}.jar" "README"
fi
fi

JAVA_GENTOO_CLASSPATH_EXTRA+=":${module}.jar"

rm -fr target || die
done

if use doc; then
JAVA_SRC_DIR=""
JAVA_JAR_FILENAME="ignoreme.jar"

for module in "${BATIK_MODULES[@]}"; do
# Some modules don't have source code
if [[ -d "${module}/src/main/java/org" ]]; then
JAVA_SRC_DIR+=( "${module}/src/main/java" )
fi
done

java-pkg-simple_src_compile
fi
}

src_test() {
JAVA_TEST_GENTOO_CLASSPATH="junit-4"

for module in "${BATIK_MODULES[@]}"; do
einfo "Testing ${module}"

JAVA_TEST_SRC_DIR=""
JAVA_TEST_RESOURCE_DIRS=""
JAVA_TEST_RUN_ONLY=""

if [[ -d "${module}/src/test/resources" ]]; then
JAVA_TEST_RESOURCE_DIRS="${module}/src/test/resources"
fi

# https://github.com/apache/xmlgraphics-batik/blob/refs/tags/batik-1_14/batik-util/pom.xml#L74-L75
if [[ "${module}" == batik-util ]]; then
JAVA_TEST_RUN_ONLY="org.apache.batik.util.Base64TestCases"
fi

if [[ -d "${module}/src/test/java/org" ]]; then
JAVA_TEST_SRC_DIR="${module}/src/test/java"
java-pkg-simple_src_test
fi
done
}

src_install() {
einstalldocs
domenu "${FILESDIR}"/batik-squiggle.desktop
doicon batik-svgbrowser/src/main/resources/org/apache/batik/apps/svgbrowser/resources/init.svg

for module in "${BATIK_MODULES[@]}"; do
JAVA_MAIN_CLASS=$( sed -n 's:.*<mainClass>\(.*\)</mainClass>:\1:p' "${module}/pom.xml" )

java-pkg_dojar "${module}.jar"

# Add a launcher if the module has a MainClass.
if [[ -n "${JAVA_MAIN_CLASS}" ]]; then
java-pkg_dolauncher "${module}-${SLOT}" --main "${JAVA_MAIN_CLASS}"
fi

# Some modules don't have source code
if [[ -d "${module}/src/main/java/org" ]]; then
if use source; then
java-pkg_dosrc "${module}/src/main/java/*"
fi
fi
done

local java_policy_file="${JAVA_PKG_SHAREPATH}/etc/${PN}.policy"
insinto "$(dirname "${java_policy_file}")"
newins - "$(basename "${java_policy_file}")" <<- _EOF_
grant codeBase "file:${EPREFIX}${JAVA_PKG_JARDEST}/-" {
permission java.security.AllPermission;
};
_EOF_
java-pkg_register-environment-variable \
gjl_java_args \
"-Djava.security.policy=file:${EPREFIX}${java_policy_file}"

if use doc; then
java-pkg_dojavadoc target/api
fi
}

pkg_postinst() {
xdg_desktop_database_update
xdg_icon_cache_update
}

pkg_postrm() {
xdg_desktop_database_update
xdg_icon_cache_update
}

0 comments on commit d11ff5b

Please sign in to comment.