%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 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 - 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 - 9.0.108-1 - Initial build for NiceOS (Первая сборка для НАЙС.ОС)