diff options
Diffstat (limited to 'app-text/trang/trang-20241231.ebuild')
-rw-r--r-- | app-text/trang/trang-20241231.ebuild | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/app-text/trang/trang-20241231.ebuild b/app-text/trang/trang-20241231.ebuild new file mode 100644 index 000000000000..343ab8e4a119 --- /dev/null +++ b/app-text/trang/trang-20241231.ebuild @@ -0,0 +1,124 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +JAVA_PKG_IUSE="doc test" +JAVA_TESTING_FRAMEWORKS="testng" + +inherit java-pkg-2 java-pkg-simple prefix + +DESCRIPTION="Multi-format schema converter based on RELAX NG" +HOMEPAGE="http://thaiopensource.com/relaxng/trang.html" +SRC_URI="https://github.com/relaxng/jing-trang/archive/V${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/jing-${P}" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + app-i18n/unicode-data + dev-java/saxon:9 +" + +CP_DEPEND=" + dev-java/xerces:2 + dev-java/xml-commons-resolver:0 +" + +JAVACC_SLOT="7.0.13" + +DEPEND=" + ${CP_DEPEND} + dev-java/javacc:${JAVACC_SLOT} + dev-java/testng:0 + >=virtual/jdk-1.8:* +" + +RDEPEND=" + ${CP_DEPEND} + >=virtual/jre-1.8:* +" + +JAVA_CLASSPATH_EXTRA="testng" +JAVA_GENTOO_CLASSPATH_EXTRA="util:helper" +JAVA_JAR_FILENAME="trang.jar" +JAVA_MAIN_CLASS="com.thaiopensource.relaxng.translate.Driver" +JAVA_RESOURCE_DIRS=( meta resources/src/main ) +JAVA_SRC_DIR=( {gen,}src/main ) +JAVA_TEST_RESOURCE_DIRS="src/test" +JAVA_TEST_SRC_DIR="src/test" + +src_prepare() { + java-pkg-2_src_prepare + java-pkg_clean + + eprefixify mod/regex/mod.xml # Do we still need this? + + # javac of old openjdk:8 does not create its output directory, see bug #934306 + # separating some sources which are needed only for compilation + mkdir helper util || die + cp -r mod/{catalog,datatype,jaxp,pattern,resolver,rng-parse}/src helper || die + + # most of the mods are not needed for the final trang.jar + rm -r mod/{dtdinst,nvdl,picl,rng-jarv,rng-validate,schematron,validate,xerces} || die + rm -r mod/{jaxp,pattern,rng-jaxp} || die + + # move all remainig stuff to "src/main" resp. "src/test" + mkdir -p resources src meta/META-INF/services || die + mv {mod/,}regex-gen || die # but not this one which is needed in two JAVA_SRC_DIRs + cp -r mod/*/src/{main,test} src || die + + # populate META-INF/services + echo com.thaiopensource.datatype.xsd.DatatypeLibraryFactoryImpl \ + > meta/META-INF/services/org.relaxng.datatype.DatatypeLibraryFactory || die + echo com.thaiopensource.datatype.xsd.regex.xerces2.RegexEngineImpl \ + > meta/META-INF/services/com.thaiopensource.datatype.xsd.regex.RegexEngine || die + + echo "version=${PV}" \ + > src/main/com/thaiopensource/relaxng/translate/resources/Version.properties || die + + # java-pkg-simple expects resources in JAVA_RESOURCE_DIRS + find src -type f ! -name '*.java' ! -name 'CompactSyntax.jj' ! -name 'package.html' \ + | xargs cp --parent -t resources || die + + # code generation according to mod/rng-parse/mod.xml + local OUT_DIR="gensrc/main/com/thaiopensource/relaxng/parse/compact" + mkdir -p "${OUT_DIR}" + "javacc-${JAVACC_SLOT}" -GRAMMAR_ENCODING=UTF-8 \ + -JDK_VERSION=1.8 \ + -OUTPUT_DIRECTORY="${OUT_DIR}" \ + helper/src/main/com/thaiopensource/relaxng/parse/compact/CompactSyntax.jj \ + || die "Code generation with java.jj failed" + rm "${OUT_DIR}/JavaCharStream.java" || die + + # mod/rng-parse/mod.xml lines 16-17 - 's/java.io.IOException/EOFException/' + eapply "${FILESDIR}/trang-20220510-CompactSyntaxTokenManager.patch" || die +} + +src_compile() { + einfo "Compiling some classes needed for code generation" + ejavac -d util \ + $(find regex-gen/src/main mod/util/src/main -name "*.java") || die + + einfo "Code generation" + "$(java-config -J)" -cp "util" \ + com.thaiopensource.datatype.xsd.regex.java.gen.NamingExceptionsGen \ + "com.thaiopensource.datatype.xsd.regex.java.NamingExceptions" \ + "src/main" || die + + "$(java-config -J)" -cp "util" \ + com.thaiopensource.datatype.xsd.regex.java.gen.CategoriesGen \ + "com.thaiopensource.datatype.xsd.regex.java.Categories" \ + "src/main" \ + "/usr/share/unicode-data/UnicodeData.txt" || die + + einfo "Compiling classes which are not needed for the final trang.jar" + ejavac -d helper \ + -cp "util:$(java-pkg_getjars --build-only xml-commons-resolver)" \ + $(find gensrc/main helper/src/main -name "*.java") || die + + einfo "Compiling trang.jar" + java-pkg-simple_src_compile +} |