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

EAPI=9

JAVA_PKG_IUSE="doc source test"
JAVA_TESTING_FRAMEWORKS="junit-4"

inherit java-pkg-2 java-pkg-simple verify-sig

DESCRIPTION="Ivy is a free java based dependency manager"
HOMEPAGE="https://ant.apache.org/ivy/"
SRC_URI="mirror://apache/ant/ivy/${PV}/apache-ivy-${PV}-src.tar.gz
	verify-sig? ( mirror://apache/ant/ivy/${PV}/apache-ivy-${PV}-src.tar.gz.asc )"
S="${WORKDIR}/apache-ivy-${PV}"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~ppc64"

COMMON_DEPEND="
	>=dev-java/ant-1.10.15-r1:0
	dev-java/bcpg:0
	dev-java/bcprov:0
	dev-java/commons-vfs:2
	dev-java/httpcomponents-client:4
	dev-java/httpcore:0
	dev-java/jakarta-oro:2.0
	dev-java/jsch:0
	dev-java/jsch-agent-proxy:0
"

BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-apache-ant-20260402 )"
DEPEND="
	${COMMON_DEPEND}
	|| ( virtual/jdk:11 virtual/jdk:1.8 )
	test? (
		>=dev-java/ant-1.10.15-r1:0[junit,junit4,testutil]
		>=dev-java/ant-contrib-1.0_beta6_pre20201123-r3:0
		>=dev-java/commons-logging-1.3.6:0
		>=dev-java/hamcrest-3.0:0
		dev-java/xmlunit:1
	)
"

RDEPEND="
	${COMMON_DEPEND}
	>=virtual/jre-1.8:*
"

DOCS=( NOTICE README.adoc )
PATCHES=(
	"${FILESDIR}/ant-ivy-2.5.3-gentoo.patch"
	"${FILESDIR}/ant-ivy-2.5.3-ant-contrib-classpath.patch"
	"${FILESDIR}/ant-ivy-2.5.3-BundleRepoTest.patch"
	"${FILESDIR}/ant-ivy-2.5.3-testExtendsAbsoluteLocation.patch"
	"${FILESDIR}/ant-ivy-2.5.3-MirroredURLResolverTest.patch"
	"${FILESDIR}/ant-ivy-2.5.3-BintrayResolverTest.patch"
	"${FILESDIR}/ant-ivy-2.5.3-UpdateSiteLoaderTest.patch"
)

JAVA_JAR_FILENAME="ivy.jar" # PN is different
JAVA_SRC_DIR="src/java" # needed for USE=source
VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/ant.apache.org.asc"

src_prepare() {
	java-pkg-2_src_prepare
	java-pkg_clean ! -path './test/**'
}

src_compile() {
	mkdir lib || die "mkdir lib" # needed because of -Dno.resolve
	local libs="ant,bcpg,bcprov,commons-vfs-2,httpcomponents-client-4,httpcore,jakarta-oro-2.0,jsch,jsch-agent-proxy"
	eant \
		-f build.xml jar $(usev doc javadoc) \
		-Dskip.test \
		-Doffline=true \
		-Dno.resolve=true \
		-Divy.use.local.home=true \
		-Dant.jar=$(java-pkg_getjar --build-only ant ant.jar) \
		-Dgentoo.classpath=$(java-pkg_getjars --build-only "${libs}") \
		-Dant.build.javac.source="$(java-pkg_get-source)" \
		-Dant.build.javac.target="$(java-pkg_get-target)"
}

src_test() {
	# test-class with only one test which needs network access
	rm test/java/org/apache/ivy/osgi/updatesite/UpdateSiteAndIbiblioResolverTest.java || die

	local libs="ant,bcpg,bcprov,commons-vfs-2,httpcomponents-client-4,httpcore,jakarta-oro-2.0,jsch,jsch-agent-proxy"
	libs+=",commons-logging,junit,junit-4,hamcrest,xmlunit-1"
	eant \
		-f build.xml test \
		-Dant-contrib.jar=$(java-pkg_getjars --build-only ant-contrib) \
		-Doffline=true \
		-Dno.resolve=true \
		-Divy.use.local.home=true \
		-Dant.jar=$(java-pkg_getjar --build-only ant ant.jar) \
		-Dgentoo.classpath=$(java-pkg_getjars --build-only "${libs}") \
		-Dant.build.javac.source="$(java-pkg_get-source)" \
		-Dant.build.javac.target="$(java-pkg_get-target)"
}

src_install() {
	if use doc; then
		mkdir target || die
		mv {build/reports,target}/api || die
	fi
	mv {build/artifact/jars/,}ivy.jar || die "rename jar"
	java-pkg-simple_src_install
}
