mkosi: Fix debian/not-installed build logic
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 14 Aug 2024 14:51:11 +0000 (16:51 +0200)
committerLuca Boccassi <bluca@debian.org>
Thu, 15 Aug 2024 13:04:41 +0000 (14:04 +0100)
- Expand globs
- Filter out directories
- Append to the list of packaged files, not the list of installed files

Fixes the issue in https://github.com/systemd/systemd/pull/32363

(cherry picked from commit 0409213cbc1f939b6f2f72deabc4c92a7fe30523)

mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.build.chroot

index 2d50afbbb43fa9de222ff691dc6087d0a670b610..03b3b049eb9c920ccaab036eb08ceca72b221558 100755 (executable)
@@ -102,18 +102,22 @@ if ! build; then
         sed "s/Package: //" |
         xargs -d '\n' -I {} sh -c "[ -d debian/{} ] && (cd debian/{} && find . ! -type d ! -path "*dh-exec*" -printf '%P\n')" |
         # Remove compression suffix from compressed manpages as the manpages in debian/tmp will be uncompressed.
-        sed --regexp-extended 's/([0-9])\.gz$/\1/' |
-        sort --unique >/tmp/packaged-files
+        sed --regexp-extended 's/([0-9])\.gz$/\1/' >/tmp/packaged-files
 
     # We figure out the installed files by running find on debian/tmp/ which contains the files installed
     # by meson install.
-    (cd debian/tmp/ && find . ! -type d ! -path "*dh-exec*" -printf '%P\n') >/tmp/installed-files
+    (cd debian/tmp/ && find . ! -type d ! -path "*dh-exec*" -printf '%P\n' | sort --unique) >/tmp/installed-files
 
     if [[ -f debian/not-installed ]]; then
-        grep --invert-match "^#" debian/not-installed >>/tmp/installed-files
+        pushd debian/tmp
+        grep --invert-match "^#" ../not-installed |
+            xargs -I {} bash -O nullglob -c "printf '%s\n' {}" |
+            sed "/^$/d" |
+            xargs -I {} sh -c "test -f '{}' && echo '{}' || true" >>/tmp/packaged-files
+        popd
     fi
 
-    sort --unique --output /tmp/installed-files /tmp/installed-files
+    sort --unique --output /tmp/packaged-files /tmp/packaged-files
 
     # We get all the installed files that were not packaged by finding entries in the installed file that are
     # not in the packaged file.