[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