[pacman-dev] [PATCH] Add liba option in PKGBUILD

Dave Reisner d at falconindy.com
Mon Mar 4 07:17:42 EST 2013


On Mon, Mar 04, 2013 at 03:01:06AM +0100, Sébastien Luttringer wrote:
> This option (enabled by default) removes static library files in packages.
> 
> Related to the thread:
> https://mailman.archlinux.org/pipermail/arch-dev-public/2013-March/024552.html
> 
> Signed-off-by: Sébastien Luttringer <seblu at seblu.net>
> ---
>  doc/PKGBUILD.5.txt     | 4 ++++
>  doc/makepkg.conf.5.txt | 6 +++++-
>  etc/makepkg.conf.in    | 3 ++-
>  scripts/makepkg.sh.in  | 9 +++++++--
>  4 files changed, 18 insertions(+), 4 deletions(-)
> 
> diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt
> index c37477a..1e64b8f 100644
> --- a/doc/PKGBUILD.5.txt
> +++ b/doc/PKGBUILD.5.txt
> @@ -243,6 +243,10 @@ A normal sync or upgrade will not use its value.
>  		Leave libtool (.la) files in packages. Specify `!libtool` to
>  		remove them.
>  
> +	*liba*;;
> +		Leave static library (.a) files in packages. Specify `!liba` to
> +		remove them.
> +
>  	*emptydirs*;;
>  		Leave empty directories in packages.
>  
> diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt
> index 71cfc5d..94f2a0c 100644
> --- a/doc/makepkg.conf.5.txt
> +++ b/doc/makepkg.conf.5.txt
> @@ -138,7 +138,7 @@ Options
>  	Specify a key to use for gpg signing instead of the default key in the
>  	keyring. Can be overridden with makepkg's '\--key' option.
>  
> -**OPTIONS=(**strip docs libtool emptydirs zipman purge !upx**)**::
> +**OPTIONS=(**strip docs libtool !liba emptydirs zipman purge !upx**)**::
>  	This array contains options that affect the default packaging. They are
>  	equivalent to options that can be placed in the PKGBUILD; the defaults are
>  	shown here. All options should always be left in the array; to enable or
> @@ -160,6 +160,10 @@ Options
>  		Leave libtool (.la) files in packages. Specify `!libtool` to remove
>  		them.
>  
> +	*liba*;;
> +		Leave static library (.a) files in packages. Specify `!liba` to remove
> +		them.
> +
>  	*emptydirs*;;
>  		Leave empty directories in packages.
>  
> diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in
> index 1436042..8af8e3f 100644
> --- a/etc/makepkg.conf.in
> +++ b/etc/makepkg.conf.in
> @@ -71,13 +71,14 @@ BUILDENV=(fakeroot !distcc color !ccache check !sign)
>  #-- strip:     Strip symbols from binaries/libraries
>  #-- docs:      Save doc directories specified by DOC_DIRS
>  #-- libtool:   Leave libtool (.la) files in packages
> +#-- liba:      Leave static library (.a) files in packages
>  #-- emptydirs: Leave empty directories in packages
>  #-- zipman:    Compress manual (man and info) pages in MAN_DIRS with gzip
>  #-- purge:     Remove files specified by PURGE_TARGETS
>  #-- upx:       Compress binary executable files using UPX
>  #-- debug:     Add debugging flags as specified in DEBUG_* variables
>  #
> -OPTIONS=(strip docs libtool emptydirs zipman purge !upx !debug)
> +OPTIONS=(strip docs libtool !liba emptydirs zipman purge !upx !debug)
>  
>  #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
>  INTEGRITY_CHECK=(md5)
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index bd29d73..274739c 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -44,8 +44,8 @@ declare -r confdir='@sysconfdir@'
>  declare -r BUILDSCRIPT='@BUILDSCRIPT@'
>  declare -r startdir="$PWD"
>  
> -packaging_options=('strip' 'docs' 'libtool' 'emptydirs' 'zipman' 'purge' 'upx' \
> -                   'debug')
> +packaging_options=('strip' 'docs' 'libtool' 'liba' 'emptydirs' 'zipman' \
> +                   'purge' 'upx' 'debug')
>  other_options=('ccache' 'distcc' 'buildflags' 'makeflags')
>  splitpkg_overrides=('pkgver' 'pkgrel' 'epoch' 'pkgdesc' 'arch' 'url' 'license' \
>                      'groups' 'depends' 'optdepends' 'provides' 'conflicts' \
> @@ -1503,6 +1503,11 @@ tidy_install() {
>  		find . ! -type d -name "*.la" -exec rm -f -- '{}' \;
>  	fi
>  
> +	if check_option "liba" "n"; then
> +		msg2 "$(gettext "Removing "%s" files...")" "static libraries"
> +		find . ! -type d -name "*.a" -exec rm -f -- '{}' \;

I realize you're just copying what's above here, but please don't.
You're forking once for every removal, instead of once for everything.

This really should be fixed for the libtool option as well.

> +	fi
> +
>  	if check_option "emptydirs" "n"; then
>  		msg2 "$(gettext "Removing empty directories...")"
>  		find . -depth -type d -exec rmdir '{}' + 2>/dev/null
> -- 
> 1.8.1.5
> 
> 


More information about the pacman-dev mailing list