summaryrefslogtreecommitdiff
blob: b2b35d23a70ceea1f8a14231ac66f00e0e274eaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# 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
}