Commit Graph

1377 Commits

Author SHA1 Message Date
Ludovic Courtès
aa46a028c4 profiles: Generalize "hooks" for 'profile-derivation'.
* guix/profiles.scm (info-dir-file): Remove (null? (manifest-entries
  manifest)) test.
  (ca-certificate-bundle): Likewise.
  (ghc-package-cache-file): Turn 'if' into 'and', and remove second
  arm.
  (%default-profile-hooks): New variable.
  (profile-derivation): Remove #:info-dir?, #:ghc-package-cache?, and
  #:ca-certificate-bundle?.  Add #:hooks.  Iterate over HOOKS.  Adjust
  'inputs' accordingly.
* guix/scripts/package.scm (guix-package): Adjust 'profile-derivation'
  call accordingly.
* tests/packages.scm ("--search-paths with pattern"): Likewise.
* tests/profiles.scm ("profile-derivation",
  "profile-derivation, inputs"): Likewise.
2015-04-15 22:44:51 +02:00
Mark H Weaver
d5f01e48e0 guix package: Add '--do-not-upgrade' option.
* guix/scripts/package.scm (%options): Add the '--do-not-upgrade' option.
  (show-help): Document it.
  (options->installable): Add 'do-not-upgrade-regexps' variable.
  Use it in 'packages-to-upgrade'.
* doc/guix.texi (Invoking guix package): Document the '--do-not-upgrade'
  option.
2015-04-14 10:44:19 -04:00
Ludovic Courtès
0cc0095f3c http-client: Add workaround for HTTP pipelining on Guile <= 2.0.9.
Reported by Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>.

* guix/http-client.scm (make-delimited-input-port): New procedure.
  Install it in (web response) for Guile <= 2.0.9.
2015-04-08 21:41:04 +02:00
Federico Beffa
042bc828fc profiles: Generate GHC's package database cache.
* guix/profiles.scm (ghc-package-cache-file): New procedure.
  (profile-derivation): Add 'ghc-package-cache?' keyword argument.  If true
  (the default), add the result of 'ghc-package-cache-file' to 'inputs'.
* guix/scripts/package.scm (guix-package)[process-actions]: Pass
  #:ghc-package-cache? to 'profile-generation'.
* tests/packages.scm ("--search-paths with pattern"): Likewise.
* tests/profiles.scm ("profile-derivation"): Likewise.
2015-04-08 17:31:12 +02:00
Federico Beffa
283cce508a build-system/haskell: Update configure flags, 'haddock' and %standard-phases.
* guix/build/haskell-build-system.scm (%standard-phases): move 'haddock phase
  before 'install phase.
* guix/build/haskell-build-system.scm (haddock): Simplify it as the 'install
  phase takes care of copying files.
* guix/build/haskell-build-system.scm (configure): Add '--libsubdir' flag.
  Fix use of '--extra-include-dirs' and '--extra-lib-dirs' flags.  Use 'doc',
  'bin' and 'lib' outputs if they are defined.
* guix/build/haskell-build-system.scm (make-ghc-package-database, register):
  Aligh location of 'package.conf.d' directory with '--libsubdir' flag.
2015-04-08 17:31:11 +02:00
Federico Beffa
b29455cfe7 import: Add hackage importer.
* guix/import/hackage.scm: New file.
* tests/hackage.scm: New file.
2015-04-08 17:31:11 +02:00
Federico Beffa
863af4e121 import: Add hackage importer.
* guix/scripts/import.scm (importers): Add hackage.
* guix/scripts/import/hackage.scm: New file.
* po/guix/POTFILES.in: Add guix/scripts/import.scm.
* doc/guix.texi: Add section on 'hackage' importer.
2015-04-08 17:31:11 +02:00
Ludovic Courtès
250bc998ac guix package: Avoid 'exit' calls in 'delete-matching-generations'.
* guix/scripts/package.scm (delete-matching-generations): Remove call to
  'exit' when PATTERN is "0".  Call 'leave' instead of 'exit'
  when (null-list? number).
2015-04-06 21:27:35 +02:00
Ludovic Courtès
d26eb84d14 guix package: Never remove the current generation and warn about it.
Fixes <http://bugs.gnu.org/19978>.
Reported by taylanbayirli@gmail.com (Taylan Ulrich Bayırlı/Kammer).

