Fix portable archive macros: use %{?1} instead of %%{1}

The %%{1} in intermediate macros (jreportablearchive, etc.) delays
parameter substitution to the %{expand:...} pass, where it becomes
a simple text replacement without further macro expansion. This
causes %%{nil} passed from %files to appear literally in filenames.

Using %{?1} instead resolves the parameter during the first-pass
expansion where RPM properly expands %{nil} to empty. This also
handles .slowdebug/.fastdebug suffixes correctly since they are
plain strings that don't need further expansion.
This commit is contained in:
Andrew Lukoshko 2026-02-21 13:53:16 +00:00
parent 0e07a2275b
commit e125a02620

View File

@ -448,14 +448,14 @@
%define jreportablenameimpl() %(echo %{uniquesuffix ""} | sed "s;el%{rhel}\\(_[0-9]\\)*;portable%{1}.jre;g")
%define jdkportablenameimpl() %(echo %{uniquesuffix ""} | sed "s;el%{rhel}\\(_[0-9]\\)*;portable%{1}.jdk;g")
%define staticlibsportablenameimpl() %(echo %{uniquesuffix ""} | sed "s;el%{rhel}\\(_[0-9]\\)*;portable%{1}.static-libs;g")
%define jreportablearchive() %{expand:%{jreportablenameimpl -- %%{1}}.tar.xz}
%define jdkportablearchive() %{expand:%{jdkportablenameimpl -- %%{1}}.tar.xz}
%define staticlibsportablearchive() %{expand:%{staticlibsportablenameimpl -- %%{1}}.tar.xz}
%define jreportablename() %{expand:%{jreportablenameimpl -- %%{1}}}
%define jdkportablename() %{expand:%{jdkportablenameimpl -- %%{1}}}
%define jreportablearchive() %{expand:%{jreportablenameimpl -- %{?1}}.tar.xz}
%define jdkportablearchive() %{expand:%{jdkportablenameimpl -- %{?1}}.tar.xz}
%define staticlibsportablearchive() %{expand:%{staticlibsportablenameimpl -- %{?1}}.tar.xz}
%define jreportablename() %{expand:%{jreportablenameimpl -- %{?1}}}
%define jdkportablename() %{expand:%{jdkportablenameimpl -- %{?1}}}
# Intentionally use jdkportablenameimpl here since we want to have static-libs files overlayed on
# top of the JDK archive
%define staticlibsportablename() %{expand:%{jdkportablenameimpl -- %%{1}}}
%define staticlibsportablename() %{expand:%{jdkportablenameimpl -- %{?1}}}
%define docportablename() %(echo %{uniquesuffix ""} | sed "s;el%{rhel}\\(_[0-9]\\)*;portable.docs;g")
%define docportablearchive() %{docportablename}.tar.xz
%define miscportablename() %(echo %{uniquesuffix ""} | sed "s;el%{rhel}\\(_[0-9]\\)*;portable.misc;g")
@ -1872,8 +1872,8 @@ done
%files
# main package builds always
%{_jvmdir}/%{jreportablearchive -- %{nil}}
%{_jvmdir}/%{jreportablearchive -- %{nil}}.sha256sum
%{_jvmdir}/%{jreportablearchive -- %%{nil}}
%{_jvmdir}/%{jreportablearchive -- %%{nil}}.sha256sum
%else
%files
# placeholder
@ -1882,15 +1882,15 @@ done
%if %{include_normal_build}
%files devel
%{_jvmdir}/%{jdkportablearchive -- %{nil}}
%{_jvmdir}/%{jdkportablearchive -- %%{nil}}
%{_jvmdir}/%{jdkportablearchive -- .debuginfo}
%{_jvmdir}/%{jdkportablearchive -- %{nil}}.sha256sum
%{_jvmdir}/%{jdkportablearchive -- %%{nil}}.sha256sum
%{_jvmdir}/%{jdkportablearchive -- .debuginfo}.sha256sum
%if %{include_staticlibs}
%files static-libs
%{_jvmdir}/%{staticlibsportablearchive -- %{nil}}
%{_jvmdir}/%{staticlibsportablearchive -- %{nil}}.sha256sum
%{_jvmdir}/%{staticlibsportablearchive -- %%{nil}}
%{_jvmdir}/%{staticlibsportablearchive -- %%{nil}}.sha256sum
%endif
%files unstripped