diff options
Diffstat (limited to 'dev-java/antlr-tool/antlr-tool-4.9.3-r1.ebuild')
-rw-r--r-- | dev-java/antlr-tool/antlr-tool-4.9.3-r1.ebuild | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/dev-java/antlr-tool/antlr-tool-4.9.3-r1.ebuild b/dev-java/antlr-tool/antlr-tool-4.9.3-r1.ebuild new file mode 100644 index 000000000000..eaf876b5e1b3 --- /dev/null +++ b/dev-java/antlr-tool/antlr-tool-4.9.3-r1.ebuild @@ -0,0 +1,142 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Artifact ID for antlr-tool is 'antlr4' +# https://github.com/antlr/antlr4/blob/4.9.3/tool/pom.xml#L14 +MAVEN_ID="org.antlr:antlr4:4.9.3" + +JAVA_PKG_IUSE="doc source test" +JAVA_TESTING_FRAMEWORKS="junit-4" + +inherit java-pkg-2 java-pkg-simple + +MY_PN="${PN%-tool}" +MY_P="${MY_PN}-${PV}" + +DESCRIPTION="The ANTLR 4 grammar compiler" +HOMEPAGE="https://www.antlr.org/" +# Maven Central sources JAR for tool/src/org/antlr/v4/unicode/UnicodeData.java, +# which requires string-template-maven-plugin to generate; tarball for the rest +SRC_URI=" + https://github.com/antlr/antlr4/archive/${PV}.tar.gz -> ${MY_P}.tar.gz + https://repo1.maven.org/maven2/org/antlr/antlr4/${PV}/antlr4-${PV}-sources.jar -> ${P}-sources.jar +" + +LICENSE="BSD" +SLOT="4" +KEYWORDS="amd64 ~arm arm64 ppc64 x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" + +CP_DEPEND=" + ~dev-java/antlr-runtime-${PV}:${SLOT} + dev-java/antlr-runtime:3.5 + dev-java/jakarta-json-api:1 + dev-java/icu4j:0 + dev-java/stringtemplate:4 + dev-java/treelayout:0 +" + +DEPEND=" + >=virtual/jdk-1.8:* + ${CP_DEPEND} + dev-java/antlr-tool:3.5 + test? ( + dev-java/jol-core:0 + ) +" + +RDEPEND=" + >=virtual/jre-1.8:* + ${CP_DEPEND} +" + +S="${WORKDIR}/${MY_PN}4-${PV}" + +JAVA_SRC_DIR=( + tool/src + ../src/org # For UnicodeData.java +) +JAVA_RESOURCE_DIRS=( tool/resources ) + +JAVA_TEST_GENTOO_CLASSPATH="junit-4,jol-core" +JAVA_TEST_SRC_DIR=( + tool-testsuite/test + # The runtime test suite is used as a library for tool test suite + runtime-testsuite/{annotations,test} +) +JAVA_TEST_RESOURCE_DIRS=( + # Some resources are mixed with test source files + "${JAVA_TEST_SRC_DIR[0]}" +) + +pkg_setup() { + java-pkg-2_pkg_setup + MY_JAVA="$(java-config -J)" +} + +src_prepare() { + java-pkg_clean + eapply "${FILESDIR}/${PV}-test-fixes.patch" + java-pkg-2_src_prepare +} + +src_compile() { + einfo "Generating ANTLR 3 parsers" + "${MY_JAVA}" -cp "$(java-pkg_getjars \ + --build-only --with-dependencies antlr-tool-3.5)" \ + org.antlr.Tool $(find "${JAVA_SRC_DIR[@]}" -name "*.g") || + die "Failed to generate ANTLR 3 parsers" + java-pkg-simple_src_compile +} + +src_test() { + # Build classpath for tests + local test_deps=( + "${JAVA_TEST_GENTOO_CLASSPATH}" + antlr-runtime-${SLOT} + antlr-runtime-3.5 + jakarta-json-api-1 + icu4j + stringtemplate-4 + treelayout + ) + local CP="${S}/${JAVA_JAR_FILENAME}" + for test_dep in "${test_deps[@]}"; do + CP+=":$(java-pkg_getjars --with-dependencies "${test_dep}")" + done + for res_dir in "${JAVA_TEST_RESOURCE_DIRS[@]}"; do + CP+=":${res_dir}" + done + + einfo "Generating ANTLR 4 parsers for tests" + pushd runtime-testsuite/test > /dev/null || + die "Failed to enter runtime test source directory" + g4_files=( $(find * -name "*.g4") ) + for file in "${g4_files[@]}"; do + java_pkg="${file%/*.g4}" + java_pkg="${java_pkg//\//.}" + "${MY_JAVA}" -cp "${CP}" org.antlr.v4.Tool \ + -visitor -package "${java_pkg}" "${file}" || + die "Failed to generate ANTLR 4 parser from ${file}" + done + popd > /dev/null || die "Failed to leave runtime test source directory" + + # Compile Java test sources + local classes="target/classes" + ejavac -d "${classes}" -cp "${CP}" \ + $(find "${JAVA_TEST_SRC_DIR[@]}" -name "*.java") + + # Create a list of tests to run + pushd "${JAVA_TEST_SRC_DIR[0]}" > /dev/null || + die "Failed to enter test source directory for ${PN}" + local TESTS=$(find * -type f \ + \( -name "Test*.java" -o -name "*Test.java" \) \ + -not -name "BaseJavaToolTest.java" # No runnable methods + ) + TESTS="${TESTS//.java}" + TESTS="${TESTS//\//.}" + popd > /dev/null || die "Failed to leave test source directory for ${PN}" + + ejunit4 -classpath "${classes}:${CP}" ${TESTS} +} |