build-systems/gnu: Allow unpacking/repacking more kind of files.
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>
Mon, 18 Jan 2021 16:51:21 +0000 (11:51 -0500)
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>
Wed, 27 Jan 2021 03:48:35 +0000 (22:48 -0500)
commitcfcead2e515c0dae02127e5a76496463898be6b6
treee8f4c1c4ab492bad74c04b19edcdd48cfe85aa1d
parent47a6a938c3c4d0bbe7b6a3c64ff75d7bfb2f24fb
build-systems/gnu: Allow unpacking/repacking more kind of files.

Before this change, only plain directories, tar or zip archives were supported
as the source of a package for the GNU build system; anything else would cause
the unpack phase to fail.  Origins relying on snippets would suffer from the
same problem.

This change adds the support to use files of the following extensions: .gz,
.Z, .bz2, .lz, and .xz, even when they are not tarballs.  Files of unknown
extensions are treated as uncompressed files and supported as well.

* guix/packages.scm (patch-and-repack): Only add the compressor utility to the
PATH when the file is compressed.  Bind more inputs in the mlet, and use them
for decompressing single files.  Adjust the decompression and compression
routines.
[decompression-type]: Remove nested variable.
* guix/build/utils.scm (compressor, tarball?): New procedures.  Move
%xz-parallel-args to the new 'compression helpers' section.
* tests/packages.scm: Add tests.  Add missing copyright year for Jan.
* guix/build/gnu-build-system.scm (first-subdirectory): Return #f when no
sub-directory was found.
(unpack): Support more file types, including uncompressed plain files.
guix/build/gnu-build-system.scm
guix/build/utils.scm
guix/packages.scm
guix/tests.scm
tests/builders.scm
tests/packages.scm