On Thu, Oct 31, 2013 at 11:25:36PM +1000, Allan McRae wrote:
> It is fairly common that packages contain static libraries with no
> shared counterpart.  These should not be removed with !staticlibs.
> 
> Signed-off-by: Allan McRae <[email protected]>
> ---
>  doc/PKGBUILD.5.txt     | 2 +-
>  doc/makepkg.conf.5.txt | 2 +-
>  scripts/makepkg.sh.in  | 8 +++++++-
>  3 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt
> index 4ac7dc1..6c5ef84 100644
> --- a/doc/PKGBUILD.5.txt
> +++ b/doc/PKGBUILD.5.txt
> @@ -250,7 +250,7 @@ A normal sync or upgrade will not use its value.
>  
>       *staticlibs*;;
>               Leave static library (.a) files in packages. Specify 
> `!staticlibs` to
> -             remove them.
> +             remove them (if they have a shared counterpart).
>  
>       *emptydirs*;;
>               Leave empty directories in packages.
> diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt
> index be5b809..ef64d17 100644
> --- a/doc/makepkg.conf.5.txt
> +++ b/doc/makepkg.conf.5.txt
> @@ -162,7 +162,7 @@ Options
>  
>       *staticlibs*;;
>               Leave static library (.a) files in packages. Specify 
> `!staticlibs` to
> -             remove them.
> +             remove them (if they have a shared counterpart).
>  
>       *emptydirs*;;
>               Leave empty directories in packages.
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index b2cc8e2..67bd7f1 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -1584,7 +1584,13 @@ tidy_install() {
>  
>       if check_option "staticlibs" "n"; then
>               msg2 "$(gettext "Removing static library files...")"
> -             find . ! -type d -name "*.a" -exec rm -f -- '{}' +
> +             local sl=($(find . ! -type d -name "*.a"))

Prone to rampant word splitting and glob expansion.

> +             local l
> +             for l in "${sl[@]}"; do

-for ...
+while read -rd '' l; do

> +                     if [[ -f "${l%.a}.so" ]]; then
> +                             rm -f "$l"

Maybe we shouldn't use -f here, since we would probably care about
deletion failures?

> +                     fi
> +             done

-done
+done < <(find . ! -type d -name "*.a" -print0)

>       fi
>  
>       if check_option "emptydirs" "n"; then
> -- 
> 1.8.4.2
> 
> 

Reply via email to