# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 JAVA_PKG_IUSE="doc test" inherit desktop java-pkg-2 java-ant-2 virtualx xdg-utils MY_PV="${PV/_beta/b}" DESCRIPTION="Java GUI for managing BibTeX and other bibliographies" HOMEPAGE="https://www.jabref.org/" SRC_URI="mirror://sourceforge/${PN}/JabRef-${MY_PV}-src.tar.bz2" LICENSE="GPL-2" SLOT="0" KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux" CP_DEPEND=" dev-java/antlr:0 dev-java/antlr:3 dev-java/commons-logging:0 dev-java/fontbox:1.7 dev-java/jaxb-api:2 dev-java/jempbox:1.7 dev-java/log4j-12-api:2 dev-java/log4j-api:2 dev-java/spin:0 dev-java/microba:0 >=dev-java/glazedlists-1.8.0:0" TEST_DEPEND="dev-java/junit:0" # Since Java 9, all dependencies ever imported by the source files need to be # present in the classpath for Javadoc generation; in particular, for this # package, the test sources will be passed to 'javadoc' as well as the non-test # sources, so all test dependencies are required for Javadoc generation too. DEPEND=" >=virtual/jdk-1.8:* doc? ( ${TEST_DEPEND} ) test? ( ${TEST_DEPEND} ) ${CP_DEPEND}" # Java 17+ requires "--add-opens=java.desktop/java.awt=ALL-UNNAMED" in # arguments to the JVM that runs this application; Java 8 and 11 are OK, # but dev-java/java-config currently does not support declaration like # RDEPEND="|| ( virtual/jre:1.8 virtual/jre:11 )" yet, so only one JRE # version can be chosen to run this application at the moment. RDEPEND=" virtual/jre:1.8 ${CP_DEPEND}" IDEPEND="dev-util/desktop-file-utils" S="${WORKDIR}/${PN}-${MY_PV}" PATCHES=( "${FILESDIR}/${P}-javax.swing-java-9+.patch" "${FILESDIR}/${P}-skip-failing-tests.patch" "${FILESDIR}/${P}-test-jvm-props-args.patch" ) JAVA_ANT_REWRITE_CLASSPATH="true" EANT_BUILD_TARGET="jars" EANT_DOC_TARGET="docs" # Some dependencies that are also used by the tests need to be explicitly # listed to avoid "package does not exist" compiler errors. EANT_TEST_GENTOO_CLASSPATH="junit" EANT_TEST_GENTOO_CLASSPATH+=",antlr-3,commons-logging,glazedlists" EANT_TEST_GENTOO_CLASSPATH+=",jempbox-1.7,microba,spin" EANT_TEST_EXTRA_ARGS="-Djava.io.tmpdir=${T} -Duser.home=${HOME}" src_prepare() { default # If we cleanup it complains about missing jarbundler # BUILD FAILED # taskdef class net.sourceforge.jarbundler.JarBundler cannot be found # java-pkg_clean # Remove bundled dependencies. rm lib/antlr*.jar || die rm lib/fontbox*.jar || die rm lib/glazedlists*.jar || die rm lib/jempbox*.jar || die rm lib/microba.jar || die rm lib/spin.jar || die rm lib/plugin/commons-logging.jar || die # Remove unjarlib target (do this only once we have removed all # bundled dependencies in lib). #sed -i -e 's:depends="build, unjarlib":depends="build":' build.xml # Fix license file copy operation for microba bundled lib. sed -i -e 's:^.*microba-license.*::' build.xml use doc && EANT_GENTOO_CLASSPATH_EXTRA="$(\ java-pkg_getjars --build-only junit)" } src_test() { # Tests will launch the application, which requires an X environment. # An existing application preference file is needed to make the tests # non-interactive; otherwise, the application will hang for user input. local prefs_dir="${HOME}/.java/.userPrefs/net/sf/jabref" mkdir -p "${prefs_dir}" || die "Failed to create application preference directory for tests" cp "${FILESDIR}/${P}-test-prefs.xml" "${prefs_dir}/prefs.xml" || die "Failed to copy application preference file for tests" virtx java-pkg-2_src_test } src_install() { java-pkg_newjar build/lib/JabRef-${MY_PV}.jar dodoc src/txt/README use doc && java-pkg_dojavadoc build/docs/API java-pkg_dolauncher ${PN} --main net.sf.jabref.JabRef newicon src/images/JabRef-icon-48.png JabRef-icon.png make_desktop_entry ${PN} JabRef JabRef-icon Office } pkg_postinst() { xdg_desktop_database_update } pkg_postrm() { xdg_desktop_database_update }