* guix/scripts/package.scm (delete-matching-generations): Warn when
  CURRENT is in NUMBERS, and always remove it before calling
  'delete-generations'.
* tests/guix-package.sh: Add --switch-generation=2 invocation before
  --delete-generations=3 invocation.
  Add --delete-generations=1.. test case.
2015-04-06 21:27:32 +02:00
Ludovic Courtès
65d428d8f4 guix package: Move generation deletion to its own procedure.
* guix/scripts/package.scm (delete-matching-generations): New procedure,
  with code formerly found...
  (guix-package)[process-actions]: ... here.  Use it.
  Remove 'current-generation-number'.
2015-04-06 20:02:29 +02:00
David Thompson
aff8ce7c74 scripts: Add 'publish' command.
* guix/scripts/publish.scm: New file.
* po/guix/POTFILES.in: Add it.
* tests/publish.scm: New file.
* Makefile.am (MODULES): Add script module.
  (SCM_TESTS): Add test module.
* doc/guix.texi ("Invoking guix publish"): New node.
2015-04-04 14:16:43 -04:00
David Thompson
533d1768f4 store: Add query-path-info operation.
* guix/store.scm (<path-info>): New record type.
  (read-path-info): New procedure.
  (read-arg): Add 'path-info' syntax.
  (query-path-info): New variable.
* tests/store.scm ("query-path-info"): New test.
2015-04-04 13:50:52 -04:00
Federico Beffa
14dfdf2e0e build-system: Add haskell-build-system.
* guix/build-system/haskell.scm: New file.
* guix/build/haskell-build-system.scm: New file.
* doc/guix.texi: Add section on 'haskell-build-system'.
2015-04-04 09:11:31 +02:00
Andy Wingo
8b43df2b30 build-system/glib-or-gtk: Wrap libexec programs.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Also
  wrap binaries in libexec/, such as those launched by dbus services.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2015-04-03 23:24:01 +02:00
Ludovic Courtès
849eebbb38 ui: Recognize 'guix help'.
Suggested by Andy Wingo.

* guix/ui.scm (guix-main): Add "help" case.
2015-04-03 22:58:49 +02:00
Ludovic Courtès
15aa2c3842 Add (guix build gremlin).
* guix/build/gremlin.scm, tests/gremlin.scm: New files.
* Makefile.am (MODULES): Add guix/build/gremlin.scm.
  (SCM_TESTS): Add tests/gremlin.scm.
2015-03-31 22:23:57 +02:00
Ludovic Courtès
96af558907 elf: Add missing argument in 'elf-segment'.
* guix/elf.scm (elf-segment): Add missing argument N.
2015-03-30 15:21:11 +02:00
Ludovic Courtès
2242ff45fa gexp: Slightly simplify 'lower-inputs'.
* guix/gexp.scm (lower-inputs): Simplify first case by removing the
  'input' binding.
2015-03-29 22:23:33 +02:00
Ludovic Courtès
d9ae938f2c gexp: Add 'local-file'.
* guix/gexp.scm (<local-file>): New record type.
  (local-file): New procedure.
  (local-file-compiler): New compiler.
  (gexp->sexp) <struct? thing>: Handle the case where 'lower' returns a
  file name.
  (text-file*): Update docstring.local-file doc
* tests/gexp.scm ("one local file", "gexp->derivation, local-file"): New
  tests.
* doc/guix.texi (G-Expressions): Mention local files early.  Document
  'local-file'.  Update 'text-file*' documentation.
2015-03-29 22:23:33 +02:00
Ludovic Courtès
614c218842 substitute: Rename cache directory from "substitute-binary" to "substitute".
* guix/scripts/substitute.scm (%narinfo-cache-directory): Change
  "substitute-binary" to "substitute".
* tests/store.scm ("substitute query"): Likewise.
* tests/substitute.scm (call-with-narinfo): Likewise.
2015-03-25 10:46:22 +01:00
Ludovic Courtès
2c74fde00e Rename 'guix substitute-binary' to 'guix substitute'.
* guix/scripts/substitute-binary.scm: Rename to...
* guix/scripts/substitute.scm: ... this.  Adjust module name, entry
  point, comments, and help string accordingly.
