summaryrefslogtreecommitdiff
path: root/scripts/makepkg.sh.in
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2018-08-21 10:15:12 -0400
committerAllan McRae <allan@archlinux.org>2018-10-21 20:09:04 +1000
commitb5191ea140386dd9b73e4509ffa9a6d347c1b5fa (patch)
treec4efbb1e4b211feb0bfb21a939e68184cb3544d4 /scripts/makepkg.sh.in
parente12d03217430500be269392463876440210f7916 (diff)
downloadpacman-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>
Diffstat (limited to 'scripts/makepkg.sh.in')
-rw-r--r--scripts/makepkg.sh.in7
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() {