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>
This commit is contained in:
Eli Schwartz 2018-08-21 10:15:12 -04:00 committed by Allan McRae
parent e12d032174
commit b5191ea140

View file

@ -708,8 +708,11 @@ write_buildinfo() {
# database files are placed at the beginning of the package regardless of # database files are placed at the beginning of the package regardless of
# sorting # sorting
list_package_files() { 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() { create_package() {