tomcat/tomcat.spec

785 lines
27 KiB
RPMSpec
Raw Normal View History

#
# spec file for package tomcat
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2000-2009, JPackage Project
# All rights reserved.
#
# 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 http://bugs.opensuse.org/
#
%global with_systemd 0%{?suse_version} > 1210
%define jspspec 2.2
%define servletspec 3.0
%define elspec 2.2
%define major_version 7
%define minor_version 0
%define micro_version 54
%define packdname apache-tomcat-%{version}-src
%define tcuid 91
# FHS 2.3 compliant tree structure - http://www.pathname.com/fhs/2.3/
%define appdir /srv/%{name}/webapps
%define bindir %{_datadir}/%{name}/bin
%define confdir %{_sysconfdir}/%{name}
%define homedir %{_datadir}/%{name}
%define libdir %{_javadir}/%{name}
%define logdir %{_localstatedir}/log/%{name}
%define cachedir %{_localstatedir}/cache/%{name}
%define tempdir %{cachedir}/temp
%define workdir %{cachedir}/work
%define _initrddir %{_sysconfdir}/init.d
Name: tomcat
Version: %{major_version}.%{minor_version}.%{micro_version}
Release: 0
Summary: Apache Servlet/JSP Engine, RI for Servlet 3.0/JSP 2.2 API
License: Apache-2.0
Group: Productivity/Networking/Web/Servers
Url: http://tomcat.apache.org
Source0: http://www.apache.org/dist/tomcat/tomcat-%{major_version}/v%{version}/src/%{packdname}.tar.gz
Source1: %{name}-%{major_version}.%{minor_version}.conf
Source2: %{name}-%{major_version}.%{minor_version}.init
# sysconfig removal - bnc#471639
#Source3: %{name}-%{major_version}.%{minor_version}.sysconfig
Source4: %{name}-%{major_version}.%{minor_version}.wrapper
Source5: %{name}-%{major_version}.%{minor_version}.logrotate
Source6: %{name}-%{major_version}.%{minor_version}-digest.script
Source7: %{name}-%{major_version}.%{minor_version}-tool-wrapper.script
Source8: servlet-api-OSGi-MANIFEST.MF
Source9: jsp-api-OSGi-MANIFEST.MF
Source10: %{name}-%{major_version}.%{minor_version}-log4j.properties
Source11: tomcat-7.0.service
Source12: el-api-OSGi-MANIFEST.MF
Source13: jasper-el-OSGi-MANIFEST.MF
Source14: jasper-OSGi-MANIFEST.MF
Source15: tomcat-api-OSGi-MANIFEST.MF
Source16: tomcat-juli-OSGi-MANIFEST.MF
Source17: tomcat-7.0-tomcat-sysd
Source20: tomcat-7.0-jsvc.service
Source30: dbcp-tomcat-build.xml
Source1000: tomcat-rpmlintrc
Source1001: http://www.apache.org/dist/tomcat/tomcat-%{major_version}/v%{version}/src/%{packdname}.tar.gz.asc
Source1002: %{name}.keyring
#PATCH-FIX-UPSTREAM: from jpackage.org package
Patch0: %{name}-%{major_version}.%{minor_version}-bootstrap-MANIFEST.MF.patch
#PATCH-FIX-UPSTREAM: from jpackage.org package
Patch1: %{name}-%{major_version}.%{minor_version}-tomcat-users-webapp.patch
#PATCH-FIX-OPENSUSE: skip few windows specific parts of build
Patch2: tomcat-7.0.52-property-build.windows.patch
# PATCH-FIX-UPSTREAM: https://issues.apache.org/bugzilla/show_bug.cgi?id=56373
Patch3: tomcat-7.0.53-JDTCompiler-java.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
BuildRequires: ant >= 1.8.1
BuildRequires: ant-antlr
BuildRequires: ecj >= 4.2.1
BuildRequires: fdupes
BuildRequires: findutils
BuildRequires: geronimo-jaf-1_0_2-api
%if 0%{?suse_version} > 1220
BuildRequires: gpg-offline
%endif
BuildRequires: jakarta-commons-collections
BuildRequires: jakarta-commons-daemon
BuildRequires: jakarta-commons-dbcp
BuildRequires: jakarta-commons-dbcp-src
BuildRequires: jakarta-commons-pool
BuildRequires: jakarta-commons-pool-tomcat5
BuildRequires: jakarta-taglibs-standard >= 1.1
BuildRequires: java-devel >= 1.7.0
BuildRequires: javapackages-tools
BuildRequires: javapackages-tools
BuildRequires: junit
BuildRequires: sed
BuildRequires: unzip
BuildRequires: zip
#BuildRequires: geronimo-j2ee-1_4-apis
BuildRequires: geronimo-jaxrpc-1_1-api
BuildRequires: geronimo-qname-1_1-api
BuildRequires: geronimo-saaj-1_1-api
BuildRequires: log4j
BuildRequires: wsdl4j
%if %{with_systemd}
BuildRequires: systemd
%{systemd_requires}
%endif
Recommends: libtcnative-1-0 >= 1.1.24
%if ! %{with_systemd}
Recommends: logrotate
%endif
Requires(pre): %{_sbindir}/groupadd
Requires(pre): %{_sbindir}/useradd
Requires: %{name}-lib = %{version}-%{release}
Requires: jakarta-commons-daemon
Requires: jakarta-commons-dbcp
Requires: jakarta-commons-logging
Requires: jakarta-commons-pool
Requires: log4j
Requires(post): /sbin/chkconfig
Requires(preun): /sbin/chkconfig
%description
Tomcat is the servlet container that is used in the official Reference
Implementation for the Java Servlet and JavaServer Pages technologies.
The Java Servlet and JavaServer Pages specifications are developed by
Sun under the Java Community Process.
Tomcat is developed in an open and participatory environment and
released under the Apache Software License version 2.0. Tomcat is
intended to be a collaboration of the best-of-breed developers from
around the world.
%package admin-webapps
Summary: The host-manager and manager web applications for Apache Tomcat
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}-%{release}
%description admin-webapps
The host-manager and manager web applications for Apache Tomcat.
%package docs-webapp
Summary: The docs web application for Apache Tomcat
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}-%{release}
%description docs-webapp
The docs web application for Apache Tomcat.
%package el-2_2-api
Summary: Expression Language v2.2 API
Group: Development/Libraries/Java
Provides: %{name}-el-%{elspec}-api = %{version}-%{release}
Provides: el_2_2_api = %{version}-%{release}
Provides: el_api = %{elspec}
Requires(preun):%{_sbindir}/update-alternatives
Requires(post): %{_sbindir}/update-alternatives
%description el-2_2-api
Expression Language 2.2.
%package javadoc
Summary: Javadoc generated documentation for Apache Tomcat
Group: Productivity/Networking/Web/Servers
%description javadoc
Javadoc generated documentation for Apache Tomcat.
%package jsp-2_2-api
Summary: Apache Tomcat JSP API implementation classes
Group: Productivity/Networking/Web/Servers
Provides: %{name}-jsp-%{jspspec}-api
Provides: jsp = %{jspspec}
Provides: jsp22
Requires: %{name}-servlet-%{servletspec}-api = %{version}-%{release}
Requires(post): %{_sbindir}/update-alternatives
Requires(postun): %{_sbindir}/update-alternatives
%description jsp-2_2-api
Apache Tomcat JSP API implementation classes
%if %{with_systemd}
%package jsvc
Summary: Apache jsvc wrapper for Apache Tomcat as separate service
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}-%{release}
Requires: apache-commons-daemon-jsvc
%description jsvc
Systemd service and wrapper scripts to start tomcat with jsvc,
which allows tomcat to perform some privileged operations
(e.g. bind to a port < 1024) and then switch identity to a non-privileged user.
%endif
%package lib
Summary: Libraries needed to run the Tomcat Web container
Group: Productivity/Networking/Web/Servers
Requires: %{name}-el-%{elspec}-api = %{version}-%{release}
Requires: %{name}-jsp-%{jspspec}-api = %{version}-%{release}
Requires: %{name}-servlet-%{servletspec}-api = %{version}-%{release}
Requires(post): ecj >= 4.2.1
#Requires(post): jakarta-commons-dbcp-tomcat5
Requires(post): jakarta-commons-pool-tomcat5
Requires(preun):%{__rm}
Provides: jakarta-commons-dbcp-tomcat5 = 1.4
Obsoletes: jakarta-commons-dbcp-tomcat5 < 1.4
%description lib
Libraries needed to run the Tomcat Web container
%package servlet-3_0-api
Summary: Apache Tomcat Servlet API implementation classes
Group: Productivity/Networking/Web/Servers
Provides: %{name}-servlet-%{servletspec}-api = %{version}-%{release}
Provides: servlet = %{servletspec}
Provides: servlet30
Provides: servlet7
Requires(post): %{_sbindir}/update-alternatives
Requires(postun): %{_sbindir}/update-alternatives
%description servlet-3_0-api
Apache Tomcat Servlet API implementation classes
%package webapps
Summary: The ROOT and examples web applications for Apache Tomcat
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}-%{release}
Requires(post): jakarta-taglibs-standard >= 1.1
%description webapps
The ROOT and examples web applications for Apache Tomcat
%prep
%if 0%{?suse_version} > 1220
%gpg_verify %{S:1001}
%endif
%setup -q -n %{packdname}
# remove pre-built binaries and windows files
find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "*.gz" -o \
-name "*.jar" -o -name "*.war" -o -name "*.zip" \) | xargs -t %{__rm} -f
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3
%build
#bnc847505: build all commons-dbcp-tomcat jars before tomcat
# so we broke the build cycle between commons-dbcp and tomcat
mkdir -p commons/dbcp
pushd commons/dbcp
cp %{SOURCE30} .
mkdir src
cp -r %{_usrsrc}/commons-dbcp/java src/
export CLASSPATH=$(build-classpath commons-pool-tomcat5)
ant -f dbcp-tomcat-build.xml
popd
%{__ln_s} $(build-classpath jakarta-taglibs-core) webapps/examples/WEB-INF/lib/jstl.jar
%{__ln_s} $(build-classpath jakarta-taglibs-standard) webapps/examples/WEB-INF/lib/standard.jar
export CLASSPATH=
export OPT_JAR_LIST="xalan-j2-serializer"
export ANT_OPTS=-Xmx500M
# we don't care about the tarballs and we're going to replace
# tomcat-dbcp.jar with jakarta-commons-{collections,dbcp,pool}-tomcat5.jar
# so just create a dummy file for later removal
touch HACK
%{__mkdir_p} HACKDIR
touch HACKDIR/build.xml
ant -Dbase.path="." \
-Djava.7.home="%{java_home}" \
-Dbuild.compiler="modern" \
-Dcommons-collections.jar="$(build-classpath commons-collections)" \
-Dcommons-daemon.jar="$(build-classpath commons-daemon)" \
-Dcommons-daemon.native.src.tgz="HACK" \
-Djasper-jdt.jar="$(build-classpath ecj)" \
-Djdt.jar="$(build-classpath ecj)" \
-Dtomcat-dbcp.jar="$(build-classpath commons-dbcp)" \
-Dtomcat-native.tar.gz="HACK" \
-Dtomcat-native.home="." \
-Dcommons-daemon.native.win.mgr.exe="HACK" \
-Dnsis.exe="HACK" \
-Djaxrpc-lib.jar="$(build-classpath jaxrpc)" \
-Dwsdl4j-lib.jar="$(build-classpath wsdl4j)" \
-Dcommons-pool.home="HACKDIR" \
-Dcommons-dbcp.home="HACKDIR" \
-Dno.build.dbcp=true \
-Dversion="%{version}" \
-Dversion.build="%{micro_version}" \
deploy dist-prepare dist-source javadoc package-java7
# remove some jars that we'll replace with symlinks later
%{__rm} output/build/bin/commons-daemon.jar \
output/build/lib/ecj.jar \
output/build/lib/*commons-dbcp.jar
# remove the cruft we created
%{__rm} output/build/bin/tomcat-native.tar.gz
pushd output/dist/src/webapps/docs/appdev/sample/src
%{__mkdir_p} ../web/WEB-INF/classes
%{javac} -cp ../../../../../../../../output/build/lib/servlet-api.jar -d ../web/WEB-INF/classes mypackage/Hello.java
pushd ../web
%{jar} cf ../../../../../../../../output/build/webapps/docs/appdev/sample/sample.war *
popd
popd
# inject OSGi manifests
mkdir -p META-INF
cp -p %{SOURCE8} META-INF/MANIFEST.MF
touch META-INF/MANIFEST.MF
zip -u output/build/lib/servlet-api.jar META-INF/MANIFEST.MF
cp -p %{SOURCE9} META-INF/MANIFEST.MF
touch META-INF/MANIFEST.MF
zip -u output/build/lib/jsp-api.jar META-INF/MANIFEST.MF
cp -p %{SOURCE12} META-INF/MANIFEST.MF
touch META-INF/MANIFEST.MF
zip -u output/build/lib/el-api.jar META-INF/MANIFEST.MF
cp -p %{SOURCE13} META-INF/MANIFEST.MF
touch META-INF/MANIFEST.MF
zip -u output/build/lib/jasper-el.jar META-INF/MANIFEST.MF
cp -p %{SOURCE14} META-INF/MANIFEST.MF
touch META-INF/MANIFEST.MF
zip -u output/build/lib/jasper.jar META-INF/MANIFEST.MF
cp -p %{SOURCE15} META-INF/MANIFEST.MF
touch META-INF/MANIFEST.MF
zip -u output/build/lib/tomcat-api.jar META-INF/MANIFEST.MF
cp -p %{SOURCE16} META-INF/MANIFEST.MF
touch META-INF/MANIFEST.MF
zip -u output/build/bin/tomcat-juli.jar META-INF/MANIFEST.MF
%install
%if 0%{?suse_version} == 1110
export NO_BRP_CHECK_BYTECODE_VERSION=true
%endif
# build initial path structure
%{__install} -d -m 0755 %{buildroot}%{_bindir}
%{__install} -d -m 0755 %{buildroot}%{_sbindir}
%{__install} -d -m 0755 %{buildroot}%{_javadocdir}/%{name}
%if %{with_systemd}
%{__install} -d -m 0755 %{buildroot}%{_unitdir}
%else
%{__install} -d -m 0755 %{buildroot}%{_initrddir}
%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/logrotate.d
%endif
%{__install} -d -m 0755 %{buildroot}%{_localstatedir}/log/%{name}
# sysconfig removal
# % {__install} -d -m 0755 %{buildroot}%{_sysconfdir}/sysconfig
%{__install} -d -m 0755 %{buildroot}%{appdir}
%{__install} -d -m 0755 %{buildroot}%{bindir}
%{__install} -d -m 0755 %{buildroot}%{confdir}
%{__install} -d -m 0755 %{buildroot}%{libdir}
%{__install} -d -m 0755 %{buildroot}%{logdir}
%{__install} -d -m 0755 %{buildroot}%{homedir}
%{__install} -d -m 0755 %{buildroot}%{tempdir}
%{__install} -d -m 0775 %{buildroot}%{workdir}
%{__install} -d -m 0755 %{buildroot}%{cachedir}/Catalina/localhost
%{__install} -d -m 0755 %{buildroot}/%{_sbindir}
# move things into place
# First copy supporting libs to tomcat lib
pushd output/build
%{__cp} -a bin/*.{jar,xml} %{buildroot}%{bindir}
%{__cp} %{SOURCE10} conf/log4j.properties
%{__cp} -a conf/*.{policy,properties,xml} %{buildroot}%{confdir}
%{__cp} -a lib/*.jar %{buildroot}%{libdir}
%{__cp} -a webapps/* %{buildroot}%{appdir}
popd
# bnc#847505: add missing tomcat-dbcp.jar
%{__cp} -a commons/dbcp/dbcp-tomcat5/commons-dbcp-tomcat5.jar %{buildroot}/%{libdir}/tomcat-dbcp.jar
# javadoc
%{__cp} -a output/dist/webapps/docs/api/* %{buildroot}%{_javadocdir}/%{name}
%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
-e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \
-e "s|\@\@\@JAVAHOME\@\@\@|/etc/alternatives/jre|g" \
-e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE1} \
> %{buildroot}%{confdir}/%{name}.conf
# sysconfig removal
# % {__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
# -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" %{SOURCE3} \
# > %{buildroot}%{_sysconfdir}/sysconfig/%{name}
%if %{with_systemd}
%{__install} -m 0644 %{SOURCE11} \
%{buildroot}%{_unitdir}/%{name}.service
%{__install} -m 0644 %{SOURCE17} \
%{buildroot}%{_sbindir}/%{name}-sysd
%{__install} -m 0644 %{SOURCE20} \
%{buildroot}%{_unitdir}/%{name}-jsvc.service
(cd %{buildroot}%{_sbindir}; ln -s %{name}-sysd %{name}-jsvc-sysd)
ln -sf ../../sbin/service $RPM_BUILD_ROOT/%{_prefix}/sbin/rc%{name}
%else
%{__install} -m 0755 %{SOURCE2} \
%{buildroot}%{_initrddir}/%{name}
ln -sf %{_initrddir}/%{name} $RPM_BUILD_ROOT/%{_sbindir}/rc%{name}
%endif
%{__install} -m 0755 %{SOURCE4} \
%{buildroot}%{_sbindir}/d%{name}
# % {__ln_s} %{name} %{buildroot}%{_sbindir}/d%{name}
%if ! %{with_systemd}
%{__sed} -e "s|\@\@\@TCLOG\@\@\@|%{logdir}|g" %{SOURCE5} \
> %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
%endif
%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
-e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \
-e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE6} \
> %{buildroot}%{_bindir}/%{name}-digest
%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
-e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \
-e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE7} \
> %{buildroot}%{_bindir}/%{name}-tool-wrapper
# create jsp and servlet and el API symlinks
pushd %{buildroot}%{_javadir}
%{__mv} %{name}/jsp-api.jar %{name}-jsp-%{jspspec}-api.jar
%{__ln_s} %{name}-jsp-%{jspspec}-api.jar %{name}-jsp-api.jar
%{__mv} %{name}/servlet-api.jar %{name}-servlet-%{servletspec}-api.jar
%{__ln_s} %{name}-servlet-%{servletspec}-api.jar %{name}-servlet-api.jar
%{__mv} %{name}/el-api.jar %{name}-el-%{elspec}-api.jar
%{__ln_s} %{name}-el-%{elspec}-api.jar %{name}-el-api.jar
popd
pushd output/build
%{_bindir}/build-jar-repository lib commons-collections \
commons-dbcp commons-pool ecj 2>&1
# need to use -p here with b-j-r otherwise the examples webapp fails to
# load with a java.io.IOException
%{_bindir}/build-jar-repository -p webapps/examples/WEB-INF/lib \
taglibs-core.jar taglibs-standard.jar 2>&1
popd
pushd %{buildroot}%{libdir}
# symlink JSP and servlet and el API jars
%{__ln_s} ../%{name}-jsp-%{jspspec}-api.jar .
%{__ln_s} ../%{name}-servlet-%{servletspec}-api.jar .
%{__ln_s} ../%{name}-el-%{elspec}-api.jar .
%{__ln_s} $(build-classpath commons-collections) commons-collections.jar
%{__ln_s} $(build-classpath commons-dbcp) commons-dbcp.jar
%{__ln_s} $(build-classpath commons-pool) commons-pool.jar
%{__ln_s} $(build-classpath commons-pool-tomcat5) commons-pool-tomcat5.jar
%{__ln_s} $(build-classpath log4j) log4j.jar
%{__ln_s} $(build-classpath ecj) jasper-jdt.jar
# Temporary copy the juli jar here from /usr/share/java/tomcat (for maven depmap)
%{__cp} -a %{buildroot}%{bindir}/tomcat-juli.jar ./
popd
# symlink to the FHS locations where we've installed things
pushd %{buildroot}%{homedir}
%{__ln_s} %{appdir} webapps
%{__ln_s} %{confdir} conf
%{__ln_s} %{libdir} lib
%{__ln_s} %{logdir} logs
%{__ln_s} %{tempdir} temp
%{__ln_s} %{workdir} work
popd
# install sample webapp
%{__mkdir_p} %{buildroot}%{appdir}/sample
pushd %{buildroot}%{appdir}/sample
%{jar} xf %{buildroot}%{appdir}/docs/appdev/sample/sample.war
popd
# Allow linking for example webapp
%{__mkdir_p} ${RPM_BUILD_ROOT}%{appdir}/examples/META-INF
pushd ${RPM_BUILD_ROOT}%{appdir}/examples/META-INF
echo '<?xml version="1.0" encoding="UTF-8"?>'>context.xml
echo '<Context allowLinking="true"/>'>>context.xml
popd
pushd ${RPM_BUILD_ROOT}%{appdir}/examples/WEB-INF/lib
%{__ln_s} -f $(build-classpath jakarta-taglibs-core) jstl.jar
%{__ln_s} -f $(build-classpath jakarta-taglibs-standard) standard.jar
popd
%{__rm} %{buildroot}%{appdir}/docs/appdev/sample/sample.war
# Install the maven metadata
%{__install} -d -m 0755 %{buildroot}%{_mavenpomdir}
pushd output/dist/src/res/maven
for pom in *.pom; do
# fix-up version in all pom files
sed -i 's/@MAVEN.DEPLOY.VERSION@/%{version}/g' $pom
done
# we won't install dbcp, juli-adapters and juli-extras pom files
for libname in annotations-api catalina jasper-el jasper catalina-ha; do
%{__cp} -a %{name}-$libname.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-$libname.pom
%add_maven_depmap JPP.%{name}-$libname.pom %{name}/$libname.jar
done
# servlet-api jsp-api and el-api are not in tomcat subdir, since they are widely re-used elsewhere
%{__cp} -a tomcat-jsp-api.pom %{buildroot}%{_mavenpomdir}/JPP-tomcat-jsp-api.pom
%add_maven_depmap JPP-tomcat-jsp-api.pom tomcat-jsp-api.jar -f "tomcat-jsp-api" -a "javax.servlet.jsp:javax.servlet.jsp-api,javax.servlet:jsp-api"
%{__cp} -a tomcat-el-api.pom %{buildroot}%{_mavenpomdir}/JPP-tomcat-el-api.pom
%add_maven_depmap JPP-tomcat-el-api.pom tomcat-el-api.jar -f "tomcat-el-api" -a "javax.el:javax.el-api,javax.el:el-api"
%{__cp} -a tomcat-servlet-api.pom %{buildroot}%{_mavenpomdir}/JPP-tomcat-servlet-api.pom
# Generate a depmap fragment javax.servlet:servlet-api pointing to
# tomcat-servlet-3.0-api for backwards compatibility
# also provide jetty depmap (originally in jetty package, but it's cleaner to have it here
%add_maven_depmap JPP-tomcat-servlet-api.pom tomcat-servlet-api.jar -f "tomcat-servlet-api" -a "javax.servlet:servlet-api,javax.servlet:javax.servlet-api,org.mortbay.jetty:servlet-api"
# two special pom where jar files have different names
%{__cp} -a tomcat-tribes.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-catalina-tribes.pom
%add_maven_depmap JPP.%{name}-catalina-tribes.pom %{name}/catalina-tribes.jar
%{__cp} -a tomcat-coyote.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.%{name}-tomcat-coyote.pom
%add_maven_depmap JPP.%{name}-tomcat-coyote.pom %{name}/tomcat-coyote.jar
%{__cp} -a tomcat-juli.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-tomcat-juli.pom
%add_maven_depmap JPP.%{name}-tomcat-juli.pom %{name}/tomcat-juli.jar
%{__cp} -a tomcat-api.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-tomcat-api.pom
%add_maven_depmap JPP.%{name}-tomcat-api.pom %{name}/tomcat-api.jar
%{__cp} -a tomcat-util.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-tomcat-util.pom
%add_maven_depmap JPP.%{name}-tomcat-util.pom %{name}/tomcat-util.jar
# replace temporary copy with link
%{__ln_s} -f %{bindir}/tomcat-juli.jar %{buildroot}%{libdir}/
%if %defined suse_version
# bnc#424675
%{__ln_s} %{cachedir}/Catalina %{buildroot}/%{confdir}
%{__rm} -rf %{buildroot}/%{confdir}/Catalina
%{__ln_s} %{cachedir}/Catalina %{buildroot}/%{confdir}/
# bnc#418664
install -d -m 0755 %{buildroot}/%{_sysconfdir}/ant.d/
echo "%{name}/catalina-ant" > %{buildroot}/%{_sysconfdir}/ant.d/catalina-ant
%fdupes $RPM_BUILD_ROOT /srv/%{name}
#bnc#565901
ln -sf %{_sbindir}/d%{name} %{buildroot}/%{bindir}/catalina.sh
%endif
%pre
# add the tomcat user and group
%{_sbindir}/groupadd -r tomcat 2>/dev/null || :
%{_sbindir}/useradd -c "Apache Tomcat" -g tomcat \
-s /bin/sh -r -d %{homedir} tomcat 2>/dev/null || :
%if %{with_systemd}
%service_add_pre %{name}.service
%endif
%post
%if %{with_systemd}
%service_add_post %{name}.service
%else
%{fillup_only %{name}}
%endif
%preun
if [ -x %{_initrddir}/%{name} ]; then
# clean tempdir and cachedir on removal or upgrade
## % {__rm} -rf %{workdir}/* %{tempdir}/*
%stop_on_removal %{name}
fi
%if %{with_systemd}
%service_del_preun %{name}.service
%endif
%postun
%if %{with_systemd}
%service_del_postun %{name}.service
%else
%insserv_cleanup
%restart_on_update %{name}
%endif
%if %{with_systemd}
%pre jsvc
%service_add_pre %{name}-jsvc.service
%post jsvc
%service_add_post %{name}-jsvc.service
%preun jsvc
%service_del_preun %{name}-jsvc.service
%postun jsvc
%service_del_postun %{name}-jsvc.service
%endif
%post el-2_2-api
%{_sbindir}/update-alternatives --install %{_javadir}/el_api.jar el_api %{_javadir}/%{name}-el-%{elspec}-api.jar 20300
%{_sbindir}/update-alternatives --install %{_javadir}/el_1_0_api.jar el_1_0_api %{_javadir}/%{name}-el-%{elspec}-api.jar 20300
%preun el-2_2-api
if [ "$1" = "0" ]; then
%{_sbindir}/update-alternatives --remove el_api %{_javadir}/%{name}-el-%{elspec}-api.jar
%{_sbindir}/update-alternatives --remove el_1_0_api %{_javadir}/%{name}-el-%{elspec}-api.jar
fi
%post jsp-2_2-api
%{_sbindir}/update-alternatives --install %{_javadir}/jsp.jar jsp \
%{_javadir}/%{name}-jsp-%{jspspec}-api.jar 20200
%postun jsp-2_2-api
if [ "$1" = "0" ]; then
%{_sbindir}/update-alternatives --remove jsp \
%{_javadir}/%{name}-jsp-%{jspspec}-api.jar
fi
%post servlet-3_0-api
%{_sbindir}/update-alternatives --install %{_javadir}/servlet.jar servlet \
%{_javadir}/%{name}-servlet-%{servletspec}-api.jar 30000
%postun servlet-3_0-api
if [ "$1" = "0" ]; then
%{_sbindir}/update-alternatives --remove servlet \
%{_javadir}/%{name}-servlet-%{servletspec}-api.jar
fi
%post lib
# those links are no longer needed
%{__rm} -f \
%{libdir}/\[commons-collections-tomcat5\].jar \
%{libdir}/\[commons-dbcp-tomcat5\].jar \
%{libdir}/\[commons-pool-tomcat5\].jar \
%{libdir}/\[ecj\].jar >/dev/null 2>&1
%files
%defattr(0644,root,root,0755)
%doc {LICENSE,NOTICE,RELEASE*}
%attr(0755,root,root) %{_bindir}/%{name}-digest
%attr(0755,root,root) %{_bindir}/%{name}-tool-wrapper
%attr(0755,root,root) %{_sbindir}/d%{name}
# % attr(0755,root,root) %{_sbindir}/%{name}
%if %{with_systemd}
%attr(0644,root,root) %{_unitdir}/%{name}.service
%attr(0755,root,root) %{_sbindir}/%{name}-sysd
%else
%attr(0755,root,root) %{_initrddir}/%{name}
%endif
#bnc#565901
%{bindir}/catalina.sh
%if ! %{with_systemd}
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%endif
# sysconfig removal
# % config(noreplace) %{_sysconfdir}/sysconfig/%{name}
# bnc#726307
%attr(0775,root,tomcat) %dir %{confdir}
%{confdir}/Catalina
# % attr(0775,root,tomcat) %dir %{confdir}/Catalina/localhost
%config(noreplace) %{confdir}/%{name}.conf
%config(noreplace) %{confdir}/*.policy
%config(noreplace) %{confdir}/*.properties
%config(noreplace) %{confdir}/context.xml
%config(noreplace) %{confdir}/server.xml
%config(noreplace) %{confdir}/web.xml
%verify (not user group) %attr(0660,tomcat,tomcat) %config(noreplace) %{confdir}/tomcat-users.xml
%dir %{homedir}
%dir %{bindir}
%{bindir}/bootstrap.jar
%{bindir}/catalina-tasks.xml
%{homedir}/lib
%{homedir}/temp
%{homedir}/webapps
%{homedir}/work
%{homedir}/logs
%{homedir}/conf
%dir /srv/%{name}
%{_sbindir}/rc%{name}
%{confdir}/Catalina
# tomcat group writtable dirs - bnc#625415
%defattr(0664,root,tomcat,0775)
%verify (not user group) %dir %{appdir}
%verify (not user group) %{logdir}
%verify (not user group) %{cachedir}
%files admin-webapps
%defattr(0644,root,root,0755)
%{appdir}/host-manager
%{appdir}/manager
%files docs-webapp
%defattr(0644,root,root,0755)
%doc %{appdir}/docs
%files el-2_2-api
%defattr(0644,root,root,0755)
%{_javadir}/%{name}-el-%{elspec}-api.jar
%{_javadir}/%{name}-el-api.jar
%{libdir}/%{name}-el-%{elspec}-api.jar
%{_mavenpomdir}/JPP-%{name}-el-api.pom
%{_mavendepmapfragdir}/%{name}-tomcat-el-api
%files javadoc
%defattr(0644,root,root,0755)
%doc %{_javadocdir}/%{name}
%files jsp-2_2-api
%defattr(0644,root,root,0755)
%{_javadir}/%{name}-jsp-%{jspspec}-api.jar
%{_javadir}/%{name}-jsp-api.jar
# % ghost %{_javadir}/jsp.jar
%{_mavenpomdir}/JPP-%{name}-jsp-api.pom
%{_mavendepmapfragdir}/%{name}-tomcat-jsp-api
%files lib
%defattr(0644,root,root,0755)
%{libdir}
%dir %{bindir}
%{bindir}/tomcat-juli.jar
%{_mavendepmapfragdir}/%{name}
%{_mavenpomdir}/JPP.%{name}-annotations-api.pom
%{_mavenpomdir}/JPP.%{name}-catalina-ha.pom
%{_mavenpomdir}/JPP.%{name}-catalina-tribes.pom
%{_mavenpomdir}/JPP.%{name}-catalina.pom
%{_mavenpomdir}/JPP.%{name}-jasper-el.pom
%{_mavenpomdir}/JPP.%{name}-jasper.pom
%{_mavenpomdir}/JPP.%{name}-tomcat-api.pom
%{_mavenpomdir}/JPP.%{name}-tomcat-juli.pom
%{_mavenpomdir}/JPP.%{name}-tomcat-coyote.pom
%{_mavenpomdir}/JPP.%{name}-tomcat-util.pom
%exclude %{libdir}/%{name}-el-%{elspec}-api.jar
# bnc#418664
%dir %{_sysconfdir}/ant.d
%config(noreplace) %{_sysconfdir}/ant.d/catalina-ant
%files servlet-3_0-api
%defattr(0644,root,root,0755)
%doc LICENSE
%{_javadir}/%{name}-servlet-%{servletspec}-api.jar
%{_javadir}/%{name}-servlet-api.jar
# % ghost %{_javadir}/servlet.jar
%{_mavendepmapfragdir}/%{name}-tomcat-servlet-api
%{_mavenpomdir}/JPP-%{name}-servlet-api.pom
%files webapps
%defattr(0644,root,root,0755)
#bnc#520532
%config(noreplace) %{appdir}/ROOT
%{appdir}/examples
%{appdir}/sample
%if %{with_systemd}
%files jsvc
%defattr(755,root,root,0755)
%{_sbindir}/%{name}-jsvc-sysd
%attr(0644,root,root) %{_unitdir}/%{name}-jsvc.service
%endif
%changelog