-# TODO
-# - packages for *.renametojar files (-cgi and -ssi in server/lib)
-#
+
# Conditional build:
-%bcond_without javadoc # skip building javadocs
-#
-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
-Name: apache-tomcat
-Version: 5.5.27
-Release: 0.1
-License: Apache
-Group: Development/Languages/Java
-Source0: http://www.apache.org/dist/tomcat/tomcat-5/v%{version}/src/%{name}-%{version}-src.tar.gz
-# Source0-md5: eb3f196013550b9b1684e4ff18593a8e
-Source1: %{name}.init
-Source2: %{name}.sysconfig
+%bcond_without javadoc # skip building javadocs
+
+%define jspapiver 2.2
+%define servletapiver 3.0
+
+# Java Commons Logging version. Must be >= 1.1.
+%define jclver 1.1.1
+
+%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: 7.0.41
+Release: 5
+License: Apache v2.0
+Group: Networking/Daemons/Java
+Source0: http://www.apache.org/dist/tomcat/tomcat-7/v%{version}/src/apache-%{name}-%{version}-src.tar.gz
+# Source0-md5: 8f1312436629c914564f3e8d88237be3
+Source1: apache-%{name}.init
+Source2: apache-%{name}.sysconfig
+Source3: %{name}-build.properties
Source10: %{name}-context-ROOT.xml
-Source11: %{name}-context-balancer.xml
-Source12: %{name}-context-jsp-examples.xml
-Source13: %{name}-context-tomcat-docs.xml
-Source14: %{name}-context-webdav.xml
-Patch0: %{name}-skip-servletapi.patch
-Patch1: %{name}-nsis.patch
-Patch2: %{name}-native.patch
-Patch3: %{name}-skip-jdt.patch
-Patch4: %{name}-no-connectors.patch
-Patch5: %{name}-dbcp.patch
-# this patch is needed for struts >= 1.3
-Patch6: %{name}-struts.patch
+Source11: %{name}-context-docs.xml
+Source12: %{name}-context-manager.xml
+Source13: %{name}-context-host-manager.xml
+Source14: %{name}-context-examples.xml
+Source15: %{name}.logrotate
+Source100: http://www.apache.org/dist/commons/logging/source/commons-logging-%{jclver}-src.tar.gz
+# Source100-md5: e5cfa8cca13152d7545fde6b1783c60a
+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
+Patch100: jcl-build.xml.patch
URL: http://tomcat.apache.org/
BuildRequires: ant >= 1.5.3
-BuildRequires: ant-trax
-BuildRequires: eclipse-jdt
-BuildRequires: jaas
-BuildRequires: java-commons-httpclient
-BuildRequires: jakarta-regexp >= 0:1.3
-#BuildRequires: java-struts >= 0:1.2.7
-BuildRequires: java-struts >= 1.0.2
-BuildRequires: java-commons-beanutils >= 1.7
-BuildRequires: java-commons-collections >= 0:3.1
-BuildRequires: java-commons-collections-tomcat5 >= 0:3.1
+BuildRequires: eclipse-jdt >= 4.2.2
+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-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
-BuildRequires: java-servletapi5 = %{version}
-BuildRequires: javamail >= 0:1.3.1
-BuildRequires: jaxp_parser_impl >= 0:2.7.1
-BuildRequires: jdbc-stdext >= 0:2.0
-BuildRequires: jdk >= 1.5
-BuildRequires: jmx
-BuildRequires: jndi >= 0:1.2.1
+BuildRequires: java-commons-dbcp-tomcat5 >= 0:1.1
+BuildRequires: java-commons-pool-tomcat5
+BuildRequires: java-geronimo-spec-jaxrpc
+BuildRequires: java-jdbc-mysql
+BuildRequires: java-junit
+BuildRequires: java-log4j
+BuildRequires: java-mail
+BuildRequires: jdk
BuildRequires: jpackage-utils
-BuildRequires: jsse >= 0:1.0.3
-BuildRequires: jta >= 0:1.0.1
-BuildRequires: junit >= 0:3.8.1
-BuildRequires: logging-log4j
-BuildRequires: puretls
-BuildRequires: rpmbuild(macros) >= 1.300
-BuildRequires: xerces-j >= 0:2.7.1
-BuildRequires: xml-commons
-#BuildRequires: xml-commons >= 1.3
-Requires(post,postun): /sbin/ldconfig
+BuildRequires: rpm-javaprov
+BuildRequires: rpmbuild(macros) >= 1.553
+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: jaas
-#Requires: jaf >= 1.0.1
-Requires: jakarta-regexp
-#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-servletapi5 = %{version}
-Requires: javamail >= 1.2
-Requires: jaxp_parser_impl
-Requires: jdbc-stdext >= 2.0
-Requires: jndi >= 1.2.1
+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-jdbc-mysql
+Requires: java-mail
+Requires: java-servletapi = %{version}-%{release}
+Requires: jpackage-utils
Requires: jre >= 1.2
-Requires: jsse >= 1.0.2
-Requires: jta >= 1.0.1
+Requires: jsvc
Requires: rc-scripts
-Requires: xml-commons
-Provides: group(http)
-Provides: user(http)
+Suggests: logrotate
+Suggests: tomcat-native >= 1.1.27
+Provides: group(servlet)
+Provides: group(tomcat)
+Provides: user(tomcat)
+Obsoletes: apache-tomcat
Obsoletes: jakarta-tomcat
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
%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: Development/Languages/Java
+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 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}
+
+%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 webapp-host-manager
+The Apache Tomcat Servlet/JSP virtual hosts manager.
+
+%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 -n java-tomcat-jasper
+Jasper is Java ServerPages compiler used by Apache Tomcat servlet
+container.
+
+%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 %{name}-%{version}-src
+%setup -q -a100 -n apache-%{name}-%{version}-src
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
-%patch6 -p1
-# servletapi built from jakarta-servletapi5.spec
-rm -rf servletapi
+# 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 -
+
+# we don't need those scripts
+rm bin/*.bat
+rm bin/{startup,shutdown}.sh
-# Remove pre-built jars
-find -name '*.jar' | xargs rm -fv
+cp -p %{SOURCE3} build.properties
%build
-TOPDIR=$(pwd)
-
-%if 0
-# build jasper javadocs
-cd jasper
-CLASSPATH=$(build-classpath xml-commons-apis)
-# building jasper needs eclipse classes
-cat > build.properties <<EOF
-ant.jar=$(find-jar ant)
-servlet-api.jar=$(find-jar servlet-api)
-jsp-api.jar=$(find-jar jsp-api)
-tools.jar=%{java_home}/lib/tools.jar
-xercesImpl.jar=$(find-jar jaxp_parser_impl)
-xmlParserAPIs.jar=$(find-jar xml-commons-apis)
-commons-collections.jar=$(find-jar commons-collections)
-commons-logging.jar=$(find-jar commons-logging)
-commons-daemon.jar=$(find-jar commons-daemon)
-junit.jar=$(find-jar junit)
-commons-el.jar=$(find-jar commons-el)
-EOF
-#%ant dist
+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}
+ EOF
+ cat build.properties.local >> build.properties
+fi
+if grep '=$' build.properties; then
+ : Some .jar could not be found
+ exit 1
+fi
-%if %{with javadoc}
-%ant javadoc \
- -Dcompile.source=1.4 \
- -Dbuild.compiler=modern \
+export LC_ALL=en_US
-%endif
-cd -
-%endif
+# Base package
+%ant
+
+# Extras
+install -d output/extras/webservices
-# 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)
-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=%{_datadir}/java-struts
-EOF
-
-%ant \
- -Dcompile.source=1.4
+ln -sf %{_javadir}/geronimo-spec-jaxrpc.jar output/extras/webservices/jaxrpc.jar
+ln -sf %{_javadir}/jsr109.jar output/extras/webservices/wsdl4j.jar
+
+%ant extras
+
+# 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
-# we don't need dos scripts
-rm -f bin/*.bat
-
-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 -pR 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 -rf server/webapps $TOMCATDIR/server
-cp -rf webapps $TOMCATDIR
-cp -rf shared $TOMCATDIR
-cp -rf temp $TOMCATDIR
-
-ln -sf %{_logdir}/tomcat $CATALINADIR/logs
-ln -sf %{_vardir}/work $TOMCATDIR/work
-ln -sf %{_vardir}/conf $TOMCATDIR/conf
-ln -sf %{_vardir}/conf $RPM_BUILD_ROOT%{_sysconfdir}
+# 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}/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}
+
+cp -a bin lib webapps $TOMCATDIR
+cp -a temp $CATALINADIR
+
+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
-ln -sf $(find-jar commons-el) $TOMCATDIR/common/lib/commons-el.jar
-ln -sf $(find-jar jakarta-commons-dbcp-tomcat5) $TOMCATDIR/common/lib/jakarta-commons-dbcp-tomcat5.jar
-ln -sf $(find-jar servlet-api) $TOMCATDIR/common/lib/servlet-api.jar
-
-ln -sf $(find-jar commons-modeler) $TOMCATDIR/server/lib/commons-modeler.jar
-
-%if 0
-# do not make these symlinks as ant didn't do
-ln -sf $(find-jar commons-daemon) $TOMCATDIR/bin/commons-daemon.jar
-ln -sf $(find-jar activation) $TOMCATDIR/common/lib/activation.jar
-ln -sf $(find-jar ant) $TOMCATDIR/common/lib/ant.jar
-ln -sf $(find-jar commons-collections) $TOMCATDIR/common/lib/commons-collections.jar
-ln -sf $(find-jar commons-dbcp) $TOMCATDIR/common/lib/commons-dbcp.jar
-ln -sf $(find-jar commons-logging-api) $TOMCATDIR/common/lib/commons-logging-api.jar
-ln -sf $(find-jar commons-pool) $TOMCATDIR/common/lib/commons-pool.jar
-ln -sf $(find-jar servlet) $TOMCATDIR/common/lib/servlet.jar
-ln -sf $(find-jar servlet) $TOMCATDIR/common/lib/servletapi4.jar
-ln -sf $(find-jar jdbc-stdext) $TOMCATDIR/common/lib/jdbc-stdext.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 $(find-jar jmxri) $TOMCATDIR/common/lib/jmxri.jar
-ln -sf $(find-jar jndi) $TOMCATDIR/common/lib/jndi.jar
-ln -sf $(find-jar jta) $TOMCATDIR/common/lib/jta.jar
-ln -sf $(find-jar mail) $TOMCATDIR/common/lib/mail.jar
-ln -sf $(find-jar jsse) $TOMCATDIR/common/lib/jsse.jar
-ln -sf $(find-jar junit) $TOMCATDIR/common/lib/junit.jar
-ln -sf $(find-jar mailapi) $TOMCATDIR/common/lib/mailapi.jar
-ln -sf $(find-jar pop3) $TOMCATDIR/common/lib/pop3.jar
-ln -sf pop3.jar $TOMCATDIR/common/lib/pop.jar
-ln -sf $(find-jar smtp) $TOMCATDIR/common/lib/smtp.jar
-ln -sf $(find-jar imap) $TOMCATDIR/common/lib/imap.jar
-ln -sf $(find-jar commons-beanutils) $TOMCATDIR/server/lib/commons-beanutils.jar
-ln -sf $(find-jar commons-digester) $TOMCATDIR/server/lib/commons-digester.jar
-ln -sf $(find-jar commons-fileupload) $TOMCATDIR/server/lib/commons-fileupload.jar
-ln -sf $(find-jar commons-logging) $TOMCATDIR/server/lib/commons-logging.jar
-ln -sf $(find-jar jaas) $TOMCATDIR/server/lib/jaas.jar
-ln -sf $(find-jar regexp) $TOMCATDIR/server/lib/regexp.jar
-ln -sf $(find-jar regexp) $TOMCATDIR/server/lib/jakarta-regexp-1.2.jar
-ln -sf $(find-jar regexp) $TOMCATDIR/server/lib/regexp-1.2.jar
-%endif
-
-ln -sf $(find-jar jaxp_parser_impl) $TOMCATDIR/common/endorsed/jaxp_parser_impl.jar
-ln -sf $(find-jar xml-commons-apis) $TOMCATDIR/common/endorsed/xml-commons-apis.jar
-ln -sf $(find-jar struts-core) $TOMCATDIR/server/webapps/admin/WEB-INF/lib/struts-core.jar
+jars="commons-daemon commons-logging-api"
+for jar in $jars; do
+ jar=$(find-jar $jar)
+ ln -sf $jar $TOMCATDIR/bin
+done
+
+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/lib
+done
+
+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
+
+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
+
+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
+# 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 51 -r -f http
-%useradd -u 51 -r -d /home/services/httpd -s /bin/false -c "HTTP User" -g http http
+%groupadd -g 234 -r -f tomcat
+%groupadd -g 237 -r -f servlet
+%useradd -u 234 -r -d /var/lib/tomcat -s /bin/false -c "Tomcat User" -g tomcat -G servlet tomcat
%post
/sbin/chkconfig --add tomcat
%postun
if [ "$1" = "0" ]; then
- %userremove http
- %groupremove http
+ %userremove tomcat
+ %groupremove tomcat
+ %groupremove servlet
fi
%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
-%{_tomcatdir}/server/webapps
-%{_tomcatdir}/webapps
+%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/juli-adapters.jar
+%{_tomcatdir}/lib/juli.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/util.jar
+
+%dir %{_tomcatdir}/webapps
+
+%{_tomcatdir}/webapps/ROOT
+
+%{_tomcatdir}/logs
%{_tomcatdir}/work
-%{_tomcatdir}/shared
-%{_tomcatdir}/temp
-%dir %{_vardir}
-# tomcat config has to be writeable because of tomacta-users.xml file and
-# Catalina dir
-%config(noreplace) %attr(775,root,http) %verify(not md5 mtime size) %{_vardir}/conf
-%dir %attr(1730,root,http) %{_vardir}/work
-%dir %attr(775,root,http) %{_vardir}/webapps
-%dir %attr(775,root,http) %{_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
+%{_vardir}/conf
%{_vardir}/logs
-%if 0
-%files doc
+%files webapp-docs
%defattr(644,root,root,755)
-%doc catalina/docs/*
-%endif
+%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,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/catalina-ws.jar
+%{_tomcatdir}/lib/jsr109.jar
+%{_tomcatdir}/lib/jaxrpc.jar
+
+%files jmx
+%defattr(644,root,root,755)
+%{_tomcatdir}/lib/catalina-jmx-remote.jar
+
+%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-juli-adapters.jar
+%{_javadir}/tomcat-juli.jar
+%{_javadir}/tomcat-util.jar
+
+%files -n java-tomcat-coyote
+%defattr(644,root,root,755)
+%{_javadir}/tomcat-coyote.jar
+
+%files -n java-servletapi
+%defattr(644,root,root,755)
+%{_javadir}/jsp-api*.jar
+%{_javadir}/servlet-api*.jar