diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index 471c3e4..095e3b5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ apache-tomcat-*-src.tar.gz -results_tomcat -tomcat*.src.rpm -apache-tomcat-*-src/ +apache-tomcat-*-src +results_tomcat/ +tomcat*src.rpm diff --git a/.packit.yaml b/.packit.yaml deleted file mode 100644 index 2986867..0000000 --- a/.packit.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# See the documentation for more information: -# https://packit.dev/docs/configuration/ - -create_sync_note: false - -upstream_project_url: https://github.com/apache/tomcat.git - -issue_repository: https://src.fedoraproject.org/rpms/tomcat - -jobs: -# https://packit.dev/docs/configuration/downstream/pull_from_upstream -# Make sure there is Fedora mapping for the 'tomcat' project in https://release-monitoring.org/projects/search/?pattern=tomcat -# Make sure Monitoring status on the left side at https://src.fedoraproject.org/rpms/tomcat is set to Monitoring -- job: pull_from_upstream - trigger: release - dist_git_branches: - - fedora-branched - -# https://packit.dev/docs/configuration/downstream/koji_build -- job: koji_build - trigger: commit - dist_git_branches: - - fedora-all - -- job: koji_build - trigger: commit - scratch: true - allowed_pr_authors: ['all_admins', 'all_committers'] - allowed_committers: ['all_admins', 'all_committers'] - dist_git_branches: - - fedora-all - -# https://packit.dev/docs/configuration/downstream/bodhi_update -- job: bodhi_update - trigger: commit - allowed_builders: ['packit', 'all_admins'] - dist_git_branches: - - fedora-branched # rawhide updates are created automatically diff --git a/change-defaults-for-CVE-2020-1938.patch b/change-defaults-for-CVE-2020-1938.patch new file mode 100644 index 0000000..3d40389 --- /dev/null +++ b/change-defaults-for-CVE-2020-1938.patch @@ -0,0 +1,222 @@ +diff -up ./java/org/apache/coyote/ajp/AbstractAjpProtocol.java.orig ./java/org/apache/coyote/ajp/AbstractAjpProtocol.java +--- ./java/org/apache/coyote/ajp/AbstractAjpProtocol.java.orig 2020-03-16 04:41:13.000000000 -0400 ++++ ./java/org/apache/coyote/ajp/AbstractAjpProtocol.java 2020-04-22 15:42:50.544106513 -0400 +@@ -134,7 +134,7 @@ public abstract class AbstractAjpProtoco + } + + +- private boolean secretRequired = true; ++ private boolean secretRequired = false; + public void setSecretRequired(boolean secretRequired) { + this.secretRequired = secretRequired; + } +diff -up ./java/org/apache/coyote/ajp/AjpAprProtocol.java.orig ./java/org/apache/coyote/ajp/AjpAprProtocol.java +--- ./java/org/apache/coyote/ajp/AjpAprProtocol.java.orig 2020-03-16 04:41:13.000000000 -0400 ++++ ./java/org/apache/coyote/ajp/AjpAprProtocol.java 2020-04-22 15:42:50.544106513 -0400 +@@ -20,7 +20,6 @@ import org.apache.coyote.AbstractProtoco + import org.apache.coyote.Processor; + import org.apache.juli.logging.Log; + import org.apache.juli.logging.LogFactory; +-import org.apache.tomcat.util.compat.JreCompat; + import org.apache.tomcat.util.net.AbstractEndpoint; + import org.apache.tomcat.util.net.AprEndpoint; + import org.apache.tomcat.util.net.AprEndpoint.Handler; +@@ -62,7 +61,6 @@ public class AjpAprProtocol extends Abst + + public AjpAprProtocol() { + endpoint = new AprEndpoint(); +- endpoint.setAddress(JreCompat.getInstance().getLoopbackAddress()); + cHandler = new AjpConnectionHandler(this); + ((AprEndpoint) endpoint).setHandler(cHandler); + setSoLinger(Constants.DEFAULT_CONNECTION_LINGER); +diff -up ./java/org/apache/coyote/ajp/AjpNioProtocol.java.orig ./java/org/apache/coyote/ajp/AjpNioProtocol.java +--- ./java/org/apache/coyote/ajp/AjpNioProtocol.java.orig 2020-03-16 04:41:13.000000000 -0400 ++++ ./java/org/apache/coyote/ajp/AjpNioProtocol.java 2020-04-22 15:42:50.545106511 -0400 +@@ -23,7 +23,6 @@ import org.apache.coyote.AbstractProtoco + import org.apache.coyote.Processor; + import org.apache.juli.logging.Log; + import org.apache.juli.logging.LogFactory; +-import org.apache.tomcat.util.compat.JreCompat; + import org.apache.tomcat.util.net.AbstractEndpoint; + import org.apache.tomcat.util.net.NioChannel; + import org.apache.tomcat.util.net.NioEndpoint; +@@ -57,7 +56,6 @@ public class AjpNioProtocol extends Abst + + public AjpNioProtocol() { + endpoint = new NioEndpoint(); +- endpoint.setAddress(JreCompat.getInstance().getLoopbackAddress()); + cHandler = new AjpConnectionHandler(this); + ((NioEndpoint) endpoint).setHandler(cHandler); + setSoLinger(Constants.DEFAULT_CONNECTION_LINGER); +diff -up ./java/org/apache/coyote/ajp/AjpProtocol.java.orig ./java/org/apache/coyote/ajp/AjpProtocol.java +--- ./java/org/apache/coyote/ajp/AjpProtocol.java.orig 2020-03-16 04:41:13.000000000 -0400 ++++ ./java/org/apache/coyote/ajp/AjpProtocol.java 2020-04-22 15:42:50.545106511 -0400 +@@ -22,7 +22,6 @@ import org.apache.coyote.AbstractProtoco + import org.apache.coyote.Processor; + import org.apache.juli.logging.Log; + import org.apache.juli.logging.LogFactory; +-import org.apache.tomcat.util.compat.JreCompat; + import org.apache.tomcat.util.net.AbstractEndpoint; + import org.apache.tomcat.util.net.JIoEndpoint; + import org.apache.tomcat.util.net.JIoEndpoint.Handler; +@@ -58,7 +57,6 @@ public class AjpProtocol extends Abstrac + + public AjpProtocol() { + endpoint = new JIoEndpoint(); +- endpoint.setAddress(JreCompat.getInstance().getLoopbackAddress()); + cHandler = new AjpConnectionHandler(this); + ((JIoEndpoint) endpoint).setHandler(cHandler); + setSoLinger(Constants.DEFAULT_CONNECTION_LINGER); +diff -up ./java/org/apache/tomcat/util/compat/Jre7Compat.java.orig ./java/org/apache/tomcat/util/compat/Jre7Compat.java +--- ./java/org/apache/tomcat/util/compat/Jre7Compat.java.orig 2020-03-16 04:41:15.000000000 -0400 ++++ ./java/org/apache/tomcat/util/compat/Jre7Compat.java 2020-04-22 15:42:50.546106509 -0400 +@@ -20,7 +20,6 @@ import java.io.OutputStream; + import java.lang.reflect.Constructor; + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; +-import java.net.InetAddress; + import java.sql.CallableStatement; + import java.sql.Connection; + import java.sql.DatabaseMetaData; +@@ -57,7 +56,6 @@ class Jre7Compat extends JreCompat { + private static final Method resultSetGetObjectName; + private static final Method statementCloseOnCompletion; + private static final Method statementIsCloseOnCompletion; +- private static final Method getLoopbackAddress; + + static { + Method m1 = null; +@@ -74,7 +72,6 @@ class Jre7Compat extends JreCompat { + Method m12 = null; + Method m13 = null; + Method m14 = null; +- Method m15 = null; + Constructor c = null; + try { + // Order is important for the error handling below. +@@ -94,7 +91,6 @@ class Jre7Compat extends JreCompat { + m12 = ResultSet.class.getMethod("getObject", String.class, Class.class); + m13 = Statement.class.getMethod("closeOnCompletion"); + m14 = Statement.class.getMethod("isCloseOnCompletion"); +- m15 = InetAddress.class.getMethod("getLoopbackAddress"); + } catch (SecurityException e) { + // Should never happen + log.error(sm.getString("jre7Compat.unexpected"), e); +@@ -122,7 +118,6 @@ class Jre7Compat extends JreCompat { + resultSetGetObjectName = m12; + statementCloseOnCompletion = m13; + statementIsCloseOnCompletion = m14; +- getLoopbackAddress = m15; + } + + +@@ -357,20 +352,6 @@ class Jre7Compat extends JreCompat { + } + } + +- +- @Override +- public InetAddress getLoopbackAddress() { +- try { +- return (InetAddress) getLoopbackAddress.invoke(null); +- } catch (IllegalArgumentException e) { +- throw new UnsupportedOperationException(e); +- } catch (IllegalAccessException e) { +- throw new UnsupportedOperationException(e); +- } catch (InvocationTargetException e) { +- throw new UnsupportedOperationException(e); +- } +- } +- + + // Java 9 methods + +diff -up ./java/org/apache/tomcat/util/compat/JreCompat.java.orig ./java/org/apache/tomcat/util/compat/JreCompat.java +--- ./java/org/apache/tomcat/util/compat/JreCompat.java.orig 2020-03-16 04:41:15.000000000 -0400 ++++ ./java/org/apache/tomcat/util/compat/JreCompat.java 2020-04-22 15:42:50.547106507 -0400 +@@ -21,10 +21,8 @@ import java.io.IOException; + import java.io.OutputStream; + import java.lang.reflect.AccessibleObject; + import java.lang.reflect.Method; +-import java.net.InetAddress; + import java.net.URL; + import java.net.URLConnection; +-import java.net.UnknownHostException; + import java.sql.CallableStatement; + import java.sql.Connection; + import java.sql.DatabaseMetaData; +@@ -234,32 +232,6 @@ public class JreCompat { + } + + +- public InetAddress getLoopbackAddress() { +- // Javadoc for getByName() states that calling with null will return one +- // of the loopback addresses +- InetAddress result = null; +- try { +- result = InetAddress.getByName(null); +- } catch (UnknownHostException e) { +- // This would be unusual but ignore it in this case. +- } +- if (result == null) { +- // Fallback to default IPv4 loopback address. +- // Not perfect but good enough and if the address is not valid the +- // bind will fail later with an appropriate error message +- try { +- result = InetAddress.getByName("127.0.0.1"); +- } catch (UnknownHostException e) { +- // Unreachable. +- // For text representations of IP addresses only the format is +- // checked. +- } +- } +- +- return result; +- } +- +- + // Java 6 implementation of Java 8 methods + + public static boolean isJre8Available() { +diff -up ./webapps/docs/changelog.xml.orig ./webapps/docs/changelog.xml +--- ./webapps/docs/changelog.xml.orig 2020-03-16 04:41:18.000000000 -0400 ++++ ./webapps/docs/changelog.xml 2020-04-22 15:42:50.554106492 -0400 +@@ -260,14 +260,10 @@ + Disable (comment out in server.xml) the AJP/1.3 connector by default. + (markt) + +- +- Change the default bind address for the AJP/1.3 connector to be the +- loopback address. (markt) +- + + Rename the requiredSecret attribute of the AJP/1.3 + Connector to secret and add a new attribute +- secretRequired that defaults to true. When ++ secretRequired that defaults to false. When + secretRequired is true the AJP/1.3 Connector + will not start unless the secret attribute is configured to + a non-null, non-zero length String. (markt) +diff -up ./webapps/docs/config/ajp.xml.orig ./webapps/docs/config/ajp.xml +--- ./webapps/docs/config/ajp.xml.orig 2020-04-22 15:42:50.557106486 -0400 ++++ ./webapps/docs/config/ajp.xml 2020-04-22 15:44:54.425843527 -0400 +@@ -306,7 +306,9 @@ + +

For servers with more than one IP address, this attribute specifies + which address will be used for listening on the specified port. By +- default, the connector will listen on the loopback address. Unless the JVM ++ default, this port will be used on all IP addresses associated with the ++ server. A value of 127.0.0.1 indicates that the Connector ++ will only listen on the loopback interface. Unless the JVM + is configured otherwise using system properties, the Java based connectors + (BIO, NIO) will listen on both IPv4 and IPv6 addresses when configured + with either 0.0.0.0 or ::. The APR/native +@@ -483,7 +485,7 @@ + the secret attribute is required to be specified for the + AJP Connector to start. It does not control whether + workers are required to provide the secret. The default value is +- true. This attribute should only be set to false ++ false. This attribute should only be set to false + when the Connector is used on a trusted network.

