[pacman-dev] [PATCH] Fix a possible bash-4.0 problem in makepkg

Allan McRae allan at archlinux.org
Sun Apr 26 09:00:35 EDT 2009


Marc - A. Dahlhaus wrote:
> Hello,
>
> i've spotted a problem in makepkg's cleanup part if the host is 
> running bash-4.0.
> As makepkg runs bash with option -e, on bash-4.0 it fails if strip 
> reports an unsupported binary.
> The following trivial patch fixes the problem.
>
> Signed-off-by: "Marc - A. Dahlhaus" <mad at wol.de>
>
> --- pacman-3.2.2.orig/scripts/makepkg.sh.in
> +++ pacman-3.2.2/scripts/makepkg.sh.in
> @@ -766,11 +766,11 @@ tidy_install() {
>         find ${STRIP_DIRS[@]} -type f 2>/dev/null | while read binary 
> ; do
>             case "$(file -biz "$binary")" in
>                 *application/x-sharedlib*)  # Libraries (.so)
> -                    /usr/bin/strip --strip-debug "$binary";;
> +                    /usr/bin/strip --strip-debug "$binary" || true;;
>                 *application/x-archive*)    # Libraries (.a)
> -                    /usr/bin/strip --strip-debug "$binary";;
> +                    /usr/bin/strip --strip-debug "$binary" || true;;
>                 *application/x-executable*) # Binaries
> -                    /usr/bin/strip "$binary";;
> +                    /usr/bin/strip "$binary" || true;;
>             esac
>         done
>     fi

I don't think this is a good approach to the problem.  Having "|| true" 
means if there is a real problem, then it gets ignored.

I suppose the real question is: How do you actually get an unsupported 
binary?  My guess is this occurs when building a package from a binary 
source, in which case "options=('!strip')" would be the solution.

Allan




More information about the pacman-dev mailing list