You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
4.0 KiB

# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
JAVA_PKG_IUSE="doc source"
MAVEN_ID="commons-logging:commons-logging:1.2"
inherit java-pkg-2 java-ant-2 java-osgi
DESCRIPTION="An ultra-thin bridge between different Java logging libraries"
HOMEPAGE="https://commons.apache.org/logging/"
SRC_URI="mirror://apache/commons/logging/source/${P}-src.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 ~arm arm64 ppc64 x86"
IUSE="avalon-framework avalon-logkit log4j servletapi test"
REQUIRED_USE="doc? ( avalon-framework avalon-logkit log4j servletapi )"
RESTRICT="!test? ( test ) !servletapi? ( test )"
CDEPEND="
avalon-logkit? ( dev-java/avalon-logkit:2.0 )
avalon-framework? ( dev-java/avalon-framework:4.2 )
log4j? (
dev-java/log4j-12-api:2
dev-java/log4j-api:2
dev-java/log4j-core:2
)
servletapi? ( dev-java/jakarta-servlet-api:4 )"
RDEPEND="
${CDEPEND}
>=virtual/jre-1.8:*"
DEPEND="
${CDEPEND}
>=virtual/jdk-1.8:*
test? ( dev-java/ant-junit:0 )"
S="${WORKDIR}/${P}-src"
EANT_BUILD_TARGET="compile"
JAVA_ANT_REWRITE_CLASSPATH="yes"
JAVA_ANT_IGNORE_SYSTEM_CLASSES="yes"
DOCS=( RELEASE-NOTES.txt PROPOSAL.html )
src_prepare() {
default
eapply "${FILESDIR}/${P}-gentoo.patch"
# patch to make the build.xml respect no servletapi
eapply "${FILESDIR}/${P}-servletapi.patch"
# bug #208098
echo "jdk.1.4.present=true" > build.properties || die
if use avalon-framework; then
echo "avalon-framework.jar=$(java-pkg_getjars avalon-framework-4.2)" >> build.properties || die
fi
if use avalon-logkit; then
echo "logkit.jar=$(java-pkg_getjars avalon-logkit-2.0)" >> build.properties || die
fi
if use log4j; then
# log4j12.jar can only contain path to one single file because
# build.xml decides whether the Log4JLogger should be built with
# <available file="${log4j12.jar}" property="log4j12.present"/>,
# and a value that contains multiple file paths will cause the
# test to return a negative result. However, classes from multiple
# Log4j 2 JARs are needed to compile the sources. So, we combine
# them into a single JAR on the go.
# https://bugs.gentoo.org/834036
mkdir -p "${T}/log4j-2" ||
die "Failed to create temporary directory for Log4j 2 classes"
pushd "${T}/log4j-2" > /dev/null ||
die "Failed to enter temporary directory for Log4j 2 classes"
local jar="$(java-config -j)"
local dep
for dep in log4j-{12-api,api,core}; do
# Assuming SLOT="2" for Log4j 2 dependencies
"${jar}" -xf "$(java-pkg_getjar "${dep}-2" "${dep}.jar")" ||
die "Failed to extract files from ${dep}-2 installed on system"
done
"${jar}" -cf log4j-2.jar . || die "Failed to create JAR for Log4j"
popd > /dev/null ||
die "Failed to leave temporary directory for Log4j 2 classes"
echo "log4j12.jar=${T}/log4j-2/log4j-2.jar" >> build.properties || die
fi
if use servletapi; then
echo "servletapi.jar=$(java-pkg_getjars jakarta-servlet-api-4 )" >> build.properties || die
fi
}
src_install() {
local pkg=org.apache.commons.logging
java-osgi_newjar "target/${P}.jar" "${pkg}" "Apache Commons Logging" "${pkg};version=\"${PV}\", ${pkg}.impl;version=\"${PV}\""
java-pkg_newjar target/${PN}-api-${PV}.jar ${PN}-api.jar
java-pkg_newjar target/${PN}-adapters-${PV}.jar ${PN}-adapters.jar
einstalldocs
use doc && java-pkg_dojavadoc target/docs/
use source && java-pkg_dosrc src/main/java/org
}
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
sed -i -e "/^log4j12\.jar=/d" build.properties ||
die "Failed to skip Log4j tests by modifying build.properties"
java-pkg-2_src_test
}