# Conditional build:
%bcond_without javadoc # skip building javadocs
+%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.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: 7.0.41
-Release: 5
+Version: 7.0.70
+Release: 1
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
+# Source0-md5: 0f56c888df5002cce25fce91634a65c9
Source1: apache-%{name}.init
Source2: apache-%{name}.sysconfig
Source3: %{name}-build.properties
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: e5cfa8cca13152d7545fde6b1783c60a
+# 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
+Patch8: tomcat-CVE-2016-5388.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-eclipse-jdt >= 4.4.2
BuildRequires: java-geronimo-spec-jaxrpc
BuildRequires: java-jdbc-mysql
BuildRequires: java-junit
BuildRequires: java-log4j
BuildRequires: java-mail
-BuildRequires: jdk
+BuildRequires: jdk >= 1.6
BuildRequires: jpackage-utils
+BuildRequires: rpm >= 4.4.9-56
BuildRequires: rpm-javaprov
-BuildRequires: rpmbuild(macros) >= 1.553
+BuildRequires: rpmbuild(macros) >= 1.657
BuildRequires: sed >= 4.0
Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/groupdel
Requires: jsvc
Requires: rc-scripts
Suggests: logrotate
-Suggests: tomcat-native >= 1.1.27
+Suggests: tomcat-native >= %{tomcatnatver}
Provides: group(servlet)
Provides: group(tomcat)
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 _logdir %{_var}/log
%define _vardir %{_var}/lib/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
Implementation for the Java Servlet and JavaServer Pages technologies.
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
# Prepare java-commmons-logging sources
-mkdir -p output/extras/logging
+install -d output/extras/logging
mv commons-logging-%{jclver}-src output/extras/logging
cd output/extras/logging/commons-logging-%{jclver}-src
%undos build.xml
rm bin/*.bat
rm bin/{startup,shutdown}.sh
-cp -a %{SOURCE3} build.properties
-cat >>build.properties <<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
+cp -p %{SOURCE3} build.properties
%build
+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
+
export LC_ALL=en_US
# Base package
-%ant \
- -Drpm.javadir=%{_javadir} \
- -Drpm.libdir=%{_libdir}
-
-# Extras
-mkdir -p output/extras/webservices
+%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 -Dcommons-logging-version=%{jclver} extras
+%ant extras
+%endif
# Javadoc
%if %{with javadoc}
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}
+ $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 -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 %{_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
ln -s %{_javadir}/geronimo-spec-jaxrpc.jar $TOMCATDIR/lib/jaxrpc.jar
ln -s %{_javadir}/jsr109.jar $TOMCATDIR/lib/jsr109.jar
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
+ 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}
+ mv %{_vardir}/conf %{_sysconfdir}/%{name}
fi
ln -s %{_sysconfdir}/%{name} %{_vardir}/conf
fi
%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}/*.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
%{_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/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
%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 webservices
%defattr(644,root,root,755)
-%{_tomcatdir}/lib/catalina-ws.jar
%{_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)
%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
-%{_javadir}/tomcat-util.jar
+%endif
%files -n java-tomcat-coyote
%defattr(644,root,root,755)