[pacman-dev] [PATCH] makepkg : fix a lot of breakages caused by Allan
Dan McGee
dan at archlinux.org
Wed Jan 7 21:48:33 EST 2009
I sent this here so I could comment on it. Overall seems fine.
On Wed, Jan 7, 2009 at 8:31 PM, Dan McGee <dan at archlinux.org> wrote:
> From: Xavier Chantry <shiningxc at gmail.com>
>
> This patch started as a simple typo fix (pugre instead of purge in two
> places), as well as a fix of a test which was using PURGE_TARGETS instead of
> $PURGE_TARGETS.
>
> It evolved in a slight handling change of the OPTIONS which have a variable
> affecting their behavior (strip STRIP_DIRS, docs DOC_DIRS, zipman MAN_DIRS
> and purge PURGE_TARGETS), as well as a clarification in makepkg.conf. Now
> when a variable is undefined or empty, the corresponding option will have no
> effect. It looked weird to have a fallback when a option is defined but
> empty, it seems more natural to not have any fallbacks.
I think this is valid reasoning. Does anyone object?
> Also re-enable docs by default. It seems arbitrary to delete files from
> packages by default, and it would be more vanilla and distro agnostic to
> keep them. docs was also the only negated option.
Also agreed. We will probably want to ship a distro-specific
makepkg.conf with Arch, but that is a different story.
> Signed-off-by: Xavier Chantry <shiningxc at gmail.com>
> ---
> doc/makepkg.conf.5.txt | 5 +++--
> etc/makepkg.conf.in | 20 ++++++++++----------
> scripts/makepkg.sh.in | 20 +++++---------------
> 3 files changed, 18 insertions(+), 27 deletions(-)
>
> diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt
> index 044c69e..f699f50 100644
> --- a/doc/makepkg.conf.5.txt
> +++ b/doc/makepkg.conf.5.txt
> @@ -128,10 +128,11 @@ Options
> Leave empty directories in packages.
>
> *zipman*;;
> - Compress manual (man and info) pages with gzip.
> + Compress manual (man and info) pages with gzip. The directories
> + affected are specified by the `MAN_DIRS` variable.
>
> *purge*;;
> - Remove files specified by the `PUGRE_TARGETS` variable from the
> + Remove files specified by the `PURGE_TARGETS` variable from the
> package.
Good.
> **INTEGRITY_CHECK=(**check1 ...**)**::
> diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in
> index 675e5f9..d811867 100644
> --- a/etc/makepkg.conf.in
> +++ b/etc/makepkg.conf.in
> @@ -59,27 +59,27 @@ BUILDENV=(fakeroot !distcc color !ccache !xdelta)
> # These are default values for the options=() settings
> #########################################################################
> #
> -# Default: OPTIONS=(strip !docs libtool emptydirs zipman purge)
> +# Default: OPTIONS=(strip docs libtool emptydirs zipman purge)
> # A negated option will do the opposite of the comments below.
> #
> -#-- strip: Strip symbols from binaries/libraries
> -#-- docs: Save doc and info directories
> +#-- strip: Strip symbols from binaries/libraries in STRIP_DIRS
> +#-- docs: Save doc directories specified by DOC_DIRS
> #-- libtool: Leave libtool (.la) files in packages
> #-- emptydirs: Leave empty directories in packages
> -#-- zipman: Compress manual (man and info) pages with gzip
> -#-- purge: Remove files sepecified below from package
> +#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
> +#-- purge: Remove files specified by PURGE_TARGETS
> #
> -OPTIONS=(strip !docs libtool emptydirs zipman purge)
> +OPTIONS=(strip docs libtool emptydirs zipman purge)
>
> #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
> INTEGRITY_CHECK=(md5)
> -#-- Manual (man and info) directories to compress (if option set correctly above)
> +#-- Manual (man and info) directories to compress (if zipman is specified)
> MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
> -#-- Doc directories to remove (if option set correctly above)
> +#-- Doc directories to remove (if !docs is specified)
> DOC_DIRS=(usr/{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
> -#-- Directories to be searched for the strip option (if option set correctly above)
> +#-- Directories to be searched for the strip option (if strip is specified)
> STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}} opt/*/{bin,lib,sbin})
> -#-- Files to be removed from all packages
> +#-- Files to be removed from all packages (if purge is specified)
> PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
>
> #########################################################################
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 3e0781f..cb52b80 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -712,14 +712,13 @@ tidy_install() {
> cd "$pkgdir"
> msg "$(gettext "Tidying install...")"
>
> - if [ "$(check_option docs)" = "n" ]; then
> + if [ "$(check_option docs)" = "n" -a -n "${DOC_DIRS[*]}" ]; then
> msg2 "$(gettext "Removing doc files...")"
> - #fix flyspray bug #5021
> rm -rf ${DOC_DIRS[@]}
> fi
>
> - if [ "$(check_option purge)" = "y" -a -n "PURGE_TARGETS" ]; then
> - msg2 "$(gettext "Removing pugre targets...")"
> + if [ "$(check_option purge)" = "y" -a -n "${PURGE_TARGETS[*]}" ]; then
> + msg2 "$(gettext "Removing files in %s...")" "PURGE_TARGETS"
It's not necessarily always "Removing files in", is it? e.g. *.pod
> local pt
> for pt in "${PURGE_TARGETS[@]}"; do
> if [ "${pt}" == "${pt//\/}" ]; then
> @@ -730,13 +729,9 @@ tidy_install() {
> done
> fi
>
> - if [ "$(check_option zipman)" = "y" ]; then
> + if [ "$(check_option zipman)" = "y" -a -n "${MAN_DIRS[*]}" ]; then
> msg2 "$(gettext "Compressing man and info pages...")"
> local manpage ext file link hardlinks hl
> - if [ -z "${MAN_DIRS[*]}" ]; then
> - # fall back to default value
> - MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
> - fi
> find ${MAN_DIRS[@]} -type f 2>/dev/null |
> while read manpage ; do
> # check file still exists (potentially compressed with hard link)
> @@ -769,14 +764,9 @@ tidy_install() {
> done
> fi
>
> - if [ "$(check_option strip)" = "y" ]; then
> + if [ "$(check_option strip)" = "y" -a -n "${STRIP_DIRS[*]}" ]; then
> msg2 "$(gettext "Stripping debugging symbols from binaries and libraries...")"
> local binary
> - if [ -z "${STRIP_DIRS[*]}" ]; then
> - # fall back to default value
> - STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}}
> - opt/*/{bin,lib,sbin})
> - fi
> find ${STRIP_DIRS[@]} -type f 2>/dev/null | while read binary ; do
> case "$(file -biz "$binary")" in
> *application/x-sharedlib*) # Libraries (.so)
> --
> 1.6.1
More information about the pacman-dev
mailing list