# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # Skeleton command: # java-ebuilder --generate-ebuild --workdir . --pom pom.xml --download-uri mirror://apache/xmlgraphics/batik/source/batik-src-1.14.tar.gz --slot 1.14 --keywords "~amd64 ~ppc64 ~x86" --ebuild batik-1.14.ebuild EAPI=8 JAVA_PKG_IUSE="doc source test" MAVEN_ID="org.apache.xmlgraphics:batik:1.14" JAVA_TESTING_FRAMEWORKS="junit-4" inherit desktop java-pkg-2 java-pkg-simple xdg-utils DESCRIPTION="XML Graphics Batik" HOMEPAGE="https://xmlgraphics.apache.org/batik/" SRC_URI="mirror://apache/xmlgraphics/batik/source/batik-src-${PV}.tar.gz" LICENSE="Apache-2.0" SLOT="1.14" KEYWORDS="amd64 ~arm64 ppc64 x86" CP_DEPEND=" dev-java/jacl:0 dev-java/jython:2.7 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:*" DOCS=( CHANGES NOTICE README ) S="${WORKDIR}/batik-${PV}" src_prepare() { default java-pkg_clean } src_compile() { # We loop over the modules list and compile the jar files. while read module; do einfo "Compiling $module" JAVA_SRC_DIR="" JAVA_RESOURCE_DIRS="" JAVA_JAR_FILENAME="$module.jar" JAVA_MAIN_CLASS="" # Not all of the modules have resources. if [[ -d $module/src/main/resources ]]; then JAVA_RESOURCE_DIRS="$module/src/main/resources" fi # Don't let sed die on modules without MainClass. JAVA_MAIN_CLASS=$( sed -n 's:.*\(.*\):\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-rasterizer-ext, batik-squiggle and batik-squiggle-ext else 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 # 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 keep them in the mudules list for later but omit them by 'grep -v'. # The same for batik-test-old which depends on fop-transcoder-allinone which itself depends on batik. # batik-1.14-modules is the "Reactor Build Order" extracted from the output of "mvn dependency:tree". done < <(grep -v '\(batik-rasterizer-ext\|batik-squiggle-ext\|batik-test-old\)' "${FILESDIR}"/batik-1.14-modules) if use doc; then JAVA_SRC_DIR="" JAVA_JAR_FILENAME="ignoreme.jar" while read module; 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 < "${FILESDIR}"/batik-1.14-modules java-pkg-simple_src_compile fi } src_test() { JAVA_TEST_GENTOO_CLASSPATH="junit-4" while read module; 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 < <(grep -v '\(batik-rasterizer-ext\|batik-squiggle-ext\|batik-test-old\)' "${FILESDIR}"/batik-1.14-modules) } src_install() { einstalldocs domenu "${FILESDIR}"/batik-squiggle.desktop doicon batik-svgbrowser/src/main/resources/org/apache/batik/apps/svgbrowser/resources/init.svg while read module; do JAVA_MAIN_CLASS=$( sed -n 's:.*\(.*\):\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 < <(grep -v '\(batik-rasterizer-ext\|batik-squiggle-ext\|batik-test-old\)' "${FILESDIR}"/batik-1.14-modules) 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 }