diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2018-08-21 16:15:12 +0200 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2018-10-21 12:09:04 +0200 |
commit | b5191ea140386dd9b73e4509ffa9a6d347c1b5fa (patch) | |
tree | c4efbb1e4b211feb0bfb21a939e68184cb3544d4 | |
parent | e12d03217430500be269392463876440210f7916 (diff) | |
download | pacman-b5191ea140386dd9b73e4509ffa9a6d347c1b5fa.tar.gz pacman-b5191ea140386dd9b73e4509ffa9a6d347c1b5fa.tar.xz |
makepkg: use builtin globbing to print files in package
- 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@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r-- | scripts/makepkg.sh.in | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 25a8fc26..33f5deb4 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -708,8 +708,11 @@ 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() { |