# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 JAVA_PKG_IUSE="doc source test" MAVEN_ID="commons-logging:commons-logging:${PV}" JAVA_TESTING_FRAMEWORKS="junit-4" inherit java-pkg-2 java-pkg-simple verify-sig DESCRIPTION="Thin adapter allowing configurable bridging to other well known logging systems" HOMEPAGE="https://commons.apache.org/proper/commons-logging/" SRC_URI="mirror://apache/commons/logging/source/${P}-src.tar.gz verify-sig? ( https://downloads.apache.org/commons/logging/source/${P}-src.tar.gz.asc )" S="${WORKDIR}/${P}-src" LICENSE="Apache-2.0" SLOT="0" KEYWORDS="~amd64 ~arm64 ~ppc64 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" IUSE="log4j" # src/test/java/org/apache/commons/logging/tccl/logfactory/AdaptersTcclTestCase.java:26: # error: cannot find symbol # import org.apache.commons.logging.impl.Log4jApiLogFactory; # ^ # symbol: class Log4jApiLogFactory # location: package org.apache.commons.logging.impl REQUIRED_USE="test? ( log4j )" VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/commons.apache.org.asc" BDEPEND="verify-sig? ( sec-keys/openpgp-keys-apache-commons )" COMMON_DEPEND=" dev-java/jakarta-servlet-api:4 dev-java/slf4j-api:0 log4j? ( dev-java/log4j-12-api:2 dev-java/log4j-api:2 ) " DEPEND=" ${COMMON_DEPEND} >=virtual/jdk-11:* test? ( dev-java/commons-io:1 dev-java/junit:5 ) " RDEPEND=" ${COMMON_DEPEND} >=virtual/jre-1.8:* " DOCS=( NOTICE.txt src/changes/changes.xml ) HTML_DOCS=( PROPOSAL.html ) JAVA_GENTOO_CLASSPATH=" jakarta-servlet-api-4 slf4j-api " JAVA_SRC_DIR="src/main/java" src_prepare() { java-pkg-2_src_prepare # https://avalon.apache.org/closed.html Apache Avalon has closed. rm src/main/java/org/apache/commons/logging/impl/{Avalon,LogKit}Logger.java || die rm src/test/java/org/apache/commons/logging/{avalon/AvalonLogger,logkit/Standard}TestCase.java || die if use !log4j; then rm src/main/java/org/apache/commons/logging/impl/Log4JLogger.java || die rm src/main/java/org/apache/commons/logging/impl/Log4jApiLogFactory.java || die else JAVA_GENTOO_CLASSPATH+=" log4j-12-api-2 log4j-api-2 " fi } src_compile() { # getting dependencies into the modulepath DEPENDENCIES=( jakarta-servlet-api-4 slf4j-api $(use log4j && echo log4j-12-api-2) $(use log4j && echo log4j-api-2) ) local modulepath for dependency in ${DEPENDENCIES[@]}; do modulepath="${modulepath}:$(java-pkg_getjars --build-only ${dependency})" done local JAVA_MODULE_NAME="org.apache.${PN/-/.}" JAVA_JAR_FILENAME="${JAVA_MODULE_NAME}.jar" java-pkg-simple_src_compile # creates a legacy jar file without module-info # generate module-info.java jdeps \ --module-path "${modulepath}" \ --add-modules=ALL-MODULE-PATH \ --generate-module-info src/main \ --multi-release 9 \ "${JAVA_MODULE_NAME}.jar" || die # compile module-info.java ejavac \ -source 9 -target 9 \ --module-path "${modulepath}" \ --patch-module "${JAVA_MODULE_NAME}"="${JAVA_MODULE_NAME}.jar" \ -d target/versions/9 \ src/main/"${JAVA_MODULE_NAME}"/versions/9/module-info.java # package JAVA_JAR_FILENAME="${PN}.jar" jar cvf "${JAVA_JAR_FILENAME}" \ -C target/classes . \ --release 9 -C target/versions/9 . || die pushd target/classes > /dev/null || die # pom.xml, lines 81-103 jar -cvf ../../commons-logging-api.jar \ $(find . -type f -name '*.class' \ ! -name 'Jdk13LumberjackLogger.class' \ ! -name 'ServletContextCleaner.class' \ ) || die # pom.xml, lines 205-124 jar -cvf ../../commons-logging-adapters.jar \ $(find . -type f -path './org/apache/commons/logging/impl/**.class' \ ! -name 'WeakHashtable*.class' \ ! -name 'LogFactoryImpl*.class' \ ) || die popd > /dev/null || die } src_test() { # Do not run Log4j tests because these tests use an Appender to verify # logging correctness. The log4j-12-api bridge no longer supports using an # Appender for verifications since the methods for adding an Appender in # the bridge "are largely no-ops". This means an Appender's state would # never be changed by log4j-12-api after new messages are logged. The test # cases, however, expect changes to the Appender's state in such an event, # so they would fail with log4j-12-api. # https://logging.apache.org/log4j/log4j-2.8/log4j-1.2-api/index.html rm src/test/java/org/apache/commons/logging/pathable/ParentFirstTestCase.java || die # Log4JLogger rm src/test/java/org/apache/commons/logging/pathable/ChildFirstTestCase.java || die # Log4JLogger rm -r src/test/java/org/apache/commons/logging/log4j || die rm src/test/java/org/apache/commons/logging/log4j2/CallerInformationTestCase.java || die # error: package ch.qos.logback.classic does not exist rm src/test/java/org/apache/commons/logging/slf4j/CallerInformationTestCase.java || die JAVA_TEST_EXCLUDES=( org.apache.commons.logging.jdk14.TestHandler # No runnable methods # junit.framework.AssertionFailedError: Wrong factory retrieved through # ServiceLoader: org.apache.commons.logging.impl.Slf4jLogFactory org.apache.commons.logging.serviceloader.ServiceLoaderTestCase # junit.framework.ComparisonFailure: Log class expected:<...ommons.logging.impl.[NoOp]Log> # but was:<...ommons.logging.impl.[Slf4jLogFactory$Slf4j]Log> org.apache.commons.logging.noop.NoOpLogTestCase # org.junit.runners.model.InvalidTestClassyyError: Invalid test class org.apache.commons.logging.LogSourceTest # No runnable methods # junit.framework.AssertionFailedError: Logging config succeeded when context class loader was null! org.apache.commons.logging.LoadTestCase # junit.framework.AssertionFailedError: # expected: # but was: org.apache.commons.logging.tccl.logfactory.AdaptersTcclTestCase ) JAVA_TEST_EXTRA_ARGS=( -Dcommons-lang3="$(java-pkg_getjars commons-lang-3.6)" -Dlog4j-api="commons-logging-api.jar" -Dservlet-api="$(java-pkg_getjars jakarta-servlet-api-4)" -Dcommons-logging="commons-logging.jar" -Dcommons-logging-api="commons-logging-api.jar" -Dcommons-logging-adapters="commons-logging-adapters.jar" -Dtestclasses="target/test-classes" ) if use log4j; then JAVA_TEST_EXTRA_ARGS+=" -Dlog4j12=$(java-pkg_getjars log4j-12-api-2,log4j-core-2)" fi JAVA_TEST_GENTOO_CLASSPATH="commons-io-1 commons-lang-3.6 junit-4 junit-5" JAVA_TEST_RESOURCE_DIRS="src/test/resources" JAVA_TEST_SRC_DIR="src/test/java" java-pkg-simple_src_test }