summaryrefslogtreecommitdiff
path: root/dev-java
diff options
context:
space:
mode:
Diffstat (limited to 'dev-java')
-rw-r--r--dev-java/antlr-tool/Manifest2
-rw-r--r--dev-java/antlr-tool/antlr-tool-4.13.2.ebuild138
2 files changed, 140 insertions, 0 deletions
diff --git a/dev-java/antlr-tool/Manifest b/dev-java/antlr-tool/Manifest
index 3bd6f15319d5..e9cf35babb99 100644
--- a/dev-java/antlr-tool/Manifest
+++ b/dev-java/antlr-tool/Manifest
@@ -1,4 +1,6 @@
DIST antlr-3.5.3.tar.gz 6752328 BLAKE2B 8ebd098c9475122cddcadd5991b9f882b7fda5868ad979b29c9f4dab97e39cd31e7fc943476c3a854f3e3aee9c1c56384b7fcc893f87548482af5d5d0839fd30 SHA512 c565e1ade7a62bb127df707015afded9a9cea54cbf5488730a327671c57e8718f93f76c4fa28edd856810cb9c7ccbcb27b53a7c8f7e3efc8169e64cfcc535a4c
+DIST antlr-4.13.2.tar.gz 4167326 BLAKE2B 709f3c18329e08a811d7a4e5258fc0183ba6fa6ab62fe83ab694360cf1ce2bb3aa3f30cc62a0339a6ff8b64dd0a766057fd6f751cfc34a4e05051e4d54a57fad SHA512 afd8ecab637a0e70cddf98f63c918eab2b907f87207624e20e80a79f885d6502d4ab734a602b1707969d61944410828b689ec2f8b09c15314fe991024cde1613
DIST antlr-4.9.3.tar.gz 4640242 BLAKE2B fb58f5e533051cb2c439c32f0462c1d463c99df862ba7e1a37a1c61378ab36a9edb9525c2a342de5b517da6f02d8291de5976c550932314f3464aad1a778afb9 SHA512 61452404c9639b5a0908cda16605f17c0fed0c9adfc3278c7408f9971420e9d1fe8f9e974e0826c2e3e780fdd83324094c0246cd5b28fa63f5686b094ea08127
DIST antlr-tool-3.5.3-sources.jar 949247 BLAKE2B f7afa52faae8324093206b7e56dfda58a79815cc2c13baca1cb93b3424c8b310325885ca8c86f0ca8a016a73e30740c2fa5f34ce71ed3a6cfc5fdeb6f2c4a9a7 SHA512 cfbc612c0257c4f0e09451cd76fe904680b6af132596696f2ef9c4e21dcfc53d53501e4d4d2b1c1cf4391355fa3766cf8dabc718dc3580728d24db3ebc14e696
+DIST antlr-tool-4.13.2-sources.jar 745908 BLAKE2B d8e19504e3c21cc32076d11a91aeacaaa6f4097f71e2a9dcc57e3f1b73b9db73d5da640a86b7ac802384aaf68c01e48ad63c98fe2f81a7a238dc8a6c7aa44665 SHA512 5d784a9093616d8867486a85538986c5c58e97f8813ed357dfd7891cea8e1209519e11123c5d186006041229d12a0e4b1da0e90d5d6b6dd63c6c0c7cf501b0c2
DIST antlr-tool-4.9.3-sources.jar 961749 BLAKE2B 294c7ba6dff9a1039d3e570d7d49f46a564302d1e7a25ac9f662a2c293cbabadd6a5a4a94d026c4e5fcca37c407e104956badbd1cbbf71b957e464dc67cf823e SHA512 7d70e80714b673eb8301def5e66a7133b2ac477e3cc219e37877ef9df673e0599a1148a8c1929ca8eab081d4e7375c9079241765a1f38832b21cfe8608ef4429
diff --git a/dev-java/antlr-tool/antlr-tool-4.13.2.ebuild b/dev-java/antlr-tool/antlr-tool-4.13.2.ebuild
new file mode 100644
index 000000000000..c89d94df8305
--- /dev/null
+++ b/dev-java/antlr-tool/antlr-tool-4.13.2.ebuild
@@ -0,0 +1,138 @@
+# Copyright 1999-2025 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.13.2/tool/pom.xml#L14
+MAVEN_ID="org.antlr:antlr4:4.13.2"
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-jupiter"
+
+inherit java-pkg-2 java-pkg-simple junit5
+
+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
+"
+S="${WORKDIR}/${MY_PN}4-${PV}"
+
+LICENSE="BSD"
+SLOT="4"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~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/icu4j-77.1: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}
+"
+
+JAVA_SRC_DIR=(
+ tool/src
+ ../src/org # For UnicodeData.java
+)
+JAVA_RESOURCE_DIRS=( tool/resources )
+
+JAVA_TEST_GENTOO_CLASSPATH="jol-core,junit-5"
+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
+ 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
+ icu4j
+ stringtemplate-4
+ treelayout
+ )
+ local CP="${S}/${JAVA_JAR_FILENAME}"
+ for test_dep in "${test_deps[@]}"; do
+ CP+=":$(java-pkg_getjars --build-only --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}"
+
+ ejunit5 -classpath "${classes}:${CP}" ${TESTS}
+}