N
NiceOS Build Portal
Enterprise build observability for published NiceOS package builds.

input/apache-tomcat-9.spec

raw · 9.0 KiB

%define _use_internal_dependency_generator 0

# RU: Базовые имена: оригинальный апстрим и наш пакет.
# EN: Base names: upstream original and our package.
%global _origname   apache-tomcat

# RU: Кастомный префикс установки под /var/opt (по требованиям NiceOS).
# EN: Custom installation prefix under /var/opt (NiceOS requirement).
%global _prefix     %{_var}/opt/%{name}
%global _origprefix %{_var}/opt/%{_origname}

# RU: Внутренние каталоги Tomcat (делаем явными для читаемости).
# EN: Internal Tomcat directories (made explicit for readability).
%global _bindir     %{_prefix}/bin
%global _confdir    %{_prefix}/conf
%global _libdir     %{_prefix}/lib
%global _webappsdir %{_prefix}/webapps
%global _logsdir    %{_prefix}/logs
%global _tempdir    %{_prefix}/temp

Name:           apache-tomcat-9
Version:        9.0.117
Release:        1%{?dist}
Summary:        Apache Tomcat 9 servlet container
Summary(ru):    Apache Tomcat 9 — контейнер сервлетов Java
License:        Apache-2.0
URL:            https://github.com/apache/tomcat
Source0:        https://archive.apache.org/dist/tomcat/tomcat-9/v%{version}/src/%{_origname}-%{version}-src.tar.gz
Source1:        base-for-%{_origname}-%{version}.tar.gz

Packager:       NICE SOFT GROUP LLC (ООО "НАЙС СОФТ ГРУПП") 5024245440 <niceos@ncsgp.ru>
Vendor:         NiceSOFT
Distribution:   NiceOS.Core
BugURL:         https://bugs.niceos.ru/
VCS:            https://specs.niceos.ru/rmps/%{name}

BuildArch:      noarch

BuildRequires:  openjdk17
BuildRequires:  apache-ant

Requires:       apache-ant
Requires:       chkconfig
Requires:       (openjdk11 or openjdk17 or openjdk21)

%description
Apache Tomcat 9 is an implementation of the Java servlet container and the Jakarta
Servlet/JSP specifications. This package installs the Tomcat runtime, libraries,
configuration and directory layout under %{_prefix}:
- binaries: %{_bindir}
- configuration: %{_confdir}
- libraries: %{_libdir}
- web applications: %{_webappsdir}
- logs: %{_logsdir}
- temporary files: %{_tempdir}

The package is intended for manual or scripted instance management and integrates
via alternatives under the common name %{_origprefix}.

%description -l ru
Apache Tomcat 9 — это реализация контейнера сервлетов Java и спецификаций Jakarta
Servlet/JSP. Данный пакет устанавливает исполняемые файлы, библиотеки, конфигурацию
и структуру каталогов Tomcat под %{_prefix}:
- бинарники: %{_bindir}
- конфигурация: %{_confdir}
- библиотеки: %{_libdir}
- веб-приложения: %{_webappsdir}
- логи: %{_logsdir}
- временные файлы: %{_tempdir}

Пакет рассчитан на ручное/скриптовое управление экземпляром Tomcat и интегрируется
через alternatives под общим именем %{_origprefix}.

%package        webapps
Summary:        Default web applications for Apache Tomcat (ROOT, manager, host-manager)
Summary(ru):    Базовые веб-приложения для Apache Tomcat (ROOT, manager, host-manager)
Requires:       %{name} = %{version}-%{release}

%description -n %{name}-webapps
This subpackage contains the default Tomcat web applications:
- ROOT (welcome page)
- manager (management web console)
- host-manager (virtual host management)

It is useful for development and testing environments. In production deployments,
the management applications are usually disabled or access-restricted.

%description -l ru -n %{name}-webapps
Подпакет содержит типовые веб-приложения Tomcat:
- ROOT (домашняя страница)
- manager (веб-консоль управления)
- host-manager (управление виртуальными хостами)

Полезен для стендов разработки и отладки. В продакшене обычно отключается или
ограничивается доступ к приложениям управления.

%prep
# RU: Распаковываем исходники (-n задаёт каталог) и параллельно распаковываем Source1 в builddir (-b1).
# EN: Unpack sources (-n sets directory) and also unpack Source1 into builddir (-b1).
%autosetup -n %{_origname}-%{version}-src -p1 -b1

# RU: Чистим предсобранные бинарники и Windows-артефакты для воспроизводимой сборки.
# EN: Remove prebuilt binaries and Windows artifacts for reproducible builds.
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

%build
# RU: Сборка через Ant с offline-кэшем зависимостей (без сети).
# EN: Build via Ant using an offline dependency cache (no network).
ant -Dant.build.javac.source=1.8 -Dant.build.javac.target=1.8 \
    -Dbase.path="../base-for-%{_origname}-%{version}" \
    deploy dist-prepare dist-source

