# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

JAVA_PKG_IUSE="doc source test"

inherit java-pkg-2 verify-sig

DESCRIPTION="High-performance, full-featured text search engine written entirely in Java"
HOMEPAGE="https://lucene.apache.org"
SRC_URI="https://archive.apache.org/dist/${PN}/java/${P}-src.tar.gz
	verify-sig?	( https://archive.apache.org/dist/${PN}/java/${P}-src.tar.gz.asc )"

LICENSE="Apache-2.0"
SLOT="2.4"
KEYWORDS="~amd64"

VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/lucene.apache.org.asc"
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-apache-lucene )"

# Restricting to jdk:1.8 since it fails to build with openjdk-17
# BUILD FAILED
# /var/tmp/portage/dev-java/lucene-2.4.1-r3/work/lucene-2.4.1/build.xml:52: \
# rmic does not exist under Java 15 and higher,
# use rmic of an older JDK and explicitly set the executable attribute
DEPEND="
	dev-java/javacc:0
	virtual/jdk:1.8
	test? (
		>=dev-java/ant-1.10.14-r3:0[junit]
		dev-java/junit:0
	)"

RDEPEND=">=virtual/jre-1.8:*"

PATCHES=(
	"${FILESDIR}/lucene-2.4.1-skipFailingTest.patch"
	"${FILESDIR}/lucene-2.4.1-javacc.home.patch"
)

src_prepare() {
	default #780585
	java-pkg-2_src_prepare
	java-pkg_clean

	cat > build.properties <<-EOF || die
		ant.build.javac.source=$(java-pkg_get-source)
		ant.build.javac.target=$(java-pkg_get-target)
		javac.source=$(java-pkg_get-source)
		javac.target=$(java-pkg_get-target)
		javacc.home=${EPREFIX}/usr/share/javacc/lib/
		junit-location.jar=$(java-pkg_getjars --build-only junit)
	EOF

	rm docs/skin/images/instruction_arrow.png || die #: broken IDAT window length
	rm docs/images/instruction_arrow.png || die #: broken IDAT window length
}

src_compile() {
	eant javacc

	eant -Dversion=${PV} jar-core jar-demo
	use doc && eant -Dversion=${PV} javadocs-core javadocs-demo
}

src_test() {
	# we found that running tests with eant creates completely different output than
	# runnning with ant. no idea what exactly is causing that difference,
	ant test-core
}

src_install() {
	einstalldocs
	java-pkg_newjar "build/${PN}-core-${PV}.jar" "${PN}-core.jar"
	java-pkg_newjar "build/${PN}-demos-${PV}.jar" "${PN}-demos.jar"

	if use doc; then
		dodoc -r docs
		java-pkg_dohtml -r build/docs/api
	fi
	use source && java-pkg_dosrc src/java/org
}