[pacman-dev] [PATCH] makepkg: fix bash 5 compatibility when packaging symlinks to a directory
Allan McRae
allan at archlinux.org
Wed May 8 00:14:45 UTC 2019
On 10/4/19 3:50 pm, Eli Schwartz wrote:
> In commit b5191ea140386dd9b73e4509ffa9a6d347c1b5fa 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 at archlinux.org>
OK.
> ---
> scripts/makepkg.sh.in | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 4f096a36..fd06ce02 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -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' **/*
> )
> }
>
>
More information about the pacman-dev
mailing list