diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..191ee83
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/tomcat-9.0.30.redhat-4-src.zip
diff --git a/.pki-servlet-engine.metadata b/.pki-servlet-engine.metadata
new file mode 100644
index 0000000..b091fff
--- /dev/null
+++ b/.pki-servlet-engine.metadata
@@ -0,0 +1 @@
+154cbcee2ff93a9a8efab28dd256f9edac95efe2 SOURCES/tomcat-9.0.30.redhat-4-src.zip
diff --git a/SOURCES/removeUnusedDependencies.patch b/SOURCES/removeUnusedDependencies.patch
new file mode 100644
index 0000000..2485940
--- /dev/null
+++ b/SOURCES/removeUnusedDependencies.patch
@@ -0,0 +1,427 @@
+diff -up ./build.properties.default.orig ./build.properties.default
+--- ./build.properties.default.orig 2020-04-23 09:43:55.567688581 -0400
++++ ./build.properties.default 2020-04-23 09:57:55.724988090 -0400
+@@ -274,35 +274,3 @@ findbugs.checksum.value=8c54502a8e1b78ea
+ findbugs.home=${base.path}/spotbugs-${findbugs.version}
+ findbugs.jar=${findbugs.home}/lib/spotbugs-ant.jar
+ findbugs.loc=${base-maven.loc}/com/github/spotbugs/spotbugs/${findbugs.version}/spotbugs-${findbugs.version}.tgz
+-
+-# ----- SAAJ API, used by Code Signing for releases -----
+-# ----- No longer part of JRE from Java 11 onwards -----
+-# ----- CDDL Licensed -----
+-saaj-api.version=1.3.5
+-saaj-api.checksum.enabled=true
+-saaj-api.checksum.algorithm=MD5|SHA-1
+-saaj-api.checksum.value=caae8b4bf2c551155815331e9e96256f|1c399a7fea4d0262a6a39750e419c24f0c769586
+-saaj-api.home=${base.path}/saaj-api-${saaj-api.version}
+-saaj-api.jar=${saaj-api.home}/saaj-api-${saaj-api.version}.jar
+-saaj-api.loc=${base-maven.loc}/javax/xml/soap/saaj-api/${saaj-api.version}/saaj-api-${saaj-api.version}.jar
+-
+-# ----- bnd & bndlib, version 4.0.0 or later -----
+-# ----- provides OSGI metadata for JARs -----
+-bnd.version=4.2.0
+-
+-# checksums for biz.aQute.bnd-4.2.0.jar, biz.aQute.bndlib-4.2.0.jar
+-bnd.checksum.enabled=true
+-bnd.checksum.algorithm=MD5|SHA-1
+-bnd.checksum.value=ca26a671ea67bf75d83b1588bdd68923|d4bc96b2619f95e596bbf3f725f3b077e96c5d43
+-
+-bndlib.checksum.enabled=true
+-bndlib.checksum.algorithm=MD5|SHA-1
+-bndlib.checksum.value=7519e890783ade99bb74608d0efbf8c4|c4fa30ac11cc0bf27b1f706ac8ebae8cec358e77
+-
+-bnd.home=${base.path}/bnd-${bnd.version}
+-bnd.jar=${bnd.home}/biz.aQute.bnd-${bnd.version}.jar
+-bnd.loc=${base-maven.loc}/biz/aQute/bnd/biz.aQute.bnd/${bnd.version}/biz.aQute.bnd-${bnd.version}.jar
+-
+-bndlib.home=${base.path}/bndlib-${bnd.version}
+-bndlib.jar=${bndlib.home}/biz.aQute.bndlib-${bnd.version}.jar
+-bndlib.loc=${base-maven.loc}/biz/aQute/bnd/biz.aQute.bndlib/${bnd.version}/biz.aQute.bndlib-${bnd.version}.jar
+diff -up ./build.xml.orig ./build.xml
+--- ./build.xml.orig 2020-04-23 09:43:50.041699701 -0400
++++ ./build.xml 2020-04-23 09:58:18.835941004 -0400
+@@ -69,7 +69,6 @@
+
+
+
+-
+
+
+
+@@ -219,9 +218,6 @@
+
+
+
+-
+-
+-
+
+
+
+@@ -272,7 +268,6 @@
+
+
+
+-
+
+
+
+@@ -425,6 +420,7 @@
+
+
+
++
+
+
+
+@@ -556,18 +552,6 @@
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+
+
+
+
++
+
+
+
+@@ -755,25 +740,12 @@
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
++
+
+
++ manifest="${tomcat.manifests}/annotations-api.jar.manifest" />
+
+
+
++ license="${tomcat.manifests}/servlet-api.jar.license" />
+
+
+
++ manifest="${tomcat.manifests}/jsp-api.jar.manifest" />
+
+
+
++ manifest="${tomcat.manifests}/el-api.jar.manifest" />
+
+
+
++ manifest="${tomcat.manifests}/websocket-api.jar.manifest" />
+
+
+
++ manifest="${tomcat.manifests}/jaspic-api.jar.manifest" />
+
+
+
++ meta-inf="${tomcat.manifests}/tomcat-websocket.jar" />
+
+
+
+
++ filesId="files.tomcat-juli" />
+
+
+
++ filesId="files.catalina" />
+
+
+
++ filesId="files.catalina-tribes" />
+
+
+
++ filesId="files.catalina-ssi" />
+
+
+
++ filesId="files.catalina-ha" />
+
+
+
+
++ filesId="files.catalina-storeconfig" />
+
+
+
++ filesId="files.tomcat-api" />
+
+
+
++ filesId="files.tomcat-util" />
+
+
+
++ filesId="files.tomcat-util-scan" />
+
+
+
++ filesId="files.tomcat-coyote" />
+
+
++ filesId="files.tomcat-jni" />
+
+
+
++ meta-inf="${tomcat.manifests}/jasper.jar" />
+
+
+
++ filesId="files.jasper-el" />
+
+
+
++ filesId="files.tomcat-dbcp" />
+
+
+
+
+
++ depends="build-manifests,compile" >
+
+
+
+@@ -1387,22 +1339,18 @@
+ filesDir="${tomcat.classes}"
+ filesId="files.tomcat-embed-core"
+ notice="${tomcat.manifests}/servlet-api.jar.notice"
+- license="${tomcat.manifests}/servlet-api.jar.license"
+- addOSGi="true" />
++ license="${tomcat.manifests}/servlet-api.jar.license" />
+
++ meta-inf="${tomcat.manifests}/jasper.jar" />
+
++ filesId="files.tomcat-embed-el" />
+
++ meta-inf="${tomcat.manifests}/tomcat-websocket.jar" />
+
+
+
+@@ -2749,34 +2697,6 @@ skip.installer property in build.propert
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+
+
+@@ -3261,38 +3181,6 @@ Read the Building page on the Apache Tom
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+
+@@ -3308,8 +3196,6 @@ Read the Building page on the Apache Tom
+ default="${tomcat.manifests}/default.license" />
+
+-
+
+
+
+@@ -3323,22 +3209,9 @@ Read the Building page on the Apache Tom
+
+
+
+-
+-
+-
+-
+
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+
+
diff --git a/SOURCES/tomcat-9.0-bootstrap-MANIFEST.MF.patch b/SOURCES/tomcat-9.0-bootstrap-MANIFEST.MF.patch
new file mode 100644
index 0000000..e2ee93e
--- /dev/null
+++ b/SOURCES/tomcat-9.0-bootstrap-MANIFEST.MF.patch
@@ -0,0 +1,9 @@
+--- res/META-INF/bootstrap.jar.manifest.orig 2010-04-06 10:11:09.000000000 -0600
++++ res/META-INF/bootstrap.jar.manifest 2010-04-06 10:45:56.000000000 -0600
+@@ -1,6 +1,5 @@
+ Manifest-Version: 1.0
+ Main-Class: org.apache.catalina.startup.Bootstrap
+-Class-Path: commons-daemon.jar
+ Specification-Title: Apache Tomcat Bootstrap
+ Specification-Version: @VERSION_MAJOR_MINOR@
+ Specification-Vendor: Apache Software Foundation
diff --git a/SOURCES/tomcat-9.0-catalina-policy.patch b/SOURCES/tomcat-9.0-catalina-policy.patch
new file mode 100644
index 0000000..c8c5c08
--- /dev/null
+++ b/SOURCES/tomcat-9.0-catalina-policy.patch
@@ -0,0 +1,33 @@
+--- conf/catalina.policy.orig 2018-06-21 13:30:04.074492012 -0400
++++ conf/catalina.policy 2018-06-21 13:30:02.111479809 -0400
+@@ -50,6 +50,30 @@ grant codeBase "file:${java.home}/lib/ex
+ 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/tomcat-servlet-4.0-api.jar" {
++ permission java.security.AllPermission;
++};
++grant codeBase "file:/usr/share/java/tomcat-jsp-2.3-api.jar" {
++ permission java.security.AllPermission;
++};
++grant codeBase "file:/usr/share/java/tomcat-el-3.0-api.jar" {
++ permission java.security.AllPermission;
++};
++grant codeBase "file:/usr/share/java/ant.jar" {
++ permission java.security.AllPermission;
++};
++grant codeBase "file:/usr/share/java/ant-launcher.jar" {
++ permission java.security.AllPermission;
++};
++grant codeBase "file:/usr/lib/jvm/java/lib/tools.jar" {
++ permission java.security.AllPermission;
++};
++
+
+ // ========== CATALINA CODE PERMISSIONS =======================================
+
diff --git a/SOURCES/tomcat-9.0-digest.script b/SOURCES/tomcat-9.0-digest.script
new file mode 100644
index 0000000..d2b626c
--- /dev/null
+++ b/SOURCES/tomcat-9.0-digest.script
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# tomcat-digest script
+# JPackage Project
+
+# Source functions library
+if [ -f /usr/share/java-utils/java-functions ] ; then
+ . /usr/share/java-utils/java-functions
+else
+ echo "Can't find functions library, aborting"
+ exit 1
+fi
+
+# Get the tomcat config (use this for environment specific settings)
+if [ -z "${TOMCAT_CFG}" ]; then
+ TOMCAT_CFG="/etc/tomcat/tomcat.conf"
+fi
+
+if [ -r "$TOMCAT_CFG" ]; then
+ . $TOMCAT_CFG
+fi
+
+set_javacmd
+
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/bootstrap.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-api.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-util.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-util-scan.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-coyote.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/catalina.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/servlet-api.jar"
+export CLASSPATH
+
+# Configuration
+MAIN_CLASS="org.apache.catalina.startup.Tool"
+BASE_FLAGS="-Dcatalina.home=\"$CATALINA_HOME\""
+BASE_OPTIONS=""
+#BASE_JARS="tomcat/tomcat-util tomcat/tomcat-util-scan"
+#BASE_JARS="${BASE_JARS} tomcat/tomcat-coyote tomcat/catalina"
+#BASE_JARS="${BASE_JARS} tomcat/servlet-api"
+
+# Set parameters
+#set_classpath $BASE_JARS
+set_flags $BASE_FLAGS
+set_options $BASE_OPTIONS
+
+# Let's start
+run -server org.apache.catalina.realm.RealmBase "$@"
diff --git a/SOURCES/tomcat-9.0-tomcat-users-webapp.patch b/SOURCES/tomcat-9.0-tomcat-users-webapp.patch
new file mode 100644
index 0000000..860c4cf
--- /dev/null
+++ b/SOURCES/tomcat-9.0-tomcat-users-webapp.patch
@@ -0,0 +1,17 @@
+--- conf/tomcat-users.xml~ 2008-01-28 17:41:06.000000000 -0500
++++ conf/tomcat-users.xml 2008-03-07 19:40:07.000000000 -0500
+@@ -23,4 +23,14 @@
+
+
+ -->
++
++
++
++
++
++
++
++
++
++
+
diff --git a/SOURCES/tomcat-9.0-tool-wrapper.script b/SOURCES/tomcat-9.0-tool-wrapper.script
new file mode 100644
index 0000000..e427dbc
--- /dev/null
+++ b/SOURCES/tomcat-9.0-tool-wrapper.script
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# tomcat-digest script
+# JPackage Project
+
+# Source functions library
+if [ -f /usr/share/java-utils/java-functions ] ; then
+ . /usr/share/java-utils/java-functions
+else
+ echo "Can't find functions library, aborting"
+ exit 1
+fi
+
+# Get the tomcat config (use this for environment specific settings)
+if [ -z "${TOMCAT_CFG}" ]; then
+ TOMCAT_CFG="/etc/tomcat/tomcat.conf"
+fi
+
+if [ -r "$TOMCAT_CFG" ]; then
+ . $TOMCAT_CFG
+fi
+
+set_javacmd
+
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/bootstrap.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-api.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-util.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-util-scan.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/tomcat-coyote.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/catalina.jar"
+CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/lib/servlet-api.jar"
+export CLASSPATH
+
+# Configuration
+MAIN_CLASS="org.apache.catalina.startup.Tool"
+BASE_OPTIONS=""
+BASE_FLAGS="-Dcatalina.home=\"$CATALINA_HOME\""
+#BASE_JARS="tomcat/tomcat-util tomcat/tomcat-util-scan"
+#BASE_JARS="${BASE_JARS} tomcat/tomcat-coyote tomcat/catalina"
+#BASE_JARS="${BASE_JARS} tomcat/servlet-api"
+
+# Set parameters
+#set_classpath $BASE_JARS
+set_flags $BASE_FLAGS
+set_options $BASE_OPTIONS
+
+# Let's start
+run "$@"
diff --git a/SOURCES/tomcat-9.0.30-CompilerOptionsRemoval.patch b/SOURCES/tomcat-9.0.30-CompilerOptionsRemoval.patch
new file mode 100644
index 0000000..4c477b4
--- /dev/null
+++ b/SOURCES/tomcat-9.0.30-CompilerOptionsRemoval.patch
@@ -0,0 +1,63 @@
+--- java/org/apache/jasper/compiler/JDTCompiler.java.orig 2020-04-21 13:14:09.678677327 -0400
++++ java/org/apache/jasper/compiler/JDTCompiler.java 2020-04-21 13:14:53.044535302 -0400
+@@ -313,25 +313,6 @@ public class JDTCompiler extends org.apa
+ } else if(opt.equals("1.8")) {
+ settings.put(CompilerOptions.OPTION_Source,
+ CompilerOptions.VERSION_1_8);
+- // Version format changed from Java 9 onwards.
+- // 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,
+- CompilerOptions.VERSION_9);
+- } else if(opt.equals("10")) {
+- settings.put(CompilerOptions.OPTION_Source,
+- CompilerOptions.VERSION_10);
+- } else if(opt.equals("11")) {
+- settings.put(CompilerOptions.OPTION_Source,
+- CompilerOptions.VERSION_11);
+- } else if(opt.equals("12")) {
+- settings.put(CompilerOptions.OPTION_Source,
+- CompilerOptions.VERSION_12);
+- } else if(opt.equals("13")) {
+- // 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_Source, "13");
+ } else {
+ log.warn(Localizer.getMessage("jsp.warning.unknown.sourceVM", opt));
+ settings.put(CompilerOptions.OPTION_Source,
+@@ -378,34 +359,6 @@ public class JDTCompiler extends org.apa
+ CompilerOptions.VERSION_1_8);
+ settings.put(CompilerOptions.OPTION_Compliance,
+ CompilerOptions.VERSION_1_8);
+- // Version format changed from Java 9 onwards.
+- // Support old format that was used in EA implementation as well
+- } else if(opt.equals("9") || opt.equals("1.9")) {
+- settings.put(CompilerOptions.OPTION_TargetPlatform,
+- CompilerOptions.VERSION_9);
+- settings.put(CompilerOptions.OPTION_Compliance,
+- CompilerOptions.VERSION_9);
+- } else if(opt.equals("10")) {
+- settings.put(CompilerOptions.OPTION_TargetPlatform,
+- CompilerOptions.VERSION_10);
+- settings.put(CompilerOptions.OPTION_Compliance,
+- CompilerOptions.VERSION_10);
+- } else if(opt.equals("11")) {
+- settings.put(CompilerOptions.OPTION_TargetPlatform,
+- CompilerOptions.VERSION_11);
+- settings.put(CompilerOptions.OPTION_Compliance,
+- CompilerOptions.VERSION_11);
+- } else if(opt.equals("12")) {
+- settings.put(CompilerOptions.OPTION_TargetPlatform,
+- CompilerOptions.VERSION_12);
+- settings.put(CompilerOptions.OPTION_Compliance,
+- CompilerOptions.VERSION_12);
+- } else if(opt.equals("13")) {
+- // 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, "13");
+- settings.put(CompilerOptions.OPTION_Compliance, "13");
+ } else {
+ log.warn(Localizer.getMessage("jsp.warning.unknown.targetVM", opt));
+ settings.put(CompilerOptions.OPTION_TargetPlatform,
diff --git a/SOURCES/tomcat-9.0.conf b/SOURCES/tomcat-9.0.conf
new file mode 100644
index 0000000..d680192
--- /dev/null
+++ b/SOURCES/tomcat-9.0.conf
@@ -0,0 +1,61 @@
+# 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"
+
+# Where your java installation lives
+#JAVA_HOME="/usr/lib/jvm/java"
+
+# Where your tomcat installation lives
+CATALINA_BASE="@@@TCHOME@@@"
+CATALINA_HOME="@@@TCHOME@@@"
+CATALINA_TMPDIR="@@@TCTEMP@@@"
+
+# You can pass some parameters to java here if you wish to
+#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
+
+# You can change your tomcat locale here
+#LANG="en_US"
+
+# Run tomcat under the Java Security Manager
+SECURITY_MANAGER="false"
+
+# DEPRECATED VARIABLES
+#
+# TOMCAT_USER has been deprecated. To update the tomcat process owner,
+# please see User in tomcat.service.
+#
+# TOMCAT_GROUP has been deprecated. To update the tomcat process group,
+# please see Group in tomcat.service.
+#
+# SHUTDOWN_WAIT has been deprecated. To change the shutdown wait time, set
+# TimeoutStopSec in tomcat.service.
+#
+# SHUTDOWN_VERBOSE has been deprecated. There is no replacement for this behavior.
+#
+# CATALINA_PID has been deprecated. A replacement for this behavior is to set
+# PIDFile in tomcat.service.
+#
+# CONNECTOR_PORT has been deprecated. There is no replacement for this behavior.
+# Set init script output file
+#
+# TOMCAT_LOG has been deprecated. Output from start/stop/status operations are
+# logged to the system's journal.
+#
+# LOGGING_CONFIG has been deprecated. To update the logging properties in use, use:
+# LOGGING_PROPERTIES="${CATALINA_HOME}/lib/log4j.properties"
+
+# 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/SOURCES/tomcat-9.0.service b/SOURCES/tomcat-9.0.service
new file mode 100644
index 0000000..bf90428
--- /dev/null
+++ b/SOURCES/tomcat-9.0.service
@@ -0,0 +1,21 @@
+# 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
+UMask=027
+
+[Install]
+WantedBy=multi-user.target
diff --git a/SOURCES/tomcat-9.0.sysconfig b/SOURCES/tomcat-9.0.sysconfig
new file mode 100644
index 0000000..39db94a
--- /dev/null
+++ b/SOURCES/tomcat-9.0.sysconfig
@@ -0,0 +1,11 @@
+# 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/SOURCES/tomcat-9.0.wrapper b/SOURCES/tomcat-9.0.wrapper
new file mode 100644
index 0000000..c97cb85
--- /dev/null
+++ b/SOURCES/tomcat-9.0.wrapper
@@ -0,0 +1,24 @@
+#!/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/SOURCES/tomcat-functions b/SOURCES/tomcat-functions
new file mode 100644
index 0000000..ac7f00d
--- /dev/null
+++ b/SOURCES/tomcat-functions
@@ -0,0 +1,26 @@
+#!/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() {
+ if [ "${USE_JSVC}" = "true" ] ; then
+ echo "JSVC support is not available with this Tomcat package."
+ exit 1
+ else
+ run_java $@
+ fi
+}
+
diff --git a/SOURCES/tomcat-named.service b/SOURCES/tomcat-named.service
new file mode 100644
index 0000000..66cf45c
--- /dev/null
+++ b/SOURCES/tomcat-named.service
@@ -0,0 +1,26 @@
+# 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
+UMask=027
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/SOURCES/tomcat-preamble b/SOURCES/tomcat-preamble
new file mode 100644
index 0000000..07d28a3
--- /dev/null
+++ b/SOURCES/tomcat-preamble
@@ -0,0 +1,56 @@
+#!/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"
+
+# Since ECJ is no longer available, add ant, ant-launcher, and tools jars to the
+# classpath so that runtime compilation of JSPs still works.
+CLASSPATH="${CLASSPATH}:/usr/share/java/ant.jar:/usr/share/java/ant-launcher.jar"
+CLASSPATH="${CLASSPATH}:/usr/lib/jvm/java/lib/tools.jar"
+
+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/SOURCES/tomcat-server b/SOURCES/tomcat-server
new file mode 100644
index 0000000..17ae385
--- /dev/null
+++ b/SOURCES/tomcat-server
@@ -0,0 +1,25 @@
+#!/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/SPECS/pki-servlet-engine.spec b/SPECS/pki-servlet-engine.spec
new file mode 100644
index 0000000..fc97047
--- /dev/null
+++ b/SPECS/pki-servlet-engine.spec
@@ -0,0 +1,490 @@
+# Copyright (c) 2000-2008, JPackage Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name of the JPackage Project nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+%global major_version 9
+%global minor_version 0
+%global micro_version 30
+%global redhat_version 4
+%global packdname apache-tomcat-%{version}.redhat-%{redhat_version}-src
+
+# Specification versions
+%global servletspec 4.0
+%global jspspec 2.3
+%global elspec 3.0
+
+%global tcuid 91
+
+# FHS 2.3 compliant tree structure - http://www.pathname.com/fhs/2.3/
+%global basedir %{_var}/lib/tomcat
+%global appdir %{basedir}/webapps
+%global homedir %{_datadir}/tomcat
+%global bindir %{homedir}/bin
+%global confdir %{_sysconfdir}/tomcat
+%global libdir %{_javadir}/tomcat
+%global logdir %{_var}/log/tomcat
+%global cachedir %{_var}/cache/tomcat
+%global tempdir %{cachedir}/temp
+%global workdir %{cachedir}/work
+%global _initrddir %{_sysconfdir}/init.d
+%global _systemddir /lib/systemd/system
+
+Name: pki-servlet-engine
+Epoch: 1
+Version: %{major_version}.%{minor_version}.%{micro_version}
+Release: 1%{?dist}
+Summary: Apache Servlet/JSP Engine, RI for Servlet %{servletspec}/JSP %{jspspec} API
+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
+Source0: tomcat-%{version}.redhat-%{redhat_version}-src.zip
+Source1: tomcat-%{major_version}.%{minor_version}.conf
+Source3: tomcat-%{major_version}.%{minor_version}.sysconfig
+Source4: tomcat-%{major_version}.%{minor_version}.wrapper
+Source6: tomcat-%{major_version}.%{minor_version}-digest.script
+Source7: tomcat-%{major_version}.%{minor_version}-tool-wrapper.script
+Source8: tomcat-%{major_version}.%{minor_version}.service
+Source21: tomcat-functions
+Source30: tomcat-preamble
+Source31: tomcat-server
+Source32: tomcat-named.service
+
+Patch0: tomcat-%{major_version}.%{minor_version}-bootstrap-MANIFEST.MF.patch
+Patch1: tomcat-%{major_version}.%{minor_version}-tomcat-users-webapp.patch
+Patch2: tomcat-9.0.30-CompilerOptionsRemoval.patch
+Patch3: tomcat-%{major_version}.%{minor_version}-catalina-policy.patch
+Patch4: removeUnusedDependencies.patch
+
+BuildArch: noarch
+
+BuildRequires: ant
+BuildRequires: findutils
+BuildRequires: java-devel >= 1:1.8.0
+BuildRequires: jpackage-utils >= 0:1.7.0
+BuildRequires: maven-local
+BuildRequires: systemd-units
+
+Requires: ant
+Requires: java-headless >= 1:1.8.0
+Requires: java-devel >= 1:1.8.0
+Requires: jpackage-utils
+Requires: procps
+Requires(pre): shadow-utils
+Requires(post): chkconfig
+Requires(postun): chkconfig
+Requires(preun): chkconfig
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+Requires(preun): coreutils
+Requires: pki-servlet-%{servletspec}-api = %{epoch}:%{version}-%{release}
+
+# Add bundled so that everyone knows this is Tomcat
+Provides: bundled(tomcat) = 9.0.30.redhat-%{redhat_version}
+
+Obsoletes: pki-servlet-container
+
+%description
+Tomcat is the servlet engine that is used in the official Reference
+Implementation for the Java Servlet and JavaServer Pages technologies.
+The Java Servlet and JavaServer Pages specifications are developed by
+Sun under the Java Community Process.
+
+Tomcat is developed in an open and participatory environment and
+released under the Apache Software License version 2.0. Tomcat is intended
+to be a collaboration of the best-of-breed developers from around the world.
+
+%package -n pki-servlet-%{servletspec}-api
+Group: Development/Libraries
+Summary: Apache Tomcat Java Servlet v%{servletspec} API Implementation Classes
+Requires(post): chkconfig
+Requires(postun): chkconfig
+
+%description -n pki-servlet-%{servletspec}-api
+Apache Tomcat Servlet API Implementation Classes.
+
+%prep
+%setup -q -n %{packdname}
+
+# remove pre-built binaries and windows files
+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
+
+%patch0 -p0
+%patch1 -p0
+%patch2 -p0
+%patch3 -p0
+%patch4 -p0
+
+# Since we don't support ECJ in RHEL anymore, remove the class that requires it
+%{__rm} -f java/org/apache/jasper/compiler/JDTCompiler.java
+
+%build
+export OPT_JAR_LIST="xalan-j2-serializer"
+
+# Create a dummy file for later removal
+touch HACK
+
+# who needs a build.properties file anyway
+%{ant} -Dbase.path="." \
+ -Dbuild.compiler="modern" \
+ -Dcommons-daemon.jar="HACK" \
+ -Dcommons-daemon.native.src.tgz="HACK" \
+ -Djdt.jar="HACK" \
+ -Dtomcat-native.tar.gz="HACK" \
+ -Dtomcat-native.home="." \
+ -Dcommons-daemon.native.win.mgr.exe="HACK" \
+ -Dnsis.exe="HACK" \
+ deploy dist-prepare dist-source
+
+# remove some jars that we don't need
+#%%{__rm} output/build/bin/commons-daemon.jar
+
+%install
+# build initial path structure
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_bindir}
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_sbindir}
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_initrddir}
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_systemddir}
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{appdir}
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{bindir}
+%{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{confdir}
+%{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{confdir}/Catalina/localhost
+%{__install} -d -m 0775 ${RPM_BUILD_ROOT}%{confdir}/conf.d
+/bin/echo "Place your custom *.conf files here. Shell expansion is supported." > ${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
+%{__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}/tomcat
+
+# 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} -a lib/*.jar ${RPM_BUILD_ROOT}%{libdir}
+popd
+
+%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
+ -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \
+ -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE1} \
+ > ${RPM_BUILD_ROOT}%{confdir}/tomcat.conf
+%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
+ -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \
+ -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE3} \
+ > ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/tomcat
+%{__install} -m 0644 %{SOURCE4} \
+ ${RPM_BUILD_ROOT}%{_sbindir}/tomcat
+%{__install} -m 0644 %{SOURCE8} \
+ ${RPM_BUILD_ROOT}%{_unitdir}/tomcat.service
+%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
+ -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \
+ -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE6} \
+ > ${RPM_BUILD_ROOT}%{_bindir}/tomcat-digest
+%{__sed} -e "s|\@\@\@TCHOME\@\@\@|%{homedir}|g" \
+ -e "s|\@\@\@TCTEMP\@\@\@|%{tempdir}|g" \
+ -e "s|\@\@\@LIBDIR\@\@\@|%{_libdir}|g" %{SOURCE7} \
+ > ${RPM_BUILD_ROOT}%{_bindir}/tomcat-tool-wrapper
+
+%{__install} -m 0644 %{SOURCE21} \
+ ${RPM_BUILD_ROOT}%{_libexecdir}/tomcat/functions
+%{__install} -m 0755 %{SOURCE30} \
+ ${RPM_BUILD_ROOT}%{_libexecdir}/tomcat/preamble
+%{__install} -m 0755 %{SOURCE31} \
+ ${RPM_BUILD_ROOT}%{_libexecdir}/tomcat/server
+%{__install} -m 0644 %{SOURCE32} \
+ ${RPM_BUILD_ROOT}%{_unitdir}/tomcat@.service
+
+# Substitute libnames in catalina-tasks.xml
+sed -i \
+ "s,el-api.jar,tomcat-el-%{elspec}-api.jar,;
+ s,servlet-api.jar,tomcat-servlet-%{servletspec}-api.jar,;
+ s,jsp-api.jar,tomcat-jsp-%{jspspec}-api.jar,;" \
+ ${RPM_BUILD_ROOT}%{bindir}/catalina-tasks.xml
+
+# create jsp and servlet API symlinks
+pushd ${RPM_BUILD_ROOT}%{_javadir}
+ %{__mv} tomcat/jsp-api.jar tomcat-jsp-%{jspspec}-api.jar
+ %{__ln_s} tomcat-jsp-%{jspspec}-api.jar tomcat-jsp-api.jar
+ %{__mv} tomcat/servlet-api.jar tomcat-servlet-%{servletspec}-api.jar
+ %{__ln_s} tomcat-servlet-%{servletspec}-api.jar tomcat-servlet-api.jar
+ %{__mv} tomcat/el-api.jar tomcat-el-%{elspec}-api.jar
+ %{__ln_s} tomcat-el-%{elspec}-api.jar tomcat-el-api.jar
+popd
+
+pushd ${RPM_BUILD_ROOT}%{libdir}
+ # symlink JSP and servlet API jars
+ %{__ln_s} ../../java/tomcat-jsp-%{jspspec}-api.jar .
+ %{__ln_s} ../../java/tomcat-servlet-%{servletspec}-api.jar .
+ %{__ln_s} ../../java/tomcat-el-%{elspec}-api.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
+pushd ${RPM_BUILD_ROOT}%{homedir}
+ %{__ln_s} %{appdir} webapps
+ %{__ln_s} %{confdir} conf
+ %{__ln_s} %{libdir} lib
+ %{__ln_s} %{logdir} logs
+ %{__ln_s} %{tempdir} temp
+ %{__ln_s} %{workdir} work
+popd
+
+# Install the maven metadata
+%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_mavenpomdir}
+pushd output/dist/src/res/maven
+for pom in *.pom; do
+ # fix-up version in all pom files
+ sed -i 's/@MAVEN.DEPLOY.VERSION@/%{version}/g' $pom
+done
+
+# we won't install dbcp, juli-adapters and juli-extras pom files
+for libname in annotations-api catalina jasper-el jasper catalina-ha; do
+ %{__cp} -a tomcat-$libname.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-$libname.pom
+ %add_maven_depmap JPP.tomcat-$libname.pom tomcat/$libname.jar
+done
+
+# tomcat-util-scan
+%{__cp} -a tomcat-util-scan.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-util-scan.pom
+%add_maven_depmap JPP.tomcat-util-scan.pom tomcat/tomcat-util-scan.jar
+
+# tomcat-jni
+%{__cp} -a tomcat-jni.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-jni.pom
+%add_maven_depmap JPP.tomcat-jni.pom tomcat/tomcat-jni.jar
+
+# servlet-api jsp-api and el-api are not in tomcat subdir, since they are widely re-used elsewhere
+%{__cp} -a tomcat-jsp-api.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP-tomcat-jsp-api.pom
+%add_maven_depmap JPP-tomcat-jsp-api.pom tomcat-jsp-api.jar -a "org.eclipse.jetty.orbit:javax.servlet.jsp"
+
+%{__cp} -a tomcat-el-api.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP-tomcat-el-api.pom
+%add_maven_depmap JPP-tomcat-el-api.pom tomcat-el-api.jar -a "org.eclipse.jetty.orbit:javax.el"
+
+%{__cp} -a tomcat-servlet-api.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP-tomcat-servlet-api.pom
+# Generate a depmap fragment javax.servlet:servlet-api pointing to
+# tomcat-servlet-3.0-api for backwards compatibility
+# also provide jetty depmap (originally in jetty package, but it's cleaner to have it here
+%add_maven_depmap JPP-tomcat-servlet-api.pom tomcat-servlet-%{servletspec}-api.jar -f "tomcat-servlet-api"
+
+# replace temporary copy with link
+%{__ln_s} -f $(abs2rel %{bindir}/tomcat-juli.jar %{libdir}) ${RPM_BUILD_ROOT}%{libdir}/
+
+# two special pom where jar files have different names
+%{__cp} -a tomcat-tribes.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-catalina-tribes.pom
+%add_maven_depmap JPP.tomcat-catalina-tribes.pom tomcat/catalina-tribes.jar
+
+%{__cp} -a tomcat-coyote.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-tomcat-coyote.pom
+%add_maven_depmap JPP.tomcat-tomcat-coyote.pom tomcat/tomcat-coyote.jar
+
+%{__cp} -a tomcat-juli.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-tomcat-juli.pom
+%add_maven_depmap JPP.tomcat-tomcat-juli.pom tomcat/tomcat-juli.jar
+
+%{__cp} -a tomcat-api.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-tomcat-api.pom
+%add_maven_depmap JPP.tomcat-tomcat-api.pom tomcat/tomcat-api.jar
+
+%{__cp} -a tomcat-util.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-tomcat-util.pom
+%add_maven_depmap JPP.tomcat-tomcat-util.pom tomcat/tomcat-util.jar
+
+%{__cp} -a tomcat-jdbc.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-tomcat-jdbc.pom
+%add_maven_depmap JPP.tomcat-tomcat-jdbc.pom tomcat/tomcat-jdbc.jar
+
+# tomcat-websocket-api
+%{__cp} -a tomcat-websocket-api.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-websocket-api.pom
+%add_maven_depmap JPP.tomcat-websocket-api.pom tomcat/websocket-api.jar
+
+# tomcat-tomcat-websocket
+%{__cp} -a tomcat-websocket.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-tomcat-websocket.pom
+%add_maven_depmap JPP.tomcat-tomcat-websocket.pom tomcat/tomcat-websocket.jar
+
+# tomcat-jaspic-api
+%{__cp} -a tomcat-jaspic-api.pom ${RPM_BUILD_ROOT}%{_mavenpomdir}/JPP.tomcat-jaspic-api.pom
+%add_maven_depmap JPP.tomcat-jaspic-api.pom tomcat/jaspic-api.jar
+
+# Manually change the metadata filenames
+%{__mv} ${RPM_BUILD_ROOT}%{_datadir}/maven-metadata/%{name}.xml ${RPM_BUILD_ROOT}%{_datadir}/maven-metadata/tomcat.xml
+%{__mv} ${RPM_BUILD_ROOT}%{_datadir}/maven-metadata/%{name}-tomcat-servlet-api.xml ${RPM_BUILD_ROOT}%{_datadir}/maven-metadata/tomcat-servlet-api.xml
+
+%pre
+# add the tomcat user and group
+%{_sbindir}/groupadd -g %{tcuid} -r tomcat 2>/dev/null || :
+%{_sbindir}/useradd -c "Apache Tomcat" -u %{tcuid} -g tomcat \
+ -s /sbin/nologin -r -d %{homedir} tomcat 2>/dev/null || :
+
+%post
+# install but don't activate
+%systemd_post tomcat.service
+
+# Collapse all of the alternatives installations into one
+%{_sbindir}/update-alternatives --install %{_javadir}/jsp.jar jsp \
+ %{_javadir}/tomcat-jsp-%{jspspec}-api.jar 20200
+%{_sbindir}/update-alternatives --install %{_javadir}/servlet.jar servlet \
+ %{_javadir}/tomcat-servlet-%{servletspec}-api.jar 30000
+%{_sbindir}/update-alternatives --install %{_javadir}/elspec.jar elspec \
+ %{_javadir}/tomcat-el-%{elspec}-api.jar 20300
+
+%preun
+# clean tempdir and workdir on removal or upgrade
+%{__rm} -rf %{workdir}/* %{tempdir}/*
+%systemd_preun tomcat.service
+
+%postun
+%systemd_postun_with_restart tomcat.service
+
+# Collapse all of the alternatives removals into one
+if [ "$1" = "0" ]; then
+ %{_sbindir}/update-alternatives --remove jsp \
+ %{_javadir}/tomcat-jsp-%{jspspec}-api.jar
+ %{_sbindir}/update-alternatives --remove servlet \
+ %{_javadir}/tomcat-servlet-%{servletspec}-api.jar
+ %{_sbindir}/update-alternatives --remove elspec \
+ %{_javadir}/tomcat-el-%{elspec}-api.jar
+fi
+
+%files
+%defattr(0664,root,tomcat,0755)
+%doc {LICENSE,NOTICE,RELEASE*}
+%attr(0755,root,root) %{_bindir}/tomcat-digest
+%attr(0755,root,root) %{_bindir}/tomcat-tool-wrapper
+%attr(0755,root,root) %{_sbindir}/tomcat
+%attr(0644,root,root) %{_unitdir}/tomcat.service
+%attr(0644,root,root) %{_unitdir}/tomcat@.service
+%attr(0755,root,root) %dir %{_libexecdir}/tomcat
+%attr(0755,root,root) %dir %{_localstatedir}/lib/tomcats
+%attr(0644,root,root) %{_libexecdir}/tomcat/functions
+%attr(0755,root,root) %{_libexecdir}/tomcat/preamble
+%attr(0755,root,root) %{_libexecdir}/tomcat/server
+%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/tomcat
+%attr(0755,root,tomcat) %dir %{basedir}
+%attr(0755,root,tomcat) %dir %{confdir}
+
+%defattr(0664,tomcat,root,0770)
+%attr(0770,tomcat,root) %dir %{logdir}
+
+%defattr(0664,root,tomcat,0770)
+%attr(0770,root,tomcat) %dir %{cachedir}
+%attr(0770,root,tomcat) %dir %{tempdir}
+%attr(0770,root,tomcat) %dir %{workdir}
+
+%defattr(0644,root,tomcat,0775)
+%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
+%config(noreplace) %{confdir}/tomcat.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}
+%{bindir}/bootstrap.jar
+%{bindir}/catalina-tasks.xml
+%{homedir}/lib
+%{homedir}/temp
+%{homedir}/webapps
+%{homedir}/work
+%{homedir}/logs
+%{homedir}/conf
+
+%defattr(-,root,root,-)
+%dir %{libdir}
+%{libdir}/*.jar
+%{_javadir}/*.jar
+%{bindir}/tomcat-juli.jar
+%{_mavenpomdir}/JPP.tomcat-annotations-api.pom
+%{_mavenpomdir}/JPP.tomcat-catalina-ha.pom
+%{_mavenpomdir}/JPP.tomcat-catalina-tribes.pom
+%{_mavenpomdir}/JPP.tomcat-catalina.pom
+%{_mavenpomdir}/JPP.tomcat-jasper-el.pom
+%{_mavenpomdir}/JPP.tomcat-jasper.pom
+%{_mavenpomdir}/JPP.tomcat-tomcat-api.pom
+%{_mavenpomdir}/JPP.tomcat-tomcat-juli.pom
+%{_mavenpomdir}/JPP.tomcat-tomcat-coyote.pom
+%{_mavenpomdir}/JPP.tomcat-tomcat-util.pom
+%{_mavenpomdir}/JPP.tomcat-tomcat-jdbc.pom
+%{_mavenpomdir}/JPP.tomcat-websocket-api.pom
+%{_mavenpomdir}/JPP.tomcat-tomcat-websocket.pom
+%{_mavenpomdir}/JPP.tomcat-jaspic-api.pom
+%{_mavenpomdir}/JPP.tomcat-jni.pom
+%{_mavenpomdir}/JPP.tomcat-util-scan.pom
+%{_mavenpomdir}/JPP-tomcat-jsp-api.pom
+%{_mavenpomdir}/JPP-tomcat-el-api.pom
+%{_datadir}/maven-metadata/tomcat.xml
+%exclude %{_javadir}/tomcat-servlet-%{servletspec}*.jar
+
+%files -n pki-servlet-%{servletspec}-api
+%defattr(-,root,root,-)
+%doc LICENSE
+%{_javadir}/tomcat-servlet-%{servletspec}*.jar
+%{_datadir}/maven-metadata/tomcat-servlet-api.xml
+%{_mavenpomdir}/JPP-tomcat-servlet-api.pom
+
+%changelog
+* Thu Apr 23 2020 Coty Sutherland - 1:9.0.30-1
+- Resolves: rhbz#1721684 Rebase pki-servlet-engine to 9.0.30
+- Update to JWS 5.3.0 distribution
+- Remove new dependencies that PKI doesn't need (and are not provided by RHEL 8)
+
+* Fri May 31 2019 Endi S. Dewata - 1:9.0.7-16
+- Obsoleted pki-servlet-container
+
+* Tue Apr 23 2019 Endi S. Dewata - 1:9.0.7-15
+- Rename pki-servlet-container into pki-servlet-engine
+
+* Mon Mar 04 2019 Coty Sutherland - 1:9.0.7-14
+- Update to JWS 5.0.2 distribution
+- Resolves: rhbz#1658846 CVE-2018-8034 pki-servlet-container: tomcat: host name verification missing in WebSocket client
+- Resolves: rhbz#1579614 CVE-2018-8014 pki-servlet-container: tomcat: Insecure defaults in CORS filter enable 'supportsCredentials' for all origins
+- Resolves: rhbz#1619232 - CVE-2018-8037 pki-servlet-container: tomcat: Due to a mishandling of close in NIO/NIO2 connectors user sessions can get mixed up
+- Resolves: rhbz#1641874 - CVE-2018-11784 pki-servlet-container: tomcat: Open redirect in default servlet
+
+* Fri Aug 03 2018 Fraser Tweedale - 1:9.0.7-13
+- Reinstate Maven artifacts and fix maven-metadata JAR path
+
+* Fri Jul 20 2018 Jean-Frederic Clere - 1:9.0.7-12
+- Add missing BuildRequires: systemd-units
+
+* Fri Jun 22 2018 Coty Sutherland - 1:9.0.7-11
+- Resolves: rhbz#1594139 Cleanup Provides and Requires
+
+* Thu Jun 07 2018 Coty Sutherland - 1:9.0.7-10
+- Create packages for FreeIPA that wrap the JWS distribution of Tomcat