File apache-tomcat.spec of Package apache-tomcat

Name:           apache-tomcat
Version:        9.0.117
Release:        0
Summary:        An open source implementation of the Java Servlet
License:        Apache-2.0
Group:          Productivity/Networking/Web/Servers
Url:            http://tomcat.apache.org/
Source0:        https://dlcdn.apache.org/tomcat/tomcat-9/v%{version}/src/%{name}-%{version}-src.tar.gz
Source1:        tomcat.service
%if 0%{?almalinux} < 10
Source2:        tomcat.sysconfig
%else
Source2:        tomcat.sysconfig.10
%endif
Source4:        compress_delete_old_logs.sh
Source5:        tomcat-logrotate.service
Source6:        tomcat-logrotate.timer
%define c_daemon_ver 1.5.1
Source8:        https://archive.apache.org/dist/commons/daemon/binaries/commons-daemon-%{c_daemon_ver}.jar
%define ecj_ver 4.20
%define ecj_date 202106111600
Source9:        https://download.eclipse.org/eclipse/downloads/drops4/R-%{ecj_ver}-%{ecj_date}/ecj-%{ecj_ver}.jar
%define saaj_api_ver 1.3.5
Source10:       https://repo1.maven.org/maven2/javax/xml/soap/saaj-api/%{saaj_api_ver}/saaj-api-%{saaj_api_ver}.jar
%define jaxrpc_ver 1.1-rc4
Source11:       https://repo1.maven.org/maven2/geronimo-spec/geronimo-spec-jaxrpc/%{jaxrpc_ver}/geronimo-spec-jaxrpc-%{jaxrpc_ver}.jar
%define wsdl4j_ver 1.6.3
Source12:       https://repo1.maven.org/maven2/wsdl4j/wsdl4j/%{wsdl4j_ver}/wsdl4j-%{wsdl4j_ver}.jar
%define bnd_ver 7.2.3
Source13:       https://repo.maven.apache.org/maven2/biz/aQute/bnd/biz.aQute.bnd/%{bnd_ver}/biz.aQute.bnd-%{bnd_ver}.jar
%define annotation_ver 1.1.1
Source14:       https://repo1.maven.org/maven2/org/osgi/org.osgi.annotation.bundle/%{annotation_ver}/org.osgi.annotation.bundle-%{annotation_ver}.jar
Patch0:         apache-tomcat-add-reason-phrase.patch
BuildArch:      noarch
BuildRequires:  ant >= 1.9.8
%if 0%{?almalinux} == 9
BuildRequires:  ant-openjdk17
%endif
%if 0%{?almalinux} >= 10
BuildRequires:  java-21-openjdk-devel
BuildRequires:  ant-openjdk21
%else
BuildRequires:  java-17-openjdk-devel
%endif
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are developed under the Java Community Process.

%prep
%setup -q -n %{name}-%{version}-src
%__mkdir -p ~/tomcat-build-libs/commons-daemon-%{c_daemon_ver}
%__cp %SOURCE8 ~/tomcat-build-libs/commons-daemon-%{c_daemon_ver}/
%__mkdir -p ~/tomcat-build-libs/ecj-%{ecj_ver}
%__cp %SOURCE9 ~/tomcat-build-libs/ecj-%{ecj_ver}/
%__mkdir -p ~/tomcat-build-libs/saaj-api-%{saaj_api_ver}
%__cp %SOURCE10 ~/tomcat-build-libs/saaj-api-%{saaj_api_ver}/
%__mkdir -p ~/tomcat-build-libs/jaxrpc-%{jaxrpc_ver}
%__cp %SOURCE11 ~/tomcat-build-libs/jaxrpc-%{jaxrpc_ver}/
%__mkdir -p ~/tomcat-build-libs/wsdl4j-%{wsdl4j_ver}
%__cp %SOURCE12 ~/tomcat-build-libs/wsdl4j-%{wsdl4j_ver}/
%__mkdir -p ~/tomcat-build-libs/bnd-%{bnd_ver}
%__cp %SOURCE13 ~/tomcat-build-libs/bnd-%{bnd_ver}/
%__mkdir -p ~/tomcat-build-libs/osgi-annotations-%{annotation_ver}
%__cp %SOURCE14 ~/tomcat-build-libs/osgi-annotations-%{annotation_ver}/

%patch -P 0 -p1

%build
JAVA_HOME=/usr/lib/jvm/java-17 ant

%install
mkdir -p %buildroot/opt/%{name}
%__cp -Rv output/build/* %buildroot/opt/%{name}/

# remove sample webapps
rm -fR %buildroot/opt/%{name}/webapps/*

# remove i18n files
rm -fR %buildroot/opt/%{name}/i18n

# remove .bat files (only for Windows)
rm -fR %buildroot/opt/%{name}/bin/*.bat

# systemd unit file
mkdir -p %buildroot/%{_unitdir}/
cp %SOURCE1 %buildroot/%{_unitdir}/

# sysconfig file
mkdir -p %buildroot/etc/sysconfig
cp %SOURCE2 %buildroot/etc/sysconfig/tomcat

# log rotate script and systemd unit file
cp %SOURCE4 %buildroot/opt/%{name}/bin/
chmod 0755 %buildroot/opt/%{name}/bin/`basename %SOURCE4`
cp %SOURCE5 %buildroot/%{_unitdir}/
cp %SOURCE6 %buildroot/%{_unitdir}/

%post
groupadd -g 53 tomcat > /dev/null 2>&1
useradd -u 53 -g 53 tomcat > /dev/null 2>&1

chown root:tomcat /opt/%{name}/{bin,bin/*,lib,lib/*,conf,conf/*,temp}
chown tomcat:tomcat /opt/%{name}/{logs,webapps}
chmod g+rx /opt/%{name}/{conf,conf/*}
chmod g+wrx /opt/%{name}/temp

%{_bindir}/systemctl daemon-reload

# create work directory
mkdir -p /opt/%{name}/work
chown tomcat:root /opt/%{name}/work

%postun
if [ "$1" -lt 1 ]; then
  userdel tomcat > /dev/null 2>&1
  groupdel tomcat > /dev/null 2>&1
fi

%{_bindir}/systemctl daemon-reload

%files
%defattr(-,root,root)
%doc BUILDING.txt README.md CONTRIBUTING.md RELEASE-NOTES LICENSE RUNNING.txt NOTICE
/opt/%{name}/bin/
/opt/%{name}/lib/
/opt/%{name}/temp/
/opt/%{name}/logs/
/opt/%{name}/webapps/
%config /opt/%{name}/conf/*.xml
%config /opt/%{name}/conf/catalina.policy
%config /opt/%{name}/conf/catalina.properties
%config /opt/%{name}/conf/jaspic-providers.xsd
%config /opt/%{name}/conf/logging.properties
%config /opt/%{name}/conf/tomcat-users.xsd
%{_unitdir}/tomcat.service
%config /etc/sysconfig/tomcat
%{_unitdir}/tomcat-logrotate.service
%{_unitdir}/tomcat-logrotate.timer

%changelog

openSUSE Build Service is sponsored by