# 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-jupiter" # Avoid circular dependency JAVA_DISABLE_DEPEND_ON_JAVA_DEP_CHECK="true" inherit java-pkg-2 java-pkg-simple junit5 MY_P="ASM_${PV//./_}" DESCRIPTION="Bytecode manipulation framework for Java" HOMEPAGE="https://asm.ow2.io" SRC_URI="https://gitlab.ow2.org/asm/asm/-/archive/${MY_P}/asm-${MY_P}.tar.bz2" S="${WORKDIR}/asm-${MY_P}" LICENSE="BSD" SLOT="0" KEYWORDS="~amd64 ~arm64 ~ppc64 ~x64-macos" DEPEND=" >=virtual/jdk-11:* test? ( >=dev-java/janino-3.1.9:0 dev-java/junit:5[-vintage] >=dev-java/opentest4j-1.3.0-r1:0 ) " RDEPEND=">=virtual/jre-1.8:*" PATCHES=( "${FILESDIR}"/asm-9.10-gentoo.patch ) ASM_MODULES=( "asm" "asm-tree" "asm-analysis" "asm-commons" "asm-util" ) JAVADOC_SRC_DIRS=( asm{-analysis,-commons,,-tree,-util}/src/main/java ) JAVA_TEST_GENTOO_CLASSPATH="janino junit-5 opentest4j" JAVA_TEST_RESOURCE_DIRS=( asm{-analysis,-commons,,-tree,-util}/src/test/resources ) # The junit:5 version is too old, compilation of LambdaRemapTest.java fails with: # asm-commons/src/test/java/org/objectweb/asm/commons/LambdaRemapTest.java:9: error: cannot find symbol # import org.junit.jupiter.params.Parameter; # ^ # symbol: class Parameter JAVA_TEST_SRC_DIR=( asm{-analysis,-commons,,-test,-tree,-util}/src/test/java \ ! -name LambdaRemapTest.java ) src_compile() { local module for module in "${ASM_MODULES[@]}"; do einfo "Compiling ${module}" JAVA_GENTOO_CLASSPATH_EXTRA+=":${module}.jar" JAVA_INTERMEDIATE_JAR_NAME="org.objectweb.${module/-/.}" JAVA_JAR_FILENAME="${module}.jar" JAVA_MODULE_INFO_OUT="${module}/src/main" JAVA_MODULE_INFO_RELEASE=9 JAVA_SRC_DIR="${module}/src/main/java" java-pkg-simple_src_compile rm -r target || die done # upstream generates module-info into root of the jars for module in "${ASM_MODULES[@]}"; do einfo "Adjust mudule-info in ${module}" mkdir target || die pushd target >/dev/null || die jar xf ../${module}.jar || die rm -v ../${module}.jar || die mv {META-INF/versions/9/,}module-info.class || die rm -rv META-INF || die popd >/dev/null || die jar cf ${module}.jar -C target . || die rm -r target || die done use doc && ejavadoc } src_test() { JAVAC_ARGS="-g" JAVA_CLASSPATH_EXTRA="junit-5" JAVA_GENTOO_CLASSPATH_EXTRA+=":asm-test.jar" JAVA_JAR_FILENAME="asm-test.jar" JAVA_RESOURCE_DIRS=( asm-test/src/main/resources ) JAVA_SRC_DIR=( asm-test/src/main/java ) java-pkg-simple_src_compile junit5_src_test } src_install() { JAVA_JAR_FILENAME="asm.jar" java-pkg-simple_src_install local module for module in asm-{analysis,commons,tree,util}; do java-pkg_dojar ${module}.jar if use source; then java-pkg_dosrc "${module}/src/main/java/*" fi done }