-# TODO
-# - packages for *.renametojar files (-cgi and -ssi in server/lib)
+
# Conditional build:
%bcond_without javadoc # skip building javadocs
-%bcond_with jta # put jta jar into tomcat lib dir.
-%bcond_without java_sun # build with gcj (does not work)
-#
-Summary: Apache Servlet/JSP Engine, RI for Servlet 2.4/JSP 2.0 API
-Summary(pl.UTF-8): Silnik Servlet/JSP Apache będący wzorcową implementacją API Servlet 2.4/JSP 2.0
+%bcond_without extras # skip building extras
+
+%define jspapiver 2.2
+%define servletapiver 3.0
+
+%define tomcatnatver 1.1.27
+
+# Java Commons Logging version. Must be >= 1.1.
+%define jclver 1.1.3
+
+%include /usr/lib/rpm/macros.java
+Summary: Web server and Servlet/JSP Engine, RI for Servlet %{servletapiver}/JSP %{jspapiver} API
+Summary(pl.UTF-8): Serwer www i silnik Servlet/JSP będący wzorcową implementacją API Servlet %{servletapiver}/JSP %{jspapiver}
Name: tomcat
-Version: 5.5.27
-Release: 0.6
+Version: 7.0.73
+Release: 1
License: Apache v2.0
Group: Networking/Daemons/Java
-Source0: http://www.apache.org/dist/tomcat/tomcat-5/v%{version}/src/apache-%{name}-%{version}-src.tar.gz
-# Source0-md5: eb3f196013550b9b1684e4ff18593a8e
+Source0: http://www.apache.org/dist/tomcat/tomcat-7/v%{version}/src/apache-%{name}-%{version}-src.tar.gz
+# Source0-md5: c8391fe6504d2104835a2f7f883858ad
Source1: apache-%{name}.init
Source2: apache-%{name}.sysconfig
-Source10: apache-%{name}-context-ROOT.xml
-Source11: apache-%{name}-context-balancer.xml
-Source12: apache-%{name}-context-jsp-examples.xml
-Source13: apache-%{name}-context-tomcat-docs.xml
-Source14: apache-%{name}-context-webdav.xml
-Patch0: apache-%{name}-skip-servletapi.patch
-Patch1: apache-%{name}-nsis.patch
-Patch2: apache-%{name}-native.patch
-Patch3: apache-%{name}-skip-jdt.patch
-Patch4: apache-%{name}-no-connectors.patch
-Patch5: apache-%{name}-dbcp.patch
-# this patch is needed for struts >= 1.3
-Patch6: apache-%{name}-struts.patch
-# WTF? Why is it needed? Is it related to struts version?
-Patch7: apache-%{name}-admin-struts.patch
+Source3: %{name}-build.properties
+Source10: %{name}-context-ROOT.xml
+Source11: %{name}-context-docs.xml
+Source12: %{name}-context-manager.xml
+Source13: %{name}-context-host-manager.xml
+Source14: %{name}-context-examples.xml
+Source15: %{name}.logrotate
+Source16: log4j.properties
+Source100: http://www.apache.org/dist/commons/logging/source/commons-logging-%{jclver}-src.tar.gz
+# Source100-md5: e8e197d628436490886d17cffa108fe3
+Patch0: %{name}-build.xml.patch
+Patch1: server.xml-URIEncoding-utf8.patch
+Patch2: %{name}-LDAPUserDatabase.patch
+Patch3: %{name}-catalina.policy-javadir.patch
+Patch4: %{name}-userdir.patch
+Patch5: logging.patch
+Patch6: jcl.patch
+Patch7: %{name}-build.patch
+Patch100: jcl-build.xml.patch
URL: http://tomcat.apache.org/
-%if %{with java_sun}
-BuildRequires: java-sun >= 1.5
-BuildRequires: java-sun-jre >= 1.5
-%else
-# BuildRequires: jsse >= 0:1.0.3
-BuildRequires: java-gcj-compat-devel
-%endif
BuildRequires: ant >= 1.5.3
-BuildRequires: ant-trax
-BuildRequires: eclipse-jdt
-BuildRequires: jaas
-BuildRequires: jakarta-regexp >= 0:1.3
-BuildRequires: java-commons-beanutils >= 1.7
-BuildRequires: java-commons-chain
-BuildRequires: java-commons-collections >= 0:3.1
-BuildRequires: java-commons-collections-tomcat5 >= 0:3.1
+BuildRequires: java(JSR109)
+BuildRequires: java-avalon-framework
+BuildRequires: java-avalon-logkit
BuildRequires: java-commons-daemon >= 1.0
-BuildRequires: java-commons-dbcp >= 0:1.2.1
-BuildRequires: java-commons-dbcp-tomcat5 >= 0:1.2.1
-BuildRequires: java-commons-digester >= 0:1.7
-BuildRequires: java-commons-el >= 0:1.0
-BuildRequires: java-commons-fileupload >= 0:1.0
-BuildRequires: java-commons-httpclient
-BuildRequires: java-commons-io >= 1.4
-BuildRequires: java-commons-launcher >= 0:0.9
-BuildRequires: java-commons-logging >= 0:1.0.4
-BuildRequires: java-commons-modeler >= 2.0
-BuildRequires: java-commons-pool >= 0:1.2
-BuildRequires: java-commons-pool-tomcat5 >= 0:1.2
-%{?with_jta:BuildRequires: java-jta >= 0:1.0.1}
+BuildRequires: java-commons-dbcp-tomcat5 >= 0:1.1
+BuildRequires: java-commons-pool-tomcat5
+BuildRequires: java-eclipse-jdt >= 4.4.2
+BuildRequires: java-geronimo-spec-jaxrpc
+BuildRequires: java-jdbc-mysql
+BuildRequires: java-junit
BuildRequires: java-log4j
-BuildRequires: java-mail >= 0:1.3.1
-BuildRequires: java-puretls
-BuildRequires: java-servletapi5 = %{version}
-#BuildRequires: java-struts >= 0:1.2.7
-BuildRequires: java-struts >= 1.0.2
-BuildRequires: java-xerces >= 0:2.7.1
-BuildRequires: java-xml-commons
-#BuildRequires: java-xml-commons >= 1.3
-BuildRequires: jaxp_parser_impl >= 0:2.7.1
-BuildRequires: jdbc-stdext >= 0:2.0
-BuildRequires: jmx
-BuildRequires: jndi >= 0:1.2.1
+BuildRequires: java-mail
+BuildRequires: jdk >= 1.6
BuildRequires: jpackage-utils
-BuildRequires: junit >= 0:3.8.1
-BuildRequires: rpmbuild(macros) >= 1.300
-Requires(post,postun): /sbin/ldconfig
+BuildRequires: rpm >= 4.4.9-56
+BuildRequires: rpm-javaprov
+BuildRequires: rpmbuild(macros) >= 1.657
+BuildRequires: sed >= 4.0
Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/groupdel
Requires(postun): /usr/sbin/userdel
Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
-Requires: %{name}-jasper = %{version}-%{release}
-Requires: jaas
-#Requires: jaf >= 1.0.1
-Requires: java-commons-beanutils
-Requires: java-commons-collections
-#Requires: java-commons-dbcp-tomcat5
-Requires: java-commons-digester
-Requires: java-commons-el
-#Requires: java-commons-fileupload
-Requires: java-commons-logging
-Requires: java-commons-modeler
+Requires: java(jaxp_parser_impl)
+Requires: java(jndi) >= 1.2.1
+Requires: java-%{name}-catalina = %{version}-%{release}
+Requires: java-%{name}-coyote = %{version}-%{release}
+Requires: java-%{name}-jasper = %{version}-%{release}
+Requires: java-commons-dbcp-tomcat5 >= 0:1.1
Requires: java-commons-pool-tomcat5
-Requires: java-regexp
-Requires: java-servletapi5 = %{version}
-Requires: java-xml-commons
-Requires: javamail >= 1.2
-Requires: jaxp_parser_impl
-Requires: jdbc-stdext >= 2.0
-Requires: jndi >= 1.2.1
+Requires: java-jdbc-mysql
+Requires: java-mail
+Requires: java-servletapi = %{version}-%{release}
+Requires: jpackage-utils
Requires: jre >= 1.2
-Requires: jsse >= 1.0.2
-%{?with_jta:Requires: jta >= 1.0.1}
+Requires: jsvc
Requires: rc-scripts
+Suggests: logrotate
+Suggests: tomcat-native >= %{tomcatnatver}
Provides: group(servlet)
Provides: group(tomcat)
-Provides: java-servlet-container
Provides: user(tomcat)
Obsoletes: apache-tomcat
Obsoletes: jakarta-tomcat
+%if "%{pld_release}" != "ac"
+Conflicts: logrotate < 3.8.0
+%endif
+Conflicts: tomcat-native < %{tomcatnatver}
BuildArch: noarch
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _tomcatdir %{_datadir}/tomcat
%define _logdir %{_var}/log
%define _vardir %{_var}/lib/tomcat
-%define _sysconfdir /etc/tomcat
-
-%define find_jar() %{expand:%%define jarfile {%(jar=$(find-jar %1); echo ${jar:-%%nil})}}%{?jarfile}%{!?jarfile:%{error:find-jar %1 failed}}%{nil}
%description
Tomcat is the servlet container that is used in the official Reference
Tomcat is developed in an open and participatory environment and
released under the Apache Software License. Tomcat is intended to be a
collaboration of the best-of-breed developers from around the world.
-We invite you to participate in this open development project.
%description -l pl.UTF-8
Tomcat to kontener serwletowy używany przez oficjalną implementację
Java Servlet i JavaServer Pages są rozwijane przez Suna zgodnie z Java
Community Process.
-%package doc
+%package webapp-docs
Summary: The Apache Tomcat Servlet/JSP Container documentation
Summary(pl.UTF-8): Dokumentacja do Tomcata - kontenera Servlet/JSP
Group: Documentation
+Requires: %{name} = %{version}-%{release}
Obsoletes: apache-tomcat-doc
Obsoletes: jakarta-tomcat-doc
+Obsoletes: tomcat-doc
-%description doc
+%description webapp-docs
The Tomcat Servlet/JSP Container documentation.
-%description doc -l pl.UTF-8
+%description webapp-docs -l pl.UTF-8
Dokumentacja do Tomcata - kontenera Servlet/JSP.
-%package admin
-Summary: Apache Tomcat`s Administration Web Application
-Summary(pl.UTF-8): Panel Administracyjny dla Apache Tomcat
+%package webapp-manager
+Summary: The Apache Tomcat Servlet/JSP application manager
+Summary(pl.UTF-8): Zarządca aplikacji w Tomcacie
Group: Networking/Daemons/Java/Servlets
Requires: %{name} = %{version}-%{release}
-Requires: java-commons-chain
-%description admin
-Administration Web Application for Apache Tomcat.
+%description webapp-manager
+The Apache Tomcat Servlet/JSP application manager.
+
+%description webapp-manager -l pl.UTF-8
+Zarządca aplikacji w Tomcacie.
+
+%package webapp-host-manager
+Summary: The Apache Tomcat Servlet/JSP virtual hosts manager
+Summary(pl.UTF-8): Zarządca wirtualnych hostów w Tomcacie
+Group: Networking/Daemons/Java/Servlets
+Requires: %{name} = %{version}-%{release}
+Obsoletes: tomcat-admin
-%description admin -l pl.UTF-8
-Panel Administracyjny dla Apache Tomcat.
+%description webapp-host-manager
+The Apache Tomcat Servlet/JSP virtual hosts manager.
-%package jasper
+%description webapp-host-manager -l pl.UTF-8
+Zarządca wirtualnych hostów w Tomcacie.
+
+%package webapp-examples
+Summary: The Apache Tomcat Servlet/JSP example applications
+Summary(pl.UTF-8): Przykładowe aplikacje dla Tomcata
+Group: Networking/Daemons/Java/Servlets
+Requires: %{name} = %{version}-%{release}
+
+%description webapp-examples
+The Apache Tomcat Servlet/JSP example applications.
+
+%description webapp-examples -l pl.UTF-8
+Przykładowe aplikacje dla Tomcata.
+
+%package webservices
+Summary: Web Services support (JSR 109)
+Summary(pl.UTF-8): Wsparcie dla Web Services (JSR 109)
+Group: Libraries/Java
+Requires: %{name} = %{version}-%{release}
+Requires: java(JSR109)
+Requires: java-geronimo-spec-jaxrpc
+
+%description webservices
+Factories for JSR 109 which may be used to resolve web services
+references.
+
+%description webservices -l pl.UTF-8
+Wsparcie dla JSR 109 (Web Services).
+
+%package jmx
+Summary: JMX remote interface for Tomcat
+Summary(pl.UTF-8): Zdalny interfejs JMX dla Tomcata
+Group: Libraries/Java
+Requires: %{name} = %{version}-%{release}
+
+%description jmx
+JMX remote interface for Tomcat.
+
+%description jmx -l pl.UTF-8
+Zdalny interfejs JMX dla Tomcata.
+
+%package -n java-tomcat-catalina
+Summary: Tomcat's servlet engine
+Summary(pl.UTF-8): Silnik servletów dla Tomcata.
+Group: Libraries/Java
+Requires: jpackage-utils
+
+%description -n java-tomcat-catalina
+Catalina is Tomcat's servlet container. Catalina implements Sun
+Microsystems' specifications for servlet and JavaServer Pages (JSP).
+
+%description -n java-tomcat-catalina -l pl.UTF-8
+Bibliotek Javy zawierające silnik servletów i JSP tomcata.
+
+%package -n java-tomcat-coyote
+Summary: Tomcat HTTP connector
+Summary(pl.UTF-8): Interfejs HTTP dla Tomcata
+Group: Libraries/Java
+Requires: jpackage-utils
+
+%description -n java-tomcat-coyote
+Coyote is Tomcat's HTTP Connector component that supports the HTTP 1.1
+protocol for the web server or application container. Coyote listens
+for incoming connections on a specific TCP port on the server and
+forwards the request to the Tomcat Engine to process the request and
+send back a response to the requesting client.
+
+%description -n java-tomcat-coyote -l pl.UTF-8
+Biblioteki Javy zawierające serwer HTTP 1.1 dla Tomcata.
+
+%package -n java-tomcat-jasper
Summary: JSP compiler
Summary(pl.UTF-8): Kompilator JSP
Group: Libraries/Java
+Requires: java-eclipse-jdt >= 4.2.2
Requires: jpackage-utils
Obsoletes: apache-tomcat-jasper
+Obsoletes: tomcat-jasper
-%description jasper
+%description -n java-tomcat-jasper
Jasper is Java ServerPages compiler used by Apache Tomcat servlet
container.
-%description jasper -l pl.UTF-8
+%description -n java-tomcat-jasper -l pl.UTF-8
Jasper jest kompilatorem Java ServerPages używanym przez kontener
servletów Apache Tomcat.
+%package -n java-servletapi
+Summary: Java servlet and JSP implementation classes
+Summary(pl.UTF-8): Klasy z implementacją Java Servlet i JSP
+Group: Libraries/Java
+Provides: java(jsp) = %{jspapiver}
+Provides: java(servlet) = %{servletapiver}
+Obsoletes: jakarta-servletapi5
+Obsoletes: jakarta-servletapi5
+Obsoletes: java-servletapi5
+
+%description -n java-servletapi
+Implementation classes of the Java Servlet and JSP APIs (packages
+javax.servlet, javax.servlet.http, javax.servlet.jsp, and
+javax.servlet.jsp.tagext).
+
+%description -n java-servletapi -l pl.UTF-8
+Implementacje klas API Java Servlet i JSP (pakiety javax.servlet,
+javax.servlet.http, javax.servlet.jsp i java.servlet.jsp.tagext).
+
%prep
-%setup -q -n apache-%{name}-%{version}-src
+%setup -q -a100 -n apache-%{name}-%{version}-src
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch6 -p1
%patch7 -p1
-# we don't need dos scripts
-rm -f container/catalina/src/bin/*.bat
-# or those
-rm -f container/catalina/src/bin/{startup,shutdown}.sh
+# Prepare java-commmons-logging sources
+install -d output/extras/logging
+mv commons-logging-%{jclver}-src output/extras/logging
+cd output/extras/logging/commons-logging-%{jclver}-src
+%undos build.xml
+%patch100 -p1
+cd -
-# causes file(1) rpm to abort, and not really neccessary file
-rm container/webapps/admin/images/Thumbs.db
-# file: Thumbs.db: ERROR: Cannot read short stream (Invalid argument)
-# rpm: error: magic_file(ms, "Thumbs.db") failed: mode 37777700644 Cannot read short stream (Invalid argument)
+# we don't need those scripts
+rm bin/*.bat
+rm bin/{startup,shutdown}.sh
-# servletapi built from jakarta-servletapi5.spec
-rm -rf servletapi
-
-# Remove pre-built jars
-find -name '*.jar' | xargs rm -fv
+cp -p %{SOURCE3} build.properties
%build
-TOPDIR=$(pwd)
-
-# build tomcat 5.5
-cat > build.properties <<EOF
-commons-beanutils.jar=$(find-jar commons-beanutils-core)
-commons-launcher.jar=$(find-jar commons-launcher)
-commons-daemon.jar=$(find-jar commons-daemon)
-commons-digester.jar=$(find-jar commons-digester)
-commons-el.jar=$(find-jar commons-el)
-commons-logging-api.jar=$(find-jar commons-logging-api)
-commons-logging.jar=$(find-jar commons-logging)
-commons-modeler.jar=$(find-jar commons-modeler)
-xercesImpl.jar=$(find-jar jaxp_parser_impl)
-xml-apis.jar=$(find-jar xml-commons-apis)
-jdt.jar=$(find-jar org.eclipse.jdt.core)
-jasper-compiler-jdt.home=$TOPDIR/tomcat-deps
-commons-httpclient.jar=$(find-jar commons-httpclient)
-commons-collections.jar=$(find-jar commons-collections)
-commons-fileupload.jar=$(find-jar commons-fileupload)
-commons-io.jar=$(find-jar commons-io)
-jmx.jar=$(find-jar jmx)
-jmx-tools.jar=$(find-jar jmx)
-junit.jar=$(find-jar junit)
-struts.jar=$(find-jar struts-core)
-struts-core.jar=$(find-jar struts-core)
-struts-taglib.jar=$(find-jar struts-taglib)
-jcert.jar=$(find-jar jcert)
-jnet.jar=$(find-jar jnet)
-jsse.jar=$(find-jar jsse)
-%{?with_jta:jta.jar=$(find-jar jta)}
-puretls.jar=$(find-jar puretls)
-servlet-api.jar=$(find-jar servlet-api)
-servletapi.build.notrequired=true
-jsp-api.jar=$(find-jar jsp-api)
-jspapi.build.notrequired=true
-log4j.jar=$(find-jar log4j)
-tomcat-dbcp.jar=$(find-jar commons-dbcp-tomcat5)
-struts.lib=%{_javadir}-struts
-EOF
-
+if test ! -e build.properties.local; then
+ cat > build.properties.local <<-EOF
+ log4j.jar=$(find-jar log4j)
+ log4j12.jar=$(find-jar log4j)
+ junit.jar=$(find-jar junit)
+ logkit.jar=$(find-jar avalon-logkit)
+ avalon-framework-impl.jar=$(find-jar avalon-framework-impl.jar)
+ avalon-framework-api.jar=$(find-jar avalon-framework-api.jar)
+ servletapi.jar=$(pwd)/output/build/lib/servlet-api.jar
+ commons-logging.version=%{jclver}
+ java.7.home=%{java_home}
+ EOF
+ cat build.properties.local >> build.properties
+fi
if grep '=$' build.properties; then
: Some .jar could not be found
exit 1
fi
-%ant \
- -Dcompile.source=1.4
+export LC_ALL=en_US
+
+# Base package
+%ant
+
+%if %{with extras}
+install -d output/extras/webservices
+ln -sf %{_javadir}/geronimo-spec-jaxrpc.jar output/extras/webservices/jaxrpc.jar
+ln -sf %{_javadir}/jsr109.jar output/extras/webservices/wsdl4j.jar
+%ant extras
+%endif
+
+# Javadoc
+%if %{with javadoc}
+%ant javadoc
+%endif
%install
rm -rf $RPM_BUILD_ROOT
-cd build/build
+cd output/build
+
TOMCATDIR=$RPM_BUILD_ROOT%{_tomcatdir}
CATALINADIR=$RPM_BUILD_ROOT/var/lib/tomcat
-randpw=$(echo $RANDOM$$ | md5sum | cut -c 1-15)
-%{__sed} -i -e "s:SHUTDOWN:${randpw}:" conf/{server,server-minimal}.xml
-
-install -d $TOMCATDIR/bin \
- $TOMCATDIR/common/{lib,classes,endorsed} \
- $TOMCATDIR/server/{lib,classes} \
- $TOMCATDIR/webapps \
- $RPM_BUILD_ROOT%{_logdir}/tomcat \
- $RPM_BUILD_ROOT%{_vardir}/webapps \
- $RPM_BUILD_ROOT%{_vardir}/work \
- $RPM_BUILD_ROOT%{_vardir}/conf \
- $RPM_BUILD_ROOT/etc/sysconfig \
- $RPM_BUILD_ROOT/etc/rc.d/init.d
-
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/tomcat
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/tomcat
-
-cp -a conf/* $CATALINADIR/conf
-install %{SOURCE10} $CATALINADIR/conf/Catalina/localhost/ROOT.xml
-install %{SOURCE11} $CATALINADIR/conf/Catalina/localhost/balancer.xml
-install %{SOURCE12} $CATALINADIR/conf/Catalina/localhost/jsp-examples.xml
-install %{SOURCE13} $CATALINADIR/conf/Catalina/localhost/tomcat-docs.xml
-install %{SOURCE14} $CATALINADIR/conf/Catalina/localhost/webdav.xml
-cp -HR bin common server $TOMCATDIR
-
-cp -a server/webapps $TOMCATDIR/server
-cp -a webapps $TOMCATDIR
-cp -a shared $TOMCATDIR
+# useful for constructing relative symlinks. Is there a better way?
+TOMCATDIRREV=$(echo %{_tomcatdir} | sed 's#[^/]\+#..#g;s#^/##')
+CATALINADIRREV=$(echo /var/lib/tomcat | sed 's#[^/]\+#..#g;s#^/##')
+
+install -d $TOMCATDIR \
+ $CATALINADIR/temp \
+ $RPM_BUILD_ROOT%{_vardir}/webapps \
+ $RPM_BUILD_ROOT%{_vardir}/work \
+ $RPM_BUILD_ROOT%{_logdir}/{archive/,}tomcat \
+ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/Catalina/localhost \
+ $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d,logrotate.d}
+
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/tomcat
+cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/tomcat
+
+cp -a conf/* $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
+ln -sf $CATALINADIRREV%{_sysconfdir}/%{name} $RPM_BUILD_ROOT%{_vardir}/conf
+cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/Catalina/localhost/ROOT.xml
+cp -p %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/Catalina/localhost/docs.xml
+cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/Catalina/localhost/manager.xml
+cp -p %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/Catalina/localhost/host-manager.xml
+cp -p %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/Catalina/localhost/examples.xml
+cp -p %{SOURCE15} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
+%if "%{pld_release}" == "ac"
+%{__sed} -i -e '/su/d' $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
+%endif
+cp -p %{SOURCE16} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
+
+cp -a bin lib webapps $TOMCATDIR
cp -a temp $CATALINADIR
-ln -sf %{_logdir}/tomcat $CATALINADIR/logs
-ln -sf %{_logdir}/tomcat $TOMCATDIR/logs
-ln -sf %{_vardir}/work $TOMCATDIR/work
-ln -sf %{_vardir}/conf $TOMCATDIR/conf
-ln -sf %{_vardir}/conf $RPM_BUILD_ROOT%{_sysconfdir}
+ln -sf $CATALINADIRREV%{_logdir}/tomcat $CATALINADIR/logs
+ln -sf $TOMCATDIRREV%{_logdir}/tomcat $TOMCATDIR/logs
+ln -sf $TOMCATDIRREV%{_vardir}/work $TOMCATDIR/work
+ln -sf $TOMCATDIRREV%{_vardir}/conf $TOMCATDIR/conf
# symlinks instead of copies
-jars="commons-el commons-dbcp-tomcat5 commons-pool-tomcat5 servlet-api jsp-api commons-modeler"
-for jar in $jars; do
- jar=$(find-jar $jar)
- ln -sf $jar $TOMCATDIR/common/lib
-done
-
-jars="jaxp_parser_impl xml-commons-apis"
-for jar in $jars; do
- jar=$(find-jar $jar)
- ln -sf $jar $TOMCATDIR/common/endorsed
-done
-
-jars="struts-core struts-taglib commons-collections commons-beanutils-core commons-digester commons-chain"
-for jar in $jars; do
- jar=$(find-jar $jar)
- ln -sf $jar $TOMCATDIR/server/webapps/admin/WEB-INF/lib
-done
-
-%if 0
-# do not make these symlinks as ant didn't do
-jars="commons-daemon"
+jars="commons-daemon commons-logging-api"
for jar in $jars; do
jar=$(find-jar $jar)
ln -sf $jar $TOMCATDIR/bin
done
-jars="activation ant commons-dbcp commons-logging-api commons-pool servlet jdbc-stdext
-jmxri jndi %{?with_jta:jta} mail jsse junit mailapi pop3"
+jars="commons-pool-tomcat5 commons-dbcp-tomcat5 mysql-connector-java org.eclipse.jdt.core mail"
for jar in $jars; do
jar=$(find-jar $jar)
- ln -sf $jar $TOMCATDIR/common/lib
+ ln -sf $jar $TOMCATDIR/lib
done
-ln -sf servlet.jar $TOMCATDIR/common/lib/servletapi4.jar
-ln -sf jdbc-stdext.jar $TOMCATDIR/common/lib/jdbc2_0-stdext.jar
-ln -sf jdbc-stdext.jar $TOMCATDIR/common/lib/jdbc-stdext-2.0.jar
-ln -sf pop3.jar $TOMCATDIR/common/lib/pop.jar
-
-jars="commons-beanutils commons-digester commons-fileupload commons-logging jaas regexp"
-for jar in $jars; do
- jar=$(find-jar $jar)
- ln -sf $jar $TOMCATDIR/server/lib
-done
-ln -sf regexp.jar $TOMCATDIR/server/lib/jakarta-regexp-1.2.jar
-ln -sf regexp.jar $TOMCATDIR/server/lib/regexp-1.2.jar
+install -d $RPM_BUILD_ROOT%{_javadir}
+mv $TOMCATDIR/lib/jasper*.jar $RPM_BUILD_ROOT%{_javadir}
+mv $TOMCATDIR/lib/jsp-api.jar $RPM_BUILD_ROOT%{_javadir}/jsp-api-%{jspapiver}.jar
+mv $TOMCATDIR/lib/servlet-api.jar $RPM_BUILD_ROOT%{_javadir}/servlet-api-%{servletapiver}.jar
+mv $TOMCATDIR/lib/catalina.jar $RPM_BUILD_ROOT%{_javadir}/tomcat-catalina.jar
+mv $TOMCATDIR/lib/tomcat-coyote.jar $RPM_BUILD_ROOT%{_javadir}/tomcat-coyote.jar
+mv $TOMCATDIR/lib/tomcat-util.jar $RPM_BUILD_ROOT%{_javadir}/tomcat-util.jar
+mv $TOMCATDIR/lib/tomcat-api.jar $RPM_BUILD_ROOT%{_javadir}/tomcat-api.jar
+
+ln -s jsp-api-%{jspapiver}.jar $RPM_BUILD_ROOT%{_javadir}/jsp-api.jar
+ln -s servlet-api-%{servletapiver}.jar $RPM_BUILD_ROOT%{_javadir}/servlet-api.jar
+
+# XXX add softlinks jasper-compiler.jar and jasper-runtime for compatibility with tomcat 5.5?
+ln -sf %{_javadir}/jasper-el.jar $TOMCATDIR/lib
+ln -sf %{_javadir}/jasper.jar $TOMCATDIR/lib
+
+ln -sf %{_javadir}/jsp-api-%{jspapiver}.jar $TOMCATDIR/lib/jsp-api.jar
+ln -sf %{_javadir}/servlet-api-%{servletapiver}.jar $TOMCATDIR/lib/servlet-api.jar
+
+ln -sf %{_javadir}/tomcat-catalina.jar $TOMCATDIR/lib/catalina.jar
+ln -sf %{_javadir}/tomcat-util.jar $TOMCATDIR/lib/util.jar
+ln -sf %{_javadir}/tomcat-api.jar $TOMCATDIR/lib/api.jar
+
+ln -sf %{_javadir}/tomcat-coyote.jar $TOMCATDIR/lib/tomcat-coyote.jar
+
+%if %{with extras}
+cp -a ../extras/catalina-ws.jar $TOMCATDIR/lib/catalina-ws.jar
+cp -a ../extras/catalina-jmx-remote.jar $TOMCATDIR/lib/catalina-jmx-remote.jar
+cp -a ../extras/tomcat-juli-adapters.jar $RPM_BUILD_ROOT%{_javadir}/tomcat-juli-adapters.jar
+cp -a ../extras/tomcat-juli.jar $RPM_BUILD_ROOT%{_javadir}/tomcat-juli.jar
+ln -sf %{_javadir}/tomcat-juli-adapters.jar $TOMCATDIR/lib/juli-adapters.jar
+ln -sf %{_javadir}/tomcat-juli.jar $TOMCATDIR/lib/juli.jar
%endif
-install -d $RPM_BUILD_ROOT%{_javadir}
-mv $TOMCATDIR/common/lib/jasper*.jar $RPM_BUILD_ROOT%{_javadir}
-ln -sf %{_javadir}/jasper-compiler-jdt.jar $TOMCATDIR/common/lib
-ln -sf %{_javadir}/jasper-compiler.jar $TOMCATDIR/common/lib
-ln -sf %{_javadir}/jasper-runtime.jar $TOMCATDIR/common/lib
+ln -s %{_javadir}/geronimo-spec-jaxrpc.jar $TOMCATDIR/lib/jaxrpc.jar
+ln -s %{_javadir}/jsr109.jar $TOMCATDIR/lib/jsr109.jar
%clean
rm -rf $RPM_BUILD_ROOT
+%pretrans
+# handle /var/lib/tomcat/logs -> /var/log/tomcat migration
+if [ -d %{_vardir}/logs ] && [ ! -L %{_vardir}/logs ]; then
+ mv -v %{_vardir}/logs{,.rpmsave}
+fi
+
+# migrate /var/lib/tomcat/conf to /etc/tomcat
+if [ -d %{_vardir}/conf ] && [ ! -L %{_vardir}/conf ]; then
+ if [ -d %{_sysconfdir}/%{name} ]; then
+ if [ ! -L %{_sysconfdir}/%{name} ]; then
+ mv %{_vardir}/conf/* %{_sysconfdir}/%{name}
+ rmdir %{_vardir}/conf 2>/dev/null || mv -v %{_vardir}/conf{,.rpmsave}
+ else
+ mv -v %{_sysconfdir}/%{name}{,.rpmsave}
+ mv %{_vardir}/conf %{_sysconfdir}/%{name}
+ fi
+ else
+ mv %{_vardir}/conf %{_sysconfdir}/%{name}
+ fi
+ ln -s %{_sysconfdir}/%{name} %{_vardir}/conf
+fi
+exit 0
+
%pre
%groupadd -g 234 -r -f tomcat
%groupadd -g 237 -r -f servlet
%files
%defattr(644,root,root,755)
-%doc build/{RELEASE-NOTES,RUNNING.txt}
+%doc KEYS RELEASE-NOTES
%attr(754,root,root) /etc/rc.d/init.d/tomcat
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/tomcat
-%{_sysconfdir}
+%config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}
+
+# these directory has to be writeable because /admin need to modify config
+# files and create temporary files
+%dir %attr(770,root,tomcat) %{_sysconfdir}/%{name}
+%dir %attr(770,root,tomcat) %{_sysconfdir}/%{name}/Catalina
+%dir %{_sysconfdir}/%{name}/Catalina/localhost
+# tomcat config has to be writeable because of tomcat-users.xml file and Catalina dir
+%config(noreplace) %attr(660,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/catalina.policy
+%config(noreplace) %attr(660,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.properties
+%config(noreplace) %attr(660,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.xml
+
+%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/Catalina/localhost/ROOT.xml
+
%dir %{_tomcatdir}
%dir %{_tomcatdir}/conf
%dir %{_tomcatdir}/bin
%{_tomcatdir}/bin/catalina-tasks.xml
-%{_tomcatdir}/bin/jkstatus-tasks.xml
-%{_tomcatdir}/bin/jmxaccessor-tasks.xml
%attr(755,root,root) %{_tomcatdir}/bin/*.sh
%{_tomcatdir}/bin/*.jar
-%dir %{_tomcatdir}/common
-%dir %{_tomcatdir}/common/classes
-%dir %{_tomcatdir}/common/endorsed
-%dir %{_tomcatdir}/common/i18n
-%{_tomcatdir}/common/endorsed/*.jar
-%{_tomcatdir}/common/i18n/tomcat-i18n-en.jar
-%lang(es) %{_tomcatdir}/common/i18n/tomcat-i18n-es.jar
-%lang(fr) %{_tomcatdir}/common/i18n/tomcat-i18n-fr.jar
-%lang(ja) %{_tomcatdir}/common/i18n/tomcat-i18n-ja.jar
-%{_tomcatdir}/common/lib
-%dir %{_tomcatdir}/server
-%dir %{_tomcatdir}/server/classes
-%{_tomcatdir}/server/lib
-%dir %{_tomcatdir}/server/webapps
-
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/host-manager.xml
-%{_tomcatdir}/server/webapps/host-manager
-
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/manager.xml
-%{_tomcatdir}/server/webapps/manager
+%dir %{_tomcatdir}/lib
+%{_tomcatdir}/lib/annotations-api.jar
+%{_tomcatdir}/lib/api.jar
+%{_tomcatdir}/lib/catalina-ant.jar
+%{_tomcatdir}/lib/catalina-ha.jar
+%{_tomcatdir}/lib/catalina.jar
+%{_tomcatdir}/lib/catalina-tribes.jar
+%{_tomcatdir}/lib/commons-dbcp-tomcat5.jar
+%{_tomcatdir}/lib/commons-pool-tomcat5.jar
+%{_tomcatdir}/lib/el-api.jar
+%{_tomcatdir}/lib/jasper-el.jar
+%{_tomcatdir}/lib/jasper.jar
+%{_tomcatdir}/lib/jsp-api.jar
+%{_tomcatdir}/lib/mail.jar
+%{_tomcatdir}/lib/mysql-connector-java.jar
+%{_tomcatdir}/lib/org.eclipse.jdt.core.jar
+%{_tomcatdir}/lib/servlet-api.jar
+%{_tomcatdir}/lib/tomcat-jdbc.jar
+%{_tomcatdir}/lib/tomcat-coyote.jar
+%{_tomcatdir}/lib/tomcat-i18n-es.jar
+%{_tomcatdir}/lib/tomcat-i18n-fr.jar
+%{_tomcatdir}/lib/tomcat-i18n-ja.jar
+%{_tomcatdir}/lib/tomcat7-websocket.jar
+%{_tomcatdir}/lib/websocket-api.jar
+%{_tomcatdir}/lib/util.jar
+%if %{with extras}
+%{_tomcatdir}/lib/juli-adapters.jar
+%{_tomcatdir}/lib/juli.jar
+%endif
%dir %{_tomcatdir}/webapps
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/ROOT.xml
%{_tomcatdir}/webapps/ROOT
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/balancer.xml
-%{_tomcatdir}/webapps/balancer
-
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/webdav.xml
-%{_tomcatdir}/webapps/webdav
-
%{_tomcatdir}/logs
%{_tomcatdir}/work
-%{_tomcatdir}/shared
-%dir %{_vardir}
-# these directory has to be writeable because /admin need to modify config
-# files and create temporary files
-%dir %attr(775,root,tomcat) %{_vardir}/conf
-%dir %attr(775,root,tomcat) %{_vardir}/conf/Catalina
-%dir %{_vardir}/conf/Catalina/localhost
-# tomcat config has to be writeable because of tomcat-users.xml file and Catalina dir
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/MANIFEST.MF
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/catalina.policy
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/*.properties*
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/*.manifest
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/*.xml
-%dir %attr(1730,root,tomcat) %{_vardir}/work
-%dir %attr(775,root,tomcat) %{_vardir}/webapps
-%dir %attr(775,root,tomcat) %{_vardir}/temp
-%dir %attr(775,root,tomcat) %{_logdir}/tomcat
+%dir %attr(770,root,tomcat) %{_vardir}
+%dir %attr(770,root,tomcat) %{_vardir}/work
+%dir %attr(770,root,tomcat) %{_vardir}/webapps
+%dir %attr(770,root,tomcat) %{_vardir}/temp
+%dir %attr(770,root,tomcat) %{_logdir}/tomcat
+%dir %attr(770,root,root) %{_logdir}/archive/tomcat
+%{_vardir}/conf
%{_vardir}/logs
-%files doc
+%files webapp-docs
+%defattr(644,root,root,755)
+%config(noreplace,missingok) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/Catalina/localhost/docs.xml
+%{_tomcatdir}/webapps/docs
+
+%files webapp-manager
+%defattr(644,root,root,755)
+%config(noreplace,missingok) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/Catalina/localhost/manager.xml
+%{_tomcatdir}/webapps/manager
+
+%files webapp-host-manager
%defattr(644,root,root,755)
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/tomcat-docs.xml
-%{_tomcatdir}/webapps/tomcat-docs
+%config(noreplace,missingok) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/Catalina/localhost/host-manager.xml
+%{_tomcatdir}/webapps/host-manager
+
+%files webapp-examples
+%defattr(644,root,root,755)
+%config(noreplace,missingok) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/Catalina/localhost/examples.xml
+%{_tomcatdir}/webapps/examples
+
+%files webservices
+%defattr(644,root,root,755)
+%{_tomcatdir}/lib/jsr109.jar
+%{_tomcatdir}/lib/jaxrpc.jar
+%if %{with extras}
+%{_tomcatdir}/lib/catalina-ws.jar
+%endif
+
+%if %{with extras}
+%files jmx
+%defattr(644,root,root,755)
+%{_tomcatdir}/lib/catalina-jmx-remote.jar
+%endif
+
+%files -n java-tomcat-jasper
+%defattr(644,root,root,755)
+%{_javadir}/jasper-el.jar
+%{_javadir}/jasper.jar
+
+%files -n java-tomcat-catalina
+%defattr(644,root,root,755)
+%{_javadir}/tomcat-api.jar
+%{_javadir}/tomcat-catalina.jar
+%{_javadir}/tomcat-util.jar
+%if %{with extras}
+%{_javadir}/tomcat-juli-adapters.jar
+%{_javadir}/tomcat-juli.jar
+%endif
-%files admin
+%files -n java-tomcat-coyote
%defattr(644,root,root,755)
-%config(noreplace) %attr(664,root,tomcat) %verify(not md5 mtime size) %{_vardir}/conf/Catalina/localhost/admin.xml
-%{_tomcatdir}/server/webapps/admin
+%{_javadir}/tomcat-coyote.jar
-%files jasper
+%files -n java-servletapi
%defattr(644,root,root,755)
-%{_javadir}/jasper-compiler-jdt.jar
-%{_javadir}/jasper-compiler.jar
-%{_javadir}/jasper-runtime.jar
+%{_javadir}/jsp-api*.jar
+%{_javadir}/servlet-api*.jar