input/openjdk17.spec
raw · 14.1 KiB
%global security_hardening none
%define jdk_major_version 17
%define _use_internal_dependency_generator 0
%bcond_with 32bit
Name: openjdk17
Version: 17.0.20
Release: 1%{?dist}
Summary: OpenJDK 17 - open source implementation of Java SE 17 platform
Summary(ru): Открытая реализация платформы Java SE 17
License: GPL-2.0-only WITH Classpath-exception-2.0
URL: https://github.com/openjdk/jdk17u
Source0: https://github.com/openjdk/jdk17u/archive/refs/tags/jdk-%{version}+5.tar.gz
Source1: https://anduin.linuxfromscratch.org/BLFS/OpenJDK/OpenJDK-17.0.2/OpenJDK-17.0.2+8-x86_64-bin.tar.xz
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}
AutoReqProv: no
BuildRequires: alsa-lib
BuildRequires: alsa-lib-devel
BuildRequires: ca-certificates
BuildRequires: chkconfig
BuildRequires: cups
BuildRequires: cups-devel
BuildRequires: elfutils-libelf-devel
BuildRequires: fontconfig-devel
BuildRequires: freetype2
BuildRequires: freetype2-devel
BuildRequires: glib-devel
BuildRequires: harfbuzz-devel
BuildRequires: icu
BuildRequires: icu-devel
BuildRequires: libX11
BuildRequires: libX11-devel
BuildRequires: libXau
BuildRequires: libXau-devel
BuildRequires: libXdmcp
BuildRequires: libXdmcp-devel
BuildRequires: libXext
BuildRequires: libXext-devel
BuildRequires: libXi
BuildRequires: libXi-devel
BuildRequires: libXrandr
BuildRequires: libXrandr-devel
BuildRequires: libXrender
BuildRequires: libXrender-devel
BuildRequires: libXt
BuildRequires: libXt-devel
BuildRequires: libXtst
BuildRequires: libXtst-devel
BuildRequires: libxcb
BuildRequires: libxcb-devel
BuildRequires: pcre-devel
BuildRequires: pcre2-devel
BuildRequires: proto
BuildRequires: unzip
BuildRequires: util-macros
BuildRequires: which
BuildRequires: xcb-proto
BuildRequires: xtrans
BuildRequires: zip
BuildRequires: zlib-devel
BuildRequires: autoconf
BuildRequires: libstdc++-devel
BuildRequires: libstdc++
Requires: chkconfig
Requires: %{name}-jre = %{version}-%{release}
Requires(postun): chkconfig
%description
OpenJDK 17 is a free and open source implementation of the Java Platform,
Standard Edition (Java SE) version 17. It includes the Java Virtual Machine,
class libraries, and development tools required to build and run Java
applications.
%description -l ru
OpenJDK 17 — бесплатная и открытая реализация платформы Java Standard Edition
(Java SE) версии 17. Она включает виртуальную машину Java, библиотеки классов и
инструменты разработки, необходимые для создания и запуска Java-приложений.
%package jre
Summary: JRE subpackage for OpenJDK 17, containing the Java Runtime Environment
Summary(ru): Подпакет JRE для OpenJDK 17, содержащий среду выполнения Java
Requires: alsa-lib
Requires: chkconfig
Requires: freetype2
Requires: libgcc
Requires: libstdc++
Requires: zlib
Requires(postun): chkconfig
%description -n %{name}-jre
The %{name}-jre package provides the Java Runtime Environment required to run
applications written in Java. It includes the Java Virtual Machine and the core
runtime libraries.
%description -l ru -n %{name}-jre
Пакет %{name}-jre предоставляет среду выполнения Java, необходимую для запуска
приложений, написанных на Java. Он включает виртуальную машину Java и основные
runtime-библиотеки.
%package doc
Summary: Documentation for OpenJDK 17
Summary(ru): Документация для OpenJDK 17
Requires: %{name} = %{version}-%{release}
%description -n %{name}-doc
Documentation for OpenJDK 17, including manuals, references, and technical
materials for developers and users.
%description -l ru -n %{name}-doc
Документация для OpenJDK 17, включая руководства, справочные материалы и
технические описания для разработчиков и пользователей.
%package src
Summary: OpenJDK 17 source code
Summary(ru): Исходный код OpenJDK 17
Requires: %{name} = %{version}-%{release}
%description -n %{name}-src
The %{name}-src package contains the OpenJDK 17 source archive used for
development and debugging.
%description -l ru -n %{name}-src
Пакет %{name}-src содержит архив исходных кодов OpenJDK 17, используемый для
разработки и отладки.
%prep
%autosetup -p1 -n jdk17u-jdk-%{version}-5
# RU: Распаковка Source1 (бинарного JDK) во временный каталог.
# EN: Unpack Source1 (binary JDK) into a temporary directory.
mkdir -p build_boot_jdk
tar -xvf %{SOURCE1} -C build_boot_jdk
%build
chmod a+x ./configur*
unset JAVA_HOME
ENABLE_HEADLESS_ONLY="true"
BOOT_JDK=$(find build_boot_jdk -type d -name "OpenJDK-*" | head -n 1)
export JAVA_HOME=$BOOT_JDK
export PATH=$JAVA_HOME/bin:$PATH
sh ./configur* \
--enable-unlimited-crypto \
--with-zlib=system \
--with-target-bits=64 \
--enable-headless-only \
--with-extra-cxxflags="-Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse" \
--with-extra-cflags="-fno-delete-null-pointer-checks -Wno-error -fno-lifetime-dse" \
--with-freetype-include=%{_includedir}/freetype2 \
--with-freetype-lib=%{_libdir} \
--with-stdc++lib=dynamic \
--disable-warnings-as-errors \
--with-cacerts-file=/etc/pki/tls/java/cacerts
mkdir -p %{_datadir}/java
make \
DISABLE_HOTSPOT_OS_VERSION_CHECK=ok \
SCTP_WERROR= \
BUILD_HEADLESS_ONLY=1 \
OPENJDK_TARGET_OS=linux \
STRIP_POLICY=no_strip \
POST_STRIP_CMD="" \
LOG=trace \
JOBS=$(nproc)
%install
unset JAVA_HOME
make install JOBS=$(nproc)
install -vdm755 %{buildroot}%{_libdir}/jvm/OpenJDK-%{jdk_major_version}
chown -R root:root %{buildroot}%{_libdir}/jvm/OpenJDK-%{jdk_major_version}
install -vdm755 %{buildroot}%{_bindir}
mv %{_usr}/local/jvm/openjdk-%{version}-internal/* \
%{buildroot}%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/
cp README.md LICENSE ASSEMBLY_EXCEPTION \
%{buildroot}%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/
%post jre
alternatives --install %{_bindir}/java java %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/java 30000 \
--slave %{_bindir}/keytool keytool %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/keytool \
--slave %{_bindir}/pack200 pack200 %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/pack200 \
--slave %{_bindir}/rmiregistry rmiregistry %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/rmiregistry
# RU: Нельзя использовать %post -p /sbin/ldconfig, т.к. здесь уже есть кастомный скрипт alternatives.
# EN: Cannot use %post -p /sbin/ldconfig because this subpackage already has a custom alternatives scriptlet.
/sbin/ldconfig
%postun jre
if [ $1 -eq 0 ]; then
alternatives --remove java %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/java
fi
# RU: Обновляем кэш ldconfig после удаления.
# EN: Refresh ldconfig cache after removal.
/sbin/ldconfig
%post
alternatives --install %{_bindir}/javac javac %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javac 30000 \
--slave %{_bindir}/appletviewer appletviewer %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/appletviewer \
--slave %{_bindir}/idlj idlj %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/idlj \
--slave %{_bindir}/jar jar %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jar \
--slave %{_bindir}/jarsigner jarsigner %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jarsigner \
--slave %{_bindir}/jhsdb jhsdb %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jhsdb \
--slave %{_bindir}/jimage jimage %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jimage \
--slave %{_bindir}/jlink jlink %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jlink \
--slave %{_bindir}/jmod jmod %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jmod \
--slave %{_bindir}/javadoc javadoc %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javadoc \
--slave %{_bindir}/javah javah %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javah \
--slave %{_bindir}/javap javap %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javap \
--slave %{_bindir}/jcmd jcmd %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jcmd \
--slave %{_bindir}/jdeprscan jdeprscan %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jdeprscan \
--slave %{_bindir}/jconsole jconsole %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jconsole \
--slave %{_bindir}/jdb jdb %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jdb \
--slave %{_bindir}/jdeps jdeps %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jdeps \
--slave %{_bindir}/jinfo jinfo %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jinfo \
--slave %{_bindir}/jmap jmap %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jmap \
--slave %{_bindir}/jps jps %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jps \
--slave %{_bindir}/jrunscript jrunscript %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jrunscript \
--slave %{_bindir}/jstack jstack %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jstack \
--slave %{_bindir}/jstat jstat %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jstat \
--slave %{_bindir}/jstatd jstatd %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jstatd \
--slave %{_bindir}/schemagen schemagen %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/schemagen \
--slave %{_bindir}/serialver serialver %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/serialver \
--slave %{_bindir}/wsgen wsgen %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/wsgen \
--slave %{_bindir}/wsimport wsimport %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/wsimport \
--slave %{_bindir}/xjc xjc %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/xjc \
--slave %{_bindir}/jpackage jpackage %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jpackage
# RU: Нельзя использовать %post -p /sbin/ldconfig, т.к. здесь уже есть кастомный скрипт alternatives.
# EN: Cannot use %post -p /sbin/ldconfig because this package already has a custom alternatives scriptlet.
/sbin/ldconfig
%postun
# Do alternative remove only in case of uninstall
if [ $1 -eq 0 ]; then
alternatives --remove javac %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javac
fi
# RU: Обновляем кэш ldconfig после удаления.
# EN: Refresh ldconfig cache after removal.
/sbin/ldconfig
%clean
# RU: В исходнике был небезопасный шаблон удаления вне buildroot; ограничиваем очистку buildroot.
# EN: The original had an unsafe cleanup glob outside buildroot; restrict cleanup to buildroot.
rm -rf %{buildroot}/* %{buildroot}%{_libdir}/jvm/OpenJDK-*
%files
%defattr(-,root,root)
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/LICENSE
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/README.md
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jar
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jarsigner
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javac
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javadoc
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/javap
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jcmd
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jconsole
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jdb
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jdeps
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jinfo
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jlink
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jmod
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jmap
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jps
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jshell
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jrunscript
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jstack
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jstat
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jstatd
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/serialver
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jhsdb
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jimage
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jdeprscan
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jfr
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/jpackage
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/include/
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/lib/ct.sym
%files jre
%defattr(-,root,root)
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/ASSEMBLY_EXCEPTION
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/release
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/lib
%exclude %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/lib/ct.sym
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/conf
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/jmods
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/java
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/keytool
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/rmiregistry
%exclude %{_libdir}/jvm/OpenJDK-%{jdk_major_version}/bin/*.debuginfo
%files doc
%defattr(-,root,root)
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/man/
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/legal/
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/demo
%files src
%defattr(-,root,root)
%{_libdir}/jvm/OpenJDK-%{jdk_major_version}/lib/src.zip
%changelog
* Wed Jul 22 2026 NiceOS Team <support@niceos.ru> - 17.0.20-1
- EN: Update to upstream version 17.0.20.
- RU: Обновление до upstream-версии 17.0.20.
* Sat May 02 2026 NiceOS Team <support@niceos.ru> - 17.0.19-1
- EN: - Update OpenJDK 17 to upstream 17.0.19.
- Refresh source and packaging metadata for the new 17u tag.
- RU: - Обновить OpenJDK 17 до upstream 17.0.19.
- Обновить источник и метаданные упаковки под новый тег 17u.
* Sun Jan 11 2026 NiceOS Team <niceos@ncsgp.ru> - 17.0.17-1
- Initial build for NiceOS (Первая сборка для НАЙС.ОС)