-Summary: The Tomcat Servlet/JSP Container
-Summary(pl): Tomcat - Zasobnik servletów/JSP
-Name: jakarta-tomcat
-Version: 4.1.18
-%define base_version 4.0
-Release: 2
-License: Apache
-Group: Development/Languages/Java
-Source0: http://jakarta.apache.org/builds/%{name}-%{base_version}/release/v%{version}/src/%{name}-%{version}-src.tar.gz
-Source1: http://jakarta.apache.org/builds/%{name}-%{base_version}/release/v%{version}/src/%{name}-connectors-%{version}-src.tar.gz
-Source2: %{name}.init
-Patch0: %{name}-fixes.patch
-Patch1: %{name}-JAVA_HOME.patch
-URL: http://jakarta.apache.org/tomcat/index.html
-# required:
-BuildRequires: jdk >= 1.2
-BuildRequires: jakarta-ant >= 1.4
-BuildRequires: jaxp >= 1.1
-BuildRequires: xerces-j >= 1
-BuildRequires: jakarta-servletapi >= 4
-BuildRequires: jakarta-commons-collections
-BuildRequires: jakarta-commons-beanutils
-BuildRequires: jakarta-commons-digester
-BuildRequires: jakarta-commons-logging
-BuildRequires: jakarta-regexp
-# optional:
-BuildRequires: jakarta-commons-daemon
-BuildRequires: jakarta-commons-dbcp
-BuildRequires: jakarta-commons-modeler
-BuildRequires: jakarta-commons-pool
-BuildRequires: jdbc-stdext >= 2.0
-BuildRequires: jmx >= 1.0
-BuildRequires: jndi >= 1.2.1
-BuildRequires: jndi-provider-ldap
-BuildRequires: jaf >= 1.0.1
-BuildRequires: javamail >= 1.2
-BuildRequires: jsse >= 1.0.2
-BuildRequires: jta >= 1.0.1
-BuildRequires: tyrex >= 0.9.7
-BuildRequires: junit >= 3.7
+
+# Conditional build:
+%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-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: 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-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: 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): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
+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: jaxp >= 1.1
-Requires: xerces-j >= 1
-Requires: jakarta-servletapi >= 4
-Requires: jakarta-commons-collections
-Requires: jakarta-commons-beanutils
-Requires: jakarta-commons-digester
-Requires: jakarta-commons-logging
-Requires: jakarta-regexp
-Requires: jdbc-stdext >= 2.0
-Requires: jmx >= 1.0
-Requires: jndi >= 1.2.1
-Requires: jndi-provider-ldap
-Requires: jaf >= 1.0.1
-Requires: javamail >= 1.2
-Requires: jsse >= 1.0.2
-Requires: jta >= 1.0.1
-Requires: tyrex >= 1.0
+Requires: jsvc
+Requires: rc-scripts
+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 _javalibdir /usr/share/java
-%define _tomcatdir %{_libdir}/tomcat
+%define _tomcatdir %{_datadir}/tomcat
%define _logdir %{_var}/log
%define _vardir %{_var}/lib/tomcat
%description
-Tomcat 4.0, a server that implements the Servlet 2.3 and JSP 1.2
-Specifications from Java Software.
-
-%description -l pl
-Tomcat 4.0 - serwer implementuj±cy specyfikacje Servlet 2.3 oraz JSP
-1.2.
-
-%package doc
-Summary: The Tomcat Servlet/JSP Container documentation
-Summary(pl): Dokumentacja do Tomcata
-Group: Development/Languages/Java
-
-%description doc
+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. Tomcat is intended to be a
+collaboration of the best-of-breed developers from around the world.
+
+%description -l pl.UTF-8
+Tomcat to kontener serwletowy używany przez oficjalną implementację
+wzorcową technologii Java Servlet i JavaServer Pages. Specyfikacje
+Java Servlet i JavaServer Pages są rozwijane przez Suna zgodnie z Java
+Community Process.
+
+%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 webapp-docs
The Tomcat Servlet/JSP Container documentation.
-%description doc -l pl
-Dokumentacja do Tomcata.
+%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 -a1
+%setup -q -a100 -n apache-%{name}-%{version}-src
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+
+# 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
+
+cp -p %{SOURCE3} build.properties
%build
-if [ -z "$JAVA_HOME" ]; then
- JAVA_HOME=%{_libdir}/java
+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
-ANT_HOME=%{_javalibdir}
-export JAVA_HOME ANT_HOME
-
-cat > build.properties << EOF
-# ----- Compile Control Flags -----
-compile.debug=on
-compile.deprecation=off
-compile.optimize=on
-
-# ----- Default Base Path for Dependent Packages -----
-base.path=%{_prefix}
-
-# ----- Jakarta Regular Expressions Library, version 1.2 -----
-regexp.home=%{_javalibdir}
-regexp.lib=\${regexp.home}
-regexp.jar=\${regexp.home}/regexp.jar
-
-# ----- Jakarta Servlet API Classes (Servlet 2.3 / JSP 1.2) -----
-servlet.home=$RPM_BUILD_DIR/%{name}-%{version}-src/doc
-servlet.lib=%{_javalibdir}
-servlet.jar=\${servlet.lib}/servlet.jar
-
-# ----- Java Activation Framework (JAF), version 1.0.1 or later -----
-activation.home=%{_javalibdir}
-activation.lib=\${activation.home}
-activation.jar=\${activation.lib}/activation.jar
-
-# ----- Java API for XML Processing (JAXP), version 1.1 or later -----
-jaxp.home=%{_javalibdir}
-jaxp.lib=\${jaxp.home}
-crimson.jar=\${jaxp.lib}/crimson.jar
-jaxp.jar=\${jaxp.lib}/jaxp.jar
-xalan.jar=\${jaxp.lib}/xalan.jar
-
-# ----- Java Database Connectivity (JDBC) Optional Package, version 2.0 -----
-jdbc20ext.home=%{_javalibdir}
-jdbc20ext.lib=\${jdbc20ext.home}
-jdbc20ext.jar=\${jdbc20ext.lib}/jdbc2_0-stdext.jar
-
-# ----- Java Mail, version 1.2 or later -----
-mail.home=%{_javalibdir}
-mail.lib=\${mail.home}
-mail.jar=\${mail.lib}/mail.jar
-
-# ----- Java Management Extensions (JMX) RI, version 1.0.1 or later -----
-jmx.home=%{_javalibdir}
-jmx.lib=\${jmx.home}
-jmxri.jar=\${jmx.lib}/jmxri.jar
-
-# ----- Java Naming and Directory Interface (JNDI), version 1.2 or later -----
-jndi.home=%{_javalibdir}
-jndi.lib=\${jndi.home}
-jndi.jar=\${jndi.lib}/jndi.jar
-ldap.jar=\${jndi.lib}/ldap.jar
-
-# ----- Java Secure Sockets Extension (JSSE), version 1.0.2 or later -----
-jsse.home=%{_javalibdir}
-jsse.lib=\${jsse.home}
-jcert.jar=\${jsse.lib}/jcert.jar
-jnet.jar=\${jsse.lib}/jnet.jar
-jsse.jar=\${jsse.lib}/jsse.jar
-
-# ----- Java Transaction API (JTA), version 1.0.1 or later -----
-jta.home=%{_javalibdir}
-jta.lib=\${jta.home}
-jta.jar=\${jta.lib}/jta.jar
-
-# ----- JUnit Unit Test Suite, version 3.7 or later -----
-junit.home=%{_javalibdir}
-junit.lib=\${junit.home}
-junit.jar=\${junit.lib}/junit.jar
-
-# ----- Tyrex Data Source, version 0.9.7 -----
-tyrex.home=%{_javalibdir}
-tyrex.lib=\${tyrex.home}
-tyrex.jar=\${tyrex.lib}/tyrex.jar
-
-# ----- Xerces XML Parser, version 1.4.3 or later -----
-xerces.home=%{_javalibdir}
-xerces.lib=\${xerces.home}
-xerces.jar=\${xerces.lib}/xerces.jar
-
-# ----- Commons Collections, version 1.0 or later -----
-commons-collections.home=%{_javalibdir}
-commons-collections.lib=\${commons-collections.home}
-commons-collections.jar=\${commons-collections.lib}/commons-collections.jar
-
-# ----- Commons Beanutils, version 1.1 or later -----
-commons-beanutils.home=%{_javalibdir}
-commons-beanutils.lib=\${commons-beanutils.home}
-commons-beanutils.jar=\${commons-beanutils.lib}/commons-beanutils.jar
-
-# ----- Commons Digester, version 1.1.1 or later -----
-commons-digester.home=%{_javalibdir}
-commons-digester.lib=\${commons-digester.home}
-commons-digester.jar=\${commons-digester.lib}/commons-digester.jar
-
-# ----- Commons Logging, version 1.0.1 or later -----
-commons-logging.home=%{_javalibdir}
-commons-logging.lib=\${commons-logging.home}
-commons-logging-api.jar=\${commons-logging.lib}/commons-logging-api.jar
-commons-logging.jar=\${commons-logging.lib}/commons-logging.jar
-
-# ----- Commons Daemon, version 20020219 or later -----
-commons-daemon.home=%{_javalibdir}
-commons-daemon.lib=\${commons-daemon.home}
-commons-daemon.jar=\${commons-daemon.lib}/commons-daemon.jar
-
-# ----- Commons DBCP, version 1.0 or later -----
-commons-dbcp.home=%{_javalibdir}
-commons-dbcp.lib=\${commons-dbcp.home}
-commons-dbcp.jar=\${commons-dbcp.lib}/commons-dbcp.jar
-
-# ----- Commons Modeler, version 1.0 or later -----
-commons-modeler.home=%{_javalibdir}
-commons-modeler.lib=\${commons-modeler.home}
-commons-modeler.jar=\${commons-modeler.lib}/commons-modeler.jar
-
-# ----- Commons Pool, version 1.0 or later -----
-commons-pool.home=%{_javalibdir}
-commons-pool.lib=\${commons-pool.home}
-commons-pool.jar=\${commons-pool.lib}/commons-pool.jar
-
-
-jasper.home=jasper
-jtc.home=../jakarta-tomcat-connectors-%{version}-src
-EOF
-
-install -d doc/docs/api
-
-ln -s ../jakarta-tomcat-connectors-%{version}-src webapps/jakarta-tomcat-connectors-%{version}-src
-cd jakarta-tomcat-connectors-%{version}-src
-ln -s . jakarta-tomcat-connectors-%{version}-src
-ant
-cd ..
-
-ant dist
+
+export LC_ALL=en_US
+
+# Base package
+%ant
+
+# 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
+
+# Javadoc
+%if %{with javadoc}
+%ant javadoc
+%endif
%install
rm -rf $RPM_BUILD_ROOT
-
-install -d $RPM_BUILD_ROOT%{_tomcatdir}/bin \
- $RPM_BUILD_ROOT%{_tomcatdir}/classes \
- $RPM_BUILD_ROOT%{_tomcatdir}/common/{lib,classes} \
- $RPM_BUILD_ROOT%{_tomcatdir}/lib \
- $RPM_BUILD_ROOT%{_tomcatdir}/server/{lib,classes} \
- $RPM_BUILD_ROOT%{_tomcatdir}/webapps \
- $RPM_BUILD_ROOT%{_sysconfdir}/tomcat \
- $RPM_BUILD_ROOT%{_logdir}/tomcat \
- $RPM_BUILD_ROOT%{_vardir}/work \
- $RPM_BUILD_ROOT/etc/rc.d/init.d
-
-install build/bin/*.sh $RPM_BUILD_ROOT%{_tomcatdir}/bin
-install build/bin/bootstrap*.jar $RPM_BUILD_ROOT%{_tomcatdir}/bin
-install build/bin/tomcat*.jar $RPM_BUILD_ROOT%{_tomcatdir}/bin
-install build/common/lib/naming-*.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib
-install build/common/lib/jasper-*.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib
-install build/conf/* $RPM_BUILD_ROOT%{_sysconfdir}/tomcat
-install build/server/lib/catalina*.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib
-install build/server/lib/servlets*.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib
-install build/server/lib/tomcat*.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib
-cp -rf build/webapps $RPM_BUILD_ROOT%{_tomcatdir}
-
-ln -sf %{_logdir}/tomcat $RPM_BUILD_ROOT%{_tomcatdir}/logs
-ln -sf %{_vardir}/work $RPM_BUILD_ROOT%{_tomcatdir}/work
-ln -sf %{_sysconfdir}/tomcat $RPM_BUILD_ROOT%{_tomcatdir}/conf
+cd output/build
+
+TOMCATDIR=$RPM_BUILD_ROOT%{_tomcatdir}
+CATALINADIR=$RPM_BUILD_ROOT/var/lib/tomcat
+
+# 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 %{_javalibdir}/ant.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/ant.jar
-ln -sf %{_javalibdir}/jaxp.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/jaxp.jar
-ln -sf %{_javalibdir}/xerces.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/xerces.jar
-ln -sf %{_javalibdir}/servlet.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/servlet.jar
-ln -sf %{_javalibdir}/jdbc2_0-stdext.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/jdbc2_0.jar
-ln -sf %{_javalibdir}/jmxri.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/jmxri.jar
-ln -sf %{_javalibdir}/jndi.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/jndi.jar
-ln -sf %{_javalibdir}/ldap.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/ldap.jar
-ln -sf %{_javalibdir}/activation.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/activation.jar
-ln -sf %{_javalibdir}/jta.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/jta.jar
-ln -sf %{_javalibdir}/mail.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/mail.jar
-ln -sf %{_javalibdir}/jsse.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/jsse.jar
-
-ln -sf %{_javalibdir}/tyrex.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/tyrex.jar
-ln -sf %{_javalibdir}/junit.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/junit.jar
-
-ln -sf %{_javalibdir}/commons-collections.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/commons-collections.jar
-ln -sf %{_javalibdir}/commons-dbcp.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/commons-dbcp.jar
-ln -sf %{_javalibdir}/commons-logging-api.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/commons-logging-api.jar
-ln -sf %{_javalibdir}/commons-pool.jar $RPM_BUILD_ROOT%{_tomcatdir}/common/lib/commons-pool.jar
-
-ln -sf %{_javalibdir}/regexp.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib/regexp.jar
-ln -sf %{_javalibdir}/commons-beanutils.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib/commons-beanutils.jar
-ln -sf %{_javalibdir}/commons-digester.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib/commons-digester.jar
-ln -sf %{_javalibdir}/commons-logging.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib/commons-logging.jar
-ln -sf %{_javalibdir}/commons-modeler.jar $RPM_BUILD_ROOT%{_tomcatdir}/server/lib/commons-modeler.jar
-
-ln -sf %{_javalibdir}/commons-daemon.jar $RPM_BUILD_ROOT%{_tomcatdir}/bin/commons-daemon.jar
-
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/tomcat
+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 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
+%service tomcat restart
+
+%preun
+if [ "$1" = "0" ]; then
+ %service tomcat stop
+ /sbin/chkconfig --del tomcat
+fi
+
+%postun
+if [ "$1" = "0" ]; then
+ %userremove tomcat
+ %groupremove tomcat
+ %groupremove servlet
+fi
+
%files
%defattr(644,root,root,755)
-%doc *.txt LICENSE
+%doc KEYS RELEASE-NOTES
+%attr(754,root,root) /etc/rc.d/init.d/tomcat
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/tomcat
+%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
%attr(755,root,root) %{_tomcatdir}/bin/*.sh
%{_tomcatdir}/bin/*.jar
-%dir %{_tomcatdir}/classes
-%dir %{_tomcatdir}/common
-%dir %{_tomcatdir}/common/classes
-%{_tomcatdir}/common/lib
-%{_tomcatdir}/conf
-%{_tomcatdir}/lib
+%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
-%dir %{_tomcatdir}/server
-%dir %{_tomcatdir}/server/classes
-%{_tomcatdir}/server/lib
-%{_tomcatdir}/webapps
%{_tomcatdir}/work
-# tomcat wants to regenerate tomcat-users.xml
-%attr(775,root,http) %dir %{_sysconfdir}/tomcat
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tomcat/*
-%attr(754,root,root) /etc/rc.d/init.d/tomcat
-%dir %{_vardir}
-%attr(1730,root,http) %dir %{_vardir}/work
-%attr(1730,root,http) %dir %{_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
+
+%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,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 doc
+%files -n java-servletapi
%defattr(644,root,root,755)
-%doc catalina/docs/*
+%{_javadir}/jsp-api*.jar
+%{_javadir}/servlet-api*.jar