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.
gentoo-overlay/app-text/jabref/jabref-2.10-r7.ebuild

133 lines
3.8 KiB

# 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
}