xalan-j2/xalan-j2.spec

272 lines
8.2 KiB
RPMSpec

#
# spec file for package xalan-j2
#
# Copyright (c) 2024 SUSE LLC
#
# 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/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "extras"
%bcond_without extras
%else
%bcond_with extras
%endif
%define cvs_version 2_7_3
%global base_name xalan-j2
Version: 2.7.3
Release: 0
Summary: Java XSLT processor
License: Apache-2.0
Group: Development/Libraries/Java
URL: https://xalan.apache.org/index.html
Source0: %{base_name}-%{version}.tar.xz
Source1: https://repo1.maven.org/maven2/xalan/xalan/%{version}/xalan-%{version}.pom
Source2: https://repo1.maven.org/maven2/xalan/serializer/%{version}/serializer-%{version}.pom
Source3: xsltc-%{version}.pom
Source4: xalan-j2-serializer-MANIFEST.MF
Source5: xalan-j2-MANIFEST.MF
# OSGi manifests
Patch0: %{base_name}-noxsltcdeps.patch
Patch1: %{base_name}-manifest.patch
Patch2: %{base_name}-crosslink.patch
Patch3: openjdk-build.patch
BuildRequires: ant
BuildRequires: dos2unix
BuildRequires: fdupes
BuildRequires: java-devel >= 1.8
BuildRequires: javapackages-local >= 6
BuildRequires: xml-commons-apis-bootstrap
#!BuildIgnore: apache-commons-lang3
#!BuildIgnore: java-cup
#!BuildIgnore: xml-commons
#!BuildIgnore: xml-commons-apis
#!BuildIgnore: xml-commons-jaxp-1.3-apis
#!BuildIgnore: xml-commons-resolver
Requires: jaxp_parser_impl
Requires(post): update-alternatives
Requires(postun): update-alternatives
Provides: jaxp_transform_impl
BuildArch: noarch
%if %{with extras}
Name: %{base_name}-extras
%else
Name: %{base_name}
%endif
%if %{with extras}
BuildRequires: bcel
BuildRequires: dejavu-fonts
BuildRequires: java-cup-bootstrap
BuildRequires: jlex
BuildRequires: regexp
BuildRequires: servletapi5
BuildRequires: xalan-j2
BuildRequires: xerces-j2
BuildRequires: xml-stylebook
%else
#!BuildIgnore: xerces-j2
%endif
%description
Xalan is an XSLT processor for transforming XML documents into HTML,
text, or other XML document types. It implements the W3C
Recommendations for XSL Transformations (XSLT) and the XML Path
Language (XPath). It can be used from the command line, in an applet or
a servlet, or as a module in other program.
%package -n %{base_name}-xsltc
Summary: Java XSLT compiler
Group: Development/Libraries/Java
Requires: bcel
Requires: java_cup
Requires: jaxp_parser_impl
Requires: jlex
Requires: regexp
%description -n %{base_name}-xsltc
The XSLT Compiler is a Java-based tool for compiling XSLT stylesheets
into lightweight and portable Java byte codes called translets.
%package -n %{base_name}-manual
Summary: Manual for xalan-j2
Group: Development/Libraries/Java
%description -n %{base_name}-manual
Xalan is an XSLT processor for transforming XML documents into HTML,
text, or other XML document types. It implements the W3C
Recommendations for XSL Transformations (XSLT) and the XML Path
Language (XPath). It can be used from the command line, in an applet or
a servlet, or as a module in other program.
This package contains the manual for Xalan.
%package -n %{base_name}-demo
Summary: Demonstration and samples for xalan-j2
Group: Development/Libraries/Java
Requires: %{base_name} = %{version}-%{release}
Requires: servlet
%description -n %{base_name}-demo
Xalan is an XSLT processor for transforming XML documents into HTML,
text, or other XML document types. It implements the W3C
Recommendations for XSL Transformations (XSLT) and the XML Path
Language (XPath). It can be used from the command line, in an applet or
a servlet, or as a module in other program.
This package contains demonstration and sample files for Xalan.
%prep
%setup -q -n %{base_name}-%{version}
%patch -P 0 -p1
%patch -P 1 -p1
%patch -P 2 -p1
%patch -P 3 -p1
%build
if [ ! -e "$JAVA_HOME" ] ; then export JAVA_HOME="%{java_home}" ; fi
pushd lib
%if %{with extras}
ln -sf $(build-classpath java-cup-runtime) runtime.jar
ln -sf $(build-classpath bcel) bcel-6.7.0.jar
ln -sf $(build-classpath regexp) regexp.jar
pushd endorsed
ln -sf $(build-classpath xerces-j2) xercesImpl.jar
ln -sf $(build-classpath xml-apis) xml-apis.jar
popd
%endif
popd
pushd tools
ln -sf $(build-classpath ant) ant.jar
%if %{with extras}
ln -sf $(build-classpath java-cup) java_cup.jar
ln -sf $(build-classpath jlex) JLex.jar
ln -sf $(build-classpath xml-stylebook) stylebook-1.0-b3_xalan-2.jar
%endif
popd
%if %{with extras}
mkdir -p build
pushd build
ln -sf $(build-classpath %{base_name}) xalan-interpretive.jar
popd
%endif
%{ant} \
-Dcompiler.source=1.8 -Dcompiler.target=1.8 \
-Djava.awt.headless=true \
-Dapi.j2se=%{_javadocdir}/java \
-Dbuild.xalan-interpretive.jar=build/xalan-interpretive.jar \
%if %{with extras}
-Dservlet-api.jar=$(build-classpath servletapi5) \
xsltc.unbundledjar \
docs \
xsltc.docs \
samples \
servlet
%else
xalan-interpretive.jar
# inject OSGi manifests
jar \
%if %{?pkg_vcmp:%pkg_vcmp java-devel >= 17}%{!?pkg_vcmp:0}
--date="$(date -u -d @${SOURCE_DATE_EPOCH:-$(date +%%s)} +%%Y-%%m-%%dT%%H:%%M:%%SZ)" \
%endif
--update --file=build/serializer.jar --manifest=%{SOURCE4}
jar \
%if %{?pkg_vcmp:%pkg_vcmp java-devel >= 17}%{!?pkg_vcmp:0}
--date="$(date -u -d @${SOURCE_DATE_EPOCH:-$(date +%%s)} +%%Y-%%m-%%dT%%H:%%M:%%SZ)" \
%endif
--update --file=build/xalan-interpretive.jar --manifest=%{SOURCE5}
%endif
%install
# jars
install -d -m 755 %{buildroot}%{_javadir}
%if %{without extras}
install -p -m 644 build/xalan-interpretive.jar \
%{buildroot}%{_javadir}/%{base_name}.jar
install -p -m 644 build/serializer.jar \
%{buildroot}%{_javadir}/%{base_name}-serializer.jar
%else
install -p -m 644 build/xsltc.jar \
%{buildroot}%{_javadir}/xsltc.jar
%endif
# pom
install -d -m 755 %{buildroot}%{_mavenpomdir}
%if %{without extras}
%{mvn_install_pom} %{SOURCE1} %{buildroot}%{_mavenpomdir}/%{base_name}.pom
%add_maven_depmap %{base_name}.pom %{base_name}.jar
%{mvn_install_pom} %{SOURCE2} %{buildroot}%{_mavenpomdir}/%{base_name}-serializer.pom
%add_maven_depmap %{base_name}-serializer.pom %{base_name}-serializer.jar
# alternatives
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
ln -sf %{_sysconfdir}/alternatives/jaxp_transform_impl.jar %{buildroot}%{_javadir}/jaxp_transform_impl.jar
# bnc#485299
install -d -m 0755 %{buildroot}/%{_sysconfdir}/ant.d/
echo xalan-j2-serializer > %{buildroot}/%{_sysconfdir}/ant.d/serializer
%else
%{mvn_install_pom} %{SOURCE3} %{buildroot}%{_mavenpomdir}/xsltc.pom
%add_maven_depmap xsltc.pom xsltc.jar -f xsltc
# demo
install -d -m 755 %{buildroot}%{_datadir}/%{base_name}
install -p -m 644 build/xalansamples.jar \
%{buildroot}%{_datadir}/%{base_name}/%{base_name}-samples.jar
install -p -m 644 build/xalanservlet.war \
%{buildroot}%{_datadir}/%{base_name}/%{base_name}-servlet.war
cp -pr samples %{buildroot}%{_datadir}/%{base_name}
%fdupes -s %{buildroot}%{_datadir}/%{base_name}
# manual
%fdupes -s build/docs
%endif
%if %{without extras}
%post
update-alternatives --install %{_javadir}/jaxp_transform_impl.jar \
jaxp_transform_impl %{_javadir}/%{base_name}.jar 30
%preun
{
[ $1 = 0 ] || exit 0
update-alternatives --remove jaxp_transform_impl %{_javadir}/%{base_name}.jar
} >/dev/null 2>&1 || :
%files -f .mfiles
%defattr(0644,root,root,0755)
%license LICENSE.txt
%doc KEYS NOTICE.txt
%config %{_sysconfdir}/ant.d/serializer
%ghost %{_sysconfdir}/alternatives/jaxp_transform_impl.jar
%{_javadir}/jaxp_transform_impl.jar
%else
%files -n %{base_name}-xsltc -f .mfiles-xsltc
%files -n %{base_name}-manual
%defattr(0644,root,root,0755)
%doc build/docs/*
%files -n %{base_name}-demo
%defattr(0644,root,root,0755)
%{_datadir}/%{base_name}
%endif
%changelog