makepkg: fix bash 5 compatibility when packaging symlinks to a directory
In commit b5191ea140
we moved to using
shell globbing to print package files for a couple of reasons including
reproducible packaging of .METADATA files.
Unfortunately, this only works reliably when the glob pattern does not
resolve to a symlinked directory due to a change in the bash 5.0
release. Note that the previous, desired behavior was rather to merely
refuse to recurse into symlinked directories, but due to an unrelated
issue, the symlink handling for globstar was reworked in a way that had
this side effect.
See https://lists.gnu.org/archive/html/bug-bash/2019-04/msg00015.html
for discussion; this may be fixed at some point, but bash 5.0 is broken
either way.
The appropriate way of handling this seems to be to use **/* to match
instead; this produces the same results on both bash 4 and bash 5, as
the ** matches any leading directory component (or none), and the *
matches any file, directory, or symlink to either one.
Fixes FS#62278
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
f2a7fb2b96
commit
6911904a03
1 changed files with 2 additions and 1 deletions
|
@ -666,7 +666,8 @@ list_package_files() {
|
|||
(
|
||||
export LC_COLLATE=C
|
||||
shopt -s dotglob globstar
|
||||
printf '%s\0' **
|
||||
# bash 5.0 only works with combo directory + file globs
|
||||
printf '%s\0' **/*
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue