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