[pacman-dev] [PATCH 1/3] makepkg: refactor archive compression for reusability
Eli Schwartz
eschwartz at archlinux.org
Tue Oct 3 14:56:29 UTC 2017
On 09/14/2017 02:27 AM, Allan McRae wrote:
>> +# Wrapper around many stream compression formats, for use in the middle of a
>> +# pipeline. A tar archive is passed on stdin and compressed to stdout.
>> +compress_as() {
>
> This should really make its way to libmakepkg in util/compress.sh.
I suppose I can do that, anything else that should go there or is it a
one-function library?
> I have also internal debated the name for a while. compress_as() vs
> compress_to() vs compress(). I was slightly leaning to the last one...
I'm not really sure what to call it either. Worth noting though that
compress() will not work -- POSIX has a compress/decompress command for
handling *.Z which is in fact utilized in the function itself, so that
would be rather recursive if anyone tried to use PKGEXT=.pkg.tar.Z for
some outdated reason.
OTOH I cannot find a repository package to provide that currently (but
gzip does provide uncompress as a second copy of the `gunzip -d` wrapper
which is also installed as gunzip). Although the AUR package "ncompress"
appears to be the modern canonical source of a non-patented `compress`
implementation.
So it is essentially dead (or at least AUR) code.
(Gripe: why does this AUR package claim the license for a public
domain/unlicense'd codebase is "GPL".)
>> + # $1: final archive filename extension for compression type detection
>> +
>> + local ext="$1"
>> +
>> + case "$ext" in
>> + *tar.gz) ${COMPRESSGZ[@]:-gzip -c -f -n} ;;
>> + *tar.bz2) ${COMPRESSBZ2[@]:-bzip2 -c -f} ;;
>> + *tar.xz) ${COMPRESSXZ[@]:-xz -c -z -} ;;
>> + *tar.lrz) ${COMPRESSLRZ[@]:-lrzip -q} ;;
>> + *tar.lzo) ${COMPRESSLZO[@]:-lzop -q} ;;
>> + *tar.Z) ${COMPRESSZ[@]:-compress -c -f} ;;
>
> Aside: we need to do something about all these COMPRESSFOO variables...
> Adding a new one to our example makepkg.conf with each new addition is
> not ideal. Perhaps we can just document them in the man page but no
> have default entries in makepkg.conf? Or is there a better way?
Well, the makepkg.conf is already rather duplicative of the effort which
goes into its manpage. But I don't think we add new compression methods
all that often. I don't really have a strong opinion on this.
>
>> + *tar) cat ;;
>> + *) warning "$(gettext "'%s' is not a valid archive extension.")" \
>> + "$ext"; cat ;;
>> + esac
>> +}
>> +
--
Eli Schwartz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.archlinux.org/pipermail/pacman-dev/attachments/20171003/719993c3/attachment.asc>
More information about the pacman-dev
mailing list