Commit Graph

272 Commits

Author SHA1 Message Date
Ludovic Courtès 29c1793dc2 build-system/gnu: Allow the `source' argument to be #f.
* guix/build-system/gnu.scm (gnu-build): Allow SOURCE to be #f.
2013-01-15 01:05:39 +01:00
Ludovic Courtès 5b00f53526 snix: When unable to determine the version number, leave the URI unchanged.
* guix/snix.scm (snix-derivation->guix-package)[pretty-uri]: When
  VERSION is #f, return URI.
2013-01-14 23:45:54 +01:00
Andreas Enge 1ca982808a licenses: Add 'openldap2.8'.
* guix/licenses.scm (openldap2.8): New variable.
2013-01-13 23:18:58 +01:00
Ludovic Courtès 34fcbe3a10 store: In `open-connection', process all the server's stderr.
* guix/store.scm (open-connection): Loop until `process-stderr' returns #t.
2013-01-13 22:27:00 +01:00
Ludovic Courtès 01e354eb83 Merge branch 'core-updates'
Conflicts:
	guix/build/union.scm
2013-01-11 16:01:49 +01:00
Ludovic Courtès 28e5560421 download: Abbreviate URLs when displaying the progress report.
* guix/build/download.scm (uri-abbreviation): New procedure.
  (ftp-fetch, http-fetch): Use it instead of `uri->string' when calling
  `progress-proc'.  Reported by Andreas Enge.
2013-01-11 15:41:58 +01:00
Ludovic Courtès a06a99ff77 build-system/gnu: Improve support for "lib" outputs; support "doc" outputs.
* guix/build/gnu-build-system.scm (configure)[package-name]: New
  procedure.
  When LIBDIR is true and INCLUDEDIR is false, add
  --includedir=LIBDIR/include.
  Add support for --docdir when a "doc" output exists.
2013-01-10 00:08:40 +01:00
Ludovic Courtès b2d58cd80a union: Detect collisions, and delete duplicate leaves.
* guix/build/union.scm (delete-duplicate-leaves): New procedure.
  (union-build)[leaf=?, resolve-collision]: New procedures.
  Use `delete-duplicate-leaves' on the result of `tree-union'.
* tests/union.scm ("delete-duplicate-leaves, default",
  "delete-duplicate-leaves, file names"): New tests.
2013-01-09 22:10:06 +01:00
Ludovic Courtès 784bb1f37b derivations: Fix `derivation-prerequisites-to-build' when outputs are there.
Before it would list inputs not built, even if the outputs of the given
derivation were already available.

* guix/derivations.scm (derivation-prerequisites-to-build): Add
  `outputs' keyword parameter.
  [built?, derivation-built?]: New procedures.
  [loop]: Add `sub-drvs' parameter.  Use `derivation-built?' to check if
  the SUB-DRVS of DRV are built before checking its inputs.
2013-01-09 08:38:57 +01:00
Ludovic Courtès 98fefb210a gnu-maintenance: Add `latest-release' and related tools.
* guix/gnu-maintenance.scm (ftp-server/directory, releases,
  version-string>?, latest-release, gnu-package-name->name+version): New
  procedures.
  (%package-name-rx): New variable.
2013-01-08 22:46:12 +01:00
Ludovic Courtès e7aa73ef09 snix: Use (guix licenses) variables.
* guix/snix.scm (snix-derivation->guix-package)[license-variable]: New
  procedure.
  Use it to determine the variable name for the license.
2013-01-07 22:32:28 +01:00
Ludovic Courtès ab8ed44fce snix: Gracefully handle `null' in Nix build inputs.
* guix/snix.scm (snix-derivation->guix-package)[convert-inputs]:
  Gracefully handle `null' as an input.
2013-01-07 22:23:50 +01:00
Ludovic Courtès e66ca1a5a8 download: Report the progress of HTTP downloads.
* guix/build/download.scm (http-fetch): Rename `bv' to `bv-or-port'.
  Use `http-get*' followed by `dump-port' when the former is available,
  and pass a progress procedure to `dump-port'.
2013-01-06 18:36:50 +01:00
Ludovic Courtès e47bac7902 download: Report the progress of FTP downloads.
* guix/build/download.scm (progress-proc): New procedure.
  (ftp-fetch): Call `ftp-size' on URI.  Use `progress-proc', and pass
  the result to `dump-port', along with #:buffer-size.
2013-01-06 18:35:23 +01:00
Ludovic Courtès fb83842efb ftp-client: Add `ftp-size'.
* guix/ftp-client.scm (ftp-size): New procedure.
2013-01-06 18:23:44 +01:00
Ludovic Courtès 4050e5d6cf Merge branch 'master' into core-updates
Conflicts:
	build-aux/download.scm
	distro/packages/autotools.scm
	distro/packages/base.scm
	distro/packages/bootstrap.scm
	distro/packages/lsh.scm
	distro/packages/make-bootstrap.scm
	distro/packages/ncurses.scm
	distro/packages/perl.scm
	tests/derivations.scm
	tests/union.scm
