slf4j/slf4j.spec

296 lines
9.3 KiB
RPMSpec

#
# spec file for package slf4j
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2000-2009, JPackage Project
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: slf4j
Version: 1.7.36
Release: 0
Summary: Simple Logging Facade for Java
# the log4j-over-slf4j and jcl-over-slf4j submodules are ASL 2.0, rest is MIT
License: Apache-2.0 AND MIT
Group: Development/Libraries/Java
URL: https://www.slf4j.org/
Source0: %{name}-%{version}.tar.xz
Source1: http://www.apache.org/licenses/LICENSE-2.0.txt
Source2: build.xml.tar.xz
Patch1: build-remove-slf4j_api-binder.patch
Patch2: slf4j-commons-lang3.patch
Patch3: slf4j-reload4j-bundlename.patch
BuildRequires: ant >= 1.6.5
BuildRequires: apache-commons-lang3
BuildRequires: apache-commons-logging
BuildRequires: cal10n
BuildRequires: java-devel >= 1.5.0
BuildRequires: javapackages-local >= 6
BuildRequires: javassist >= 3.4
BuildRequires: reload4j
# this is ugly hack, which creates package which requires the same,
# however slf4j is not splitted between -api and -impl, but pom files are modeled as if it was
Provides: osgi(slf4j.api)
BuildArch: noarch
%description
The Simple Logging Facade for Java or (SLF4J) is intended to serve
as a simple facade for various logging APIs allowing to the end-user
to plug in the desired implementation at deployment time. SLF4J also
allows for a gradual migration path away from
Jakarta Commons Logging (JCL).
Logging API implementations can either choose to implement the
SLF4J interfaces directly, e.g. NLOG4J or SimpleLogger. Alternatively,
it is possible (and rather easy) to write SLF4J adapters for the given
API implementation, e.g. Log4jLoggerAdapter or JDK14LoggerAdapter..
%package javadoc
Summary: Javadoc for %{name}
Group: Documentation/HTML
%description javadoc
API documentation for %{name}.
%package manual
Summary: Documents for %{name}
Group: Documentation/Other
%description manual
Manual for %{name}.
%package jdk14
Summary: SLF4J JDK14 Binding
Group: Development/Libraries/Java
%description jdk14
SLF4J JDK14 Binding.
%package reload4j
Summary: SLF4J LOG4J-12 Binding
Group: Development/Libraries/Java
Provides: %{name}-log4j12 = %{version}
Obsoletes: %{name}-log4j12 < %{version}
%description reload4j
SLF4J LOG4J-12 Binding.
%package jcl
Summary: SLF4J JCL Binding
Group: Development/Libraries/Java
%description jcl
SLF4J JCL Binding.
%package ext
Summary: SLF4J Extensions Module
Group: Development/Libraries/Java
%description ext
Extensions to the SLF4J API.
%package -n jcl-over-slf4j
Summary: JCL 1.1.1 implemented over SLF4J
Group: Development/Libraries/Java
%description -n jcl-over-slf4j
JCL 1.1.1 implemented over SLF4J.
%package -n log4j-over-slf4j
Summary: Log4j implemented over SLF4J
Group: Development/Libraries/Java
%description -n log4j-over-slf4j
Log4j implemented over SLF4J.
%package -n jul-to-slf4j
Summary: JUL to SLF4J bridge
Group: Development/Libraries/Java
%description -n jul-to-slf4j
JUL to SLF4J bridge.
%package sources
Summary: SLF4J Source JARs
Group: Development/Libraries/Java
%description sources
SLF4J Source JARs.
%prep
%setup -q -a2
%patch -P 1 -p1
%patch -P 2 -p1
%patch -P 3 -p1
find . -name "*.jar" | xargs rm
cp -p %{SOURCE1} APACHE-LICENSE
sed -i -e "s|ant<|org.apache.ant<|g" integration/pom.xml
sed -i -e "s|\${reload4j.version}|1\.2\.19|g" \
log4j-over-slf4j/src/main/resources/META-INF/MANIFEST.MF
%{_bindir}/find -name "*.css" -o -name "*.js" -o -name "*.txt" | \
%{_bindir}/xargs -t perl -pi -e 's/\r$//g'
# Unexpanded variable in the manifests
for i in */src/main/resources/META-INF/MANIFEST.MF; do
echo "" >> ${i}
echo "Bundle-Version: %{version}" >> ${i}
sed -i '/^$/d' ${i}
perl -pi -e 's#\$\{parsedVersion\.osgiVersion\}#%{version}#g' ${i}
perl -pi -e 's#\$\{slf4j\.api\.minimum\.compatible\.version\}#1\.6\.0#g' ${i}
done
# The general pattern is that the API package exports API classes and does
# # not require impl classes. slf4j was breaking that causing "A cycle was
# # detected when generating the classpath slf4j.api, slf4j.nop, slf4j.api."
# # The API bundle requires impl package, so to avoid cyclic dependencies
# # during build time, it is necessary to mark the imported package as an
# # optional one.
# # Reported upstream: http://bugzilla.slf4j.org/show_bug.cgi?id=283
sed -i "/Import-Package/s/$/;resolution:=optional/" slf4j-api/src/main/resources/META-INF/MANIFEST.MF
%build
export CLASSPATH=$(build-classpath reload4j \
commons-logging \
commons-lang3 \
javassist-3.14.0 \
cal10n)
export CLASSPATH=$CLASSPATH:$(pwd)/slf4j-api/target/slf4j-api-%{version}.jar
export MAVEN_REPO_LOCAL=$(pwd)/.m2
ant -Dmaven2.jpp.mode=true \
-Dmaven.test.skip=true \
-Dmaven.repo.local=$MAVEN_REPO_LOCAL \
package javadoc \
# Sources
for i in api ext jcl jdk14 reload4j nop simple; do
mkdir -p %{name}-${i}/target
jar cf %{name}-${i}/target/%{name}-${i}-%{version}-sources.jar -C %{name}-${i}/src/main/java .
jar uf %{name}-${i}/target/%{name}-${i}-%{version}-sources.jar -C %{name}-${i}/src/main/resources .
done
for i in jcl-over-slf4j jul-to-slf4j log4j-over-slf4j; do
mkdir -p ${i}/target
jar cf ${i}/target/${i}-%{version}-sources.jar -C ${i}/src/main/java .
jar uf ${i}/target/${i}-%{version}-sources.jar -C ${i}/src/main/resources .
done
%install
# jars
install -d -m 0755 %{buildroot}%{_javadir}/%{name}
for i in api ext jcl jdk14 reload4j nop simple; do
install -m 644 slf4j-${i}/target/slf4j-${i}-%{version}.jar \
%{buildroot}%{_javadir}/%{name}/${i}.jar
ln -sf ${i}.jar %{buildroot}%{_javadir}/%{name}/%{name}-${i}.jar
done
# Compatibility symlink
ln -sf reload4j.jar %{buildroot}%{_javadir}/%{name}/log4j12.jar
ln -sf reload4j.jar %{buildroot}%{_javadir}/%{name}/%{name}-log4j12.jar
for i in jcl-over-slf4j jul-to-slf4j log4j-over-slf4j; do
install -m 644 ${i}/target/${i}-%{version}.jar %{buildroot}%{_javadir}/%{name}/${i}.jar
done
for i in api ext jcl jdk14 reload4j nop simple; do
install -pm 0644 %{name}-${i}/target/%{name}-${i}-%{version}-sources.jar \
%{buildroot}%{_javadir}/%{name}/%{name}-${i}-sources.jar
done
for i in jcl-over-slf4j jul-to-slf4j log4j-over-slf4j; do
install -pm 0644 ${i}/target/${i}-%{version}-sources.jar \
%{buildroot}%{_javadir}/%{name}/${i}-sources.jar
done
# poms
install -d -m 755 %{buildroot}%{_mavenpomdir}/%{name}
for i in api ext jcl jdk14 reload4j nop simple; do
%{mvn_install_pom} slf4j-${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{name}/${i}.pom
done
for i in jcl-over-slf4j jul-to-slf4j log4j-over-slf4j; do
%{mvn_install_pom} ${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{name}/${i}.pom
done
for i in api nop simple; do
%add_maven_depmap %{name}/${i}.pom %{name}/${i}.jar
done
for i in ext jcl jdk14 jcl-over-slf4j jul-to-slf4j log4j-over-slf4j; do
%add_maven_depmap %{name}/${i}.pom %{name}/${i}.jar -f ${i}
done
%add_maven_depmap %{name}/reload4j.pom %{name}/reload4j.jar -f reload4j -a org.slf4j:%{name}-log4j12
for i in api ext jcl jdk14 reload4j nop simple; do
%add_maven_depmap org.slf4j:%{name}-${i}:jar:sources:%{version} %{name}/%{name}-${i}-sources.jar -f sources
done
%add_maven_depmap org.slf4j:%{name}-log4j12:jar:sources:%{version} %{name}/%{name}-reload4j-sources.jar -f sources
for i in jcl-over-slf4j jul-to-slf4j log4j-over-slf4j; do
%add_maven_depmap org.slf4j:${i}:jar:sources:%{version} %{name}/${i}-sources.jar -f sources
done
# manual
install -d -m 0755 %{buildroot}%{_docdir}/%{name}-%{version}
rm -f target/site/.htaccess
cp -pr target/site %{buildroot}%{_docdir}/%{name}-%{version}/
install -m 644 LICENSE.txt %{buildroot}%{_docdir}/%{name}-%{version}/
# javadoc
install -d -m 0755 %{buildroot}%{_javadocdir}/%{name}
cp -pr target/site/* %{buildroot}%{_javadocdir}/%{name}/
rm -rf target/site
%files -f .mfiles
%dir %{_docdir}/%{name}-%{version}
%license %{_docdir}/%{name}-%{version}/LICENSE.txt
%{_javadir}/%{name}/%{name}-api.jar
%{_javadir}/%{name}/%{name}-nop.jar
%{_javadir}/%{name}/%{name}-simple.jar
%files jdk14 -f .mfiles-jdk14
%{_javadir}/%{name}/%{name}-jdk14.jar
%files reload4j -f .mfiles-reload4j
%{_javadir}/%{name}/%{name}-reload4j.jar
%{_javadir}/%{name}/*log4j12.jar
%files jcl -f .mfiles-jcl
%{_javadir}/%{name}/%{name}-jcl.jar
%files ext -f .mfiles-ext
%{_javadir}/%{name}/%{name}-ext.jar
%files -n jcl-over-slf4j -f .mfiles-jcl-over-slf4j
%files -n log4j-over-slf4j -f .mfiles-log4j-over-slf4j
%files -n jul-to-slf4j -f .mfiles-jul-to-slf4j
%files sources -f .mfiles-sources
%files javadoc
%{_javadocdir}/%{name}
%files manual
%{_docdir}/%{name}-%{version}/site
%changelog