+
+ diff --git a/ci.fmf b/ci.fmf deleted file mode 100644 index c5aa0e0..0000000 --- a/ci.fmf +++ /dev/null @@ -1 +0,0 @@ -resultsdb-testcase: separate diff --git a/el-api-OSGi-MANIFEST.MF b/el-api-OSGi-MANIFEST.MF new file mode 100644 index 0000000..69b797f --- /dev/null +++ b/el-api-OSGi-MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Export-Package: javax.el;version="2.2.0" +Bundle-Vendor: %bundleProvider +Bundle-ClassPath: . +Bundle-Version: 2.2.0 +Bundle-Name: %bundleName +Bundle-Localization: plugin +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: javax.el +DynamicImport-Package: org.apache.el +Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J + 2SE-1.3 + diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index 0553cb6..0000000 --- a/gating.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- !Policy -product_versions: - - fedora-rawhide -decision_contexts: - - bodhi_update_push_stable - - bodhi_update_push_testing -subject_type: koji_build -rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpmdeplint.functional} -product_versions: - - fedora-* -decision_contexts: - - bodhi_update_push_stable - - bodhi_update_push_testing -subject_type: koji_build -rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis} - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.installability.functional} - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/javapackages.functional} - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/smoke.functional} diff --git a/jasper-OSGi-MANIFEST.MF b/jasper-OSGi-MANIFEST.MF new file mode 100644 index 0000000..9a3d98a --- /dev/null +++ b/jasper-OSGi-MANIFEST.MF @@ -0,0 +1,40 @@ +Manifest-Version: 1.0 +Export-Package: org.apache.jasper;version="7.0.21",org.apache.jasper.c + ompiler;version="7.0.21",org.apache.jasper.compiler.tagplugin;version + ="7.0.21",org.apache.jasper.resources;version="7.0.21",org.apache.jas + per.runtime;version="7.0.21",org.apache.jasper.security;version="7.0. + 19",org.apache.jasper.servlet;version="7.0.21",org.apache.jasper.tagp + lugins.jstl;version="7.0.21",org.apache.jasper.tagplugins.jstl.core;v + ersion="7.0.21",org.apache.jasper.util;version="7.0.21",org.apache.ja + sper.xmlparser;version="7.0.21" +Bundle-Vendor: %bundleProvider +Bundle-ClassPath: . +Bundle-Version: 7.0.21 +Bundle-Localization: plugin +Bundle-Name: %bundleName +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.apache.jasper +Import-Package: javax.servlet;version="[2.4.0, 3.0.0]",javax.servlet.h + ttp;version="[2.4.0, 3.0.0]",javax.servlet.jsp;version="[2.0.0, 2.2.0 + ]",javax.servlet.jsp.el;version="[2.0.0, 2.2.0]",javax.servlet.jsp.re + sources;version="[2.0.0, 2.2.0]",javax.servlet.jsp.tagext;version="[2 + .0.0, 2.2.0]",javax.servlet.resources;version="[2.4.0, 3.0.0]",javax. + xml.parsers,org.apache.commons.el;version="[1.0.0,2.0.0)",org.apache. + commons.logging;version="[1.0.0,2.0.0)",org.apache.tools.ant;resoluti + on:=optional,org.apache.tools.ant.taskdefs;resolution:=optional,org.a + pache.tools.ant.types;resolution:=optional,org.apache.tools.ant.util; + resolution:=optional,org.w3c.dom,org.xml.sax,org.xml.sax.ext,org.xml. + sax.helpers,org.apache.tomcat;version="7.0.21",org.apache.juli.loggin + g;version="7.0.21",javax.el;version="2.2.0",org.eclipse.jdt.internal. + compiler,org.eclipse.jdt.internal.compiler.parser,org.eclipse.jdt.int + ernal.compiler.parser.diagnose,org.eclipse.jdt.internal.compiler.flow + ,org.eclipse.jdt.internal.compiler.util,org.eclipse.jdt.internal.comp + iler.impl,org.eclipse.jdt.internal.compiler.lookup,org.eclipse.jdt.in + ternal.compiler.codegen,org.eclipse.jdt.internal.compiler.batch,org.e + clipse.jdt.internal.compiler.classfmt,org.eclipse.jdt.internal.compil + er.ast,org.eclipse.jdt.internal.compiler.problem,org.eclipse.jdt.inte + rnal.compiler.env,org.eclipse.jdt.internal.core.util,org.eclipse.jdt. + core.compiler +Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J + 2SE-1.3 + diff --git a/jasper-el-OSGi-MANIFEST.MF b/jasper-el-OSGi-MANIFEST.MF new file mode 100644 index 0000000..fd2879f --- /dev/null +++ b/jasper-el-OSGi-MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Export-Package: org.apache.el;version="7.0.21" +Bundle-Vendor: %bundleProvider +Bundle-ClassPath: . +Bundle-Version: 7.0.21 +Bundle-Name: %bundleName +Bundle-Localization: plugin +Bundle-ManifestVersion: 2 +Import-Package: javax.el;version="2.2" +Bundle-SymbolicName: org.apache.el +Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J + 2SE-1.3 + diff --git a/jsp-api-OSGi-MANIFEST.MF b/jsp-api-OSGi-MANIFEST.MF new file mode 100644 index 0000000..62bc00d --- /dev/null +++ b/jsp-api-OSGi-MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Bundle-Vendor: %bundleProvider +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3 +Bundle-Name: %bundleName +Bundle-SymbolicName: javax.servlet.jsp +Export-Package: javax.servlet.jsp; version=2.2,javax.servlet.jsp.el; v + ersion=2.2,javax.servlet.jsp.resources; version=2.2,javax.servlet.jsp + .tagext; version=2.2 +Bundle-Version: 2.2.0.v200806031607 +Bundle-ManifestVersion: 2 +Import-Package: javax.servlet; version=3.0,javax.servlet.http; version + =3.0,javax.servlet.resources; version=3.0,javax.el;version="2.2.0" diff --git a/module-start-up-parameters.conf b/module-start-up-parameters.conf deleted file mode 100644 index 7f8652a..0000000 --- a/module-start-up-parameters.conf +++ /dev/null @@ -1,8 +0,0 @@ -# Add the module start-up parameters required by Tomcat -JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.lang=ALL-UNNAMED" -JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.io=ALL-UNNAMED" -JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.util=ALL-UNNAMED" -JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.util.concurrent=ALL-UNNAMED" -JAVA_OPTS="$JAVA_OPTS --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" -export JAVA_OPTS - diff --git a/plans/javapackages.fmf b/plans/javapackages.fmf deleted file mode 100644 index 86bfcea..0000000 --- a/plans/javapackages.fmf +++ /dev/null @@ -1,7 +0,0 @@ -summary: Run javapackages-specific tests -discover: - how: fmf - url: https://src.fedoraproject.org/tests/javapackages - ref: f42 -execute: - how: tmt diff --git a/plans/smoke.fmf b/plans/smoke.fmf deleted file mode 100644 index 039f41a..0000000 --- a/plans/smoke.fmf +++ /dev/null @@ -1,5 +0,0 @@ -discover: - how: fmf - url: https://src.fedoraproject.org/tests/tomcat -execute: - how: tmt diff --git a/rhbz-1857043.patch b/rhbz-1857043.patch deleted file mode 100644 index 4028ee1..0000000 --- a/rhbz-1857043.patch +++ /dev/null @@ -1,215 +0,0 @@ ---- build.xml.orig 2024-08-02 18:14:43.000000000 +0300 -+++ build.xml 2024-08-19 13:56:38.991730088 +0300 -@@ -1121,7 +1121,7 @@ - filesDir="${tomcat.classes}" - filesId="files.annotations-api" - manifest="${tomcat.manifests}/annotations-api.jar.manifest" -- addOSGi="true" /> -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - -+ addOSGi="false" /> - - - - - -+ - - - diff --git a/tomcat-10.1-catalina-policy.patch b/tomcat-10.1-catalina-policy.patch deleted file mode 100644 index 3254968..0000000 --- a/tomcat-10.1-catalina-policy.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- conf/catalina.policy.orig 2024-05-22 16:12:23.809886452 +0300 -+++ conf/catalina.policy 2024-05-22 16:14:38.913939654 +0300 -@@ -55,6 +55,14 @@ - permission java.security.AllPermission; - }; - -+// ========== RHEL SPECIFIC CODE PERMISSIONS ======================================= -+ -+// Allowing everything in /usr/share/java allows too many unknowns to be permitted -+// Specifying the individual jars that tomcat needs to function with the security manager -+// is the safest way forward. -+grant codeBase "file:/usr/share/java/ecj/ecj.jar" { -+ permission java.security.AllPermission; -+}; - - // ========== CATALINA CODE PERMISSIONS ======================================= diff --git a/tomcat-10.1.conf b/tomcat-10.1.conf deleted file mode 100644 index c83305a..0000000 --- a/tomcat-10.1.conf +++ /dev/null @@ -1,42 +0,0 @@ -# System-wide configuration file for tomcat services -# This will be loaded by systemd as an environment file, -# so please keep the syntax. For shell expansion support -# place your custom files as /etc/tomcat/conf.d/*.conf -# -# There are 2 "classes" of startup behavior in this package. -# The old one, the default service named tomcat.service. -# The new named instances are called tomcat@instance.service. -# -# Use this file to change default values for all services. -# Change the service specific ones to affect only one service. -# For tomcat.service it's /etc/sysconfig/tomcat, for -# tomcat@instance it's /etc/sysconfig/tomcat@instance. - -# This variable is used to figure out if config is loaded or not. -TOMCAT_CFG_LOADED="1" - -# In new-style instances, if CATALINA_BASE isn't specified, it will -# be constructed by joining TOMCATS_BASE and NAME. -TOMCATS_BASE="/var/lib/tomcats/" - -# Where your java installation lives -JAVA_HOME="/usr/lib/jvm/jre" - -# Where your tomcat installation lives -CATALINA_HOME="@@@TCHOME@@@" - -# System-wide tmp -CATALINA_TMPDIR="/var/cache/tomcat/temp" - -# You can change your tomcat locale here -#LANG="en_US" - -# Run tomcat under the Java Security Manager -SECURITY_MANAGER="false" - -# If you wish to further customize your tomcat environment, -# put your own definitions here -# (i.e. LD_LIBRARY_PATH for some jdbc drivers) - -# You can also pass parameters to Java here by defining JAVA_OPTS variable -# (e.g. JAVA_OPTS="-Xminf0.1 -Xmaxf0.3") diff --git a/tomcat-10.1.logrotate b/tomcat-10.1.logrotate deleted file mode 100644 index 082092a..0000000 --- a/tomcat-10.1.logrotate +++ /dev/null @@ -1,11 +0,0 @@ -# This is an example config only and is disabled by default -# If you wish to use it, you'll need to update /etc/tomcat/logging.properties -# to prevent catalina*.log from being rotated by Tomcat -@@@TCLOG@@@/catalina*.log { - copytruncate - weekly - rotate 52 - compress - missingok - create 0644 tomcat tomcat -} diff --git a/tomcat-10.1.service b/tomcat-10.1.service deleted file mode 100644 index 832e7c6..0000000 --- a/tomcat-10.1.service +++ /dev/null @@ -1,20 +0,0 @@ -# Systemd unit file for default tomcat -# -# To create clones of this service: -# DO NOTHING, use tomcat@.service instead. - -[Unit] -Description=Apache Tomcat Web Application Container -After=syslog.target network.target - -[Service] -Type=simple -EnvironmentFile=/etc/tomcat/tomcat.conf -Environment="NAME=" -EnvironmentFile=-/etc/sysconfig/tomcat -ExecStart=/usr/libexec/tomcat/server start -SuccessExitStatus=143 -User=tomcat - -[Install] -WantedBy=multi-user.target diff --git a/tomcat-10.1.sysconfig b/tomcat-10.1.sysconfig deleted file mode 100644 index 3117bf7..0000000 --- a/tomcat-10.1.sysconfig +++ /dev/null @@ -1,11 +0,0 @@ -# Service-specific configuration file for tomcat. This will be sourced by -# systemd for the default service (tomcat.service) -# If you want to customize named instance, make a similar file -# and name it tomcat@instancename. - -# You will not need to set this, usually. For default service it equals -# CATALINA_HOME. For named service, it equals ${TOMCATS_BASE}${NAME} -#CATALINA_BASE="@@@TCHOME@@@" - -# Please take a look at /etc/tomcat/tomcat.conf to have an idea what you -# can override. diff --git a/tomcat-10.1.wrapper b/tomcat-10.1.wrapper deleted file mode 100644 index c97cb85..0000000 --- a/tomcat-10.1.wrapper +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -if [ "$1" = "version" ]; then - . /usr/libexec/tomcat/preamble - exec ${JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \ - org.apache.catalina.util.ServerInfo -fi - -SRV="tomcat" -if [ -n "$2" ]; then - SRV="tomcat@$2" -fi - -if [ "$1" = "start" ]; then - systemctl start ${SRV}.service -elif [ "$1" = "stop" ]; then - systemctl stop ${SRV}.service -elif [ "$1" = "version" ]; then - ${JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \ - org.apache.catalina.util.ServerInfo -else - echo "Usage: $0 {start|stop|version} [server-id]" - exit 1 -fi diff --git a/tomcat-10.1-bootstrap-MANIFEST.MF.patch b/tomcat-7.0-bootstrap-MANIFEST.MF.patch similarity index 100% rename from tomcat-10.1-bootstrap-MANIFEST.MF.patch rename to tomcat-7.0-bootstrap-MANIFEST.MF.patch diff --git a/tomcat-7.0-catalina-policy.patch b/tomcat-7.0-catalina-policy.patch new file mode 100644 index 0000000..494e696 --- /dev/null +++ b/tomcat-7.0-catalina-policy.patch @@ -0,0 +1,37 @@ +--- conf/catalina.policy.orig 2016-08-05 11:13:17.192398668 -0400 ++++ conf/catalina.policy 2016-08-05 11:13:40.855396127 -0400 +@@ -51,6 +51,34 @@ + }; + + ++// ========== RHEL SPECIFIC CODE PERMISSIONS ======================================= ++ ++// Allowing everything in /usr/share/java allows too many unknowns to be permitted ++// Specifying the individual jars that tomcat needs to function with the security manager ++// is the safest way forward. ++grant codeBase "file:/usr/share/java/tomcat-el-2.2-api.jar" { ++ permission java.security.AllPermission; ++}; ++grant codeBase "file:/usr/share/java/tomcat-jsp-2.2-api.jar" { ++ permission java.security.AllPermission; ++}; ++grant codeBase "file:/usr/share/java/tomcat-servlet-3.0-api.jar" { ++ permission java.security.AllPermission; ++}; ++grant codeBase "file:/usr/share/java/jakarta-commons-collections.jar" { ++ permission java.security.AllPermission; ++}; ++grant codeBase "file:/usr/share/java/jakarta-commons-dbcp.jar" { ++ permission java.security.AllPermission; ++}; ++grant codeBase "file:/usr/share/java/ecj.jar" { ++ permission java.security.AllPermission; ++}; ++grant codeBase "file:/usr/share/java/log4j.jar" { ++ permission java.security.AllPermission; ++}; ++ ++ + // ========== CATALINA CODE PERMISSIONS ======================================= + + diff --git a/tomcat-10.1-digest.script b/tomcat-7.0-digest.script similarity index 94% rename from tomcat-10.1-digest.script rename to tomcat-7.0-digest.script index ce4aa0f..86f05ec 100644 --- a/tomcat-10.1-digest.script +++ b/tomcat-7.0-digest.script @@ -34,7 +34,7 @@ export CLASSPATH MAIN_CLASS="org.apache.catalina.startup.Tool" BASE_FLAGS="-Dcatalina.home=\"$CATALINA_HOME\"" BASE_OPTIONS="" -BASE_JARS="commons-daemon tomcat/catalina servlet tomcat/tomcat-util tomcat/tomcat-coyote tomcat/tomcat-api tomcat/tomcat-util-scan" +BASE_JARS="commons-daemon tomcat/catalina servlet tomcat/tomcat-util tomcat/tomcat-coyote" # Set parameters set_classpath $BASE_JARS diff --git a/tomcat-7.0-jsvc.wrapper b/tomcat-7.0-jsvc.wrapper new file mode 100644 index 0000000..3bcff1e --- /dev/null +++ b/tomcat-7.0-jsvc.wrapper @@ -0,0 +1,89 @@ +#!/bin/bash + +if [ -r /usr/share/java-utils/java-functions ]; then + . /usr/share/java-utils/java-functions +else + echo "Can't read Java functions library, aborting" + exit 1 +fi + +# Get the tomcat config (use this for environment specific settings) +# if $TOMCAT_CFG wasn't already loaded +if [ -z "${TOMCAT_CFG_LOADED}" ]; then + if [ -z "${TOMCAT_CFG}" ]; then + TOMCAT_CFG="/etc/tomcat/tomcat.conf" + fi + + if [ -r "$TOMCAT_CFG" ]; then + . $TOMCAT_CFG + fi +fi + +set_javacmd + +# CLASSPATH munging +if [ -n "$JSSE_HOME" ]; then + CLASSPATH="${CLASSPATH}:$(build-classpath jcert jnet jsse 2>/dev/null)" +fi +CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/bootstrap.jar" +CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar" +CLASSPATH="${CLASSPATH}:$(build-classpath commons-daemon 2>/dev/null)" + +# if jsvc installed and USE_JSVC=true +# then use jsvc instead of calling java directly +if [ -x /usr/bin/jsvc ]; then + # Command to use for version so it doesn't use jsvc + VER_JAVACMD=$JAVACMD + + JAVACMD="/usr/bin/jsvc -nodetach -user ${TOMCAT_USER} -outfile ${CATALINA_BASE}/logs/catalina.out -errfile ${CATALINA_BASE}/logs/catalina.out" + if [ "$1" = "stop" ]; then + JAVACMD="${JAVACMD} -stop" + fi +fi + +if [ "$1" = "start" ]; then + ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ + -classpath "$CLASSPATH" \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ + -Djava.io.tmpdir="$CATALINA_TMPDIR" \ + -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ + -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ + org.apache.catalina.startup.Bootstrap start \ + >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & + if [ ! -z "$CATALINA_PID" ]; then + echo $! > $CATALINA_PID + fi +elif [ "$1" = "start-security" ]; then + ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ + -classpath "$CLASSPATH" \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ + -Djava.io.tmpdir="$CATALINA_TMPDIR" \ + -Djava.security.manager \ + -Djava.security.policy=="${CATALINA_BASE}/conf/catalina.policy" \ + -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ + -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ + org.apache.catalina.startup.Bootstrap start \ + >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & + if [ ! -z "$CATALINA_PID" ]; then + echo $! > $CATALINA_PID + fi +elif [ "$1" = "stop" ]; then + ${JAVACMD} $JAVA_OPTS \ + -classpath "$CLASSPATH" \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ + -Djava.io.tmpdir="$CATALINA_TMPDIR" \ + org.apache.catalina.startup.Bootstrap stop \ + >> ${CATALINA_BASE}/logs/catalina.out 2>&1 +elif [ "$1" = "version" ]; then + ${VER_JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \ + org.apache.catalina.util.ServerInfo +else + echo "Usage: $0 {start|start-security|stop|version}" + exit 1 +fi diff --git a/tomcat-7.0-log4j.properties b/tomcat-7.0-log4j.properties new file mode 100644 index 0000000..1252a64 --- /dev/null +++ b/tomcat-7.0-log4j.properties @@ -0,0 +1,11 @@ +log4j.rootLogger=debug, R +log4j.appender.R=org.apache.log4j.RollingFileAppender +log4j.appender.R.File=${catalina.home}/logs/tomcat.log +log4j.appender.R.MaxFileSize=10MB +log4j.appender.R.MaxBackupIndex=10 +log4j.appender.R.layout=org.apache.log4j.PatternLayout +log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n +log4j.logger.org.apache.catalina=DEBUG, R +log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R +log4j.logger.org.apache.catalina.core=DEBUG, R +log4j.logger.org.apache.catalina.session=DEBUG, R diff --git a/tomcat-10.1-tomcat-users-webapp.patch b/tomcat-7.0-tomcat-users-webapp.patch similarity index 97% rename from tomcat-10.1-tomcat-users-webapp.patch rename to tomcat-7.0-tomcat-users-webapp.patch index 85b8b9b..860c4cf 100644 --- a/tomcat-10.1-tomcat-users-webapp.patch +++ b/tomcat-7.0-tomcat-users-webapp.patch @@ -1,6 +1,6 @@ --- conf/tomcat-users.xml~ 2008-01-28 17:41:06.000000000 -0500 +++ conf/tomcat-users.xml 2008-03-07 19:40:07.000000000 -0500 -@@ -53,4 +53,14 @@ +@@ -23,4 +23,14 @@ --> diff --git a/tomcat-10.1-tool-wrapper.script b/tomcat-7.0-tool-wrapper.script similarity index 93% rename from tomcat-10.1-tool-wrapper.script rename to tomcat-7.0-tool-wrapper.script index 949d46d..a43568b 100644 --- a/tomcat-10.1-tool-wrapper.script +++ b/tomcat-7.0-tool-wrapper.script @@ -34,7 +34,7 @@ export CLASSPATH MAIN_CLASS="org.apache.catalina.startup.Tool" BASE_OPTIONS="" BASE_FLAGS="-Dcatalina.home=\"$CATALINA_HOME\"" -BASE_JARS="commons-daemon tomcat/catalina servlet tomcat/tomcat-util tomcat/tomcat-coyote tomcat/tomcat-api tomcat/tomcat-util-scan" +BASE_JARS="commons-daemon tomcat/catalina servlet tomcat/tomcat-util tomcat/tomcat-coyote" # Set parameters set_classpath $BASE_JARS diff --git a/tomcat-7.0.104-RemoveCompilerOptions.patch b/tomcat-7.0.104-RemoveCompilerOptions.patch new file mode 100644 index 0000000..1a6190c --- /dev/null +++ b/tomcat-7.0.104-RemoveCompilerOptions.patch @@ -0,0 +1,184 @@ +--- java/org/apache/jasper/compiler/JDTCompiler.java.orig 2020-06-08 14:28:56.745393437 +0800 ++++ java/org/apache/jasper/compiler/JDTCompiler.java 2020-06-08 14:33:16.421538658 +0800 +@@ -95,7 +95,6 @@ + /** + * Compile the servlet from .java file to .class file + */ +- @Override + protected void generateClass(String[] smap) throws FileNotFoundException, JasperException, Exception { + + long t1 = 0; +@@ -122,12 +121,10 @@ + this.sourceFile = sourceFile; + } + +- @Override + public char[] getFileName() { + return sourceFile.toCharArray(); + } + +- @Override + public char[] getContents() { + char[] result = null; + FileInputStream is = null; +@@ -167,7 +164,6 @@ + return result; + } + +- @Override + public char[] getMainTypeName() { + int dot = className.lastIndexOf('.'); + if (dot > 0) { +@@ -176,7 +172,6 @@ + return className.toCharArray(); + } + +- @Override + public char[][] getPackageName() { + StringTokenizer izer = new StringTokenizer(className, "."); + char[][] result = new char[izer.countTokens()-1][]; +@@ -187,7 +182,6 @@ + return result; + } + +- @Override + public boolean ignoreOptionalProblems() { + return false; + } +@@ -195,7 +189,6 @@ + + final INameEnvironment env = new INameEnvironment() { + +- @Override + public NameEnvironmentAnswer + findType(char[][] compoundTypeName) { + StringBuilder result = new StringBuilder(); +@@ -208,7 +201,6 @@ + return findType(result.toString()); + } + +- @Override + public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) { + StringBuilder result = new StringBuilder(); + String sep = ""; +@@ -281,7 +273,6 @@ + } + } + +- @Override + public boolean isPackage(char[][] parentPackageName, char[] packageName) { + StringBuilder result = new StringBuilder(); + String sep = ""; +@@ -302,7 +293,6 @@ + return isPackage(result.toString()); + } + +- @Override + public void cleanup() { + } + +@@ -350,43 +340,6 @@ + } else if(opt.equals("1.7")) { + settings.put(CompilerOptions.OPTION_Source, + CompilerOptions.VERSION_1_7); +- } else if(opt.equals("1.8")) { +- settings.put(CompilerOptions.OPTION_Source, +- CompilerOptions.VERSION_1_8); +- // Support old format that was used in EA implementation as well +- } else if(opt.equals("9") || opt.equals("1.9")) { +- settings.put(CompilerOptions.OPTION_Source, +- JDT_JAVA_9_VERSION); +- } else if(opt.equals("10")) { +- // Constant not available in latest ECJ version that runs on +- // Java 6. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_Source, "10"); +- } else if(opt.equals("11")) { +- // Constant not available in latest ECJ version that runs on +- // Java 6. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_Source, "11"); +- } else if(opt.equals("12")) { +- // Constant not available in latest ECJ version that runs on +- // Java 6. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_Source, "12"); +- } else if(opt.equals("13")) { +- // Constant not available in latest available ECJ version. +- // May be supported in a snapshot build. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_Source, "13"); +- } else if(opt.equals("14")) { +- // Constant not available in latest available ECJ version. +- // May be supported in a snapshot build. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_Source, "14"); +- } else if(opt.equals("15")) { +- // Constant not available in latest available ECJ version. +- // May be supported in a snapshot build. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_Source, "15"); + } else { + log.warn(Localizer.getMessage("jsp.warning.unknown.sourceVM", opt)); + settings.put(CompilerOptions.OPTION_Source, +@@ -428,52 +381,6 @@ + CompilerOptions.VERSION_1_7); + settings.put(CompilerOptions.OPTION_Compliance, + CompilerOptions.VERSION_1_7); +- } else if(opt.equals("1.8")) { +- settings.put(CompilerOptions.OPTION_TargetPlatform, +- CompilerOptions.VERSION_1_8); +- settings.put(CompilerOptions.OPTION_Compliance, +- CompilerOptions.VERSION_1_8); +- } else if(opt.equals("9") || opt.equals("1.9")) { +- settings.put(CompilerOptions.OPTION_TargetPlatform, +- JDT_JAVA_9_VERSION); +- settings.put(CompilerOptions.OPTION_Compliance, +- JDT_JAVA_9_VERSION); +- } else if(opt.equals("10")) { +- // Constant not available in latest ECJ version that runs on +- // Java 6. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_TargetPlatform, "10"); +- settings.put(CompilerOptions.OPTION_Compliance, "10"); +- } else if(opt.equals("11")) { +- // Constant not available in latest ECJ version that runs on +- // Java 6. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_TargetPlatform, "11"); +- settings.put(CompilerOptions.OPTION_Compliance, "11"); +- } else if(opt.equals("12")) { +- // Constant not available in latest ECJ version that runs on +- // Java 6. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_TargetPlatform, "12"); +- settings.put(CompilerOptions.OPTION_Compliance, "12"); +- } else if(opt.equals("13")) { +- // Constant not available in latest available ECJ version. +- // May be supported in a snapshot build. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_TargetPlatform, "13"); +- settings.put(CompilerOptions.OPTION_Compliance, "13"); +- } else if(opt.equals("14")) { +- // Constant not available in latest ECJ version shipped with +- // Tomcat. May be supported in a snapshot build. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_TargetPlatform, "14"); +- settings.put(CompilerOptions.OPTION_Compliance, "14"); +- } else if(opt.equals("15")) { +- // Constant not available in latest ECJ version shipped with +- // Tomcat. May be supported in a snapshot build. +- // This is checked against the actual version below. +- settings.put(CompilerOptions.OPTION_TargetPlatform, "15"); +- settings.put(CompilerOptions.OPTION_Compliance, "15"); + } else { + log.warn(Localizer.getMessage("jsp.warning.unknown.targetVM", opt)); + settings.put(CompilerOptions.OPTION_TargetPlatform, +@@ -491,7 +398,6 @@ + new DefaultProblemFactory(Locale.getDefault()); + + final ICompilerRequestor requestor = new ICompilerRequestor() { +- @Override + public void acceptResult(CompilationResult result) { + try { + if (result.hasProblems()) { diff --git a/tomcat-7.0.99-build.patch b/tomcat-7.0.99-build.patch new file mode 100644 index 0000000..80d2358 --- /dev/null +++ b/tomcat-7.0.99-build.patch @@ -0,0 +1,130 @@ +--- build.xml.orig 2019-12-11 08:21:52.000000000 -0500 ++++ build.xml 2020-02-06 14:32:03.578329367 -0500 +@@ -222,7 +222,6 @@ + + + +- + + + +@@ -244,7 +243,7 @@ + + + +- ++ + + + +@@ -636,7 +635,6 @@ + deprecation="${compile.deprecation}" + source="${compile.source}" + target="${compile.target}" +- release="${compile.release}" + encoding="ISO-8859-1" + includeAntRuntime="true" > + +@@ -1141,12 +1139,11 @@ + + + +- +- ++ + + + +- ++ + + + +@@ -1177,7 +1174,6 @@ + debug="${compile.debug}" deprecation="${compile.deprecation}" + source="${compile.source}" + target="${compile.target}" +- release="${compile.release}" + classpath="${tomcat.classes}" + encoding="ISO-8859-1" + includeantruntime="false"> +@@ -1189,7 +1185,6 @@ + debug="${compile.debug}" deprecation="${compile.deprecation}" + source="${compile.source}" + target="${compile.target}" +- release="${compile.release}" + classpath="${tomcat.classes}" + encoding="ISO-8859-1" + includeantruntime="false"> +@@ -1416,7 +1411,6 @@ + deprecation="${compile.deprecation}" + source="${compile.source}" + target="${compile.target}" +- release="${compile.release}" + encoding="ISO-8859-1" + includeantruntime="true"> + +@@ -1859,8 +1853,8 @@ + + + +- ++ + + +@@ -2912,16 +2906,6 @@ skip.installer property in build.propert + + + +- +- +- +- +- +- +- +- +- +- + + + + + +- ++ + + + +- ++ + + + +- ++ + + +- ++ + + + diff --git a/tomcat-7.0.conf b/tomcat-7.0.conf new file mode 100644 index 0000000..327cdd9 --- /dev/null +++ b/tomcat-7.0.conf @@ -0,0 +1,53 @@ +# System-wide configuration file for tomcat services +# This will be sourced by tomcat and any secondary service +# Values will be overridden by service-specific configuration +# files in /etc/sysconfig +# +# Use this one to change default values for all services +# Change the service specific ones to affect only one service +# (see, for instance, /etc/sysconfig/tomcat) +# + +# This variable is used to figure out if config is loaded or not. +TOMCAT_CFG_LOADED="1" + +# Where your java installation lives +JAVA_HOME="/usr/lib/jvm/jre" + +# Where your tomcat installation lives +CATALINA_BASE="@@@TCHOME@@@" +CATALINA_HOME="@@@TCHOME@@@" +JASPER_HOME="@@@TCHOME@@@" +CATALINA_TMPDIR="@@@TCTEMP@@@" + +# You can pass some parameters to java here if you wish to +#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3" + +# Use JAVA_OPTS to set java.library.path for libtcnative.so +#JAVA_OPTS="-Djava.library.path=@@@LIBDIR@@@" + +# What user should run tomcat +TOMCAT_USER="tomcat" + +# You can change your tomcat locale here +#LANG="en_US" + +# Run tomcat under the Java Security Manager +SECURITY_MANAGER="false" + +# Time to wait in seconds, before killing process +SHUTDOWN_WAIT="30" + +# Whether to annoy the user with "attempting to shut down" messages or not +SHUTDOWN_VERBOSE="false" + +# Set the TOMCAT_PID location +CATALINA_PID="/var/run/tomcat.pid" + +# Connector port is 8080 for this tomcat instance +#CONNECTOR_PORT="8080" + +# If you wish to further customize your tomcat environment, +# put your own definitions here +# (i.e. LD_LIBRARY_PATH for some jdbc drivers) + diff --git a/tomcat-7.0.init b/tomcat-7.0.init new file mode 100644 index 0000000..dd737e8 --- /dev/null +++ b/tomcat-7.0.init @@ -0,0 +1,331 @@ +#!/bin/bash +# +# tomcat This shell script takes care of starting and stopping Tomcat +# +# chkconfig: - 80 20 +# +### BEGIN INIT INFO +# Provides: tomcat +# Required-Start: $network $syslog +# Required-Stop: $network $syslog +# Default-Start: +# Default-Stop: +# Description: Release implementation for Servlet 3.0 and JSP 2.2 +# Short-Description: start and stop tomcat +### END INIT INFO +# +# - originally written by Henri Gomez, Keith Irwin, and Nicolas Mailhot +# - heavily rewritten by Deepak Bhole and Jason Corley +# + +## Source function library. +#. /etc/rc.d/init.d/functions +# Source LSB function library. +if [ -r /lib/lsb/init-functions ]; then + . /lib/lsb/init-functions +else + exit 1 +fi + +DISTRIB_ID=`lsb_release -i -s 2>/dev/null` + +NAME="$(basename $0)" +unset ISBOOT +if [ "${NAME:0:1}" = "S" -o "${NAME:0:1}" = "K" ]; then + NAME="${NAME:3}" + ISBOOT="1" +fi + +# For SELinux we need to use 'runuser' not 'su' +if [ -x "/sbin/runuser" ]; then + SU="/sbin/runuser -s /bin/sh" +else + SU="/bin/su -s /bin/sh" +fi + +# Get the tomcat config (use this for environment specific settings) +TOMCAT_CFG="/etc/tomcat/tomcat.conf" +if [ -r "$TOMCAT_CFG" ]; then + . $TOMCAT_CFG +fi + +# Get instance specific config file +if [ -r "/etc/sysconfig/${NAME}" ]; then + . /etc/sysconfig/${NAME} +fi + +# Define which connector port to use +CONNECTOR_PORT="${CONNECTOR_PORT:-8080}" + +# Path to the tomcat launch script +TOMCAT_SCRIPT="${TOMCAT_SCRIPT:-/usr/sbin/tomcat}" + +# Tomcat program name +TOMCAT_PROG="${NAME}" + +# Define the tomcat username +TOMCAT_USER="${TOMCAT_USER:-tomcat}" + +# Define the tomcat group +TOMCAT_GROUP="${TOMCAT_GROUP:-`id -gn $TOMCAT_USER`}" + +# Define the tomcat log file +TOMCAT_LOG="${TOMCAT_LOG:-${CATALINA_HOME}/logs/${NAME}-initd.log}" + +# Define the tomcat pid file +CATALINA_PID="${CATALINA_PID:-/var/run/${NAME}.pid}" + +# Variable to keep parseOptions status +OPTIONS_PARSED="0" + +RETVAL="0" + +# Look for open ports, as the function name might imply +function findFreePorts() { + local isSet1="false" + local isSet2="false" + local isSet3="false" + local lower="8000" + randomPort1="0" + randomPort2="0" + randomPort3="0" + local -a listeners="( $( + netstat -ntl | \ + awk '/^tcp/ {gsub("(.)*:", "", $4); print $4}' + ) )" + while [ "$isSet1" = "false" ] || \ + [ "$isSet2" = "false" ] || \ + [ "$isSet3" = "false" ]; do + let port="${lower}+${RANDOM:0:4}" + if [ -z `expr " ${listeners[*]} " : ".*\( $port \).*"` ]; then + if [ "$isSet1" = "false" ]; then + export randomPort1="$port" + isSet1="true" + elif [ "$isSet2" = "false" ]; then + export randomPort2="$port" + isSet2="true" + elif [ "$isSet3" = "false" ]; then + export randomPort3="$port" + isSet3="true" + fi + fi + done +} + +function makeHomeDir() { + if [ ! -d "$CATALINA_HOME" ]; then + echo "$CATALINA_HOME does not exist, creating" + if [ ! -d "/usr/share/${NAME}" ]; then + mkdir /usr/share/${NAME} + cp -pLR /usr/share/tomcat/* /usr/share/${NAME} + fi + mkdir -p /var/log/${NAME} \ + /var/cache/${NAME} \ + /var/tmp/${NAME} + ln -fs /var/cache/${NAME} ${CATALINA_HOME}/work + ln -fs /var/tmp/${NAME} ${CATALINA_HOME}/temp + cp -pLR /usr/share/${NAME}/bin $CATALINA_HOME + cp -pLR /usr/share/${NAME}/conf $CATALINA_HOME + ln -fs /usr/share/java/tomcat ${CATALINA_HOME}/lib + ln -fs /usr/share/tomcat/webapps ${CATALINA_HOME}/webapps + install -o ${TOMCAT_USER} -g ${TOMCAT_GROUP} -d -m 0770 /var/log/${NAME} + fi +} + +function parseOptions() { + options="" + options="$options $( + awk '!/^#/ && !/^$/ { ORS=" "; print "export ", $0, ";" }' \ + $TOMCAT_CFG + )" + if [ -r "/etc/sysconfig/${NAME}" ]; then + options="$options $( + awk '!/^#/ && !/^$/ { ORS=" "; + print "export ", $0, ";" }' \ + /etc/sysconfig/${NAME} + )" + fi + if [ "$OPTIONS_PARSED" -eq 0 ]; then + TOMCAT_SCRIPT="$options ${TOMCAT_SCRIPT}" + OPTIONS_PARSED=1 + fi +} + +# See how we were called. +function start() { + + echo -n "Starting ${TOMCAT_PROG}: " + if [ "$RETVAL" != "0" ]; then + log_failure_msg + return + fi + if [ -f "/var/lock/subsys/${NAME}" ]; then + if [ -s "$CATALINA_PID" ]; then + read kpid < $CATALINA_PID +# if checkpid $kpid 2>&1; then + if [ -d "/proc/${kpid}" ]; then + log_success_msg + if [ "$DISTRIB_ID" = "MandrivaLinux" ]; then + echo + fi + return 0 + fi + fi + fi + # fix permissions on the log and pid files + touch $CATALINA_PID 2>&1 || RETVAL="4" + if [ "$RETVAL" -eq "0" -a "$?" -eq "0" ]; then + install -o ${TOMCAT_USER} -g ${TOMCAT_GROUP} -m 644 /dev/null "${CATALINA_PID}" + fi + [ "$RETVAL" -eq "0" ] && touch $TOMCAT_LOG 2>&1 || RETVAL="4" + if [ "$RETVAL" -eq "0" -a "$?" -eq "0" ]; then + if [ ! -f "${TOMCAT_LOG}" ]; then + install -o ${TOMCAT_USER} -g ${TOMCAT_GROUP} -m 644 /dev/null "${TOMCAT_LOG}" + fi + fi + if [ "$CATALINA_HOME" != "/usr/share/tomcat" -a "$RETVAL" -eq "0" ]; then + # Create a tomcat directory if it doesn't exist + makeHomeDir + # If CATALINA_HOME doesn't exist modify port number so that + # multiple instances don't interfere with each other + findFreePorts + sed -i -e "s/8005/${randomPort1}/g" -e "s/8080/${CONNECTOR_PORT}/g" \ + -e "s/8009/${randomPort2}/g" -e "s/8443/${randomPort3}/g" \ + ${CATALINA_HOME}/conf/server.xml + fi + parseOptions + if [ "$RETVAL" -eq "0" -a "$SECURITY_MANAGER" = "true" ]; then + $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} start-security" \ + >> ${TOMCAT_LOG} 2>&1 || RETVAL="4" + else + + [ "$RETVAL" -eq "0" ] && $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} start" >> ${TOMCAT_LOG} 2>&1 || RETVAL="4" + fi + if [ "$RETVAL" -eq "0" ]; then + log_success_msg + touch /var/lock/subsys/${NAME} + else + log_failure_msg "Error code ${RETVAL}" + fi + if [ "$DISTRIB_ID" = "MandrivaLinux" ]; then + echo + fi +} + +function stop() { + echo -n "Stopping ${TOMCAT_PROG}: " + if [ -f "/var/lock/subsys/${NAME}" ]; then + parseOptions + if [ "$RETVAL" -eq "0" ]; then + touch /var/lock/subsys/${NAME} 2>&1 || RETVAL="4" + [ "$RETVAL" -eq "0" ] && $SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} stop" >> ${TOMCAT_LOG} 2>&1 || RETVAL="4" + fi + if [ "$RETVAL" -eq "0" ]; then + count="0" + if [ -s "$CATALINA_PID" ]; then + read kpid < $CATALINA_PID + until [ "$(ps --pid $kpid | grep -c $kpid)" -eq "0" ] || \ + [ "$count" -gt "$SHUTDOWN_WAIT" ]; do + if [ "$SHUTDOWN_VERBOSE" = "true" ]; then + echo "waiting for processes $kpid to exit" + fi + sleep 1 + let count="${count}+1" + done + if [ "$count" -gt "$SHUTDOWN_WAIT" ]; then + if [ "$SHUTDOWN_VERBOSE" = "true" ]; then + log_warning_msg "killing processes which did not stop after ${SHUTDOWN_WAIT} seconds" + fi + kill -9 $kpid + fi + log_success_msg + fi + rm -f /var/lock/subsys/${NAME} $CATALINA_PID + else + log_failure_msg + RETVAL="4" + fi + else + log_success_msg + RETVAL="0" + fi + if [ "$DISTRIB_ID" = "MandrivaLinux" ]; then + echo + fi +} + +function usage() +{ + echo "Usage: $0 {start|stop|restart|condrestart|try-restart|reload|force-reload|status|version}" + RETVAL="2" +} + +# See how we were called. +RETVAL="0" +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + condrestart|try-restart) + if [ -s "$CATALINA_PID" ]; then + stop + start + fi + ;; + reload) + RETVAL="3" + ;; + force-reload) + if [ -s "$CATALINA_PID" ]; then + stop + start + fi + ;; + status) + if [ -s "$CATALINA_PID" ]; then + read kpid < $CATALINA_PID + if [ -d "/proc/${kpid}" ]; then + log_success_msg "${NAME} (pid ${kpid}) is running..." + RETVAL="0" + else +# The pid file exists but the process is not running + log_warning_msg "PID file exists, but process is not running" + RETVAL="1" + fi + else + pid="$(/usr/bin/pgrep -d , -u ${TOMCAT_USER} -G ${TOMCAT_USER} -f "catalina\.base=${CATALINA_BASE}[ $]")" + if [ -z "$pid" ]; then +# status ${NAME} +# RETVAL="$?" + log_success_msg "${NAME} is stopped" + RETVAL="3" + else + log_success_msg "${NAME} (pid $pid) is running..." + RETVAL="0" + fi + fi + if [ -f /var/lock/subsys/${NAME} ]; then + pid="$(/usr/bin/pgrep -d , -u ${TOMCAT_USER} -G ${TOMCAT_USER} -f "catalina\.base=${CATALINA_BASE}[ $]")" +# The lockfile exists but the process is not running + if [ -z "$pid" ]; then + log_failure_msg "${NAME} lockfile exists but process is not running" + RETVAL="2" + fi + fi + ;; + version) + ${TOMCAT_SCRIPT} version + ;; + *) + usage + ;; +esac + +exit $RETVAL diff --git a/tomcat-7.0.logrotate b/tomcat-7.0.logrotate new file mode 100644 index 0000000..a87b4c0 --- /dev/null +++ b/tomcat-7.0.logrotate @@ -0,0 +1,8 @@ +@@@TCLOG@@@/catalina.out { + copytruncate + weekly + rotate 52 + compress + missingok + create 0644 tomcat tomcat +} diff --git a/tomcat-7.0.sysconfig b/tomcat-7.0.sysconfig new file mode 100644 index 0000000..c1337e8 --- /dev/null +++ b/tomcat-7.0.sysconfig @@ -0,0 +1,56 @@ +# Service-specific configuration file for tomcat. This will be sourced by +# the SysV init script after the global configuration file +# /etc/tomcat/tomcat.conf, thus allowing values to be overridden in +# a per-service manner. +# +# NEVER change the init script itself. To change values for all services make +# your changes in /etc/tomcat/tomcat.conf +# +# To change values for a specific service make your edits here. +# To create a new service create a link from /etc/init.d/ to +# /etc/init.d/tomcat (do not copy the init script) and make a copy of the +# /etc/sysconfig/tomcat file to /etc/sysconfig/ and change +# the property values so the two services won't conflict. Register the new +# service in the system as usual (see chkconfig and similars). +# + +# Where your java installation lives +#JAVA_HOME="/usr/lib/jvm/java" + +# Where your tomcat installation lives +#CATALINA_BASE="@@@TCHOME@@@" +#CATALINA_HOME="@@@TCHOME@@@" +#JASPER_HOME="@@@TCHOME@@@" +#CATALINA_TMPDIR="@@@TCTEMP@@@" + +# You can pass some parameters to java here if you wish to +#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3" + +# Use JAVA_OPTS to set java.library.path for libtcnative.so +#JAVA_OPTS="-Djava.library.path=@@@LIBDIR@@@" + +# What user should run tomcat +#TOMCAT_USER="tomcat" + +# You can change your tomcat locale here +#LANG="en_US" + +# Run tomcat under the Java Security Manager +#SECURITY_MANAGER="false" + +# Time to wait in seconds, before killing process +#SHUTDOWN_WAIT="30" + +# Whether to annoy the user with "attempting to shut down" messages or not +#SHUTDOWN_VERBOSE="false" + +# Set the TOMCAT_PID location +#CATALINA_PID="/var/run/tomcat.pid" + +# Connector port is 8080 for this tomcat instance +#CONNECTOR_PORT="8080" + +# If you wish to further customize your tomcat environment, +# put your own definitions here +# (i.e. LD_LIBRARY_PATH for some jdbc drivers) + diff --git a/tomcat-7.0.wrapper b/tomcat-7.0.wrapper new file mode 100644 index 0000000..61b25c3 --- /dev/null +++ b/tomcat-7.0.wrapper @@ -0,0 +1,76 @@ +#!/bin/bash + +if [ -r /usr/share/java-utils/java-functions ]; then + . /usr/share/java-utils/java-functions +else + echo "Can't read Java functions library, aborting" + exit 1 +fi + +# Get the tomcat config (use this for environment specific settings) +# if $TOMCAT_CFG wasn't already loaded +if [ -z "${TOMCAT_CFG_LOADED}" ]; then + if [ -z "${TOMCAT_CFG}" ]; then + TOMCAT_CFG="/etc/tomcat/tomcat.conf" + fi + + if [ -r "$TOMCAT_CFG" ]; then + . $TOMCAT_CFG + fi +fi + +set_javacmd +# CLASSPATH munging +if [ -n "$JSSE_HOME" ]; then + CLASSPATH="${CLASSPATH}:$(build-classpath jcert jnet jsse 2>/dev/null)" +fi +CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/bootstrap.jar" +CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar" +CLASSPATH="${CLASSPATH}:$(build-classpath commons-daemon 2>/dev/null)" + +if [ "$1" = "start" ]; then + ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ + -classpath "$CLASSPATH" \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ + -Djava.io.tmpdir="$CATALINA_TMPDIR" \ + -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ + -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ + org.apache.catalina.startup.Bootstrap start \ + >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & + if [ ! -z "$CATALINA_PID" ]; then + echo $! > $CATALINA_PID + fi +elif [ "$1" = "start-security" ]; then + ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \ + -classpath "$CLASSPATH" \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ + -Djava.io.tmpdir="$CATALINA_TMPDIR" \ + -Djava.security.manager \ + -Djava.security.policy=="${CATALINA_BASE}/conf/catalina.policy" \ + -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \ + -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \ + org.apache.catalina.startup.Bootstrap start \ + >> ${CATALINA_BASE}/logs/catalina.out 2>&1 & + if [ ! -z "$CATALINA_PID" ]; then + echo $! > $CATALINA_PID + fi +elif [ "$1" = "stop" ]; then + ${JAVACMD} $JAVA_OPTS \ + -classpath "$CLASSPATH" \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \ + -Djava.io.tmpdir="$CATALINA_TMPDIR" \ + org.apache.catalina.startup.Bootstrap stop \ + >> ${CATALINA_BASE}/logs/catalina.out 2>&1 +elif [ "$1" = "version" ]; then + ${JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \ + org.apache.catalina.util.ServerInfo +else + echo "Usage: $0 {start|start-security|stop|version}" + exit 1 +fi diff --git a/tomcat-api-OSGi-MANIFEST.MF b/tomcat-api-OSGi-MANIFEST.MF new file mode 100644 index 0000000..3522c72 --- /dev/null +++ b/tomcat-api-OSGi-MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Export-Package: org.apache.tomcat;version="7.0.21" +Bundle-Vendor: %bundleProvider +Bundle-ClassPath: . +Bundle-Version: 7.0.21 +Bundle-Name: %bundleName +Bundle-Localization: plugin +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.apache.tomcat +Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J + 2SE-1.3 + diff --git a/tomcat-build.patch b/tomcat-build.patch deleted file mode 100644 index cdf73ef..0000000 --- a/tomcat-build.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -up ./res/bnd/build-defaults.bnd.orig ./res/bnd/build-defaults.bnd ---- res/bnd/build-defaults.bnd.orig 2023-10-16 11:23:04.752754202 +0800 -+++ res/bnd/build-defaults.bnd 2023-10-16 11:23:29.931876910 +0800 -@@ -13,7 +13,7 @@ - # See the License for the specific language governing permissions and - # limitations under the License. - --Bundle-Version: ${version_cleanup;${version}} -+Bundle-Version: ${version} - Bundle-License: https://www.apache.org/licenses/LICENSE-2.0.txt - - Specification-Title: Apache Tomcat -@@ -36,4 +36,4 @@ X-Compile-Target-JDK: ${compile.release} - - -removeheaders: DSTAMP,TODAY,TSTAMP - --module.name: org.apache.${replace;${Bundle-Name};-;.} -\ No newline at end of file -+module.name: org.apache.${replace;${Bundle-Name};-;.} diff --git a/tomcat-functions b/tomcat-functions deleted file mode 100644 index 1187653..0000000 --- a/tomcat-functions +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -if [ -r /usr/share/java-utils/java-functions ]; then - . /usr/share/java-utils/java-functions -else - echo "Can't read Java functions library, aborting" - exit 1 -fi - -_save_function() { - local ORIG_FUNC=$(declare -f $1) - local NEWNAME_FUNC="$2${ORIG_FUNC#$1}" - eval "$NEWNAME_FUNC" -} - -_save_function run run_java - -run() { - run_java $@ -} - diff --git a/tomcat-juli-OSGi-MANIFEST.MF b/tomcat-juli-OSGi-MANIFEST.MF new file mode 100644 index 0000000..cbb5674 --- /dev/null +++ b/tomcat-juli-OSGi-MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Export-Package: org.apache.juli;version="7.0.21",org.apache.juli.loggi + ng;version="7.0.21" +Bundle-Vendor: %bundleProvider +Bundle-ClassPath: . +Bundle-Version: 7.0.21 +Bundle-Name: %bundleName +Bundle-Localization: plugin +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.apache.juli +Bundle-RequiredExecutionEnvironment: J2SE-1.4,CDC-1.0/Foundation-1.0,J + 2SE-1.3 + diff --git a/tomcat-named.service b/tomcat-named.service deleted file mode 100644 index b6cd8bd..0000000 --- a/tomcat-named.service +++ /dev/null @@ -1,24 +0,0 @@ -# Systemd unit file for tomcat instances. -# -# To create clones of this service: -# 0. systemctl enable tomcat@name.service -# 1. create catalina.base directory structure in -# /var/lib/tomcats/name -# 2. profit. - -[Unit] -Description=Apache Tomcat Web Application Container -After=syslog.target network.target - -[Service] -Type=simple -EnvironmentFile=/etc/tomcat/tomcat.conf -Environment="NAME=%i" -EnvironmentFile=-/etc/sysconfig/tomcat@%i -ExecStart=/usr/libexec/tomcat/server start -ExecStop=/usr/libexec/tomcat/server stop -SuccessExitStatus=143 -User=tomcat - -[Install] -WantedBy=multi-user.target diff --git a/tomcat-preamble b/tomcat-preamble deleted file mode 100644 index 1271dca..0000000 --- a/tomcat-preamble +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -. /usr/libexec/tomcat/functions - -# Get the tomcat config (use this for environment specific settings) - -if [ -z "${TOMCAT_CFG_LOADED}" ]; then - if [ -z "${TOMCAT_CFG}" ]; then - TOMCAT_CFG="/etc/tomcat/tomcat.conf" - fi - . $TOMCAT_CFG -fi - -if [ -d "${TOMCAT_CONFD=/etc/tomcat/conf.d}" ]; then - for file in ${TOMCAT_CONFD}/*.conf ; do - if [ -f "$file" ] ; then - . "$file" - fi - done -fi - -if [ -z "$CATALINA_BASE" ]; then - if [ -n "$NAME" ]; then - if [ -z "$TOMCATS_BASE" ]; then - TOMCATS_BASE="/var/lib/tomcats/" - fi - CATALINA_BASE="${TOMCATS_BASE}${NAME}" - else - CATALINA_BASE="${CATALINA_HOME}" - fi -fi -VERBOSE=1 -set_javacmd -cd ${CATALINA_HOME} -# CLASSPATH munging -if [ ! -z "$CLASSPATH" ] ; then - CLASSPATH="$CLASSPATH": -fi - -if [ -n "$JSSE_HOME" ]; then - CLASSPATH="${CLASSPATH}$(build-classpath jcert jnet jsse 2>/dev/null):" -fi -CLASSPATH="${CLASSPATH}${CATALINA_HOME}/bin/bootstrap.jar" -CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar" -CLASSPATH="${CLASSPATH}:$(build-classpath commons-daemon 2>/dev/null)" - -if [ -z "$LOGGING_PROPERTIES" ] ; then - LOGGING_PROPERTIES="${CATALINA_BASE}/conf/logging.properties" - if [ ! -f "${LOGGING_PROPERTIES}" ] ; then - LOGGING_PROPERTIES="${CATALINA_HOME}/conf/logging.properties" - fi -fi diff --git a/tomcat-server b/tomcat-server deleted file mode 100644 index 17ae385..0000000 --- a/tomcat-server +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -. /usr/libexec/tomcat/preamble - -MAIN_CLASS=org.apache.catalina.startup.Bootstrap - -FLAGS="$JAVA_OPTS" -OPTIONS="-Dcatalina.base=$CATALINA_BASE \ --Dcatalina.home=$CATALINA_HOME \ --Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \ --Djava.io.tmpdir=$CATALINA_TMPDIR \ --Djava.util.logging.config.file=${LOGGING_PROPERTIES} \ --Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" - -if [ "$1" = "start" ] ; then - FLAGS="${FLAGS} $CATALINA_OPTS" - if [ "${SECURITY_MANAGER}" = "true" ] ; then - OPTIONS="${OPTIONS} \ - -Djava.security.manager \ - -Djava.security.policy==${CATALINA_BASE}/conf/catalina.policy" - fi - run start -elif [ "$1" = "stop" ] ; then - run stop -fi diff --git a/tomcat.spec b/tomcat.spec index 77901bc..a8dd919 100644 --- a/tomcat.spec +++ b/tomcat.spec @@ -28,19 +28,16 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -%global jspspec 3.1 -%global major_version 10 -%global minor_version 1 -%global micro_version 46 +%global jspspec 2.2 +%global major_version 7 +%global minor_version 0 +%global micro_version 106 %global packdname apache-tomcat-%{version}-src -%global servletspec 6.0 -%global elspec 5.0 -%global tcuid 53 -# Recommended version is specified in java/org/apache/catalina/core/AprLifecycleListener.java -%global native_version 2.0.8 +%global servletspec 3.0 +%global elspec 2.2 +%global tcuid 91 - -# FHS 3.0 compliant tree structure - http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html +# FHS 2.3 compliant tree structure - http://www.pathname.com/fhs/2.3/ %global basedir %{_var}/lib/%{name} %global appdir %{basedir}/webapps %global homedir %{_datadir}/%{name} @@ -51,63 +48,71 @@ %global cachedir %{_var}/cache/%{name} %global tempdir %{cachedir}/temp %global workdir %{cachedir}/work +%global _initrddir %{_sysconfdir}/init.d Name: tomcat -Epoch: 1 +Epoch: 0 Version: %{major_version}.%{minor_version}.%{micro_version} -Release: %autorelease +Release: 1%{?dist} Summary: Apache Servlet/JSP Engine, RI for Servlet %{servletspec}/JSP %{jspspec} API -# Automatically converted from old format: ASL 2.0 - review is highly recommended. -License: Apache-2.0 +Group: System Environment/Daemons +License: ASL 2.0 URL: http://tomcat.apache.org/ + Source0: http://www.apache.org/dist/tomcat/tomcat-%{major_version}/v%{version}/src/%{packdname}.tar.gz Source1: %{name}-%{major_version}.%{minor_version}.conf -Source2: %{name}-%{major_version}.%{minor_version}.sysconfig -Source3: %{name}-%{major_version}.%{minor_version}.wrapper -Source4: %{name}-%{major_version}.%{minor_version}.logrotate -Source5: %{name}-%{major_version}.%{minor_version}-digest.script -Source6: %{name}-%{major_version}.%{minor_version}-tool-wrapper.script -Source7: %{name}-%{major_version}.%{minor_version}.service -Source8: %{name}-functions -Source9: %{name}-preamble -Source10: %{name}-server -Source11: %{name}-named.service -Source12: module-start-up-parameters.conf +Source2: %{name}-%{major_version}.%{minor_version}.init +Source3: %{name}-%{major_version}.%{minor_version}.sysconfig +Source4: %{name}-%{major_version}.%{minor_version}.wrapper +Source5: %{name}-%{major_version}.%{minor_version}.logrotate +Source6: %{name}-%{major_version}.%{minor_version}-digest.script +Source7: %{name}-%{major_version}.%{minor_version}-tool-wrapper.script +Source8: servlet-api-OSGi-MANIFEST.MF +Source9: jsp-api-OSGi-MANIFEST.MF +Source10: %{name}-%{major_version}.%{minor_version}-log4j.properties +Source11: el-api-OSGi-MANIFEST.MF +Source12: jasper-el-OSGi-MANIFEST.MF +Source13: jasper-OSGi-MANIFEST.MF +Source14: tomcat-api-OSGi-MANIFEST.MF +Source15: tomcat-juli-OSGi-MANIFEST.MF +Source16: %{name}-%{major_version}.%{minor_version}-jsvc.wrapper Patch0: %{name}-%{major_version}.%{minor_version}-bootstrap-MANIFEST.MF.patch Patch1: %{name}-%{major_version}.%{minor_version}-tomcat-users-webapp.patch -Patch2: %{name}-build.patch -Patch3: %{name}-%{major_version}.%{minor_version}-catalina-policy.patch -Patch4: %{name}-%{major_version}.%{minor_version}-bnd-annotation.patch -Patch5: %{name}-%{major_version}.%{minor_version}-JDTCompiler.patch -Patch6: rhbz-1857043.patch +# Adding patch to remove java 1.8 compiler options due to outdated ecj version in el6 +Patch2: %{name}-7.0.104-RemoveCompilerOptions.patch +# Adding patch to remove unsupport ant tasks/attributes +Patch3: %{name}-7.0.99-build.patch +Patch4: %{name}-7.0-catalina-policy.patch +Patch5: change-defaults-for-CVE-2020-1938.patch BuildArch: noarch -ExclusiveArch: %{java_arches} noarch -BuildRequires: ant-openjdk25 >= 1.10.2 -BuildRequires: ecj >= 4.20 +ExcludeArch: ppc64 + +BuildRequires: ant +BuildRequires: ant-nodeps +BuildRequires: ant-trax +BuildRequires: ecj BuildRequires: findutils -BuildRequires: java-25-devel -BuildRequires: javapackages-local-openjdk25 -BuildRequires: aqute-bnd -BuildRequires: aqute-bndlib -BuildRequires: systemd -BuildRequires: tomcat-jakartaee-migration +BuildRequires: jakarta-commons-daemon +BuildRequires: jakarta-taglibs-standard +BuildRequires: java7-devel >= 1:1.7.0 +BuildRequires: jpackage-utils >= 0:1.7.0 +BuildRequires: junit +BuildRequires: log4j +BuildRequires: wsdl4j -Requires: (java-25-headless or java-25) -Requires: javapackages-tools +Requires: jakarta-commons-daemon +Requires: java >= 1:1.6.0 +Requires: procps Requires: %{name}-lib = %{epoch}:%{version}-%{release} -%if 0%{?fedora} || 0%{?rhel} > 7 -Recommends: tomcat-native >= %{native_version} -%endif -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd - -# added after log4j sub-package was removed -Provides: %{name}-log4j = %{epoch}:%{version}-%{release} +Requires(pre): shadow-utils +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(post): /lib/lsb/init-functions +Requires(preun): /lib/lsb/init-functions %description Tomcat is the servlet container that is used in the official Reference @@ -120,6 +125,7 @@ released under the Apache Software License version 2.0. Tomcat is intended to be a collaboration of the best-of-breed developers from around the world. %package admin-webapps +Group: Applications/System Summary: The host-manager and manager web applications for Apache Tomcat Requires: %{name} = %{epoch}:%{version}-%{release} @@ -127,60 +133,89 @@ Requires: %{name} = %{epoch}:%{version}-%{release} The host-manager and manager web applications for Apache Tomcat. %package docs-webapp +Group: Applications/Text Summary: The docs web application for Apache Tomcat Requires: %{name} = %{epoch}:%{version}-%{release} %description docs-webapp The docs web application for Apache Tomcat. +%package javadoc +Group: Documentation +Summary: Javadoc generated documentation for Apache Tomcat +Requires: jpackage-utils + +%description javadoc +Javadoc generated documentation for Apache Tomcat. + +%package jsvc +Group: System Environment/Daemons +Summary: Apache jsvc wrapper for Apache Tomcat as separate service +Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: jakarta-commons-daemon-jsvc + +%description jsvc +Systemd service and wrapper scripts to start tomcat with jsvc, +which allows tomcat to perform some privileged operations +(e.g. bind to a port < 1024) and then switch identity to a non-privileged user. + %package jsp-%{jspspec}-api -Summary: Apache Tomcat JavaServer Pages v%{jspspec} API Implementation Classes +Group: Development/Libraries +Summary: Apache Tomcat JSP API implementation classes Provides: jsp = %{jspspec} +Provides: jsp22 Requires: %{name}-servlet-%{servletspec}-api = %{epoch}:%{version}-%{release} Requires: %{name}-el-%{elspec}-api = %{epoch}:%{version}-%{release} -Obsoletes: %{name}-jsp-2.3-api < 1:9.1 -Provides: %{name}-jsp-2.3-api = %{?epoch:%{epoch}:}%{version}-%{release} - +Requires(post): chkconfig +Requires(postun): chkconfig %description jsp-%{jspspec}-api -Apache Tomcat JSP API Implementation Classes. +Apache Tomcat JSP API implementation classes. + %package lib +Group: Development/Libraries Summary: Libraries needed to run the Tomcat Web container Requires: %{name}-jsp-%{jspspec}-api = %{epoch}:%{version}-%{release} Requires: %{name}-servlet-%{servletspec}-api = %{epoch}:%{version}-%{release} Requires: %{name}-el-%{elspec}-api = %{epoch}:%{version}-%{release} -Requires: ecj >= 4.20 -Recommends: tomcat-jakartaee-migration +Requires: ecj Requires(preun): coreutils %description lib Libraries needed to run the Tomcat Web container. %package servlet-%{servletspec}-api -Summary: Apache Tomcat Java Servlet v%{servletspec} API Implementation Classes +Group: Development/Libraries +Summary: Apache Tomcat Servlet API implementation classes Provides: servlet = %{servletspec} -Obsoletes: %{name}-servlet-4.0-api < 1:9.1 -Provides: %{name}-servlet-4.0-api = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: servlet6 +Provides: servlet3 +Requires(post): chkconfig +Requires(postun): chkconfig %description servlet-%{servletspec}-api -Apache Tomcat Servlet API Implementation Classes. +Apache Tomcat Servlet API implementation classes. %package el-%{elspec}-api -Summary: Apache Tomcat Expression Language v%{elspec} API Implementation Classes +Group: Development/Libraries +Summary: Expression Language v1.0 API +Provides: el_1_0_api = %{epoch}:%{version}-%{release} Provides: el_api = %{elspec} -Obsoletes: %{name}-el-3.0-api < 1:9.1 -Provides: %{name}-el-3.0-api = %{?epoch:%{epoch}:}%{version}-%{release} +Requires(post): chkconfig +Requires(postun): chkconfig %description el-%{elspec}-api -Apache Tomcat EL API Implementation Classes. +Expression Language 1.0. %package webapps -Summary: The ROOT web application for Apache Tomcat +Group: Applications/Internet +Summary: The ROOT and examples web applications for Apache Tomcat Requires: %{name} = %{epoch}:%{version}-%{release} +Requires: jakarta-taglibs-standard >= 0:1.1 %description webapps -The ROOT web application for Apache Tomcat. +The ROOT and examples web applications for Apache Tomcat. %prep %setup -q -n %{packdname} @@ -188,90 +223,107 @@ The ROOT web application for Apache Tomcat. find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "*.gz" -o \ -name "*.jar" -o -name "*.war" -o -name "*.zip" \) -delete -%patch 0 -p0 -%patch 1 -p0 -%patch 2 -p0 -%patch 3 -p0 -%patch 4 -p0 -%patch 5 -p0 -%patch 6 -p0 - -# Remove webservices naming resources as it's generally unused -%{__rm} -rf java/org/apache/naming/factory/webservices - -# Configure maven files -%mvn_package ":tomcat-el-api" tomcat-el-api -%mvn_alias "org.apache.tomcat:tomcat-el-api" "jakarta.servlet:jakarta.servlet-api" -%mvn_package ":tomcat-jsp-api" tomcat-jsp-api -%mvn_alias "org.apache.tomcat:tomcat-jsp-api" "jakarta.servlet:jakarta.servlet.jsp" -%mvn_package ":tomcat-servlet-api" tomcat-servlet-api - -# Create a sysusers.d config file -cat >tomcat.sysusers.conf < ${RPM_BUILD_ROOT}%{confdir}/conf.d/README %{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{libdir} %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{logdir} -%{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{_localstatedir}/lib/tomcats +/bin/touch ${RPM_BUILD_ROOT}%{logdir}/catalina.out +%{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{_localstatedir}/run +/bin/touch ${RPM_BUILD_ROOT}%{_localstatedir}/run/%{name}.pid +/bin/echo "%{name}-%{major_version}.%{minor_version}.%{micro_version} RPM installed" >> ${RPM_BUILD_ROOT}%{logdir}/catalina.out %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{homedir} %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{tempdir} %{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{workdir} -%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_unitdir} -%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_libexecdir}/%{name} # move things into place # First copy supporting libs to tomcat lib pushd output/build %{__cp} -a bin/*.{jar,xml} ${RPM_BUILD_ROOT}%{bindir} - %{__cp} -a conf/*.{policy,properties,xml,xsd} ${RPM_BUILD_ROOT}%{confdir} + %{__cp} %{SOURCE10} conf/log4j.properties + %{__cp} -a conf/*.{policy,properties,xml} ${RPM_BUILD_ROOT}%{confdir} %{__cp} -a lib/*.jar ${RPM_BUILD_ROOT}%{libdir} %{__cp} -a webapps/* ${RPM_BUILD_ROOT}%{appdir} popd +# javadoc +%{__cp} -a output/dist/webapps/docs/api/* ${RPM_BUILD_ROOT}%{_javadocdir}/%{name} %{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \ -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \ @@ -279,41 +331,25 @@ popd > ${RPM_BUILD_ROOT}%{confdir}/%{name}.conf %{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \ -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \ - -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE2} \ + -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE3} \ > ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/%{name} -%{__install} -m 0755 %{SOURCE3} \ +%{__install} -m 0644 %{SOURCE2} \ + ${RPM_BUILD_ROOT}%{_initrddir}/%{name} +%{__install} -m 0644 %{SOURCE4} \ ${RPM_BUILD_ROOT}%{_sbindir}/%{name} -%{__install} -m 0644 %{SOURCE7} \ - ${RPM_BUILD_ROOT}%{_unitdir}/%{name}.service -%{__sed} -e "s|\@\@\@TCLOG\@\@\@|%{logdir}|g" %{SOURCE4} \ - > ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}.disabled -%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \ - -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \ - -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE5} \ - > ${RPM_BUILD_ROOT}%{_bindir}/%{name}-digest +%{__install} -m 0644 %{SOURCE16} \ + ${RPM_BUILD_ROOT}%{_sbindir}/%{name}-jsvc +%{__ln_s} %{name} ${RPM_BUILD_ROOT}%{_sbindir}/d%{name} +%{__sed} -e "s|\@\@\@TCLOG\@\@\@|%{logdir}|g" %{SOURCE5} \ + > ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name} %{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \ -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \ -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE6} \ + > ${RPM_BUILD_ROOT}%{_bindir}/%{name}-digest +%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \ + -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \ + -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE7} \ > ${RPM_BUILD_ROOT}%{_bindir}/%{name}-tool-wrapper - -%{__install} -m 0644 %{SOURCE8} \ - ${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/functions -%{__install} -m 0755 %{SOURCE9} \ - ${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/preamble -%{__install} -m 0755 %{SOURCE10} \ - ${RPM_BUILD_ROOT}%{_libexecdir}/%{name}/server -%{__install} -m 0644 %{SOURCE11} \ - ${RPM_BUILD_ROOT}%{_unitdir}/%{name}@.service - -%{__install} -m 0644 %{SOURCE12} ${RPM_BUILD_ROOT}%{confdir}/conf.d/ - -# Substitute libnames in catalina-tasks.xml -sed -i \ - "s,el-api.jar,%{name}-el-%{elspec}-api.jar,; - s,servlet-api.jar,%{name}-servlet-%{servletspec}-api.jar,; - s,jsp-api.jar,%{name}-jsp-%{jspspec}-api.jar,;" \ - ${RPM_BUILD_ROOT}%{bindir}/catalina-tasks.xml - # create jsp and servlet API symlinks pushd ${RPM_BUILD_ROOT}%{_javadir} %{__mv} %{name}/jsp-api.jar %{name}-jsp-%{jspspec}-api.jar @@ -326,18 +362,22 @@ popd pushd output/build %{_bindir}/build-jar-repository lib ecj 2>&1 - %{_bindir}/build-jar-repository lib tomcat-jakartaee-migration 2>&1 + # need to use -p here with b-j-r otherwise the examples webapp fails to + # load with a java.io.IOException + %{_bindir}/build-jar-repository -p webapps/examples/WEB-INF/lib \ + taglibs-core.jar taglibs-standard.jar 2>&1 popd pushd ${RPM_BUILD_ROOT}%{libdir} # symlink JSP and servlet API jars - %{__ln_s} ../../java/%{name}-jsp-%{jspspec}-api.jar . - %{__ln_s} ../../java/%{name}-servlet-%{servletspec}-api.jar . - %{__ln_s} ../../java/%{name}-el-%{elspec}-api.jar . - %{__ln_s} $(build-classpath ecj/ecj) jasper-jdt.jar - %{__ln_s} $(build-classpath tomcat-jakartaee-migration/jakartaee-migration) jakartaee-migration.jar - - cp ../../%{name}/bin/tomcat-juli.jar . + %{__ln_s} ../%{name}-jsp-%{jspspec}-api.jar . + %{__ln_s} ../%{name}-servlet-%{servletspec}-api.jar . + %{__ln_s} ../%{name}-el-%{elspec}-api.jar . + %{__ln_s} $(build-classpath log4j) log4j.jar + %{__ln_s} $(build-classpath ecj) jasper-jdt.jar + + # Temporary copy the juli jar here from /usr/share/java/tomcat (for maven depmap) + %{__cp} -a ${RPM_BUILD_ROOT}%{bindir}/tomcat-juli.jar ./ popd # symlink to the FHS locations where we've installed things @@ -350,94 +390,132 @@ pushd ${RPM_BUILD_ROOT}%{homedir} %{__ln_s} %{workdir} work popd -# Install the maven metadata for the spec impl artifacts as other projects use them -#%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_mavenpomdir} -pushd res/maven - for pom in *.pom; do - # fix-up version in all pom files - sed -i 's/@MAVEN.DEPLOY.VERSION@/%{version}/g' $pom - done +# install sample webapp +%{__mkdir_p} ${RPM_BUILD_ROOT}%{appdir}/sample +pushd ${RPM_BUILD_ROOT}%{appdir}/sample +%{jar} xf ${RPM_BUILD_ROOT}%{appdir}/docs/appdev/sample/sample.war +popd +%{__rm} ${RPM_BUILD_ROOT}%{appdir}/docs/appdev/sample/sample.war + +# Allow linking for example webapp +%{__mkdir_p} ${RPM_BUILD_ROOT}%{appdir}/examples/META-INF +pushd ${RPM_BUILD_ROOT}%{appdir}/examples/META-INF +echo ''>context.xml +echo ''>>context.xml popd -# Configure and install maven artifacts -%mvn_artifact res/maven/tomcat-el-api.pom output/build/lib/el-api.jar -%mvn_artifact res/maven/tomcat-jsp-api.pom output/build/lib/jsp-api.jar -%mvn_artifact res/maven/tomcat-servlet-api.pom output/build/lib/servlet-api.jar +pushd ${RPM_BUILD_ROOT}%{appdir}/examples/WEB-INF/lib +%{__ln_s} -f $(build-classpath jakarta-taglibs-core) jstl.jar +%{__ln_s} -f $(build-classpath jakarta-taglibs-standard) standard.jar +popd -%mvn_file org.apache.tomcat:tomcat-annotations-api tomcat/annotations-api -%mvn_artifact res/maven/tomcat-annotations-api.pom ${RPM_BUILD_ROOT}%{libdir}/annotations-api.jar -%mvn_artifact res/maven/tomcat-api.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-api.jar -%mvn_file org.apache.tomcat:tomcat-catalina-ant tomcat/catalina-ant -%mvn_artifact res/maven/tomcat-catalina-ant.pom ${RPM_BUILD_ROOT}%{libdir}/catalina-ant.jar -%mvn_file org.apache.tomcat:tomcat-catalina-ha tomcat/catalina-ha -%mvn_artifact res/maven/tomcat-catalina-ha.pom ${RPM_BUILD_ROOT}%{libdir}/catalina-ha.jar -%mvn_file org.apache.tomcat:tomcat-catalina tomcat/catalina -%mvn_artifact res/maven/tomcat-catalina.pom ${RPM_BUILD_ROOT}%{libdir}/catalina.jar -%mvn_artifact res/maven/tomcat-coyote.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-coyote.jar -%mvn_artifact res/maven/tomcat-dbcp.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-dbcp.jar -%mvn_artifact res/maven/tomcat-i18n-cs.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-cs.jar -%mvn_artifact res/maven/tomcat-i18n-de.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-de.jar -%mvn_artifact res/maven/tomcat-i18n-es.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-es.jar -%mvn_artifact res/maven/tomcat-i18n-fr.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-fr.jar -%mvn_artifact res/maven/tomcat-i18n-ja.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-ja.jar -%mvn_artifact res/maven/tomcat-i18n-ko.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-ko.jar -%mvn_artifact res/maven/tomcat-i18n-pt-BR.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-pt-BR.jar -%mvn_artifact res/maven/tomcat-i18n-ru.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-ru.jar -%mvn_artifact res/maven/tomcat-i18n-zh-CN.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-i18n-zh-CN.jar -%mvn_file org.apache.tomcat:tomcat-jasper-el tomcat/jasper-el -%mvn_artifact res/maven/tomcat-jasper-el.pom ${RPM_BUILD_ROOT}%{libdir}/jasper-el.jar -%mvn_file org.apache.tomcat:tomcat-jasper tomcat/jasper -%mvn_artifact res/maven/tomcat-jasper.pom ${RPM_BUILD_ROOT}%{libdir}/jasper.jar -%mvn_file org.apache.tomcat:tomcat-jaspic-api tomcat/jaspic-api -%mvn_artifact res/maven/tomcat-jaspic-api.pom ${RPM_BUILD_ROOT}%{libdir}/jaspic-api.jar -%mvn_artifact res/maven/tomcat-jdbc.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-jdbc.jar -%mvn_artifact res/maven/tomcat-jni.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-jni.jar -%mvn_artifact res/maven/tomcat-juli.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-juli.jar -%mvn_file org.apache.tomcat:tomcat-ssi tomcat/catalina-ssi -%mvn_artifact res/maven/tomcat-ssi.pom ${RPM_BUILD_ROOT}%{libdir}/catalina-ssi.jar -%mvn_file org.apache.tomcat:tomcat-storeconfig tomcat/catalina-storeconfig -%mvn_artifact res/maven/tomcat-storeconfig.pom ${RPM_BUILD_ROOT}%{libdir}/catalina-storeconfig.jar -%mvn_file org.apache.tomcat:tomcat-tribes tomcat/catalina-tribes -%mvn_artifact res/maven/tomcat-tribes.pom ${RPM_BUILD_ROOT}%{libdir}/catalina-tribes.jar -%mvn_artifact res/maven/tomcat-util-scan.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-util-scan.jar -%mvn_artifact res/maven/tomcat-util.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-util.jar -%mvn_file org.apache.tomcat:tomcat-websocket-api tomcat/websocket-api -%mvn_artifact res/maven/tomcat-websocket-api.pom ${RPM_BUILD_ROOT}%{libdir}/websocket-api.jar -%mvn_artifact res/maven/tomcat-websocket.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-websocket.jar -%mvn_artifact res/maven/tomcat-websocket-client-api.pom ${RPM_BUILD_ROOT}%{libdir}/websocket-client-api.jar -%mvn_artifact res/maven/tomcat.pom +%add_to_maven_depmap javax.servlet servlet-api %{servletspec} JPP %{name}-servlet-%{servletspec}-api +%add_to_maven_depmap org.mortbay.jetty servlet-api %{servletspec} JPP %{name}-servlet-%{servletspec}-api +mv %{buildroot}%{_mavendepmapfragdir}/%{name} %{buildroot}%{_mavendepmapfragdir}/%{name}-servlet-api -%mvn_install -install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf +# Install the maven metadata +%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_mavenpomdir} +pushd output/dist/src/res/maven + +#we won't install dhcp, juli-adapters and juli-extras pom files +for pom in tomcat-annotations-api.pom tomcat-catalina.pom tomcat-jasper-el.pom tomcat-jasper.pom \ + tomcat-catalina-ha.pom tomcat-api.pom; do + %{__cp} -a $pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.$pom + base=`basename $pom .pom` + %add_to_maven_depmap org.apache.tomcat $base %{version} JPP $base +done + +# servlet-api jsp-api and el-api are not in tomcat subdir, since they are widely re-used elsewhere +for pom in tomcat-jsp-api.pom tomcat-servlet-api.pom tomcat-el-api.pom; do + %{__cp} -a $pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP-$pom + base=`basename $pom .pom` + %add_to_maven_depmap org.apache.tomcat $base JPP %{name}-$base + %{__cp} -a $pom ${RPM_BUILD_ROOT}%{_mavendepmapfragdir}/$base +done + + +# two special pom where jar files have different names +%{__cp} -a tomcat-tribes.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.%{name}-catalina-tribes.pom +%add_to_maven_depmap org.apache.tomcat tribes %{version} JPP/%{name} catalina-tribes + +%{__cp} -a tomcat-coyote.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.%{name}-tomcat-coyote.pom +%add_to_maven_depmap org.apache.tomcat coyote %{version} JPP/%{name} tomcat-coyote + +%{__cp} -a tomcat-juli.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.%{name}-tomcat-juli.pom +%add_to_maven_depmap org.apache.tomcat juli %{version} JPP/%{name} tomcat-juli + +%{__cp} -a tomcat-util.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.%{name}-tomcat-util.pom +%add_to_maven_depmap org.apache.tomcat util %{version} JPP/%{name} tomcat-util + +# replace temporary copy with link +%{__ln_s} -f %{bindir}/tomcat-juli.jar ${RPM_BUILD_ROOT}%{libdir}/ + +mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/tmpfiles.d +cat > ${RPM_BUILD_ROOT}%{_prefix}/lib/tmpfiles.d/%{name}.conf </dev/null || : +%{_sbindir}/useradd -c "Apache Tomcat" -u %{tcuid} -g tomcat \ + -s /bin/nologin -r -d %{homedir} tomcat 2>/dev/null || : + +%post +/sbin/chkconfig --add %{name} + +%post jsp-%{jspspec}-api +%{_sbindir}/update-alternatives --install %{_javadir}/jsp.jar jsp \ + %{_javadir}/%{name}-jsp-%{jspspec}-api.jar 20200 + +%post servlet-%{servletspec}-api +%{_sbindir}/update-alternatives --install %{_javadir}/servlet.jar servlet \ + %{_javadir}/%{name}-servlet-%{servletspec}-api.jar 30000 + +%post el-%{elspec}-api +%{_sbindir}/update-alternatives --install %{_javadir}/elspec.jar elspec \ + %{_javadir}/%{name}-el-%{elspec}-api.jar 20300 -%post -# install but don't activate -%systemd_post %{name}.service %preun # clean tempdir and workdir on removal or upgrade %{__rm} -rf %{workdir}/* %{tempdir}/* -%systemd_preun %{name}.service +if [ "$1" = "0" ]; then + %{_initrddir}/%{name} stop >/dev/null 2>&1 + /sbin/chkconfig --del %{name} +fi -%postun -%systemd_postun_with_restart %{name}.service +%postun jsp-%{jspspec}-api +if [ "$1" = "0" ]; then + %{_sbindir}/update-alternatives --remove jsp \ + %{_javadir}/%{name}-jsp-%{jspspec}-api.jar +fi -%files +%postun servlet-%{servletspec}-api +if [ "$1" = "0" ]; then + %{_sbindir}/update-alternatives --remove servlet \ + %{_javadir}/%{name}-servlet-%{servletspec}-api.jar +fi + +%postun el-%{elspec}-api +if [ "$1" = "0" ]; then + %{_sbindir}/update-alternatives --remove elspec \ + %{_javadir}/%{name}-el-%{elspec}-api.jar +fi + + +%files %defattr(0664,root,tomcat,0755) %doc {LICENSE,NOTICE,RELEASE*} %attr(0755,root,root) %{_bindir}/%{name}-digest %attr(0755,root,root) %{_bindir}/%{name}-tool-wrapper +%attr(0755,root,root) %{_sbindir}/d%{name} %attr(0755,root,root) %{_sbindir}/%{name} -%attr(0644,root,root) %{_unitdir}/%{name}.service -%attr(0644,root,root) %{_unitdir}/%{name}@.service -%attr(0755,root,root) %dir %{_libexecdir}/%{name} -%attr(0755,root,root) %dir %{_localstatedir}/lib/tomcats -%attr(0644,root,root) %{_libexecdir}/%{name}/functions -%attr(0755,root,root) %{_libexecdir}/%{name}/preamble -%attr(0755,root,root) %{_libexecdir}/%{name}/server +%attr(0755,root,root) %{_initrddir}/%{name} +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/%{name} -%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}.disabled %attr(0755,root,tomcat) %dir %{basedir} %attr(0755,root,tomcat) %dir %{confdir} @@ -445,6 +523,8 @@ install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf %attr(0770,tomcat,root) %dir %{logdir} %defattr(0664,root,tomcat,0770) +%attr(0660,tomcat,tomcat) %verify(not size md5 mtime) %{logdir}/catalina.out +%attr(0644,tomcat,tomcat) %verify(not size md5 mtime) %{_localstatedir}/run/%{name}.pid %attr(0770,root,tomcat) %dir %{cachedir} %attr(0770,root,tomcat) %dir %{tempdir} %attr(0770,root,tomcat) %dir %{workdir} @@ -453,20 +533,15 @@ install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf %attr(0775,root,tomcat) %dir %{appdir} %attr(0775,root,tomcat) %dir %{confdir}/Catalina %attr(0775,root,tomcat) %dir %{confdir}/Catalina/localhost -%attr(0755,root,tomcat) %dir %{confdir}/conf.d -%{confdir}/conf.d/README -%{confdir}/conf.d/module-start-up-parameters.conf %config(noreplace) %{confdir}/%{name}.conf %config(noreplace) %{confdir}/*.policy %config(noreplace) %{confdir}/*.properties %config(noreplace) %{confdir}/context.xml %config(noreplace) %{confdir}/server.xml %attr(0640,root,tomcat) %config(noreplace) %{confdir}/tomcat-users.xml -%attr(0664,root,tomcat) %{confdir}/tomcat-users.xsd -%attr(0664,root,tomcat) %config(noreplace) %{confdir}/jaspic-providers.xml -%attr(0664,root,tomcat) %{confdir}/jaspic-providers.xsd %config(noreplace) %{confdir}/web.xml %dir %{homedir} +%{_prefix}/lib/tmpfiles.d/%{name}.conf %{bindir}/bootstrap.jar %{bindir}/catalina-tasks.xml %{homedir}/lib @@ -475,7 +550,6 @@ install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf %{homedir}/work %{homedir}/logs %{homedir}/conf -%{_sysusersdir}/tomcat.conf %files admin-webapps %defattr(0664,root,tomcat,0755) @@ -483,532 +557,204 @@ install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf %{appdir}/manager %files docs-webapp +%defattr(-,root,root,-) %{appdir}/docs -%files lib -f .mfiles -%dir %{libdir} -%{libdir}/*.jar -%{_javadir}/*.jar -%{bindir}/tomcat-juli.jar -%exclude %{libdir}/%{name}-el-%{elspec}-api.jar -%exclude %{libdir}/%{name}-servlet-%{servletspec}*.jar -%exclude %{libdir}/%{name}-jsp-%{jspspec}*.jar -%exclude %{_javadir}/%{name}-servlet-%{servletspec}*.jar -%exclude %{_javadir}/%{name}-el-%{elspec}-api.jar -%exclude %{_javadir}/%{name}-jsp-%{jspspec}*.jar -%exclude %{_javadir}/%{name}-servlet-api.jar -%exclude %{_javadir}/%{name}-el-api.jar -%exclude %{_javadir}/%{name}-jsp-api.jar -%exclude %{_jnidir}/* +%files javadoc +%defattr(-,root,root,-) +%{_javadocdir}/%{name} -%files jsp-%{jspspec}-api -f .mfiles-tomcat-jsp-api +%files jsp-%{jspspec}-api +%defattr(-,root,root,-) %{_javadir}/%{name}-jsp-%{jspspec}*.jar -%{libdir}/%{name}-jsp-%{jspspec}*.jar %{_javadir}/%{name}-jsp-api.jar +%{_mavenpomdir}/JPP-%{name}-jsp-api.pom +%{_mavendepmapfragdir}/%{name}-jsp-api -%files servlet-%{servletspec}-api -f .mfiles-tomcat-servlet-api +%files lib +%defattr(-,root,root,-) +%{libdir} +%{bindir}/tomcat-juli.jar +%{_mavendepmapfragdir}/%{name} +%{_mavenpomdir}/JPP.%{name}-annotations-api.pom +%{_mavenpomdir}/JPP.%{name}-catalina-ha.pom +%{_mavenpomdir}/JPP.%{name}-catalina-tribes.pom +%{_mavenpomdir}/JPP.%{name}-catalina.pom +%{_mavenpomdir}/JPP.%{name}-jasper-el.pom +%{_mavenpomdir}/JPP.%{name}-jasper.pom +%{_mavenpomdir}/JPP.%{name}-api.pom +%{_mavenpomdir}/JPP.%{name}-tomcat-juli.pom +%{_mavenpomdir}/JPP.%{name}-tomcat-coyote.pom +%{_mavenpomdir}/JPP.%{name}-tomcat-util.pom + +%exclude %{libdir}/%{name}-el-%{elspec}-api.jar + +%files servlet-%{servletspec}-api +%defattr(-,root,root,-) %doc LICENSE %{_javadir}/%{name}-servlet-%{servletspec}*.jar -%{libdir}/%{name}-servlet-%{servletspec}*.jar %{_javadir}/%{name}-servlet-api.jar +%{_mavendepmapfragdir}/%{name}-servlet-api +%{_mavenpomdir}/JPP-%{name}-servlet-api.pom -%files el-%{elspec}-api -f .mfiles-tomcat-el-api +%files el-%{elspec}-api +%defattr(-,root,root,-) %doc LICENSE %{_javadir}/%{name}-el-%{elspec}-api.jar -%{libdir}/%{name}-el-%{elspec}-api.jar %{_javadir}/%{name}-el-api.jar +%{libdir}/%{name}-el-%{elspec}-api.jar +%{_mavenpomdir}/JPP-%{name}-el-api.pom +%{_mavendepmapfragdir}/%{name}-el-api + %files webapps %defattr(0644,tomcat,tomcat,0755) %{appdir}/ROOT +%{appdir}/examples +%{appdir}/sample + +%files jsvc +%defattr(755,root,root,0755) +%{_sbindir}/%{name}-jsvc %changelog -* Thu Sep 25 2025 Adam Williamson - 1:10.1.46-2 -- Drop now-unnecessary version bounds in java requirements -- Specify java-25-headless, not java-headless (#2398212) +* Wed Oct 28 2020 Hui Wang - 1:7.0.106-1 +- Update to 7.0.106 -* Fri Sep 12 2025 Dimitris Soumis - 1:10.1.46-1 -- Update to version 10.1.46 +* Wed Jul 15 2020 Hui Wang - 1:7.0.105-1 +- Update to 7.0.105 -* Tue Aug 19 2025 Dimitris Soumis - 1:10.1.43-7 -- Add virtual provides to resolve installability issues +* Thu Jun 04 2020 Hui Wang - 1:7.0.104-1 +- Update to 7.0.104 -* Thu Aug 14 2025 Dimitris Soumis - 1:10.1.43-6 -- Rebuilt for the side tag f43-build-side-116701 +* Wed Apr 22 2020 Coty Sutherland - 1:7.0.103-1 +- Update to 7.0.103 -* Tue Jul 29 2025 Dimitris Soumis - 1:10.1.43-5 -- Rebuilt for the side tag f43-build-side-114811 +* Thu Mar 12 2020 Coty Sutherland - 1:7.0.100-2 +- Related: rhbz#1806398 Undo changes in defaults for AJP connector (CVE-2020-1938) to prevent breakage, please update your configuration -* Fri Jan 10 2025 Dimitris Soumis - 1:10.1.34-1 -- Update to version 10.1.34 +* Thu Mar 05 2020 Coty Sutherland - 1:7.0.100-1 +- Update to 7.0.100 +- Resolves: rhbz#1806805 - CVE-2020-1938 tomcat: Apache Tomcat AJP File Read/Inclusion Vulnerability -* Mon Dec 09 2024 Packit - 1:9.0.98-1 -- Update to version 9.0.98 -- Resolves: rhbz#2331168 +* Thu Feb 06 2020 Coty Sutherland - 1:7.0.99-1 +- Update to 7.0.99 -* Mon Dec 02 2024 Dimitris Soumis - 1:9.0.97-1 -- Update to version 9.0.97 -- Resolves: rhbz#2327090 +* Thu Sep 26 2019 Coty Sutherland - 1:7.0.96-1 +- Update to 7.0.96 +- Resolves: rhbz#1466026 JVM options are duplicated after service restart -* Tue Oct 08 2024 Packit - 1:9.0.96-1 -- Update to version 9.0.96 -- Resolves: rhbz#2317237 +* Tue Jun 18 2019 Coty Sutherland - 1:7.0.94-1 +- Update to 7.0.94 +- Resolves: rhbz#1713280 - CVE-2019-0221 tomcat: XSS in SSI printenv -* Tue Sep 17 2024 Packit - 1:9.0.95-1 -- Update to version 9.0.95 -- Resolves: rhbz#2312858 - -* Tue Sep 10 2024 Packit - 1:9.0.94-1 -- Update to version 9.0.94 -- Resolves: rhbz#2311320 - -* Tue Aug 06 2024 Packit - 1:9.0.93-1 -- Update to version 9.0.93 -- Resolves: rhbz#2303026 - -* Wed Jul 24 2024 Miroslav Suchý - 1:9.0.91-1 -- convert license to SPDX - -* Thu Jul 11 2024 Dimitris Soumis - 1:9.0.91-1 -- Update to 9.0.91 - -* Thu Jun 20 2024 Dimitris Soumis - 1:9.0.90-1 -- Update to 9.0.90 - -* Fri Jun 7 2024 Dimitris Soumis - 1:9.0.89-1 -- Update to 9.0.89 - -* Thu Feb 29 2024 Adam Williamson - 1:9.0.83-4 -- Accept java-21-headless as one of the alternatives for java - -* Tue Feb 27 2024 Jiri Vanek - 1:9.0.83-3 -- Rebuilt for java-21-openjdk as system jdk - -* Sat Jan 27 2024 Fedora Release Engineering - 1:9.0.83-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Dec 01 2023 Hui Wang - 1:9.0.83-1 -- Update to 9.0.83 - -* Mon Oct 16 2023 Hui Wang - 1:9.0.82-1 -- Update to 9.0.82 -- Resolves: rhbz#2244333 Wrong dbcp class in tomcat 9 - -* Wed Sep 13 2023 Hui Wang - 1:9.0.80-1 -- Update to 9.0.80 -- Fix java version - -* Fri Aug 04 2023 Hui Wang - 1:9.0.78-4 -- Fix files permission - -* Wed Jul 26 2023 Hui Wang - 1:9.0.78-3 -- Exclude jnidir in the lib subpackage - -* Tue Jul 25 2023 Hui Wang - 1:9.0.78-2 -- Resolves: rhbz#2224318 There are duplicated jars in the tomcat lib subpackage - -* Tue Jul 25 2023 Hui Wang - 1:9.0.78-1 -- Resolves: rhbz#2224318 There are duplicated jars in the tomcat lib-subpackage -- Update to 9.0.78 - -* Sat Jul 22 2023 Fedora Release Engineering - 1:9.0.76-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jun 20 2023 Hui Wang - 1:9.0.76-2 -- Resolves: rhbz#2189672 Missing Tomcat POM files in Fedora Rawhide -- Remove JDTCompiler patch because ecj has been update -- Update to 9.0.76 -- Resolves: rhbz#2188218 Link bin/tomcat-juli.jar to /usr/share/java -- Move tomcat-jsp-2.3-api.jar,tomcat-servlet-4.0-api.jar and tomcat-el-api.jar to the subpackages - -* Thu Jun 08 2023 Hui Wang - 1:9.0.75-1 -- Update to 9.0.75 - -* Fri Mar 17 2023 Hui Wang - 1:9.0.73-1 -- Update to 9.0.73 - -* Sun Jan 29 2023 Hui Wang - 1:9.0.71-1 -- Update to 9.0.71 -- Remove osgi-annotations patch -- Add bnd-annotation dependency which is in bndlib package - -* Sat Jan 21 2023 Fedora Release Engineering - 1:9.0.70-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Fri Jan 13 2023 Hui Wang - 1:9.0.70-1 -- Update to 9.0.70 - -* Thu Nov 03 2022 Hui Wang - 1:9.0.68-1 -- Update to 9.0.68 - -* Thu Jul 21 2022 Hui Wang - 1:9.0.65-1 -- Update to 9.0.65 - -* Fri Jul 08 2022 Jiri Vanek - 1:9.0.64-2 -- Rebuilt for Drop i686 JDKs - -* Tue Jun 21 2022 Hui Wang - 1:9.0.64-1 -- Update to 9.0.64 -- Add osgi-annotations dependency back - -* Thu Mar 10 2022 Coty Sutherland - 1:9.0.59-3 -- Related: rhbz#2061424 Adjust fix so that it uses the proper env var - -* Tue Mar 08 2022 Coty Sutherland - 1:9.0.59-2 -- Resolves: rhbz#2061424 Add Java 9 start-up parameters to allow reflection - -* Wed Mar 02 2022 Sonia Xu - 1:9.0.59-1 -- Update to 9.0.59 -- Resolves: rhbz#2047419 - CVE-2022-23181 tomcat: local privilege escalation vulnerability - -* Sat Feb 05 2022 Jiri Vanek - 1:9.0.56-3 -- Rebuilt for java-17-openjdk as system jdk - -* Sat Jan 22 2022 Fedora Release Engineering - 1:9.0.56-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Thu Dec 09 2021 Hui Wang - 1:9.0.56-1 -- Update to 9.0.56 - -* Tue Oct 12 2021 Hui Wang - 1:9.0.55-1 -- Update to 9.0.55 - -* Tue Oct 12 2021 Hui Wang - 1:9.0.54-1 -- Update to 9.0.54 - -* Thu Sep 16 2021 Hui Wang - 1:9.0.53-1 -- Update to 9.0.53 - -* Wed Aug 18 2021 Hui Wang - 1:9.0.52-1 -- Update to 9.0.52 - -* Fri Jul 23 2021 Fedora Release Engineering - 1:9.0.50-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jul 06 2021 Hui Wang - 1:9.0.50-1 -- Update to 9.0.50 - -* Sat Jun 05 2021 Coty Sutherland - 1:9.0.45-4 -- Add back logrotate config file per devel list request -- Add mvn virtual provides back for the servlet, el, and jsp spec impls - -* Fri Jun 04 2021 Coty Sutherland - 1:9.0.45-3 -- Drop geronimo-jaxrpc, which provided the webservices naming factory resources that are generally unused - -* Thu Jun 03 2021 Coty Sutherland - 1:9.0.45-2 -- Remove examples webapps from subpackage -- Updates to javapackages-local removed %%add_maven_depmap which broke the build, - so I removed the maven artifacts as they aren't very useful anyway -- Drop JSVC support as it's not very useful these days -- Drop geronimo-saaj as it's no longer required - -* Thu Apr 22 2021 Hui Wang - 1:9.0.45-1 -- Update to 9.0.45 - -* Thu Mar 18 2021 Hui Wang - 1:9.0.44-1 -- Update to 9.0.44 - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 1:9.0.43-2 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Wed Feb 03 2021 Hui Wang - 1:9.0.43-1 -- Update to 9.0.43 - -* Wed Jan 27 2021 Fedora Release Engineering - 1:9.0.41-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Dec 09 2020 Hui Wang - 1:9.0.41-1 -- Update to 9.0.41 - -* Wed Nov 18 2020 Hui Wang - 1:9.0.40-1 -- Update to 9.0.40 - -* Mon Oct 12 2020 Hui Wang - 1:9.0.39-1 -- Update to 9.0.39 - -* Wed Sep 16 2020 Hui Wang - 1:9.0.38-1 -- Update to 9.0.38 - -* Wed Jul 29 2020 Fedora Release Engineering - 1:9.0.37-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jul 24 2020 Coty Sutherland - 1:9.0.37-3 -- Related: rhbz#1857043 Temporarily remove OSGi metadata from tomcat jars - -* Mon Jul 20 2020 Coty Sutherland - 1:9.0.37-2 -- Resolves: rhbz#1857043 Add patch to reinclude o.a.t.util.net.jsse and o.a.t.util.moduler.modules in tomcat-coyote.jar - -* Mon Jul 13 2020 Coty Sutherland - 1:9.0.37-1 -- Update to 9.0.37 - -* Sat Jul 11 2020 Jiri Vanek - 1:9.0.36-2 -- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 - -* Wed Jun 10 2020 Hui Wang - 1:9.0.36-1 -- Upgrade to 9.0.36 - -* Sun May 31 2020 Hui Wang - 1:9.0.35-2 -- Upgrade to 9.0.35 - -* Wed Apr 22 2020 Coty Sutherland - 1:9.0.34-2 -- Add updated catalina.policy patch to allow ECJ usage under the Security Manager - -* Tue Apr 21 2020 Coty Sutherland - 1:9.0.34-1 -- Update to 9.0.34 - -* Thu Mar 05 2020 Coty Sutherland - 1:9.0.31-1 -- Update to 9.0.31 -- Resolves: rhbz#1806398 - CVE-2020-1938 tomcat: Apache Tomcat AJP File Read/Inclusion Vulnerability - -* Fri Jan 31 2020 Fedora Release Engineering - 1:9.0.30-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Fri Dec 20 2019 Coty Sutherland - 1:9.0.30-1 -- Update to 9.0.30 - -* Thu Sep 26 2019 Coty Sutherland - 1:9.0.26-2 -- Resolves: rhbz#1510522 man page uid and gid mismatch for service accounts - -* Thu Sep 26 2019 Coty Sutherland - 1:9.0.26-1 -- Update to 9.0.26 -- Resolves: rhbz#1523112 tomcat systemd does not cope with - in service names -- Resolves: rhbz#1510896 Problem to start tomcat with a user whose group has a name different to the user - -* Sat Jul 27 2019 Fedora Release Engineering - 1:9.0.21-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Wed Jul 17 2019 Coty Sutherland - 1:9.0.21-2 -- Update build-classpath calls to ECJ to specify the JAR we want to use - -* Tue Jun 18 2019 Coty Sutherland - 1:9.0.21-1 -- Update to 9.0.21 - -* Tue Apr 02 2019 Coty Sutherland - 1:9.0.13-4 -- Remove javadoc subpackage to drop the jpackage-utils dependency - -* Wed Feb 20 2019 Coty Sutherland - 1:9.0.13-3 -- Remove OSGi MANIFEST files, these are now included in the upstream Tomcat distribution (as of 9.0.10) -- Remove unused dependencies, apache-commons-collections, apache-commons-daemon, apache-commons-pool, junit - -* Sun Feb 03 2019 Fedora Release Engineering - 1:9.0.13-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Thu Dec 13 2018 Coty Sutherland - 1:9.0.13-1 -- Update to 9.0.13 +* Thu Dec 13 2018 Coty Sutherland - 1:7.0.92-1 +- Update to 7.0.92 - Resolves: rhbz#1636513 - CVE-2018-11784 tomcat: Open redirect in default servlet -* Sun Oct 14 2018 Peter Robinson 1:9.0.10-2 -- Drop legcy sys-v bits - -* Tue Jul 31 2018 Coty Sutherland - 1:9.0.10-1 -- Update to 9.0.10 -- Resolves: rhbz#1624929 - CVE-2018-1336 tomcat: A bug in the UTF-8 decoder can lead to DoS -- Resolves: rhbz#1579612 - CVE-2018-8014 tomcat: Insecure defaults in CORS filter enable 'supportsCredentials' for all origins +* Tue Jul 31 2018 Coty Sutherland - 1:7.0.90-1 +- Update to 7.0.90 - Resolves: rhbz#1607586 - CVE-2018-8034 tomcat: host name verification missing in WebSocket client -- Resolves: rhbz#1607584 - CVE-2018-8037 tomcat: Due to a mishandling of close in NIO/NIO2 connectors user sessions can get mixed up +- Resolves: rhbz#1579612 - CVE-2018-8014 tomcat: Insecure defaults in CORS filter enable 'supportsCredentials' for all origins +- Resolves: rhbz#1624929 - CVE-2018-1336 tomcat: A bug in the UTF-8 decoder can lead to DoS -* Sat Jul 14 2018 Fedora Release Engineering - 1:9.0.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild +* Tue May 01 2018 Coty Sutherland - 1:7.0.86-1 +- Update to 7.0.86 -* Tue May 01 2018 Coty Sutherland - 1:9.0.7-1 -- Update to 9.0.7 +* Fri Mar 16 2018 Coty Sutherland - 1:7.0.85-1 +- Update to 7.0.85 +- Resolves: rhbz#1548291 CVE-2018-1304 tomcat: Incorrect handling of empty string URL in security constraints can lead to unitended exposure of resources +- Resolves: rhbz#1548283 CVE-2018-1305 tomcat: Late application of security constraints can lead to resource exposure for unauthorised users -* Thu Mar 15 2018 Coty Sutherland - 1:8.5.29-1 -- Update to 8.5.29 -- Resolves: rhbz#1548290 CVE-2018-1304 tomcat: Incorrect handling of empty string URL in security constraints can lead to unitended exposure of resources -- Resolves: rhbz#1548284 CVE-2018-1305 tomcat: Late application of security constraints can lead to resource exposure for unauthorised users +* Thu Feb 01 2018 Coty Sutherland - 0:7.0.84-1 +- Update to 7.0.84 -* Fri Feb 09 2018 Igor Gnatenko - 1:8.0.49-2 -- Escape macros in %%changelog +* Wed Oct 04 2017 Coty Sutherland - 0:7.0.82-1 +- Update to 7.0.82 +- Resolves: rhbz#1497681 CVE-2017-12617 tomcat: Remote Code Execution bypass for CVE-2017-12615 -* Thu Feb 01 2018 Coty Sutherland - 1:8.0.49-1 -- Update to 8.0.49 +* Mon Aug 21 2017 Coty Sutherland - 0:7.0.81-1 +- Update to 7.0.81 +- Resolves: rhbz#1480621 CVE-2017-7674 tomcat: Cache Poisoning -* Tue Dec 12 2017 Merlin Mathesius - 1:8.0.47-3 -- Cleanup spec file conditionals +* Fri Jun 09 2017 Coty Sutherland - 0:7.0.78-1 +- Update to 7.0.78 +- Resolves: rhbz#1459161 CVE-2017-5664 tomcat: Security constrained bypass in error page mechanism -* Tue Oct 24 2017 Troy Dawson - 1:8.0.47-2 -- Change "zip -u" to "zip" -- Resolves: rhbz#1495241 [tomcat] zip -u in spec file causes race condition +* Tue Apr 11 2017 Coty Sutherland - 0:7.0.77-1 +- Update to 7.0.77 -* Wed Oct 04 2017 Coty Sutherland - 1:8.0.47-1 -- Update to 8.0.47 -- Resolves: rhbz#1497682 CVE-2017-12617 tomcat: Remote Code Execution bypass for CVE-2017-12615 +* Fri Mar 31 2017 Coty Sutherland - 0:7.0.76-1 +- Update to 7.0.76 -* Mon Aug 21 2017 Coty Sutherland - 1:8.0.46-1 -- Update to 8.0.46 -- Resolves: rhbz#1480620 CVE-2017-7674 tomcat: Cache Poisoning +* Thu Feb 16 2017 Coty Sutherland - 0:7.0.75-1 +- Update to 7.0.75 +- Resolves: rhbz#1420223 CVE-2016-6325 tomcat: tomcat writable config files allow privilege escalation +- Resolves: rhbz#1372789 init script status command gives incorrect result -* Thu Jul 27 2017 Fedora Release Engineering - 1:8.0.44-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild +* Tue Nov 29 2016 Coty Sutherland - 0:7.0.73-1 +- Update to 7.0.73 +- Resolves: rhbz#1397495 CVE-2016-6816 CVE-2016-8735 tomcat: various flaws -* Fri Jun 09 2017 Coty Sutherland - 1:8.0.44-1 -- Resolves: rhbz#1459160 CVE-2017-5664 tomcat: Security constrained bypass in error page mechanism +* Fri Sep 23 2016 Coty Sutherland 0:7.0.72-1 +- Resolves: rhbz#1375582 CVE-2016-5388 Tomcat: CGI sets environmental variable based on user supplied Proxy request header +- Resolves: rhbz#1376718 CVE-2016-1240 tomcat: Local privilege escalation via unsafe file handling in the Tomcat init script +- Resolves: rhbz#1379170 jsvc script is broken -* Tue Apr 11 2017 Coty Sutherland - 1:8.0.43-1 -- Update to 8.0.43 +* Wed Aug 17 2016 Coty Sutherland 0:7.0.70-3 +- Resolves: rhbz#1170797 remove tomcat6 dependency on redhat-lsb (and any other unnecessary ones) -* Fri Mar 31 2017 Coty Sutherland - 1:8.0.42-1 -- Update to 8.0.42 +* Fri Aug 05 2016 Coty Sutherland 0:7.0.70-2 +- Related: rhbz#1314177 Had to fix a minor syntax issue that caused it to improperly eval -* Thu Feb 16 2017 Coty Sutherland - 1:8.0.41-1 -- Update to 8.0.41 -- Resolves: rhbz#1403825 CVE-2016-8745 tomcat: information disclosure due to incorrect Processor sharing +* Fri Aug 05 2016 Coty Sutherland 0:7.0.70-1 +- Resolves: rhbz#1352120 The javadoc package is useless; it contains one index.html +- Resolves: rhbz#1347838 The security manager doesn't work correctly (JSPs cannot be compiled) +- Resolves: rhbz#1327327 rpm -V tomcat fails on /var/log/tomcat/catalina.out +- Resolves: rhbz#1314177 Tomcat init script reports wrong status when one instance of several is stopped +- Resolves: rhbz#1312280 Unable to overwrite the TOMCAT_SCRIPT variable +- Resolves: rhbz#1104708 Tomcat init script does not respect setting of CATALINA_PID in /etc/sysconfig/tomcat +- Resolves: rhbz#1104704 /usr/sbin/tomcat overrides settings specified in /etc/sysconfig/${NAME} +- Resolves: rhbz#1364067 The tomcat-tool-wrapper script is broken +- Resolves: rhbz#1364068 The command tomcat-digest doesn't work +- Resolves: rhbz#1311499 Updating package causes tomcat to not start on boot +- Resolves: rhbz#1352009 tomcat: multiple security vulnerabilities (updates to 7.0.70) -* Sat Feb 11 2017 Fedora Release Engineering - 1:8.0.39-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild +* Fri Nov 13 2015 Coty Sutherland 0:7.0.65-1 +- Updated to 7.0.65 -* Tue Nov 29 2016 Coty Sutherland - 1:8.0.39-1 -- Update to 8.0.39 -- Resolves: rhbz#1397493 CVE-2016-6816 CVE-2016-6817 CVE-2016-8735 tomcat: various flaws +* Tue Apr 29 2014 Vlad Slepukhin 0:7.0.33-4 +- Fixed bug not allowing Tomcat to start properly connected with access privleges to the logging directory +- Removed residual systemd configuration from the wrapper -* Tue Oct 25 2016 Coty Sutherland - 1:8.0.38-1 -- Update to 8.0.38 +* Wed Feb 26 2014 Vlad Slepukhin 0:7.0.33-3 +- Changed ExclusiveArch to ExcludeArch due to bug appearing during build with this parameter -* Sun Oct 23 2016 Coty Sutherland - 1:8.0.37-3 -- Resolves: rhbz#1383216 CVE-2016-6325 tomcat: tomcat writable config files allow privilege escalation -- Resolves: rhbz#1382310 CVE-2016-5425 tomcat: Local privilege escalation via systemd-tmpfiles service +* Mon Feb 24 2014 Vlad Slepukhin 0:7.0.33-2 +- Restrctied to x86_64 and i686 platforms as now requires java 1.6 or later for building and running -* Tue Sep 13 2016 Coty Sutherland - 1:8.0.37-1 -- Rebase to 8.0.37 -- Resolves: rhbz#1375581 CVE-2016-5388 CGI sets environmental variable based on user supplied Proxy request header -- Resolves: rhbz#1370262 catalina.out is no longer in use in the main package, but still gets rotated - -* Thu Aug 11 2016 Coty Sutherland - 1:8.0.36-2 -- Related: rhbz#1349469 Correct typo in changelog entry - -* Mon Aug 08 2016 Coty Sutherland - 1:8.0.36-1 -- Resolves: rhbz#1349469 CVE-2016-3092 tomcat: Usage of vulnerable FileUpload package can result in denial of service (updates to 8.0.36) -- Resolves: rhbz#1364056 The command tomcat-digest doesn't work -- Resolves: rhbz#1363884 The tomcat-tool-wrapper script is broken -- Resolves: rhbz#1347864 The systemd service unit does not allow tomcat to shut down gracefully -- Resolves: rhbz#1347835 The security manager doesn't work correctly (JSPs cannot be compiled) -- Resolves: rhbz#1341853 rpm -V tomcat fails on /var/log/tomcat/catalina.out -- Resolves: rhbz#1341850 tomcat-jsvc.service has TOMCAT_USER value hard-coded -- Resolves: rhbz#1359737 Missing maven depmap for the following artifacts: org.apache.tomcat:tomcat-websocket, org.apache.tomcat:tomcat-websocket-api -- Resolves: asfbz#59960 Building javadocs with java8 fails - -* Wed Mar 2 2016 Ivan Afonichev - 1:8.0.32-4 -- Revert sysconfig migration changes, resolves: rhbz#1311771, rhbz#1311905 -- Add /etc/tomcat/conf.d/ with shell expansion support, resolves rhbz#1293636 - -* Sat Feb 27 2016 Ivan Afonichev - 1:8.0.32-3 -- Load sysconfig from tomcat.conf, resolves: rhbz#1311771, rhbz#1311905 -- Set default javax.sql.DataSource factory to apache commons one, resolves rhbz#1214381 - -* Sun Feb 21 2016 Ivan Afonichev - 1:8.0.32-2 -- Fix symlinks from $CATALINA_HOME/lib perspective, resolves: rhbz#1308685 - -* Thu Feb 11 2016 Ivan Afonichev - 1:8.0.32-1 -- Updated to 8.0.32 -- Remove log4j support. It has never been working actually. See rhbz#1236297 -- Move shipped config to /etc/sysconfig/tomcat. /etc/tomcat/tomcat.conf can now be used to override it with shell expansion, resolves rhbz#1293636 -- Recommend tomcat-native, resolves: rhbz#1243132 - -* Wed Feb 10 2016 Coty Sutherland 1:8.0.26-4 -- Resolves: rhbz#1286800 Failed to start component due to wrong allowLinking="true" in context.xml -- Program /bin/nologin does not exist (#1302718) - -* Fri Feb 05 2016 Fedora Release Engineering - 1:8.0.26-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Wed Nov 11 2015 Robert Scheck 1:8.0.26-2 -- CATALINA_OPTS are only read when SECURITY_MANAGER is true (#1147105) - -* Thu Aug 27 2015 Alexander Kurtakov 1:8.0.26-1 -- Update to 8.0.26. - -* Fri Jul 10 2015 Alexander Kurtakov 1:8.0.24-2 -- Update to 8.0.24. - -* Fri Jun 19 2015 Alexander Kurtakov 1:8.0.23-2 -- Drop javax.el:el-api alias. - -* Thu Jun 18 2015 Alexander Kurtakov 1:8.0.23-1 -- Update to 8.0.23. - -* Thu Jun 18 2015 Alexander Kurtakov 1:8.0.20-3 -- Drop jetty alias for servlet. - -* Tue Jun 09 2015 Michal Srb - 1:8.0.20-2 -- Fix metadata for org.apache.tomcat:{tomcat-jni,tomcat-util-scan} - -* Thu Mar 5 2015 Alexander Kurtakov 1:8.0.18-5 -- Rebuild against tomcat-taglibs-standard. - -* Wed Mar 4 2015 Alexander Kurtakov 1:8.0.18-4 -- Fix epoch bumped el_1_0_api that would override all other glassfish/jboss/etc. due to wrong epoch. -- Drop old provides. - -* Tue Mar 03 2015 Stephen Gallagher 1:8.0.18-3 -- Bump epoch to maintain upgrade path from Fedora 22 - -* Mon Feb 16 2015 Michal Srb - 0:8.0.18-2 -- Install POM files for org.apache.tomcat:{tomcat-jni,tomcat-util-scan} - -* Sun Feb 15 2015 Ivan Afonichev 0:8.0.18-1 -- Updated to 8.0.18 - -* Sat Sep 20 2014 Ivan Afonichev 0:8.0.12-1 -- Updated to 8.0.12 -- Substitute libnames in catalina-tasks.xml, resolves: rhbz#1126439 -- Use CATALINA_OPTS only on start, resolves: rhbz#1051194 - -* Mon Jun 16 2014 Michal Srb - 0:7.0.54-3 -- jsp-api requires el-api - -* Sun Jun 08 2014 Fedora Release Engineering - 0:7.0.54-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Thu Jun 5 2014 Alexander Kurtakov 0:7.0.54-1 -- Update to upstream 7.0.54 - fixes compile with Java 8. - -* Wed May 21 2014 Alexander Kurtakov 0:7.0.52-3 -- Drop servlet/el api provides to reduce user machines ending with both. - -* Sun Mar 30 2014 Ivan Afonichev 0:7.0.52-2 -- Don't provide maven javax.jsp:jsp-api and javax.servlet.jsp:javax.servlet.jsp-api resolves: rhbz#1076949 -- Move log4j support into subpackage, resolves: rhbz#1027716 - -* Wed Mar 26 2014 Ivan Afonichev 0:7.0.52-1 -- Updated to 7.0.52 -- Rewrite jsvc implementation, resolves: rhbz#1051743 -- Switch to java-headless R, resolves: rhbz#1068566 -- Create and own %%{_localstatedir}/lib/tomcats, resolves: rhbz#1026741 -- Add pom for tomcat-jdbc, resolves: rhbz#1011003 - -* Tue Jan 21 2014 Mikolaj Izdebski - 0:7.0.47-3 -- Fix installation of Maven metadata for tomcat-juli.jar -- Resolves: rhbz#1033664 - -* Wed Jan 15 2014 Stanislav Ochotnicky - 0:7.0.47-2 -- Rebuild for bug #1033664 +* Thu Feb 20 2014 Vlad Slepukhin 0:7.0.33-1 +- Rebuilded for EL6 compatibility +- Removed systemd for compatibility +- As no systemd used, systemv moved back to tomcat package +- Build now requires ant-trax for compatibility (XSLT and JavaDoc) +- Build now requires redhat-lsb for LSB libraries on CentOS +- Removed geronimo-jaxrpc as no package found in EL6 +- Renamed apache-* packages to jakarta-* ones for EL6 +- %add_maven_depmap replaced with %add_to_maven_depmap as no such Maven script exists in EL6 maven packages +- Refactored and cleaned, removing unused code +- Removed unused files needed for systemd +- Corrected access attributes and rights management for safety purposes * Sun Nov 03 2013 Ivan Afonichev 0:7.0.47-1 - Updated to 7.0.47 -- Fix java.security.policy - -* Sun Aug 04 2013 Fedora Release Engineering - 0:7.0.42-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Fri Jul 12 2013 Ivan Afonichev 0:7.0.42-2 -- Remove jpackage-utils R * Thu Jul 11 2013 Dmitry Tikhonov 0:7.0.42-1 - Updated to 7.0.42 -* Tue Jun 11 2013 Paul Komkoff 0:7.0.40-3 -- Dropped systemv inits. Bye-bye. -- Updated the systemd wrappers to allow running multiple instances. - Added wrapper scripts to do that, ported the original non-named - service file to work with the same wrappers, updated - /usr/sbin/tomcat to call systemctl. - * Sat May 11 2013 Ivan Afonichev 0:7.0.40-1 - Updated to 7.0.40 - Resolves: rhbz 956569 added missing commons-pool link -- Remove ant-nodeps BR * Mon Mar 4 2013 Mikolaj Izdebski - 0:7.0.37-2 - Add depmaps for org.eclipse.jetty.orbit @@ -1054,7 +800,7 @@ install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf - Updated to 7.0.28 - Resolves: rhbz 820119 Remove bundled apache-commons-dbcp - Resolves: rhbz 814900 Added tomcat-coyote POM -- Resolves: rhbz 810775 Remove systemv stuff from %%post scriptlet +- Resolves: rhbz 810775 Remove systemv stuff from %post scriptlet - Remove redhat-lsb R * Mon Apr 9 2012 Ivan Afonichev 0:7.0.27-2 @@ -1174,7 +920,7 @@ install -m0644 -D tomcat.sysusers.conf %{buildroot}%{_sysusersdir}/tomcat.conf * Thu Apr 28 2011 Ivan Afonichev 0:7.0.12-2 - Package now named just tomcat instead of tomcat7 -- Removed Provides: %%{name}-log4j +- Removed Provides: %{name}-log4j - Switched to apache-commons-* names instead of jakarta-commons-* . - Remove the old changelog - BR/R java >= 1:1.6.0 , same for java-devel