* nix/scripts/substitute-binary.in: Rename to...
* nix/scripts/substitute.in: ... this.
* pre-inst-env.in (NIX_SUBSTITUTERS): Adjust accordingly.
* tests/substitute-binary.scm: Rename to...
* tests/substitute.scm: ... this.  Adjust references to (guix scripts
  substitute) accordingly.
* guix/ui.scm (show-guix-help)[internal?]: Change "substitute-binary" to
  "substitute".
* Makefile.am (MODULES, SCM_TESTS): Adjust to file renames.
* daemon.am (nodist_pkglibexec_SCRIPTS): Likewise.
* config-daemon.ac: Likewise.
* guix/tests.scm (call-with-derivation-narinfo): Adjust comments and
  docstring.
2015-03-25 10:46:22 +01:00
Ludovic Courtès
c3a450fb49 derivations: 'substitution-oracle' now ignores sub-trees that are valid.
Before that, "guix build qt", when only qt itself is missing, would lead
'substitution-oracle' to call 'substitutable-paths' with 318 items.
Now, this is down to 6 items, because it doesn't ask about prerequisites
that are already valid.

* guix/derivations.scm (substitution-oracle)[valid-input?,
  dependencies]: New procedures.
  Use 'dependencies' and remove call to 'remove'.
2015-03-25 10:46:22 +01:00
Ludovic Courtès
3681db5d2c derivations: Add a 'cut?' parameter to 'derivation-prerequisites'.
* guix/derivations.scm (valid-derivation-input?): New procedure.
  (derivation-prerequisites): Add 'cut?' parameter and honor it.
