Ludovic Courtès [Sun, 18 Nov 2012 14:25:01 +0000 (15:25 +0100)]
doc: Add a "Related software" section to `README'.
* README (Related software): New section.
Ludovic Courtès [Sun, 18 Nov 2012 14:22:00 +0000 (15:22 +0100)]
Turn Guix into "GNU Guix".
* configure.ac: Change package name to "GNU Guix", and bug-report
address to `gnu-system-discuss@gnu.org'.
* doc/guix.texi: Replace "Guix" by "GNU Guix" in some places.
(Top, Introduction): Mention "for the GNU system".
* HACKING, README: Use "GNU Guix" instead of "Guix" in some places.
Ludovic Courtès [Thu, 15 Nov 2012 23:26:34 +0000 (00:26 +0100)]
distro: Rebuild bootstrap Binutils and GCC.
These new binaries are built with the `--with-lib-path' and
`--with-local-prefix' flags, respectively, as introduced in commit
01d4540.
* distro/packages/bootstrap.scm (%bootstrap-coreutils&co,
%bootstrap-glibc): Update URL.
(%bootstrap-binutils, %bootstrap-gcc): Update URL and hashes.
* build-aux/download.scm (file-name->uri): Update URL.
Ludovic Courtès [Thu, 15 Nov 2012 23:23:06 +0000 (00:23 +0100)]
distro: Configure ld and GCC to not look under /usr & co.
This fixes impurities with non-chroot builds on LFS-style distros.
* distro/packages/base.scm (binutils): Pass `--with-lib-path'.
(gcc-4.7): Pass `--with-local-prefix'.
* distro/packages/make-bootstrap.scm (%binutils-static): Pass
`--with-lib-path'.
Ludovic Courtès [Tue, 13 Nov 2012 21:57:36 +0000 (22:57 +0100)]
guix-download: Use code from (guix build download).
* guix-download.in (http-fetch, ftp-fetch): Remove.
(fetch-and-store): Replace `uri' parameter with `name', for the output
file name. Redirect the output of `fetch' to the error port.
(guix-download): Call `url-fetch' for all URI schemes except `file'.
Handle PATH equal to #f.
* guix/download.scm: Export `%mirrors'.
* tests/guix-download.sh: Change erroneous URL, because URLs at
example.com are all valid redirections.
Ludovic Courtès [Tue, 13 Nov 2012 21:57:50 +0000 (22:57 +0100)]
guix-download: Add support for file:// URIs.
* guix-download.in (fetch-and-store): New procedure.
(guix-download): Use it to compute PATH. Call `add-to-store' when
a `file' URI scheme is used.
* Makefile.am (AM_TESTS_ENVIRONMENT): New variable.
* tests/guix-download.sh: Add test.
Ludovic Courtès [Tue, 13 Nov 2012 21:13:11 +0000 (22:13 +0100)]
guix-download: Gracefully handle invalid URIs.
* guix-download.in (guix-download): Error out when `string->uri'
returns #f. Use `leave' when the scheme is unknown.
* tests/guix-download.sh: Add tests.
Ludovic Courtès [Tue, 13 Nov 2012 20:46:10 +0000 (21:46 +0100)]
distro: Add GNU Texinfo.
* distro/packages/texinfo.scm: New file.
* Makefile.am (MODULES): Add it.
Ludovic Courtès [Tue, 13 Nov 2012 20:44:57 +0000 (21:44 +0100)]
distro: Add GNU Libtasn1 and GnuTLS.
* distro/packages/gnutls.scm: New file.
* Makefile.am (MODULES): Add it.
Ludovic Courtès [Tue, 13 Nov 2012 20:43:30 +0000 (21:43 +0100)]
distro: Add GNU Nettle.
* distro/packages/nettle.scm: New file.
* Makefile.am (MODULES): Add it.
Ludovic Courtès [Tue, 13 Nov 2012 20:42:12 +0000 (21:42 +0100)]
distro: Add LZO.
* distro/packages/compression.scm (lzo): New variable.
Ludovic Courtès [Mon, 12 Nov 2012 23:40:29 +0000 (00:40 +0100)]
tests: Make sure to use the bootstrap Guile.
* tests/builders.scm ("url-fetch", "gnu-build"): Pass `url-fetch'
#:guile %BOOTSTRAP-GUILE.
Ludovic Courtès [Mon, 12 Nov 2012 23:34:56 +0000 (00:34 +0100)]
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.
Ludovic Courtès [Mon, 12 Nov 2012 23:33:43 +0000 (00:33 +0100)]
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.
Ludovic Courtès [Mon, 12 Nov 2012 22:58:01 +0000 (23:58 +0100)]
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.
Ludovic Courtès [Mon, 12 Nov 2012 22:34:03 +0000 (23:34 +0100)]
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.
Ludovic Courtès [Mon, 12 Nov 2012 22:20:06 +0000 (23:20 +0100)]
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.
Ludovic Courtès [Mon, 12 Nov 2012 22:09:32 +0000 (23:09 +0100)]
download: Follow HTTP redirections.
* guix/build/download.scm (http-fetch): Follow the redirection when CODE
is 302.
Ludovic Courtès [Mon, 12 Nov 2012 23:22:44 +0000 (00:22 +0100)]
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'.
Ludovic Courtès [Mon, 12 Nov 2012 22:10:26 +0000 (23:10 +0100)]
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'.
Ludovic Courtès [Sun, 11 Nov 2012 21:33:28 +0000 (22:33 +0100)]
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'.
Ludovic Courtès [Fri, 9 Nov 2012 22:59:11 +0000 (23:59 +0100)]
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.
Ludovic Courtès [Thu, 8 Nov 2012 23:21:18 +0000 (00:21 +0100)]
http: Add informative output.
* guix/build/http.scm (http-fetch): Emit message indicating the
download.
Ludovic Courtès [Thu, 8 Nov 2012 23:19:20 +0000 (00:19 +0100)]
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.
Ludovic Courtès [Thu, 8 Nov 2012 23:07:10 +0000 (00:07 +0100)]
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.
Ludovic Courtès [Thu, 8 Nov 2012 22:55:12 +0000 (23:55 +0100)]
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.
Ludovic Courtès [Wed, 7 Nov 2012 23:26:13 +0000 (00:26 +0100)]
store: Document `add-to-store' hack for `fixed?'.
* guix/store.scm (add-to-store): Document that `fixed?' must be #t.
Ludovic Courtès [Wed, 7 Nov 2012 23:25:26 +0000 (00:25 +0100)]
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.
Ludovic Courtès [Wed, 7 Nov 2012 23:13:25 +0000 (00:13 +0100)]
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.
Ludovic Courtès [Wed, 7 Nov 2012 22:41:59 +0000 (23:41 +0100)]
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.
Ludovic Courtès [Wed, 7 Nov 2012 18:24:03 +0000 (19:24 +0100)]
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.
Ludovic Courtès [Wed, 7 Nov 2012 18:14:22 +0000 (19:14 +0100)]
guix-package: Fix handling of the PACKAGE:OUTPUT syntax.
* guix-package.in (guix-package)[find-package]: Return the correct NAME
and SUB-DRV when NAME contains #\:.
* tests/guix-package.sh (profile): Add test.
Ludovic Courtès [Wed, 7 Nov 2012 18:13:10 +0000 (19:13 +0100)]
guix-package: Fix invalid module use.
* guix-package.in: Use (distro packages guile), not (... base).
Ludovic Courtès [Wed, 7 Nov 2012 17:00:16 +0000 (18:00 +0100)]
build: Remove now unnecessary dependency of downloads on guix/utils.go.
* Makefile.am (distro/packages/bootstrap/x86_64-linux/guile-bootstrap-2.0.6.tar.xz,
distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz):
Remove dependency on guix/utils.go.
Ludovic Courtès [Wed, 7 Nov 2012 16:07:15 +0000 (17:07 +0100)]
doc: Document `guix-build'.
* doc/guix.texi (Invoking guix-build): Populate.
Ludovic Courtès [Wed, 7 Nov 2012 15:45:11 +0000 (16:45 +0100)]
doc: Remove unnecessary @ifinfo.
* doc/guix.texi: Remove @ifinfo around @dir{category,entry}. Suggested
by Karl Berry <karl@freefriends.org>.
Ludovic Courtès [Tue, 6 Nov 2012 21:55:44 +0000 (22:55 +0100)]
distro: Move bootstrap tarball packages to (distro packages make-bootstrap).
* distro/packages/base.scm (binutils-final): Make public.
(static-package, %bash-static, %static-inputs, %static-binaries,
%binutils-static, %binutils-static-stripped, %glibc-stripped,
%gcc-static, %gcc-stripped, %guile-static, %guile-static-stripped,
tarball-package, %bootstrap-binaries-tarball,
%binutils-bootstrap-tarball, %glibc-bootstrap-tarball,
%guile-bootstrap-tarball): Move to...
* distro/packages/make-bootstrap.scm: ... here. New file.
* Makefile.am (MODULES): Add it.
Ludovic Courtès [Mon, 5 Nov 2012 22:50:34 +0000 (23:50 +0100)]
distro: bash-final: Link with `-static-libgcc'.
* distro/packages/base.scm (bash-final): Pass through
`static-libgcc-package'.
Ludovic Courtès [Mon, 5 Nov 2012 22:50:05 +0000 (23:50 +0100)]
build-system/gnu: Add `static-libgcc-package' & supporting procedure.
* guix/build-system/gnu.scm (package-with-extra-configure-variable,
static-libgcc-package): New procedures.
Ludovic Courtès [Mon, 5 Nov 2012 21:25:52 +0000 (22:25 +0100)]
distro: gcc: Don't add a RUNPATH to GCC when using `-static-libgcc'.
* distro/packages/base.scm (gcc-4.7)[LIB_SPEC]: Add a `-rpath' to GCC
only when !static and !static-libgcc.
Ludovic Courtès [Mon, 5 Nov 2012 22:47:39 +0000 (23:47 +0100)]
distro: readline: Allow stripping of the libraires.
* distro/packages/readline.scm (readline)[arguments]: Add `post-install'
phase to make libraries writable.
Ludovic Courtès [Mon, 5 Nov 2012 22:46:55 +0000 (23:46 +0100)]
utils: Add `default-keyword-arguments' and `substitute-keyword-arguments'.
* distro/packages/base.scm (default-keyword-arguments,
substitute-keyword-arguments): Move to...
* guix/utils.scm: ... here.
Ludovic Courtès [Sun, 4 Nov 2012 23:16:30 +0000 (00:16 +0100)]
distro: Add missing `package-with-bootstrap-guile'.
* distro/packages/base.scm (binutils-final): Add missing
`package-with-bootstrap-guile'.
Ludovic Courtès [Sun, 4 Nov 2012 22:38:21 +0000 (23:38 +0100)]
distro: recutils: Comment out optional dependencies.
* distro/packages/recutils.scm (recutils): Comment out optional
dependencies not packaged here.
Ludovic Courtès [Sun, 4 Nov 2012 22:33:58 +0000 (23:33 +0100)]
distro: Add GnuPG and companion libraries.
* distro/packages/gnupg.scm: New file.
* Makefile.am (MODULES): Add it.
Ludovic Courtès [Sun, 4 Nov 2012 22:40:26 +0000 (23:40 +0100)]
distro: Add zlib.
* distro/packages/compression.scm (zlib): New variable.
Ludovic Courtès [Sun, 4 Nov 2012 22:16:58 +0000 (23:16 +0100)]
distro: Add (distro packages compression).
* distro/packages/base.scm (gzip, bzip2, xz): Move to...
* distro/packages/compression.scm: ... here. New file.
* Makefile.am (MODULES): Add it.
Ludovic Courtès [Sun, 4 Nov 2012 22:08:44 +0000 (23:08 +0100)]
distro: Add GNU Pth.
* distro/packages/pth.scm: New file.
* Makefile.am (MODULES): Add it.
Ludovic Courtès [Sun, 4 Nov 2012 21:55:59 +0000 (22:55 +0100)]
distro: Add GNU gperf.
* distro/packages/gperf.scm: New file.
* Makefile.am (MODULES): Add it.
* distro/packages/guile.scm (guile-reader): Use it.
Ludovic Courtès [Sun, 4 Nov 2012 21:37:22 +0000 (22:37 +0100)]
distro: Split (distro packages base) into several files.
* distro/packages/base.scm (libsigsegv, gawk, perl, m4, gmp, mpfr, mpc,
ncurses, readline, bash, libtool, libunistring, libffi, pkg-config,
libgc): Move to modules of their own.
(guile-1.8, guile-2.0): Move to...
* distro/packages/guile.scm: ... here.
* distro/packages/bash.scm, distro/packages/bdw-gc.scm,
distro/packages/gawk.scm, distro/packages/libffi.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/perl.scm, distro/packages/pkg-config.scm,
distro/packages/readline.scm: New files.
Ludovic Courtès [Sun, 4 Nov 2012 21:04:41 +0000 (22:04 +0100)]
distro: Move bootstrap packages to (distro packages bootstrap).
* distro/packages/base.scm (glibc-dynamic-linker, %bootstrap-guile,
bootstrap-origin, package-from-tarball, %bootstrap-base-url,
%bootstrap-coreutils&co, %bootstrap-binutils, %bootstrap-glibc,
%bootstrap-gcc, %bootstrap-inputs, package-with-bootstrap-guile): Move
to ...
* distro/packages/bootstrap.scm: ... here. New file.
* Makefile.am (MODULES): Add it.
* tests/builders.scm: Use (distro packages bootstrap).
(%bootstrap-guile): Remove.
* tests/packages.scm: Likewise.
* tests/union.scm: Likewise, and remove @@ to access %bootstrap-inputs.
* tests/derivations.scm: Use (distro packages bootstrap) and remove @@
to access %bootstrap-coreutils&co.
* HACKING (When the platform is supported by Nixpkgs): Update
accordingly.
Ludovic Courtès [Sun, 4 Nov 2012 20:44:42 +0000 (21:44 +0100)]
distro: Go for one module per package.
The alternative, which was to use one module per category, would
probably not scale well. First, because many packages could fall into
several categories (does GnuTLS go into "networking", "security", or
"libraries"?). Second, because that could easily lead to circular
dependencies among modules ("security" and "networking" depend on each
other, etc.)
* distro/packages/databases.scm: Rename to...
* distro/packages/recutils.scm: ... this.
* distro/packages/typesetting.scm: Rename to...
* distro/packages/lout.scm: ... this.
* Makefile.am (MODULES): Adjust accordingly.
* po/POTFILES.in: Likewise.
Ludovic Courtès [Sun, 4 Nov 2012 18:45:40 +0000 (19:45 +0100)]
doc: Add "Adding new packages" in `HACKING'.
* HACKING (Adding new packages): New section.
Ludovic Courtès [Sun, 4 Nov 2012 18:38:31 +0000 (19:38 +0100)]
Add (guix snix) and the `guix-import' command.
* guix/snix.scm, tests/snix.scm, guix-import.in: New files.
* configure.ac: Output `guix-import' and make it executable.
* Makefile.am (bin_SCRIPTS): Add `guix-import'.
(MODULES): Add `guix/snix.scm'.
(TESTS): Add `tests/snix.scm'.
Ludovic Courtès [Sun, 4 Nov 2012 17:19:28 +0000 (18:19 +0100)]
guix-package: Remove extraneous procedures.
* guix-package.in (_, N_): Remove.
Ludovic Courtès [Sun, 4 Nov 2012 12:41:34 +0000 (13:41 +0100)]
packages: `description' → `synopsis', `long-description' → `description'.
* guix/packages.scm (<package>): Rename `description' to `synopsis', and
`long-description' to `description'.
* tests/packages.scm, distro/packages/base.scm,
distro/packages/databases.scm, distro/packages/guile.scm,
distro/packages/typesetting.scm: Update accordingly.
* po/Makevars (XGETTEXT_OPTIONS): Update `--keyword' flags accordingly.
Ludovic Courtès [Sun, 4 Nov 2012 12:03:15 +0000 (13:03 +0100)]
release.nix: Pass `--with-libgcrypt-prefix' in the `tarball' job.
* release.nix (jobs.tarball)[configureFlags]: Pass
`--with-libgcrypt-prefix'.
Ludovic Courtès [Sun, 4 Nov 2012 00:29:18 +0000 (01:29 +0100)]
utils: Add `package-name->name+version'.
* guix/utils.scm (package-name->name+version): New procedure.
* guix-package.in (guix-package)[find-package]: Use it.
* tests/utils.scm ("package-name->name+version"): New test.
Ludovic Courtès [Sat, 3 Nov 2012 20:43:30 +0000 (21:43 +0100)]
build: Require GNU libgcrypt.
* guix/utils.scm (sha256): Remove Coreutils- and libchop-based
implementations.
* README: Update accordingly.
* m4/guix.m4: New file.
* configure.ac: Use `GUIX_ASSERT_LIBGCRYPT_USABLE'. Set and substitute
`LIBGCRYPT_PREFIX'.
* Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Pass
`--with-libgcrypt-prefix=$(LIBGCRYPT_PREFIX)'.
Ludovic Courtès [Sat, 3 Nov 2012 20:23:16 +0000 (21:23 +0100)]
guix-package: Use more (guix ui) features.
* guix-package.in (leave): Remove.
(guix-package): Wrap body in `with-error-handling'.
Ludovic Courtès [Sat, 3 Nov 2012 20:19:43 +0000 (21:19 +0100)]
ui: Factorize `--version'.
* guix/ui.scm (show-version-and-exit): New procedure.
* guix-build.in (show-version): Remove.
(%options)["version"]: Use `show-version-and-exit'.
* guix-download.in: Likewise.
* guix-package.in: Likewise.
Ludovic Courtès [Sat, 3 Nov 2012 20:07:52 +0000 (21:07 +0100)]
build: Produce (guix config) instead of using compile-time tricks.
* guix/config.scm.in: New file.
* guix/utils.scm: Use it.
(%libgcrypt): Remove.
(%nixpkgs-directory): Don't capture the compile-time $NIXPKGS; use
%NIXPKGS instead.
(nixpkgs-derivation): Use %NIX-INSTANTIATE.
* pre-inst-env.in (NIX_INSTANTIATE, NIXPKGS, LIBGCRYPT): Remove.
* configure.ac: Emit `guix/config.scm'.
* Makefile.am (GOBJECTS): Add `guix/config.go'.
(nobase_nodist_guilemodule_DATA): Add `guix/config.scm'.
Ludovic Courtès [Sat, 3 Nov 2012 20:11:02 +0000 (21:11 +0100)]
build: Clearly mark Nixpkgs as optional.
* configure.ac: Always show the result of checking for Nixpkgs. Don't
warn when Nixpkgs is not found.
* Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Remove `--with-nixpkgs'
flag.
* guix/utils.scm (%nixpkgs-directory): Use either the compile-time or
the run-time `NIXPKGS' environment variable.
* release.nix (jobs.tarball, jobs.build): Remove `--with-nixpkgs'
configure flag.
* README: Mark Nixpkgs as optional.
* distro/packages/databases.scm, distro/packages/guile.scm,
distro/packages/typesetting.scm: Change uses of `nixpkgs-derivation*'
to `nixpkgs-derivation', to avoid failing at compile-time.
Ludovic Courtès [Fri, 2 Nov 2012 21:38:52 +0000 (22:38 +0100)]
tests: Run without substitutes.
* tests/builders.scm, tests/derivations.scm, tests/packages.scm: Set
#:use-substitutes? #f for %STORE.
Ludovic Courtès [Thu, 1 Nov 2012 00:46:15 +0000 (01:46 +0100)]
Add a preliminary `guix-package' command-line tool.
* guix-package.in, tests/guix-package.sh: New files.
* configure.ac: Output `guix-package'.
* Makefile.am (TESTS): Add `tests/guix-package.sh'.
(bin_SCRIPTS): Add `guix-package'.
Ludovic Courtès [Thu, 1 Nov 2012 00:39:23 +0000 (01:39 +0100)]
store: Add `store-path-package-name'.
* guix/store.scm (store-path-package-name): New procedure.
* tests/utils.scm ("store-path-package-name"): New test.
Ludovic Courtès [Thu, 1 Nov 2012 00:35:00 +0000 (01:35 +0100)]
utils: Remove stuff committed by error.
This was wrongfully committed in
df1fab58.
* guix/utils.scm (hash-set-proc, hash-ref*, memoizing-lambda): Remove.
Ludovic Courtès [Wed, 31 Oct 2012 22:27:51 +0000 (23:27 +0100)]
build: Add unit test for the `guix-build' command.
* tests/guix-build.sh: New file.
* Makefile.am (TESTS): Add it.
(LOG_COMPILER): Rename to...
(SCM_LOG_COMPILER): ... this. Move flags to...
(AM_SCM_LOG_FLAGS): ... this.
(TEST_EXTENSIONS, SH_LOG_COMPILER, AM_SH_LOG_FLAGS): New variables.
Ludovic Courtès [Wed, 31 Oct 2012 23:50:01 +0000 (00:50 +0100)]
Add (guix ui).
* guix/ui.scm: New file.
* Makefile.am (MODULES): Add it.
* po/POTFILES.in: Add it.
* guix-build.in: Use it.
(_, N_, leave): Remove.
(guix-build): Use `with-error-handling' instead of the `guard' form.
* guix-download.in: Use it.
(_, N_, leave): Remove.
Ludovic Courtès [Wed, 31 Oct 2012 16:53:59 +0000 (17:53 +0100)]
build-system/gnu: Distinguish between imported modules and used modules.
* guix/build-system/gnu.scm (gnu-build): Add the `imported-modules'
keyword parameter. Pass it to `build-expression->derivation'.
Ludovic Courtès [Tue, 30 Oct 2012 23:22:39 +0000 (00:22 +0100)]
release.nix: Use `--no-substitutes' in `distro.hello'.
* release.nix (distro.hello): Use `guix-build --no-substitutes', to
avoid failures due to unavailable stale substitutes on
hydra.nixos.org.
Ludovic Courtès [Mon, 29 Oct 2012 23:20:53 +0000 (00:20 +0100)]
guix-build: Add `--root'.
* guix/store.scm (add-indirect-root): New operation.
* guix-build.in (show-help): Document `--root'.
(%options): Add `--root'.
(guix-build)[register-root]: New procedure. Call it when `--root' is
passed.
Ludovic Courtès [Mon, 29 Oct 2012 21:39:46 +0000 (22:39 +0100)]
Add (guix build union).
* guix/build/union.scm, tests/union.scm: New files.
* Makefile.am (MODULES): Add `guix/build/union.scm'.
(TESTS): Add `tests/union.scm'.
Ludovic Courtès [Sun, 28 Oct 2012 00:02:04 +0000 (02:02 +0200)]
release.nix: Change `distro.hello' to produce something.
* release.nix (distro.hello)[buildPhase]: Tee the log to $out. Add a
`name' attribute; remove `buildInputs' and instead use the full path
to `guix-build'.
Ludovic Courtès [Sat, 27 Oct 2012 23:59:33 +0000 (01:59 +0200)]
distro: Build Bash sequentially.
* distro/packages/base.scm (bash): Set `#:parallel-build?' and
`#:parallel-tests?' to #f.
Ludovic Courtès [Sat, 27 Oct 2012 23:58:39 +0000 (01:58 +0200)]
tests: Use our own bootstrap tools.
* tests/builders.scm (%bootstrap-inputs): Use %BOOT0-INPUTS from the distro.
* tests/packages.scm (%bootstrap-inputs): Likewise.
* tests/derivations.scm (%coreutils): Alias for %BOOTSTRAP-COREUTILS&CO.
Ludovic Courtès [Sat, 27 Oct 2012 21:19:46 +0000 (23:19 +0200)]
release.nix: Add a `distro.hello' job.
* release.nix (distro.hello): New job.
Ludovic Courtès [Sat, 27 Oct 2012 21:18:08 +0000 (23:18 +0200)]
build: Preserve the executable bit of bootstrap binaries.
* Makefile.am (install-data-hook): New target.
Ludovic Courtès [Sat, 27 Oct 2012 20:52:13 +0000 (22:52 +0200)]
build: Make sure scripts know where to find their modules.
* guix-build.in, guix-download.in: Define `prefix' and `datarootdir', so
that `guilemoduledir' expands to something meaningful.
Ludovic Courtès [Sat, 27 Oct 2012 20:45:18 +0000 (22:45 +0200)]
release.nix: Pre-download the Guile bootstrap tarball.
* release.nix (bootstrap_guile): New variable.
(build)[preBuild]: New attribute.
Ludovic Courtès [Sat, 27 Oct 2012 20:37:49 +0000 (22:37 +0200)]
build: Fix out-of-source-tree builds.
* Makefile.am (distro/packages/bootstrap/x86_64-linux/guile-bootstrap-2.0.6.tar.xz,
distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz):
Make the target's parent directory.
* pre-inst-env.in (DISTRO_BOOTSTRAP_PATH): Add the builddir-relative
directory.
Ludovic Courtès [Sat, 27 Oct 2012 20:30:42 +0000 (22:30 +0200)]
distro: Change $DISTRO_{PATCH,BOOTSTRAP}_DIRECTORY to search paths.
* distro.scm (not-colon): New variable.
(%patch-directory): Rename to...
(%patch-path): ... this. Turn into a list. Expect $DISTRO_PATCH_PATH
to be a colon-separated search path.
(%bootstrap-binaries-directory): Rename to...
(%bootstrap-binaries-path): ... this. Likewise.
(search-patch, search-bootstrap-binary): Adjust accordingly.
* pre-inst-env.in: Change to use `DISTRO_PATCH_PATH' and
`DISTRO_BOOTSTRAP_PATH'.
Ludovic Courtès [Sat, 27 Oct 2012 13:31:48 +0000 (15:31 +0200)]
release.nix: Set succeed-on-failure and build-out-source-tree.
* release.nix: Define `succeedOnFailure', `keepBuildDirectory', and
`buildOutOfSourceTree'.
(build): Inherit them.
Ludovic Courtès [Sat, 27 Oct 2012 13:30:08 +0000 (15:30 +0200)]
build: Move `distro/patches' to `distro/packages/patches'.
* distro/patches: Move directory to...
* distro/packages/patches: ... here.
* Makefile.am (dist_patch_DATA): Adjust accordingly.
* pre-inst-env.in (DISTRO_PATCH_DIRECTORY): Likewise.
Ludovic Courtès [Sat, 27 Oct 2012 13:30:20 +0000 (15:30 +0200)]
build: Use `pre-inst-env' to compile the source.
* Makefile.am (.scm.go): Use `pre-inst-env' instead of re-defining the
environment variables, except for `DISTRO_INSTALLED_PATCH_DIRECTORY'
and `DISTRO_INSTALLED_BOOTSTRAP_DIRECTORY'.
Ludovic Courtès [Sat, 27 Oct 2012 12:56:38 +0000 (14:56 +0200)]
guix-build: Gracefully handle `&package-input-error' conditions.
* guix/packages.scm: Export `package-error?' and `package-input-error?'.
* guix-build.in (guix-build): Catch `&package-input-error' conditions,
print a human-readable message, and exit.
Ludovic Courtès [Sat, 27 Oct 2012 12:53:47 +0000 (14:53 +0200)]
location: Start column numbers at 1.
* guix/utils.scm (source-properties->location): Use COL + 1.
Ludovic Courtès [Fri, 26 Oct 2012 17:10:37 +0000 (19:10 +0200)]
distro: Add i686-linux port.
* distro/packages/bootstrap/i686-linux/bash,
distro/packages/bootstrap/i686-linux/mkdir,
distro/packages/bootstrap/i686-linux/tar,
distro/packages/bootstrap/i686-linux/xz: New files.
* distro/packages/base.scm (%bootstrap-coreutils&co,
%bootstrap-binutils, %bootstrap-glibc, %bootstrap-gcc): Add hashes of
the i686-linux tarballs.
* Makefile.am (bootstrap_i686_linuxdir, dist_bootstrap_i686_linux_DATA,
nodist_bootstrap_i686_linux_DATA): New variables
(DISTCLEANFILES): Add $(nodist_bootstrap_i686_linux_DATA).
(distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz):
New rule.
Ludovic Courtès [Fri, 26 Oct 2012 16:51:22 +0000 (18:51 +0200)]
distro: gcc: Adjust to support non-x86_64 architectures.
* distro/packages/base.scm (gcc-4.7)[arguments]: In the `pre-configure'
phase, patch all the relevant gcc/config files, not just those for
x86_64-linux-gnu.
Ludovic Courtès [Fri, 26 Oct 2012 07:07:37 +0000 (09:07 +0200)]
utils: Remove special `substitute*' syntax for lists of files.
* guix/build/utils.scm (substitute*): Remove special syntax for
list-of-files; instead, check whether FILE is `list?' at run time.
* distro/packages/base.scm (gcc-4.7, %binutils-static): Adjust
accordingly.
Ludovic Courtès [Thu, 25 Oct 2012 21:44:27 +0000 (23:44 +0200)]
doc: Add `HACKING'.
* HACKING: New file.
* Makefile.am (EXTRA_DIST): Add it.
Ludovic Courtès [Thu, 25 Oct 2012 21:42:06 +0000 (23:42 +0200)]
Add a `system' parameter to `nixpkgs-derivation'.
* guix/utils.scm (nixpkgs-derivation): Add a `system' parameter. Pass
it in the `nix-instantiate' invocation.
Ludovic Courtès [Thu, 25 Oct 2012 21:41:15 +0000 (23:41 +0200)]
packages: Pass `system' around.
* guix/packages.scm (package-source-derivation): Add `system'
parameter. Pass it to METHOD.
(package-derivation)[expand-input]: Pass SYSTEM to
`package-derivation' and `package-source-derivation'.
* distro/packages/base.scm (package-with-bootstrap-guile)[boot]: Pass
SYSTEM to FETCH.
Ludovic Courtès [Thu, 25 Oct 2012 21:14:27 +0000 (23:14 +0200)]
derivations: Make sure `build-expression->derivation' & co. pass `system'.
* guix/derivations.scm (imported-files): Call
`build-expression->derivation' with SYSTEM, not (%current-system).
(build-expression->derivation): Pass SYSTEM to `imported-modules' and
`compiled-modules'.
Ludovic Courtès [Thu, 25 Oct 2012 16:03:48 +0000 (18:03 +0200)]
derivations: Pass the derivation of guile-for-build to `imported-files' & co.
* guix/derivations.scm (%guile-for-build): Initialize to #f.
(imported-files, imported-modules, compiled-modules): Add `guile'
keyword parameter. Pass it down to `build-expression->derivation'.
(build-expression->derivation)[guile-drv]: New variable. Pass it as
the #:guile parameter for `imported-modules' and `compiled-modules'.
* tests/derivations.scm: Set %GUILE-FOR-BUILD to the derivation of
%BOOTSTRAP-GUILE.
Ludovic Courtès [Thu, 25 Oct 2012 15:55:45 +0000 (17:55 +0200)]
distro: Build the final inputs against the final Bash, not the bootstrap Bash.
* distro/packages/base.scm (%boot4-inputs): New variable.
(guile-final): Use it.
(%final-inputs): Build with %BOOT4-INPUTS, not %BOOT3-INPUTS.
Ludovic Courtès [Thu, 25 Oct 2012 15:54:17 +0000 (17:54 +0200)]
distro: ncurses: Don't patch shebangs.
* distro/packages/base.scm (ncurses): Pass #:patch-shebangs? #f.
Ludovic Courtès [Thu, 25 Oct 2012 15:41:18 +0000 (17:41 +0200)]
distro: Bootstrap using our own binaries instead of those from Nixpkgs.
* distro/packages/base.scm (%bootstrap-inputs): Switch to using our own
bootstrap binaries instead of those from Nixpkgs.
Ludovic Courtès [Thu, 25 Oct 2012 15:36:46 +0000 (17:36 +0200)]
distro: Build glibc with `--enable-obsolete-rpc'.
* distro/packages/base.scm (glibc-final): Pass `--enable-obsolete-rpc'.
(%bootstrap-glibc): Update hash accordingly.
Ludovic Courtès [Wed, 24 Oct 2012 19:18:37 +0000 (21:18 +0200)]
distro: Add missing Linux-Libre headers to the bootstrap glibc.
* distro/packages/base.scm (%glibc-stripped): Copy all of Linux-Libre's
`include/asm' directory; copy a few linux/ headers too.
(%bootstrap-glibc): Update tarball hash.