tests: Make sure to use the bootstrap Guile.
* tests/builders.scm ("url-fetch", "gnu-build"): Pass `url-fetch'
#:guile %BOOTSTRAP-GUILE.
tests: Remove extraneous test.
* tests/derivations.scm ("build-expression->derivation for fixed-output
derivation"): Remove test. It is redundant with that in builders.scm,
and doesn't work out of the box with the statically-linked
%BOOTSTRAP-GUILE.
build: Add $(top_builddir) to the load path.
* Makefile.am (DOWNLOAD_FILE): Add $(top_builddir) to the search path,
since that's where guix/config.scm is.
(.scm.go): Likewise.
distro: Patch libc to avoid accessing /etc/ld.so.cache and friends.
* distro/packages/base.scm (glibc): Apply `glibc-no-ld-so-cache.patch'.
(glibc-final): Inherit GLIBC's inputs.
* distro/packages/patches/glibc-no-ld-so-cache.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
distro: Use `mirror://' URLs.
* distro/packages/base.scm, distro/packages/bash.scm,
distro/packages/compression.scm, distro/packages/gawk.scm,
distro/packages/gperf.scm, distro/packages/guile.scm,
distro/packages/libsigsegv.scm, distro/packages/libtool.scm,
distro/packages/libunistring.scm, distro/packages/m4.scm,
distro/packages/multiprecision.scm, distro/packages/ncurses.scm,
distro/packages/pth.scm, distro/packages/readline.scm,
distro/packages/recutils.scm: Use `mirror://gnu' URLs.
* distro/packages/gnupg.scm: Use `mirror://gnupg' URLs.
download: Add support for mirror:// URLs.
* guix/download.scm (%mirrors): New variable. Mirror lists taken from
Nixpkgs.
(url-fetch): New `mirrors' keyword parameter.
[builder]: Pass it.
* guix/build/download.scm (url-fetch): New `mirrors' keyword parameter.
[maybe-expand-mirrors]: New procedure.
[uri]: Use it.
download: Follow HTTP redirections.
* guix/build/download.scm (http-fetch): Follow the redirection when CODE
is 302.
Remove (guix http) and (guix ftp).
* guix/ftp.scm, guix/http.scm, guix/build/ftp.scm, guix/build/http.scm:
Remove.
* Makefile.am (MODULES): Likewise.
* tests/builders.scm, distro/packages/base.scm,
distro/packages/bash.scm, distro/packages/bdw-gc.scm,
distro/packages/compression.scm, distro/packages/gawk.scm,
distro/packages/gnupg.scm, distro/packages/gperf.scm,
distro/packages/guile.scm, distro/packages/libffi.scm,
distro/packages/libsigsegv.scm, distro/packages/libtool.scm,
distro/packages/libunistring.scm, distro/packages/lout.scm,
distro/packages/m4.scm, distro/packages/multiprecision.scm,
distro/packages/ncurses.scm, distro/packages/perl.scm,
distro/packages/pkg-config.scm, distro/packages/pth.scm,
distro/packages/readline.scm, distro/packages/recutils.scm: Use
`url-fetch' instead of `http-fetch' and `ftp-fetch'.
* distro/packages/bootstrap.scm: Likewise
(bootstrap-origin): Remove references to `http-fetch' and
`ftp-fetch'.
* guix.scm (%public-modules): Remove `http' and `ftp'; add `download'.
Add (guix download) and (guix build download).
* guix/download.scm, guix/build/download.scm: New files.
* Makefile.am (MODULES): Add them.
* tests/builders.scm ("url-fetch"): New test.
* distro/packages/bootstrap.scm (bootstrap-origin): Support
`url-fetch'.
* guix/snix.scm (snix-derivation->guix-package): Use `url-fetch' instead
of `http-fetch'.
Move base32 code to (guix base32).
* guix/utils.scm (bytevector-quintet-ref, bytevector-quintet-ref-right,
bytevector-quintet-length, bytevector-quintet-fold,
bytevector-quintet-fold-right, make-bytevector->base32-string,
%nix-base32-chars, %rfc4648-base32-chars, bytevector->base32-string,
bytevector->nix-base32-string, bytevector-quintet-set!,
bytevector-quintet-set-right!, base32-string-unfold,
base32-string-unfold-right, make-base32-string->bytevector,
base32-string->bytevector, nix-base32-string->bytevector): Move to...
* guix/base32.scm: ... here. New file.
* tests/utils.scm (%nix-hash, "bytevector->base32-string",
"base32-string->bytevector", "nix-base32-string->bytevector", "sha256
& bytevector->base32-string"): Move to...
* tests/base32.scm: ... here. New file
* guix-download.in, guix/derivations.scm, guix/packages.scm,
guix/snix.scm, tests/builders.scm, tests/derivations.scm: Adjust
accordingly.
* guix.scm (%public-modules): Add `base32'.
tests: Choose a less expensive test for packages.
* tests/packages.scm (%bootstrap-inputs): Remove.
("GNU Hello"): Rename to...
("GNU Make, bootstrap"): ... this. Build GNU-MAKE-BOOT0 instead of
HELLO.
http: Add informative output.
* guix/build/http.scm (http-fetch): Emit message indicating the
download.
http: Check the HTTP response code, and bail if not 200.
* guix/build/http.scm (http-fetch): Check RESP's code; error out when
it's not 200.
derivations: build-expression->derivation: Builder only refers to sources.
* guix/derivations.scm (build-expression->derivation)[source-path]: New
procedure.
[builder]: Pass only sources as references. This fixes a bug whereby
changing a fixed-output drv referred to by a builder would cause the
builder's hash to change, thereby leading to a full rebuild.
* tests/derivations.scm ("build-expression->derivation with a
fixed-output input"): New test.
derivations: Add tests relative to fixed-output derivations.
* tests/derivations.scm ("fixed-output derivation"): Add comment that
the reference to BUILDER is optional.
("fixed-output derivation: output paths are equal",
"derivation with a fixed-output input",
"build-expression->derivation: same fixed-output path"): New tests.
store: Document `add-to-store' hack for `fixed?'.
* guix/store.scm (add-to-store): Document that `fixed?' must be #t.
guix-download: Print the hash of the file's contents, no that of the path.
* guix-download.in (guix-download): Display the hash of the contents of
PATH, not the path hash. Also, call `add-to-store' with FIXED? = #t.
guix-download: Error out when the HTTP response code is not 200.
* guix-download.in (http-fetch): Leave with an error message when
RESPONSE's code is not 200.
* tests/guix-download.sh: New file.
* Makefile.am (TESTS): Add it.
guix-build: Error out when `-S' used for source-less package.
* guix-build.in (derivations-from-package-expressions): Leave with an
error message when SOURCE? is #t and P has no source.
* tests/guix-build.sh: Add test.
doc: Document the features and `guix-package'.
* doc/guix.texi: Change the category to "Package management". Add an
@direntry for "Invoking guix-package".
(Package Management): New chapter.