# HG changeset patch # User Titus von Boxberg # Date 1321952890 -3600 # Node ID 9ee6a3a0f3ded7a6b8e0ecdc056f1ff685d3f320 # Parent 64fe22ca6e6f403b3cb90d2ae2b91b40a99d0d41 scripts/functions: extract: portable call for old and defective tars Instead of using -J, --lzma, --use-compress-program or the like use -dc | tar -f - Signed-off-by: Titus von Boxberg (transplanted from 49af7802dcd538ec3cb64337030b03ac2c6344d2) diff -r 64fe22ca6e6f -r 9ee6a3a0f3de scripts/functions --- a/scripts/functions Fri Nov 18 11:32:50 2011 +0800 +++ b/scripts/functions Tue Nov 22 10:08:10 2011 +0100 @@ -761,15 +761,15 @@ # - so, if we get an lzma tarball, and either 'xz' or 'lzma' is # missing, we can assume the other is available if [ "${CT_CONFIGURE_has_lzma}" = "y" ]; then - lzma_prog=lzma + lzma_prog="lzma -fdc" else - lzma_prog=xz + lzma_prog="xz -fdc" fi case "${ext}" in - .tar.xz) CT_DoExecLog FILE tar "${tar_opts[@]}" --use-compress-program=xz -f "${full_file}";; - .tar.lzma) CT_DoExecLog FILE tar "${tar_opts[@]}" --use-compress-program="${lzma_prog}" -f "${full_file}";; - .tar.bz2) CT_DoExecLog FILE tar "${tar_opts[@]}" -j -f "${full_file}";; - .tar.gz|.tgz) CT_DoExecLog FILE tar "${tar_opts[@]}" -z -f "${full_file}";; + .tar.xz) xz -fdc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;; + .tar.lzma) ${lzma_prog} "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;; + .tar.bz2) bzip2 -dc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;; + .tar.gz|.tgz) gzip -dc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;; .tar) CT_DoExecLog FILE tar "${tar_opts[@]}" -f "${full_file}";; /.git) CT_ExtractGit "${basename}" "${@}";; *) CT_DoLog WARN "Don't know how to handle '${basename}${ext}': unknown extension"