%install
# RU: Создаём иерархию целевых каталогов под /var/opt.
# EN: Create target directory layout under /var/opt.
install -vdm 755 %{buildroot}%{_prefix}
install -vdm 755 %{buildroot}%{_bindir}
install -vdm 755 %{buildroot}%{_libdir}
install -vdm 755 %{buildroot}%{_confdir}
install -vdm 755 %{buildroot}%{_webappsdir}
install -vdm 755 %{buildroot}%{_logsdir}
install -vdm 755 %{buildroot}%{_tempdir}

# RU: Переносим результаты сборки Tomcat.
# EN: Copy Tomcat build results.
cp -a output/build/bin/.     %{buildroot}%{_bindir}/
cp -a output/build/lib/.     %{buildroot}%{_libdir}/
cp -a output/build/conf/.    %{buildroot}%{_confdir}/
cp -a output/build/webapps/. %{buildroot}%{_webappsdir}/

# RU: Лицензия и уведомление кладём рядом с установкой для удобства аудита.
# EN: Install license and notice next to the installation for easier auditing.
cp -p LICENSE %{buildroot}%{_prefix}/
cp -p NOTICE  %{buildroot}%{_prefix}/

# RU: Логи: создаём пустой лог-файл (можно было бы оформить %%ghost, но сохраняем семантику).
# EN: Logs: create an empty log file (could be %%ghost, but keep original semantics).
: > %{buildroot}%{_logsdir}/catalina.out

# RU: Удаляем примеры и документацию из основного набора webapps.
# EN: Remove examples and docs from the webapps set.
rm -rf %{buildroot}%{_webappsdir}/{examples,docs}

# RU: Системная "витрина" JAR'ов: ссылки из %%{_datadir}/java/tomcat9 -> %%{_libdir}.
# EN: System "showcase" for JARs: links from %%{_datadir}/java/tomcat9 -> %%{_libdir}.
install -vdm 755 %{buildroot}%{_datadir}/java/tomcat9

pushd %{buildroot}
for jar in ./%{_libdir}/*.jar; do
  jarname=$(basename "$jar")
  ln -sfrv ./%{_libdir}/${jarname} ./%{_datadir}/java/tomcat9/${jarname}
done
popd

%{_fixperms} %{buildroot}/*

%clean
rm -rf %{buildroot}/*

%files
%defattr(-,root,root)
%dir %{_prefix}
%dir %{_bindir}
%dir %{_libdir}
%dir %{_confdir}
%dir %{_webappsdir}
%dir %{_webappsdir}/ROOT
%dir %{_logsdir}
%dir %{_tempdir}

%{_bindir}/*

%config(noreplace) %{_confdir}/catalina.policy
%config(noreplace) %{_confdir}/catalina.properties
%config(noreplace) %{_confdir}/context.xml
%config(noreplace) %{_confdir}/jaspic-providers.xml
%config(noreplace) %{_confdir}/jaspic-providers.xsd
%config(noreplace) %{_confdir}/logging.properties
%config(noreplace) %{_confdir}/server.xml
%config(noreplace) %{_confdir}/tomcat-users.xml
%config(noreplace) %{_confdir}/tomcat-users.xsd
%config(noreplace) %{_confdir}/web.xml

%{_libdir}/*

%dir %{_datadir}/java
%dir %{_datadir}/java/tomcat9
%{_datadir}/java/tomcat9/*.jar

%license %{_prefix}/LICENSE
%doc %{_prefix}/NOTICE
%{_logsdir}/catalina.out

%files -n %{name}-webapps
%defattr(-,root,root)
%dir %{_webappsdir}/manager
%dir %{_webappsdir}/host-manager
%{_webappsdir}/ROOT/*
%{_webappsdir}/manager/*
%{_webappsdir}/host-manager/*

%post
# RU: Регистрируем альтернативу: apache-tomcat -> наш %%{_prefix}.
# EN: Register alternatives entry: apache-tomcat -> our %%{_prefix}.
alternatives --install %{_origprefix} apache-tomcat %{_prefix} 10000 \
  --slave %{_datadir}/java/tomcat tomcat %{_datadir}/java/tomcat9

%postun
# RU: На erase (не на upgrade) удаляем альтернативу.
# EN: Remove alternatives entry on erase (not on upgrade).
if [ $1 -eq 0 ]; then
  alternatives --remove apache-tomcat %{_prefix}
fi

%changelog
* Wed Apr 29 2026 NiceOS Team <support@niceos.ru> - 9.0.117-1
- EN: Update apache-tomcat-9 to version 9.0.117
- RU: Обновление apache-tomcat-9 до версии 9.0.117


* Mon Jan 12 2026 NiceOS Team <niceos@ncsgp.ru> - 9.0.108-1
- Initial build for NiceOS (Первая сборка для НАЙС.ОС)