From b57548da40adcb2ea8b13a58c069301dc2c0455a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= Date: Tue, 11 Feb 2025 13:59:49 +0100 Subject: [PATCH] Generate only versioned rpms Resolves: RHEL-67814 --- nodejs22.spec | 51 +++++++++++++++------------------------------------ 1 file changed, 15 insertions(+), 36 deletions(-) diff --git a/nodejs22.spec b/nodejs22.spec index d53330a..b446bea 100644 --- a/nodejs22.spec +++ b/nodejs22.spec @@ -2,10 +2,6 @@ # The default version will own /usr/bin/node and friends %global nodejs_pkg_major 22 -%if 0%{?fedora} == 41 || 0%{?fedora} == 42 || 0%{?rhel} == 10 -%global nodejs_default %{nodejs_pkg_major} -%endif - %global nodejs_default_sitelib %{_prefix}/lib/node_modules %global nodejs_private_sitelib %{nodejs_default_sitelib}_%{nodejs_pkg_major} @@ -220,20 +216,15 @@ BuildRequires: pkgconfig(sqlite3) >= 3.45.0 %if 0%{?nodejs_default} Provides: nodejs = %{nodejs_envr} -# To keep the upgrade path clean, we Obsolete nodejsXX from the nodejs -# package and nodejsXX-foo from individual subpackages. -# Note that using Obsoletes without package version is not standard practice. -# Here we assert that *any* version of the system's default interpreter is -# preferable to an "extra" interpreter. For example, nodejs-20.5.0 will -# replace nodejs20-20.6.0. -%define unversioned_obsoletes_of_nodejsXX_if_default() %{expand:\ -Obsoletes: nodejs%{nodejs_pkg_major}%{?1:-%{1}} < %{nodejs_envr}\ -Provides: nodejs%{nodejs_pkg_major}%{?1:-%{1}} = %{nodejs_envr}\ -} -%else -%define unversioned_obsoletes_of_nodejsXX_if_default() %{nil} %endif +# RHEL-10: obsolete packages with the unversioned names; +# we do not want a default stream at all. +# The default version is set to the last version shipped in default stream +%define obsolete_default_stream_package() %{expand:\ +Obsoletes: nodejs%{?1:-%{1}} < %{?2}%{!?2:22.13.1-2} +} + %if %{with bundled} Provides: bundled(libuv) = %{libuv_version} %else @@ -357,7 +348,7 @@ Requires: nodejs-undici %endif -%unversioned_obsoletes_of_nodejsXX_if_default +%obsolete_default_stream_package %description @@ -368,16 +359,6 @@ makes it lightweight and efficient, perfect for data-intensive \ real-time applications that run across distributed devices.} -%if 0%{?nodejs_default} -%description -n %{pkgname} -Node.js is a platform built on Chrome's JavaScript runtime \ -for easily building fast, scalable network applications. \ -Node.js uses an event-driven, non-blocking I/O model that \ -makes it lightweight and efficient, perfect for data-intensive \ -real-time applications that run across distributed devices.} -%endif - - %package -n %{pkgname}-devel Summary: JavaScript runtime - development headers Group: Development/Languages @@ -397,7 +378,7 @@ Requires: libuv-devel%{?_isa} %if 0%{?nodejs_default} Provides: nodejs-devel = %{nodejs_envr} %endif -%unversioned_obsoletes_of_nodejsXX_if_default devel +%obsolete_default_stream_package devel Provides: nodejs-devel-pkg = %{nodejs_envr} Conflicts: nodejs-devel-pkg @@ -427,7 +408,7 @@ Provides: v8%{?_isa} = %{v8_epoch}:%{v8_version}-%{nodejs_release} Obsoletes: v8 < 1:6.7.17-10 Provides: nodejs-libs = %{nodejs_envr} -%unversioned_obsoletes_of_nodejsXX_if_default libs +%obsolete_default_stream_package libs %description -n %{pkgname}-libs Libraries to support Node.js and provide stable v8 interfaces. @@ -437,7 +418,7 @@ Libraries to support Node.js and provide stable v8 interfaces. Summary: Non-English locale data for Node.js Requires: %{pkgname}%{?_isa} = %{nodejs_envr} -%unversioned_obsoletes_of_nodejsXX_if_default full-i18n +%obsolete_default_stream_package full-i18n %description -n %{pkgname}-full-i18n @@ -486,13 +467,11 @@ Provides: npm = %{npm_envr} # Obsolete the old 'npm' package Obsoletes: npm < 1:9 - -# Obsolete others. We can't use %%unversioned_obsoletes_of_nodejsXX_if_default -# here because the Provides: needs its own version -Obsoletes: nodejs%{nodejs_pkg_major}-npm < %{npm_envr} -Provides: nodejs%{nodejs_pkg_major}-npm = %{npm_envr} %endif +# Obsolete latest version of default stream package. +%obsolete_default_stream_package npm 10.9.2-1.22.13.1.2 + %description -n %{pkgname}-npm npm is a package manager for node.js. You can use it to install and publish @@ -506,7 +485,7 @@ BuildArch: noarch Requires(meta): %{pkgname} = %{nodejs_envr} Provides: nodejs-docs = %{nodejs_envr} -%unversioned_obsoletes_of_nodejsXX_if_default docs +%obsolete_default_stream_package docs %description -n %{pkgname}-docs