summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-java/jflex/jflex-1.9.1-r1.ebuild')
-rw-r--r--dev-java/jflex/jflex-1.9.1-r1.ebuild145
1 files changed, 145 insertions, 0 deletions
diff --git a/dev-java/jflex/jflex-1.9.1-r1.ebuild b/dev-java/jflex/jflex-1.9.1-r1.ebuild
new file mode 100644
index 000000000000..b05e7bc9874d
--- /dev/null
+++ b/dev-java/jflex/jflex-1.9.1-r1.ebuild
@@ -0,0 +1,145 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+JAVA_PKG_IUSE="doc source test"
+JAVA_TESTING_FRAMEWORKS="junit-4"
+
+inherit java-pkg-2 java-pkg-simple
+
+DESCRIPTION="JFlex is a lexical analyzer generator for Java"
+HOMEPAGE="https://www.jflex.de/"
+SRC_URI="https://github.com/jflex-de/jflex/releases/download/v${PV}/${P}.tar.gz"
+S="${WORKDIR}/${P}"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc-macos ~x64-macos"
+IUSE="ant-task examples test vim-syntax"
+REQUIRED_USE="test? ( ant-task )"
+
+# jdk-11:* for bug #963787
+# <dev-java/ognl-3.1.25:0 because of test failures with 3.1.25 or higher
+DEPEND="
+ >=virtual/jdk-11:*
+ dev-java/auto-value:0
+ dev-java/escapevelocity:0
+ dev-java/incap:0
+ >=dev-java/javacup-11b_p20160615-r2:0
+ dev-java/javapoet:0
+ dev-java/jsr305:0
+ ant-task? ( >=dev-java/ant-1.10.15:0 )
+ test? (
+ dev-java/antlr-runtime:3.5
+ dev-java/generics-resolver:0
+ >=dev-java/guava-33.4.8:0
+ dev-java/javaruntype:0
+ dev-java/junit-quickcheck:0
+ <dev-java/ognl-3.1.25:0
+ dev-java/slf4j-simple:0
+ dev-java/truth:0
+ )
+"
+
+RDEPEND="
+ >=virtual/jre-1.8:*
+ ant-task? ( >=dev-java/ant-1.10.15:0 )
+ vim-syntax? ( || ( app-editors/vim app-editors/gvim ) )
+"
+
+DOCS=( {changelog,README}.md )
+JAVA_CLASSPATH_EXTRA="auto-value,javacup,jsr305"
+JAVA_MAIN_CLASS="jflex.Main"
+JAVA_RESOURCE_DIRS="src/main/resources"
+JAVA_SRC_DIR="src/main/java"
+
+JAVA_TEST_GENTOO_CLASSPATH="
+ ant
+ antlr-runtime-3.5
+ generics-resolver
+ guava
+ javaruntype
+ junit-4
+ junit-quickcheck
+ ognl
+ slf4j-simple
+ truth
+"
+
+JAVA_TEST_RESOURCE_DIRS="src/test/resources"
+JAVA_TEST_SRC_DIR="src/test/java"
+
+src_prepare() {
+ java-pkg-2_src_prepare
+
+ # Keep pre-compiled jar for generating LexScan.java
+ # It includes java_cup/runtime
+ java-pkg_clean ! -path "./lib/jflex-full-${PV}.jar"
+
+ # No need for that stuff
+ rm -r src/generated || die "rm generated"
+
+ # Providing ant-task would require dev-java/ant in dependencies.
+ if use ant-task; then
+ JAVA_GENTOO_CLASSPATH_EXTRA+=":$(java-pkg_getjar --build-only ant ant.jar)"
+ else
+ rm src/main/java/jflex/anttask/JFlexTask.java || die
+ fi
+}
+
+jflex_compile() {
+ $(java-config -J) "${@}" jflex.Main \
+ -d src/main/java \
+ --skel src/main/jflex/skeleton.nested \
+ src/main/jflex/LexScan.flex || die
+ java-pkg-simple_src_compile
+}
+
+src_compile() {
+ # get processorpath
+ local pp="$(java-pkg_getjar --build-only auto-value auto-value.jar)"
+ pp="${pp}:$(java-pkg_getjar --build-only auto-value auto-common.jar)"
+ pp="${pp}:$(java-pkg_getjars --build-only escapevelocity,guava,incap,javapoet)"
+
+ JAVAC_ARGS="-processorpath ${pp} -s src/main/java"
+
+ JAVACUP=$(java-pkg_getjar --build-only javacup javacup.jar)
+ java -jar "${JAVACUP}" -destdir ${JAVA_SRC_DIR} -package ${PN} \
+ -parser LexParse -interface src/main/cup/LexParse.cup || die
+
+ einfo "Generate LexScan.java using pre-compiled jar"
+ jflex_compile -cp "lib/jflex-full-${PV}.jar"
+
+ einfo "Remove and re-generate LexScan.java using the freshly built jar"
+ rm -v src/main/java/LexScan.java || die "rm LexScan.java"
+ rm -r target || die
+ jflex_compile -cp "${JAVACUP}:jflex.jar"
+}
+
+src_test() {
+ local TESTS=$(find src/test/java \( -name "*Test.java" -o -name "*Quickcheck.java" \) -printf "%P\n")
+ TESTS="${TESTS//.java}"
+ JAVA_TEST_RUN_ONLY="${TESTS//\//.}"
+
+ java-pkg-simple_src_test
+}
+
+src_install() {
+ java-pkg-simple_src_install
+
+ use ant-task && java-pkg_register-ant-task
+
+ use examples && java-pkg_doexamples examples
+
+ if use doc; then
+ dodoc doc/*.pdf
+ docinto html
+ dodoc doc/*.{css,html,png} doc/COPYRIGHT
+ fi
+
+ if use vim-syntax; then
+ insinto /usr/share/vim/vimfiles/syntax
+ doins lib/${PN}.vim
+ fi
+}