[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] tools: fix make rpmball



commit 2f69ef96801f0d2b9646abf6396e60f99c56e3a0
Author:     Olaf Hering <olaf@xxxxxxxxx>
AuthorDate: Tue Jun 13 14:42:14 2023 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Jun 13 14:42:14 2023 +0200

    tools: fix make rpmball
    
    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@xxxxxxxxx>
    Reviewed-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
 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
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.