[pacman-dev] [PATCH] makepkg: use builtin globbing to print files in package

Eli Schwartz eschwartz at archlinux.org
Tue Aug 21 14:15:12 UTC 2018


- it comes with free collation when moving the LC_ALL declaration up a bit;
  this fixes a bug where the .FILES were not being properly sorted and
  their order depended on directory creation order, which broke
  reproducible builds in the wild.
- it handles sorting null-delimited output everywhere, without sort -z;
  this lets us get rid of sed hacks
- it is faster than invoking multiple find subprocesses
- dotfiles can be automatically printed *and the C locale sorts them first*
  with a single ** glob

Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
---
 scripts/makepkg.sh.in | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ae1ef01b..1325b019 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -711,10 +711,14 @@ write_buildinfo() {
 # database files are placed at the beginning of the package regardless of
 # sorting
 list_package_files() {
-	(find . -path './.*' \! -name '.'; find . \! -path './.*' \! -name '.' | LC_ALL=C sort) |
-	sed -e 's|^\./||' | tr '\n' '\0'
+	(
+		export LC_COLLATE=C
+		shopt -s dotglob globstar
+		printf '%s\0' **
+	)
 }
 
+
 create_package() {
 	(( NOARCHIVE )) && return 0
 
-- 
2.18.0


More information about the pacman-dev mailing list