jackhill/guix/guix.git
11 years agodoc: Add a "Related software" section to `README'.
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.

11 years agoTurn Guix into "GNU Guix".
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.

11 years agodistro: Rebuild bootstrap Binutils and GCC.
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.

11 years agodistro: Configure ld and GCC to not look under /usr & co.
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'.

11 years agoguix-download: Use code from (guix build download).
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.

11 years agoguix-download: Add support for file:// URIs.
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.

11 years agoguix-download: Gracefully handle invalid URIs.
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.

11 years agodistro: Add GNU Texinfo.
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.

11 years agodistro: Add GNU Libtasn1 and GnuTLS.
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.

11 years agodistro: Add GNU Nettle.
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.

11 years agodistro: Add LZO.
Ludovic Courtès [Tue, 13 Nov 2012 20:42:12 +0000 (21:42 +0100)]
distro: Add LZO.

* distro/packages/compression.scm (lzo): New variable.

11 years agotests: Make sure to use the bootstrap Guile.
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.

11 years agotests: Remove extraneous test.
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.

11 years agobuild: Add $(top_builddir) to the load path.
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.

11 years agodistro: Patch libc to avoid accessing /etc/ld.so.cache and friends.
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.

11 years agodistro: Use `mirror://' URLs.
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.

11 years agodownload: Add support for mirror:// 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.

11 years agodownload: Follow HTTP redirections.
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.

11 years agoRemove (guix http) and (guix ftp).
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'.

11 years agoAdd (guix download) and (guix build 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'.

11 years agoMove base32 code to (guix base32).
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'.

11 years agotests: Choose a less expensive test for packages.
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.

11 years agohttp: Add informative output.
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.

11 years agohttp: Check the HTTP response code, and bail if not 200.
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.

11 years agoderivations: build-expression->derivation: Builder only refers to sources.
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.

11 years agoderivations: Add tests relative to fixed-output derivations.
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.

11 years agostore: Document `add-to-store' hack for `fixed?'.
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.

11 years agoguix-download: Print the hash of the file's contents, no that of the path.
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.

11 years agoguix-download: Error out when the HTTP response code is not 200.
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.

11 years agoguix-build: Error out when `-S' used for source-less package.
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.

11 years agodoc: Document the features and `guix-package'.
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.

11 years agoguix-package: Fix handling of the PACKAGE:OUTPUT syntax.
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.

11 years agoguix-package: Fix invalid module use.
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).

11 years agobuild: Remove now unnecessary dependency of downloads on guix/utils.go.
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.

11 years agodoc: Document `guix-build'.
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.

11 years agodoc: Remove unnecessary @ifinfo.
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>.

11 years agodistro: Move bootstrap tarball packages to (distro packages make-bootstrap).
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.

11 years agodistro: bash-final: Link with `-static-libgcc'.
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'.

11 years agobuild-system/gnu: Add `static-libgcc-package' & supporting procedure.
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.

11 years agodistro: gcc: Don't add a RUNPATH to GCC when using `-static-libgcc'.
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.

11 years agodistro: readline: Allow stripping of the libraires.
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.

11 years agoutils: Add `default-keyword-arguments' and `substitute-keyword-arguments'.
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.

11 years agodistro: Add missing `package-with-bootstrap-guile'.
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'.

11 years agodistro: recutils: Comment out optional dependencies.
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.

11 years agodistro: Add GnuPG and companion libraries.
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.

11 years agodistro: Add zlib.
Ludovic Courtès [Sun, 4 Nov 2012 22:40:26 +0000 (23:40 +0100)]
distro: Add zlib.

* distro/packages/compression.scm (zlib): New variable.

11 years agodistro: Add (distro packages compression).
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.

11 years agodistro: Add GNU Pth.
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.

11 years agodistro: Add GNU gperf.
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.

11 years agodistro: Split (distro packages base) into several files.
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.

11 years agodistro: Move bootstrap packages to (distro packages bootstrap).
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.

11 years agodistro: Go for one module per package.
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.

11 years agodoc: Add "Adding new packages" in `HACKING'.
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.

11 years agoAdd (guix snix) and the `guix-import' command.
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'.

11 years agoguix-package: Remove extraneous procedures.
Ludovic Courtès [Sun, 4 Nov 2012 17:19:28 +0000 (18:19 +0100)]
guix-package: Remove extraneous procedures.

* guix-package.in (_, N_): Remove.

11 years agopackages: `description' → `synopsis', `long-description' → `description'.
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.

11 years agorelease.nix: Pass `--with-libgcrypt-prefix' in the `tarball' job.
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'.

11 years agoutils: Add `package-name->name+version'.
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.

11 years agobuild: Require GNU libgcrypt.
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)'.

11 years agoguix-package: Use more (guix ui) features.
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'.

11 years agoui: Factorize `--version'.
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.

11 years agobuild: Produce (guix config) instead of using compile-time tricks.
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'.

11 years agobuild: Clearly mark Nixpkgs as optional.
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.

11 years agotests: Run without substitutes.
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.

11 years agoAdd a preliminary `guix-package' command-line tool.
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'.

11 years agostore: Add `store-path-package-name'.
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.

11 years agoutils: Remove stuff committed by error.
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.

11 years agobuild: Add unit test for the `guix-build' command.
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.

11 years agoAdd (guix ui).
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.

11 years agobuild-system/gnu: Distinguish between imported modules and used modules.
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'.

11 years agorelease.nix: Use `--no-substitutes' in `distro.hello'.
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.

11 years agoguix-build: Add `--root'.
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.

11 years agoAdd (guix build union).
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'.

11 years agorelease.nix: Change `distro.hello' to produce something.
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'.

11 years agodistro: Build Bash sequentially.
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.

11 years agotests: Use our own bootstrap tools.
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.

11 years agorelease.nix: Add a `distro.hello' job.
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.

11 years agobuild: Preserve the executable bit of bootstrap binaries.
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.

11 years agobuild: Make sure scripts know where to find their modules.
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.

11 years agorelease.nix: Pre-download the Guile bootstrap tarball.
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.

11 years agobuild: Fix out-of-source-tree builds.
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.

11 years agodistro: Change $DISTRO_{PATCH,BOOTSTRAP}_DIRECTORY to search paths.
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'.

11 years agorelease.nix: Set succeed-on-failure and build-out-source-tree.
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.

11 years agobuild: Move `distro/patches' to `distro/packages/patches'.
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.

11 years agobuild: Use `pre-inst-env' to compile the source.
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'.

11 years agoguix-build: Gracefully handle `&package-input-error' conditions.
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.

11 years agolocation: Start column numbers at 1.
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.

11 years agodistro: Add i686-linux port.
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.

11 years agodistro: gcc: Adjust to support non-x86_64 architectures.
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.

11 years agoutils: Remove special `substitute*' syntax for lists of files.
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.

11 years agodoc: Add `HACKING'.
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.

11 years agoAdd a `system' parameter to `nixpkgs-derivation'.
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.

11 years agopackages: Pass `system' around.
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.

11 years agoderivations: Make sure `build-expression->derivation' & co. pass `system'.
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'.

11 years agoderivations: Pass the derivation of guile-for-build to `imported-files' & co.
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.

11 years agodistro: Build the final inputs against the final Bash, not the bootstrap Bash.
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.

11 years agodistro: ncurses: Don't patch shebangs.
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.

11 years agodistro: Bootstrap using our own binaries instead of those from Nixpkgs.
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.

11 years agodistro: Build glibc with `--enable-obsolete-rpc'.
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.

11 years agodistro: Add missing Linux-Libre headers to the bootstrap glibc.
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.