tools/misc/mkrpm | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-)
Commit 438c5ffa44e99cceb574c0f9946aacacdedd2952 ("rpmball: Adjust to
new rpm, do not require --force") attempted to handle stricter
directory permissions in newer distributions.
This introduced a few issues:
- /boot used to be a constant prior commit
6475d700055fa952f7671cee982a23de2f5e4a7c ("use BOOT_DIR as xen.gz
install location"), since this commit the location has to be
referenced via ${BOOT_DIR}
- it assumed the prefix and the various configurable paths match the
glob pattern /*/*/*
Adjust the code to build a filelist on demand and filter directories
from an installed filesystem.rpm. This works on a SUSE system, and
will likely work on a RedHat based system as well.
Take the opportunity to replace the usage of $RPM_BUILD_ROOT with
%buildroot, and use pushd/popd pairs.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
v2: remove bogus pushd/popd pair, use pipe as delimiter for s command for consistency
tools/misc/mkrpm | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/tools/misc/mkrpm b/tools/misc/mkrpm
index 74f6761bb0..b072144a42 100644
--- a/tools/misc/mkrpm
+++ b/tools/misc/mkrpm
@@ -50,20 +50,32 @@ uninstall.
%build
%install
-rm -rf \$RPM_BUILD_ROOT
-mkdir -p \$RPM_BUILD_ROOT
-cd %{_xenroot}
-dist/install.sh \$RPM_BUILD_ROOT/
-
-cd \$RPM_BUILD_ROOT
+rm -rf %buildroot
+mkdir -p %buildroot
+pushd %_xenroot
+dist/install.sh %buildroot
+
+rm -f dist/filesystem.txt
+rm -f dist/directories.txt
+rm -f dist/files.txt
+find %buildroot -type d | sed 's|^%buildroot||' | sort > dist/directories.txt
+find %buildroot -type f | sed 's|^%buildroot||' | sort > dist/files.txt
+find %buildroot -type l | sed 's|^%buildroot||' | sort >> dist/files.txt
+if rpm -ql filesystem > dist/filesystem.txt
+then
+ while read
+ do
+ sed -i "s|^\${REPLY}$||" dist/directories.txt
+ done < dist/filesystem.txt
+fi
+sed 's|^|%%dir |' dist/directories.txt >> dist/files.txt
+popd
%clean
-rm -rf \$RPM_BUILD_ROOT
+rm -rf %buildroot
-%files
+%files -f %_xenroot/dist/files.txt
%defattr(-,root,root,-)
-/*/*/*
-/boot/*
%post
EOF
On Tue, Jun 13, 2023 at 12:55:13PM +0200, Olaf Hering wrote:
> Commit 438c5ffa44e99cceb574c0f9946aacacdedd2952 ("rpmball: Adjust to
> new rpm, do not require --force") attempted to handle stricter
> directory permissions in newer distributions.
>
> This introduced a few issues:
> - /boot used to be a constant prior commit
> 6475d700055fa952f7671cee982a23de2f5e4a7c ("use BOOT_DIR as xen.gz
> install location"), since this commit the location has to be
> referenced via ${BOOT_DIR}
> - it assumed the prefix and the various configurable paths match the
> glob pattern /*/*/*
>
> Adjust the code to build a filelist on demand and filter directories
> from an installed filesystem.rpm. This works on a SUSE system, and
> will likely work on a RedHat based system as well.
>
> Take the opportunity to replace the usage of $RPM_BUILD_ROOT with
> %buildroot, and use pushd/popd pairs.
>
> Signed-off-by: Olaf Hering <olaf@aepfle.de>
> ---
>
> v2: remove bogus pushd/popd pair, use pipe as delimiter for s command for consistency
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
Thanks,
--
Anthony PERARD
© 2016 - 2026 Red Hat, Inc.