2013-01-06 17:33:02 +01:00
Ludovic Courtès 233e76769a Update license headers.
Change all license headers, except guix/build/* and ld-wrapper.scm, with
this code:

  (use-modules (guix build utils)
	       (srfi srfi-1))

  (fluid-set! %default-port-encoding "UTF-8")

  (substitute* (remove (lambda (f)
			 (or (string-contains f ".tar.")
			     (string-contains f ".git/")
			     (string-contains f ".so")
			     (string-suffix? ".o" f)
			     (string-suffix? ".a" f)
			     (string-suffix? ".go" f)
			     (string-suffix? ".pdf" f)
			     (string-suffix? ".png" f)
			     (string-suffix? ".info" f)
			     (equal? (basename f) "guix-daemon")
			     (equal? (basename f) "nix-setuid-helper")
			     (string-contains f "nix-upstream/")
			     (string-contains f "distro/packages/bootstrap/")))
		       (find-files "." "\\.[a-z]+$"))
    (("^([[:graph:]]+) This file is part of Guix." _ comment-start)
     (string-append comment-start " This file is part of GNU Guix."))
    (("^([[:graph:]]+) Guix --- Nix package management.*" _ comment-start)
     (string-append comment-start
		    " GNU Guix --- Functional package management for GNU\n"))
    (("^([[:graph:]]+) Guix is " _ comment-start)
     (string-append comment-start " GNU Guix is "))
    (("^([[:graph:]]+) along with Guix." _ comment-start)
     (string-append comment-start " along with GNU Guix."))
    (("^([[:graph:]]+) Copyright \\(C\\)" _ comment-start)
     (string-append comment-start " Copyright ©")))

Change headers using C-style comments manually.
2013-01-06 00:47:50 +01:00
Ludovic Courtès 7244a5f74e derivations: Add `derivation-path->output-paths'.
* guix/derivations.scm (derivation-path->output-paths): New procedure.
* tests/derivations.scm ("multiple-output derivation"): Test it.
2013-01-05 23:51:13 +01:00
Ludovic Courtès 4155e2a909 Update license headers of builder-side code.
Change license headers with this script:

  (use-modules (guix build utils))

  (fluid-set! %default-port-encoding "UTF-8")

  (substitute* (cons "distro/packages/ld-wrapper.scm"
		     (find-files "guix/build" "\\.scm$"))
    (("^([[:graph:]]+) This file is part of Guix." _ comment-start)
     (string-append comment-start " This file is part of GNU Guix."))
    (("^([[:graph:]]+) Guix --- Nix package management.*" _ comment-start)
     (string-append comment-start
		    " GNU Guix --- Functional package management for GNU\n"))
    (("^([[:graph:]]+) Guix is " _ comment-start)
     (string-append comment-start " GNU Guix is "))
    (("^([[:graph:]]+) along with Guix." _ comment-start)
     (string-append comment-start " along with GNU Guix."))
    (("^([[:graph:]]+) Copyright \\(C\\)" _ comment-start)
     (string-append comment-start " Copyright ©")))

* distro/packages/ld-wrapper.scm, guix/build/download.scm,
  guix/build/gnu-build-system.scm, guix/build/union.scm,
  guix/build/utils.scm: Update license headers.
2013-01-05 16:08:07 +01:00
Ludovic Courtès 7584f822bf utils: Add `which'.
* guix/build/utils.scm (which): New procedure.

* distro/packages/lsh.scm (lsh): Use `which' instead of `search-path'.
* distro/packages/perl.scm (perl): Likewise.
* distro/packages/attr.scm (attr): Likewise.
2013-01-05 16:02:32 +01:00
Ludovic Courtès 3441e16497 ui: Factorize bug-report information in `--help'.
* guix/config.scm.in (%guix-home-page-url): New variable.
* guix/ui.scm (show-bug-report-information): New procedure.
* guix-build.in (show-help): Use it.
* guix-download.in (show-help): Likewise.
* guix-import.in (show-help): Likewise.
* guix-package.in (show-help): Likewise.
2013-01-05 15:55:47 +01:00
Ludovic Courtès 93b0357575 utils: Use binary I/O primitives for `remove-store-references'.
* guix/build/utils.scm (fold-port-matches)[get-char]: New procedure.
  (remove-store-references): Use `put-u8' and `put-bytevector'.
2013-01-01 23:12:34 +01:00
Ludovic Courtès 4d058c6792 build-system/gnu: Add `static-package'.
* distro/packages/make-bootstrap.scm (static-package): Move to...
* guix/build-system/gnu.scm (static-package): ... here.  New procedure.
2013-01-01 16:55:34 +01:00
Ludovic Courtès b2adb3ae04 build-system/gnu: Add support for the "bin" output.
* guix/build/gnu-build-system.scm (configure): Add support for "bin"
  output.
2013-01-01 16:52:27 +01:00
Ludovic Courtès bc5bf85fa2 utils: Restore the mtime/atime of patched files.
* guix/build/utils.scm (set-file-time): New procedure.
  (patch-shebang): New `keep-mtime?' parameter; call `set-file-time'
  when it's true.
  (patch-makefile-SHELL): Likewise.
2012-12-31 01:17:43 +01:00
Andreas Enge 6253961de2 build-system/gnu: enable test-target during the check phase
* guix/build-system/gnu.scm: add variable test-target
2012-12-30 22:37:28 +01:00
Ludovic Courtès c089511288 build-system/gnu: Patch shebangs in all the source; patch SHELL in makefiles.
* guix/build/utils.scm (call-with-ascii-input-file): New procedure.
  (patch-shebang): Use it.
  (patch-makefile-SHELL): New procedure.
* guix/build/gnu-build-system.scm (patch-source-shebangs): Patch all the
  files, not just executables; remove `po/Makefile.in.in' patching.
  (patch-generated-files): Rename to...
  (patch-generated-file-shebangs): ... this.  Patch executables and
  makefiles.
  (%standard-phases): Adjust accordingly.

* distro/packages/autotools.scm (libtool): Remove call to `patch-shebang'.
* distro/packages/base.scm (gcc-4.7): Likewise.
  (guile-final): Remove hack to skip `test-command-line-encoding2'.
* distro/packages/bash.scm (bash): Remove `pre-configure-phase'.
* distro/packages/readline.scm (readline): Likewise.
* distro/packages/ncurses.scm (ncurses): Remove `pre-install-phase'.
2012-12-21 22:31:25 +01:00
Ludovic Courtès eca63d3df8 build-system/gnu: Patch shebangs after `configure'.
* guix/build/gnu-build-system.scm (patch-generated-files): New
  procedure.
  (%standard-phases): Add it after `configure'.
2012-12-20 23:06:34 +01:00
Ludovic Courtès 4c377e861b build-system/gnu: Report the execution time of each phase.
* guix/build/gnu-build-system.scm (gnu-build): Report the success or
  failure of each phase and its execution time.
2012-12-20 22:31:08 +01:00
Ludovic Courtès a18b4d085b utils: Add a `progress' parameter to `dump-port'.
* guix/build/utils.scm (dump-port): Add a `progress' keyword parameter.
  Call it after each transfer.
2012-12-20 01:38:56 +01:00
Ludovic Courtès c3ee7448c9 build-system/gnu: Change the order of `patch-source-shebangs' and `patch'.
* guix/build/gnu-build-system.scm (patch-source-shebangs): Add a newline
  after the "SHELL =" line in po/Makefile.in.in.
  (%standard-phases): Move `patch-source-shebangs' after `patch'.
2012-12-19 00:48:20 +01:00
Ludovic Courtès c43e006164 download: Remove unreachable SourceForge mirror.
* guix/download.scm (%mirrors)[sourceforge]: Remove kent.dl.*, which is
  unreachable.
2012-12-17 00:18:15 +01:00
Ludovic Courtès 3c738d6bd8 download: Correctly detect "No route to host" conditions.
* guix/build/download.scm (open-connection-for-uri): Delete addrinfos
  with the same address.  Always open SOCK_STREAM/IPPROTO_IP sockets.
  Fix the error handler's condition to determine what to do.
  Reported by Nikita Karetnikov <nikita.karetnikov@gmail.com> at
  <http://lists.gnu.org/archive/html/bug-guix/2012-12/msg00150.html>.
2012-12-17 00:14:30 +01:00
Ludovic Courtès d008415219 build-system/gnu: Patch shebangs in executable source files.
This allows many packages to build in a chroot that lacks /bin and
thus /bin/sh.

* guix/build/gnu-build-system.scm (patch-source-shebangs): New
  procedure.
  (%standard-phases): Add it.
* guix/build/utils.scm (executable-file?): New procedure.
* distro/packages/perl.scm (perl): Don't use /bin/sh to run `Configure'.
2012-12-15 16:35:26 +01:00
Ludovic Courtès c1c94acf32 build-system/gnu: Make the error port line-buffered.
* guix/build/gnu-build-system.scm (gnu-build): Make the error port
  line-buffered.
2012-12-15 16:01:52 +01:00
Ludovic Courtès 74baf333bf utils: Make the buffer size of `dump-port' a parameter.
* guix/build/utils.scm (dump-port): Make `buffer-size' a keyword
  parameter.
2012-12-15 15:54:29 +01:00
Ludovic Courtès a784c3077e Merge branch 'master' into core-updates
Conflicts:
	distro/packages/multiprecision.scm
2012-12-15 15:28:50 +01:00
Ludovic Courtès b3a53fb361 download: Work around (web client) bug <http://bugs.gnu.org/13095>.
* guix/build/download.scm: Annihilate `shutdown' in (web client).
2012-12-14 18:07:10 +01:00
Ludovic Courtès 7f4f06513a build: Fix default value of `%state-directory'.
* guix/config.scm.in (%state-directory): Append `/nix'.
  Reported by Andreas Enge <andreas@enge.fr>.
2012-12-13 23:53:37 +01:00
Ludovic Courtès 9d1d434cd0 build-system/gnu: Avoid using /bin/sh.
* guix/build/gnu-build-system.scm (configure): Add `inputs' keyword
  parameter.  Take Bash from there, falling back to /bin/sh.  Set
  `CONFIG_SHELL' and `SHELL' to that Bash.  Run "bash ./configure"
  instead of just "./configure".
* distro/packages/bootstrap.scm (%bootstrap-inputs): Add "bash".
* distro/packages/base.scm (gcc-boot0-wrapped): Use "bash" from
  %BOOT1-INPUTS instead of /bin/sh.
2012-12-13 23:38:32 +01:00
Ludovic Courtès 1e9824513c Merge branch 'nix-integration'
Conflicts:
	tests/guix-package.sh
2012-12-13 22:14:25 +01:00
Nikita Karetnikov f15b31c562 licenses: Add 'bsd-style', 'expat', 'gpl1', 'gpl1+', 'lgpl2.0', and 'lgpl2.0+'.
* guix/licenses.scm (bsd-style, expat, gpl1, gpl1+)
  (lgpl2.0, lgpl2.0+): New variables.
2012-12-12 14:40:11 +01:00
Ludovic Courtès a09ec3a5af Have `%nixpkgs-directory' default to #f when $NIXPKGS is the empty string.
* guix/utils.scm (%nixpkgs-directory): Set to #f when the `NIXPKGS'
  environment variable is set but empty.  Reported by
  Andreas Enge <andreas@enge.fr>.
2012-12-10 22:53:28 +01:00
Ludovic Courtès 200dc93761 derivations: Distinguish direct store paths from files within a store path.
* guix/derivations.scm (derivation)[direct-store-path?]: New procedure.
  Use it to determine which inputs must be added to the store.
2012-12-10 00:44:17 +01:00
Ludovic Courtès 4d152bf1d9 Merge branch 'master' into nix-integration
Conflicts:
	guix/store.scm
2012-12-09 23:54:37 +01:00
Ludovic Courtès 3259877d35 store: Add GC-related operations.
* guix/store.scm (gc-action): New enumerate type.
  (read-long-long, read-string-list, write-store-path,
  write-store-path-list, read-store-path-list): New procedures.
  (write-arg): Add support for `store-path' and `store-path-list'.
  (read-arg): Add support for `store-path-list'.
  (define-operation): Add support for multiple-value returns.
  (run-gc, live-paths, dead-paths, collect-garbage, delete-paths): New
  procedures.
  (%long-long-max): New macro.
* tests/store.scm: New file.
* Makefile.am (TESTS): Add it.
2012-12-09 23:52:59 +01:00
Ludovic Courtès d3648e0118 store: Add `add-temp-root'.
* guix/store.scm (add-temp-root): New procedure.
2012-12-09 23:50:17 +01:00
Nikita Karetnikov 838d78e3e0 Add (guix licenses).
* guix/licenses.scm: New file.
* Makefile.am (MODULES): Add it.
2012-12-08 19:17:02 +01:00
Ludovic Courtès a4eabecd11 download: Fix the primary Savannah URL.
* guix/download.scm (%mirrors)[savannah]: Use
  "http://download.savannah.gnu.org/releases/" as the primary URL.
2012-12-07 22:32:03 +01:00
Ludovic Courtès d8eea3d2bc build: Capture configure-time settings in (guix config).
* configure.ac: Compute and substitute `guix_localstatedir'.
* m4/guix.m4: Substitute `guix_system'.
* guix/config.scm.in (%store-directory, %store-directory, %system): New
  variables.
* guix/store.scm (%nix-state-dir): Remove.
  (%default-socket-path): Use %STATE-DIRECTORY as the default.
  (%store-prefix): Use %STORE-DIRECTORY as the default.
* guix/utils.scm (%current-system): Default to %SYSTEM.
2012-12-06 00:07:17 +01:00
Nikita Karetnikov 22189ed117 Add (guix gnu-maintenance).
* guix/gnu-maintenance.scm: New file.
* Makefile.am (MODULES): Add it.
2012-12-05 14:56:25 +01:00
Ludovic Courtès cd3ded4301 store: Honor $NIX_STORE_DIR and $NIX_STATE_DIR.
* guix/store.scm (%nix-state-dir): Honor $NIX_STATE_DIR.
  (%store-prefix): Honor $NIX_STORE_DIR.
2012-12-04 23:48:21 +01:00
Ludovic Courtès 860a6f1ae0 derivations: Fix erroneous call to `add-to-store' for local files as input.
* guix/derivations.scm (derivation)[inputs]: Fix typo in call to
  `add-to-store'.
* tests/derivations.scm ("derivation with local file as input"): New test.
* tests/packages.scm ("trivial with local file as input"): New test.
2012-12-04 23:46:50 +01:00
Ludovic Courtès b40b259f12 download: Add kernel.org mirrors.
* guix/download.scm (%mirrors): Add `kernel.org' mirrors.
2012-11-27 21:55:53 +01:00
Ludovic Courtès 480943dd46 download: Keep only one slash when concatenating URIs.
* guix/build/download.scm (url-fetch)[uri-vicinity]: New procedure.
  [maybe-expand-mirrors]: Use it.
2012-11-27 21:33:54 +01:00
Ludovic Courtès 52bda18abf packages: Add missing export.
* guix/packages.scm: Export `package-home-page'.
2012-11-25 16:55:35 +01:00
Ludovic Courtès 64fc89b6ec guix-package: Add `--list-available'.
* guix-package.in (show-help, %options): Add `--list-available'.
  (guix-package)[process-query]: Add support for `--list-available'.
* doc/guix.texi (Invoking guix-package): Document it.
* tests/guix-package.sh: Add test.

* guix/ui.scm (location->string): New procedure.
* guix/utils.scm: Export <location>.
2012-11-19 23:04:38 +01:00
Ludovic Courtès ec4d308a9e 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.
2012-11-13 23:04:21 +01:00
Ludovic Courtès 94d222ad97 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.
2012-11-13 00:23:43 +01:00
Ludovic Courtès 270246defe download: Follow HTTP redirections.
* guix/build/download.scm (http-fetch): Follow the redirection when CODE
  is 302.
2012-11-13 00:23:43 +01:00
Ludovic Courtès 87f5d36630 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'.
2012-11-13 00:23:39 +01:00
Ludovic Courtès 62cab99c32 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'.
2012-11-12 23:35:04 +01:00
Ludovic Courtès ddc29a782e 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'.
2012-11-11 22:33:28 +01:00
Ludovic Courtès cfeb75954a http: Add informative output.
* guix/build/http.scm (http-fetch): Emit message indicating the
  download.
2012-11-09 00:21:18 +01:00
Ludovic Courtès e722af7522 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.
2012-11-09 00:19:20 +01:00
Ludovic Courtès 7bdd1f0e3c 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.
2012-11-09 00:07:10 +01:00
Ludovic Courtès c4c7406b90 store: Document `add-to-store' hack for `fixed?'.
* guix/store.scm (add-to-store): Document that `fixed?' must be #t.
2012-11-08 00:26:13 +01:00
Ludovic Courtès 53dcd5eea1 build-system/gnu: Add `static-libgcc-package' & supporting procedure.
* guix/build-system/gnu.scm (package-with-extra-configure-variable,
  static-libgcc-package): New procedures.
2012-11-05 23:51:09 +01:00
Ludovic Courtès 0af2c24ef7 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.
2012-11-05 23:50:57 +01:00
Ludovic Courtès 10226c05b1 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'.
2012-11-04 19:38:31 +01:00
Ludovic Courtès d45122f537 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.
2012-11-04 13:48:35 +01:00
Ludovic Courtès 9b48fb88ca 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.
2012-11-04 01:29:18 +01:00
Ludovic Courtès d388c2c435 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)'.
2012-11-03 21:49:54 +01:00
Ludovic Courtès cdd5d6f95f 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.
2012-11-03 21:19:43 +01:00
Ludovic Courtès 00e219d1c9 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'.
2012-11-03 21:11:28 +01:00
Ludovic Courtès e76bdf8b87 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.
2012-11-03 21:11:26 +01:00
Ludovic Courtès e3d741065e store: Add `store-path-package-name'.
* guix/store.scm (store-path-package-name): New procedure.
* tests/utils.scm ("store-path-package-name"): New test.
2012-11-01 01:39:23 +01:00
Ludovic Courtès 07d18f39cc utils: Remove stuff committed by error.
This was wrongfully committed in df1fab58.

* guix/utils.scm (hash-set-proc, hash-ref*, memoizing-lambda): Remove.
2012-11-01 01:35:00 +01:00
Ludovic Courtès 073c34d72f 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.
2012-11-01 00:52:44 +01:00
Ludovic Courtès 111111d046 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'.
2012-10-31 17:53:59 +01:00
Ludovic Courtès 34811f02bf 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.
2012-10-30 00:20:53 +01:00
Ludovic Courtès c8c88afaa1 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'.
2012-10-29 22:39:46 +01:00
Ludovic Courtès 0778385802 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.
2012-10-27 14:56:46 +02:00
Ludovic Courtès 5e6c90121f location: Start column numbers at 1.
* guix/utils.scm (source-properties->location): Use COL + 1.
2012-10-27 14:53:47 +02:00
Ludovic Courtès 20d83444dd 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.
2012-10-26 09:07:37 +02:00
Ludovic Courtès fbc93bedff Add a `system' parameter to `nixpkgs-derivation'.
* guix/utils.scm (nixpkgs-derivation): Add a `system' parameter.  Pass
  it in the `nix-instantiate' invocation.
2012-10-25 23:42:06 +02:00
Ludovic Courtès b642e4b853 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.
2012-10-25 23:41:15 +02:00
Ludovic Courtès ae39d1b233 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'.
2012-10-25 23:14:27 +02:00
Ludovic Courtès b272c47433 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.
2012-10-25 18:03:48 +02:00
Ludovic Courtès 82058eff59 store: Add `query-path-hash'.
* guix/store.scm (write-arg, read-arg): Add `base16' literal and
  corresponding rule.
  (query-path-hash): New operation.

* tests/derivations.scm ("fixed-output derivation"): Check whether
  `query-path-hash' returns a bytevector.
2012-10-24 23:52:15 +02:00
Ludovic Courtès d90248844b derivations: Compile the #:modules passed to `build-expression->derivation'.
* guix/derivations.scm (imported-files)[parent-dirs]: Move to...
  (parent-directories): ... here.  New procedure.
  (compiled-modules): New procedure.
  (build-expression->derivation): Use it.

* tests/derivations.scm ("build-expression->derivation with modules"):
  New test.
2012-10-24 00:09:25 +02:00
Ludovic Courtès 592ef6c88f packages: Add support for system-dependent inputs.
* guix/packages.scm (package-derivation)[intern]: New procedure.  Pass
  #t as the `recursive?' argument, instead of #f.
  [expand-input]: New procedure, with code formerly in the body.
  Support inputs where the input is a procedure returning a file name or
  an <origin>.
  Use `expand-input' in the body.

* tests/packages.scm ("trivial with system-dependent input"): New test.
2012-10-21 17:52:16 +02:00
Ludovic Courtès d6e8777688 distro: Use the bootstrap Guile for the derivation of sources.
* distro/packages/base.scm (bootstrap-origin,
  package-with-bootstrap-guile): New procedures.
  (gnu-make-boot0, diffutils-boot0, findutils-boot0, binutils-boot0,
  gcc-boot0, linux-libre-headers-boot0, glibc-final, bash-final,
  guile-final): Use `package-with-bootstrap-guile'.
  (gcc-boot0-wrapped): Clear `source'.

* guix/ftp.scm (ftp-fetch): Add a #:guile keyword parameter.  Honor it.
* guix/http.scm (http-fetch): Likewise.
2012-10-18 23:18:38 +02:00
Ludovic Courtès d14ecda913 http/ftp: Tweak to avoid depending on libc's NSS.
* guix/build/http.scm (open-connection-for-uri): New procedure.
  (http-fetch): Use it.  Pass the result as a #:port argument to
  `http-get'.
  Add hack to modify the `set-port-encoding!' binding in (web response).

* guix/ftp-client.scm (ftp-open): Add optional `port' parameter,
  defaulting to 21.  When calling `getaddrinfo', convert PORT to a
  string and pass AI_NUMERICSERV when PORT is a number.
2012-10-18 22:32:23 +02:00
Ludovic Courtès 4c261f4169 utils: Add `find-files'.
* guix/build/utils.scm (find-files): New procedure.
2012-10-17 23:25:25 +02:00
Ludovic Courtès c0746cc9db utils: Add `copy-recursively'; use it.
* guix/build/utils.scm (copy-recursively): New procedure.

* distro/packages/base.scm (%guile-static-stripped): Use it.
2012-10-17 23:25:25 +02:00
Ludovic Courtès 7da95264f1 utils: Add `mkdir-p'; use it.
* guix/build/utils.scm (mkdir-p): New procedure.

* distro/packages/base.scm (gnu-make-boot0, gcc-boot0-wrapped,
  ld-wrapper-boot3, %static-binaries, %guile-static-stripped): Use it.
* distro/packages/typesetting.scm (lout): Likewise.
2012-10-17 23:25:25 +02:00
Ludovic Courtès 7172116ca5 build-system/gnu: Pass the system type to the builder.
* guix/build-system/gnu.scm (gnu-build)[builder]: Pass SYSTEM to
  `gnu-build' as a keyword argument.
2012-10-17 23:25:25 +02:00
Ludovic Courtès 91133c2d71 utils: Add `fold-port-matches' and `remove-store-references'.
* guix/build/utils.scm (fold-port-matches, remove-store-references): New
  procedures.

* tests/build-utils.scm ("fold-port-matches", "fold-port-matches,
  trickier", "fold-port-matches, with unmatched chars"): New tests.
2012-10-16 23:01:01 +02:00
Ludovic Courtès dcd7290654 utils: Add `with-atomic-file-replacement'.
* guix/build/utils.scm (with-atomic-file-replacement): New procedure.
  (substitute): Use it.
2012-10-16 17:31:16 +02:00