* tests/derivations.scm ("derivation-prerequisites and
  derivation-input-is-valid?"): New test.
2015-03-25 10:46:22 +01:00
Ludovic Courtès
c7d1d88f6c derivations: Don't invoke the substituter when an item is already in store.
Fixes <http://bugs.gnu.org/20188>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/derivations.scm (substitution-oracle): Add 'valid?' procedure.
  Remove 'valid?' items from PATHS.
2015-03-24 23:22:23 +01:00
Ludovic Courtès
cb043c2b13 substitute-binary: Remove thread-safe 'regexp-exec' wrapper.
* guix/scripts/substitute-binary.scm: Remove 'regexp-exec' setting.
2015-03-23 22:28:49 +01:00
Ludovic Courtès
d3a652037e substitute-binary: Pipeline HTTP requests instead of using threads.
* guix/scripts/substitute-binary.scm (fetch-narinfo, %lookup-threads,
  n-par-map*): Remove.
  (narinfo-cache-file, cached-narinfo, cache-narinfo!, narinfo-request,
  http-multiple-get, read-to-eof, fetch-narinfos, lookup-narinfos,
  narinfo-from-file): New procedures.
  (lookup-narinfo): Rewrite in terms of 'lookup-narinfos'.
  (guix-substitute-binary): Use 'lookup-narinfos' instead of
  'lookup-narinfo'.
2015-03-23 22:28:49 +01:00
Ludovic Courtès
0561e9ae16 substitute-binary: Allow callers to specify the size of a narinfo.
* guix/scripts/substitute-binary.scm (read-narinfo): Add #:size
  parameter and honor it.
2015-03-23 22:28:49 +01:00
Ludovic Courtès
4d58122071 store: Default to a non-empty list of substituters.
Fixes <http://bugs.gnu.org/20163>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/store.scm (%default-substitute-urls): New variable.
  (set-build-options): Change default value of #:substitute-urls to
  %DEFAULT-SUBSTITUTE-URLS.
2015-03-22 23:43:25 +01:00
Ludovic Courtès
1123759b45 gexp: Fix handling of nativeness in nested gexps.
* guix/gexp.scm (gexp-inputs): Remove 'references' parameter; add
  #:native? and honor it.
  [add-reference-inputs]: Distinguish between native gexp inputs, and
  non-native gexp inputs.  Honor 'native?' field of list inputs.
* tests/gexp.scm ("ungexp + ungexp-native, nested"): New test.
2015-03-22 23:18:33 +01:00
Ludovic Courtès
607e1b51f4 gexp: Ignore nested gexps in macro expansion.
Before that, the 'references' and 'natives' or the outer gexp in an
expression like #~#+#~#$coreutils would include those of the inner
gexp.

* guix/gexp.scm (gexp)[collect-escapes]: Ignore everything below
  'ungexp-native' or 'ungexp-native-splicing'.
  [collect-native-escapes]: Ignore everything below 'ungexp' or
  'ungexp-splicing'.
2015-03-22 23:18:31 +01:00
Ludovic Courtès
accb682c50 gexp: Allow <gexp-input> objects in #:allowed-references.
* guix/gexp.scm (lower-references): Add <gexp-input> case.
* tests/gexp.scm ("gexp->derivation #:allowed-references, specific
  output"): New test.
2015-03-22 23:18:30 +01:00
Ludovic Courtès
2924f0d6ce gexp: Add identity compiler for derivations.
* guix/gexp.scm (derivation-compiler): New procedure.
  (lower-inputs): Remove 'derivation?' case.
  (gexp-inputs)[add-reference-inputs]: Likewise.
  (gexp->sexp)[reference->sexp]: Likewise.
2015-03-22 23:18:28 +01:00
Ludovic Courtès
051edc95f1 guix package: '-s' sorts packages by name, then by version.
Before that it would sort them by name only, so the order in which two
packages with the same name but a different version would appear was
non-deterministic.

Reported by Tomáš Čech <sleep_walker@gnu.org>.

* guix/scripts/package.scm (find-packages-by-description)[version<?]:
  New variable.
  Change the 2nd argument to 'sort' to use 'string-compare' and resort
  to 'version<?' when P1 and P2 have the same name.
2015-03-20 22:07:28 +01:00
Ludovic Courtès
9eeb3d8c28 guix package: '-s' displays different packages that have the same location.
Before that, 'guix package -s foobarbaz' would display only one package
when several match but they have the same location (which is common when
using 'inherit'.)

The original rationale was given at
<http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00280.html> but
it was arguably misguided because it led to "real" packages being
hidden.

Reported by Tomáš Čech <sleep_walker@gnu.org>.

* guix/scripts/package.scm (find-packages-by-description)[same-location?]:
  Remove.
  Remove call to 'delete-duplicates'.
2015-03-20 22:07:28 +01:00
Ludovic Courtès
2a31e1dade ftp-client: Switch to binary mode before using the "SIZE" command.
* guix/ftp-client.scm (ftp-size): Add '%ftp-command' call.
2015-03-19 13:00:21 +01:00
Ludovic Courtès
661c99a434 lint: Report details about FTP errors.
* guix/scripts/lint.scm (probe-uri) <'ftp>: Pass more information about
  failures alongside 'ftp-response.
  (validate-uri) <ftp-response>: Handle it, and adjust "not reachable"
  message accordingly.
2015-03-19 13:00:21 +01:00
Ludovic Courtès
284fe31394 lint: Change misleading variable name.
* guix/scripts/lint.scm (probe-uri) <'ftp>: Rename 'port' to 'conn'.
2015-03-19 13:00:20 +01:00
Ludovic Courtès
f222664058 substitute-binary: Fix recently-introduced regression.
* guix/scripts/substitute-binary.scm (%cache-url): Fix regression
  introduced in 41c45e7.
2015-03-18 22:55:54 +01:00
Ludovic Courtès
f401b1e993 store: Remove debugging leftover.
* guix/store.scm (set-build-options): Remove leftover 'pk' call from
  41c45e7.
2015-03-18 18:10:16 +01:00
Ludovic Courtès
41c45e7863 store: Add preliminary support for client-supplied substitute URLs.
* guix/store.scm (set-build-options): Rename #:binary-caches to
  #:substitute-urls.  Actually pass it in 'pairs' under the
  "substitute-urls" key.
* guix/scripts/substitute-binary.scm (%cache-url): Add comment for
  "untrusted-substitute-urls".
2015-03-18 14:43:03 +01:00
Ludovic Courtès
fc1ee09578 pk-crypto: Improve documentation of 'key-type'.
* guix/pk-crypto.scm (key-type): Improve docstring.
2015-03-18 14:43:03 +01:00
David Thompson
7578f6e32a build: ruby: Set $GEM_HOME that matches Ruby's $GEM_PATH.
* guix/build/ruby-build-system.scm (install): Ignore the Ruby patch version
  when creating $GEM_HOME.
2015-03-17 19:23:17 -04:00
Ludovic Courtès
ff40e9b7e5 gexp: Move the package and origin compilers to (guix packages).
From now own, (guix packages) depends on (guix gexps); it was the other
way around now.  This means that (guix packages) code can use gexps.

* guix/gexp.scm (origin-compiler, package-compiler): Remove.
  (default-guile-derivation): New procedure.
  (gexp->derivation): Use it instead of 'default-guile' +
  'package->derivation'.
* guix/packages.scm (default-guile-derivation): New procedure.
  (package-compiler, origin-compiler): New variables.
* doc/guix.texi (G-Expressions): Mention extensibility.
2015-03-17 22:25:55 +01:00
Ludovic Courtès
9d8100f4c7 packages: Move grafting parameter to (guix derivations).
* guix/packages.scm (%graft?, set-grafting): Move to...
* guix/derivations.scm: ... here.
2015-03-17 22:25:55 +01:00
Ludovic Courtès
bcb1328763 gexp: Separate "compilers" for origins and packages from the core.
* guix/gexp.scm (<gexp-compiler>): New record type.
  (%gexp-compilers): New variable.
  (register-compiler!, lookup-compiler): New procedures.
  (define-gexp-compiler): New macro.
  (origin-compiler, package-compiler): New compilers.
  (lower-inputs): Remove clauses for 'origin?' and 'package?'.  Add
  clause with 'lookup-compiler' instead.
  (lower-references): Likewise.
  (gexp-inputs)[add-reference-inputs]: Likewise.
  (gexp->sexp)[reference->sexp]: Likewise.
2015-03-17 22:25:54 +01:00
Ludovic Courtès
a482cfdcae gexp: Remove special meaning of forms (PACKAGE OUTPUT) in ungexp.
* guix/gexp.scm (gexp-inputs)[add-reference-inputs]: Remove clause for
  inputs of the form (PACKAGE OUTPUT).
  (gexp->sexp)[reference->sexp]: Likewise.
* tests/gexp.scm ("input list splicing"): Change 'list' to 'gexp-input'
  for glibc:debug.
  ("text-file*"): Likewise for %bootstrap-guile:out.
  ("input list splicing + gexp-input + ungexp-native-splicing"): Remove,
  now redundant.
2015-03-17 22:25:54 +01:00
Ludovic Courtès
b4a4bec01a profiles: Use 'gexp-input' instead of two-element lists.
* guix/profiles.scm (package->manifest-entry): Use 'gexp-input' instead
  of two-element lists to denote specific package outputs.
  (manifest-inputs): Likewise.
  (profile-derivation)[info-dir]: Likewise.
2015-03-17 22:25:54 +01:00
Ludovic Courtès
0dbea56bbf gexp: Export 'gexp-input' constructor.
* guix/gexp.scm (<gexp-input>)[gexp-input]: Rename to...
  [%gexp-input]: ... this.  Adjust callers accordingly.
  (gexp-input): New procedure.
  (gexp-inputs)[add-reference-inputs]: When the input is a list, check
  whether each item is already 'gexp-input?' and to not rewrap those.
  (gexp-outputs)[add-reference-output]: Likewise.
  (gexp->sexp): Likewise.
* tests/gexp.scm ("input list splicing + gexp-input +
  ungexp-native-splicing"): New test.
2015-03-17 22:25:54 +01:00
Ludovic Courtès
e39d146107 gexp: Add <gexp-input>.
* guix/gexp.scm (<gexp-input>): New record type.
  (gexp-inputs)[add-reference-inputs]: Adjust clauses to expect
  <gexp-input> objects.
  (gexp-outputs)[add-reference-output]: Likewise.
  (gexp->sexp)[reference->sexp]: Likewise.
  (canonicalize-reference): Remove.
  (gexp)[escape->ref]: Use 'gexp-input' for all the references.
  Remove use of 'canonicalize-reference'.
2015-03-17 22:25:54 +01:00
Ludovic Courtès
1e87da58a1 gexp: Rename <output-ref> to <gexp-output>.
* guix/gexp.scm (<output-ref>): Rename to...
  (<gexp-output>): ... this.  Adjust constructor/accessor names and
  users accordingly.
2015-03-17 22:25:54 +01:00