Commit Graph

137 Commits

Author SHA1 Message Date
Ludovic Courtès ced71ac7a7 packages: Cache the result of 'input-grafts'.
This reduces the wall-clock time of

  guix environment gnutls --pure -E true

by ~35%.

* guix/packages.scm (%graft-cache): New variable.
(input-graft): Use 'cached' to cache to %GRAFT-CACHE.
2016-03-08 00:01:13 +01:00
Ludovic Courtès 9775412ee0 packages: Cache the result of 'package->bag'.
This reduces the wall-clock time of

  guix environment gnutls --pure -E true

by ~25%.

* guix/packages.scm (%bag-cache): New variable.
(package->bag): Use 'cached' to cache things to %BAG-CACHE.
2016-03-08 00:01:13 +01:00
Ludovic Courtès 198d84b70b packages: Generalize the 'cached' macro.
* guix/packages.scm (cache): Rename to...
  (cache!): ... this.  Add 'cache' parameter, and use it.
  (cached): Add a rule to allow the cache to be specified.
2016-03-08 00:01:13 +01:00
Ludovic Courtès fcadd9ff9d packages: The result of 'bag-grafts' does not contain duplicates.
* guix/packages.scm (bag-grafts): Add call to 'delete-duplicates'.
2016-03-05 00:19:10 +01:00
Ludovic Courtès c22a1324e6 grafts: Graft recursively.
Fixes <http://bugs.gnu.org/22139>.

* guix/grafts.scm (graft-derivation): Rename to...
(graft-derivation/shallow): ... this.
(graft-origin-file-name, item->deriver, non-self-references)
(cumulative-grafts, graft-derivation): New procedures
* tests/grafts.scm ("graft-derivation, grafted item is a direct
dependency"): Clarify title.  Use 'grafted' instead of 'graft' to refer
to the grafted derivation.
("graft-derivation, grafted item is an indirect dependency")
("graft-derivation, no dependencies on grafted output"): New tests.
* guix/packages.scm (input-graft): Change to take a package instead of
an input.
(input-cross-graft): Likewise.
(fold-bag-dependencies): New procedure.
(bag-grafts): Rewrite in terms of 'fold-bag-dependencies'.
* tests/packages.scm ("package-derivation, indirect grafts"): Comment out.
* doc/guix.texi (Security Updates): Mention run-time dependencies and
recursive grafting.
2016-03-01 16:00:46 +01:00
Ludovic Courtès b0fef4d660 grafts: 'name' parameter of 'graft-derivation' is now optional.
* guix/grafts.scm (graft-derivation): Name 'name' a keyword parameter.
* guix/packages.scm (package-derivation, package-cross-derivation):
Adjust accordingly.
* tests/grafts.scm ("graft-derivation"): Likewise.
* tests/packages.scm ("package-derivation, indirect grafts"): Likewise.
2016-02-22 22:11:37 +01:00
Ludovic Courtès 7adf9b8469 derivations: Move grafts to (guix grafts).
* guix/derivations.scm (<graft>, graft-derivation, %graft?)
(set-grafting): Move to...
* guix/grafts.scm: ... here.  New file.
* guix/gexp.scm, guix/packages.scm, tests/packages.scm,
guix/scripts/build.scm: Use it.
* Makefile.am (MODULES): Add it.
(SCM_TESTS): Add tests/grafts.scm.
* tests/derivations.scm ("graft-derivation"): Move to...
* tests/grafts.scm: ... here.  New file.
2016-02-22 22:11:37 +01:00
Mathieu Lirzin 74e667d149 packages: Use '@' in package record printers.
* guix/packages.scm <package>: Use '@' in record printer.
* guix/import/cabal.scm <cabal-package>: Likewise
* guix/import/elpa.scm <elpa-package>: Likewise.
* tests/packages.scm: Adapt to it.
2016-01-28 16:31:38 +01:00
Ludovic Courtès aa8e051532 packages: Add 'package-transitive-native-search-paths'.
* guix/packages.scm (package-transitive-native-search-paths): New
procedure.
* tests/packages.scm ("package-transitive-native-search-paths"): New
test.
2015-12-20 22:34:22 +01:00
Ludovic Courtès 85b81cf8c1 packages: Use locales from the /X.Y sub-directory of the locale package.
This is a followup to commit f2d7bbb.

* guix/packages.scm (patch-and-repack)[build]: Append "/X.Y" to
  LOCPATH.
2015-10-04 10:19:42 +02:00
Ludovic Courtès afd3d9316c Use "normalized codesets" everywhere.
In other words, change "xx_YY.UTF-8" to "xx_YY.utf8".

* guix/profiles.scm (ca-certificate-bundle): Use "en_US.utf8" instead of
  "en_US.UTF-8".
* guix/packages.scm (patch-and-repack): Likewise.
* guix/build/gnu-build-system.scm (install-locale): Likewise.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Likewise.
* gnu/packages/python.scm (python-ipython): Likewise.
* gnu/packages/gawk.scm (gawk): Likewise.
* build-aux/hydra/demo-os.scm: Likewise.
* gnu/packages/guile.scm (guile-ncurses)[arguments]: Remove
  'change-locale' phase.
2015-10-04 00:10:03 +02:00
Mark H Weaver bd90127ad4 Merge branch 'master' into core-updates 2015-09-22 16:38:48 -04:00
Eric Bavier 3b4d01035f guix: packages: Add origin-actual-file-name.
* guix/scripts/graph.scm (uri->file-name, node-full-name): Move origin file
  name logic to...
* guix/packages.scm (origin-actual-file-name): ...here.
* tests/packages.scm ("origin-actual-file-name")
  ("origin-actual-file-name, file-name"): New tests.
2015-09-14 18:02:37 -05:00
Ludovic Courtès 75710da667 Merge branch 'master' into core-updates 2015-09-13 21:28:01 +02:00
Eric Bavier a6d0b306c2 guix: packages: Add transitive-input-references.
* guix/packages.scm (transitive-input-references): New procedure.
* gnu/packages/version-control.scm (package-transitive-propagated-labels*)
  (package-propagated-input-refs): Delete.
  (git)[arguments]: Adjust to transitive-input-references.
2015-09-10 03:21:55 -05:00
Mark H Weaver 140b4bc6cd packages: Build tarballs in sorted order even if tar doesn't support it.
This is a followup to commit 92226a470d.

* guix/packages.scm (patch-and-repack)[build]: Determine if tar supports the
  "--sort=name" option using a run-time test.  If not supported, generate the
  sorted file list with 'find-files' and pass it to tar using "--files-from".
2015-09-06 17:25:51 -04:00
Ludovic Courtès 035b6ff707 packages: Define '%hurd-systems'.
* guix/packages.scm (%hurd-systems): New variable.
2015-09-04 13:50:38 +02:00
Mark H Weaver 92226a470d Build tarballs with deterministic file ordering.
* guix/packages.scm (patch-and-repack)[build],
  gnu/system/install.scm (self-contained-tarball)[build],
  gnu/packages/make-bootstrap.scm (tarball-package),
  gnu/packages/admin.scm (isc-dhcp),
  gnu/packages/video.scm (avidemux): Pass "--sort=name" to 'tar'.
2015-09-03 12:57:01 -04:00
Mark H Weaver 52c20d8e15 packages: Add 'armhf-linux' to '%hydra-supported-systems'.
* guix/packages.scm (%hydra-supported-systems): Do not remove 'armhf-linux'
  from it.  It is now equal to '%supported-systems'.
2015-09-02 19:59:12 -04:00
Mark H Weaver 2e9511dfbd packages: patch-and-repack: Build tarballs deterministically.
* guix/packages.scm (patch-and-repack)[build]: When invoking 'tar' to repack
  the archive, pass "--mtime=@0", "--owner=root:0", and "--group=root:0".
2015-07-14 19:41:20 -04:00
Ludovic Courtès 161094c8e2 packages: Rewrite 'transitive-inputs' to be linear and remove duplicates.
There were two issues:

  1. Use of 'delete-duplicates', which is quadratic, was a serious problem for
     closures with lots of propagated inputs, such as that of the 'hydra'
     package (several minutes for 'guix build hydra -n'!).

  2. The 'delete-duplicates' call essentially had no effect since duplicate
     inputs typically had a different label and were thus kept.  For
     instance, (bag-transitive-inputs (package->bag inkscape)) would return
     216 items whereas (delete-duplicates (map cdr THAT)) contains only 67
     items.

     The new implementation returns 67 items in this case.  For 'hydra', we're
     down from 42211 items to 361, and roughly 13s for 'guix build hydra'.

* guix/packages.scm (transitive-inputs): Rewrite as a breadth-first
  traversal.  Remove duplicate propagated inputs.
* tests/packages.scm ("package-transitive-inputs", "package->bag, propagated
  inputs"): Adjust to use simple labels for propagated inputs, without "/".
  ("package-transitive-inputs, no duplicates"): New test.
2015-07-12 01:27:00 +02:00
Mark H Weaver bcf2971f6e Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/commencement.scm
	gnu/packages/xml.scm
2015-06-14 08:49:42 -04:00
Ludovic Courtès 0004c5904c packages: Make 'location' field innate.
* guix/packages.scm (<package>)[location]: Add 'innate' property.
* guix/build-system/gnu.scm (static-package): Remove 'loc' parameter and
  'location' field.
* gnu/packages/autotools.scm (autoconf-wrapper): Remove 'location' field.
* gnu/packages/commencement.scm (gnu-make-boot0, diffutils-boot0, gcc-final):
  Likewise.
* gnu/packages/cross-base.scm (cross): Likewise.
* gnu/packages/emacs.scm (emacs-no-x, emacs-no-x-toolkit): Likewise.
* gnu/packages/make-bootstrap.scm (tarball-package): Likewise.
* gnu/packages/maths.scm (petsc-complex): Likewise.
2015-06-11 23:33:32 +02:00
Mark H Weaver 1492801655 Merge branch 'master' into core-updates 2015-06-10 17:50:27 -04:00
Ludovic Courtès 5ae4169c5f packages: Use packages from '%final-inputs' as the default patch inputs.
Reported by Manolis Ragkousis <manolis837@gmail.com>
at <http://lists.gnu.org/archive/html/guix-devel/2015-05/msg00059.html>.

* guix/packages.scm (%standard-patch-inputs): Add 'canonical', and use
  it in 'ref'.
2015-05-21 15:28:01 +03:00
Taylan Ulrich Bayırlı/Kammer 2fdcc6074e packages: Use %store-directory.
* guix/packages.scm (patch-and-repack): Call %store-directory instead of
  duplicating its code.
2015-05-15 16:42:54 +02:00
Ludovic Courtès e89431bf01 Move search path specifications to (guix search-paths).
* guix/packages.scm (<search-path-specification>,
  search-path-specification->sexp, sexp->search-path-specification):
  Move to...
* guix/search-paths.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* guix/build-system/cmake.scm, guix/build-system/glib-or-gtk.scm,
  guix/build-system/gnu.scm, guix/build-system/haskell.scm,
  guix/build-system/perl.scm, guix/build-system/python.scm,
  guix/build-system/ruby.scm, guix/build-system/waf.scm,
  guix/profiles.scm, guix/scripts/package.scm: Use it.
2015-05-04 23:30:51 +02:00
Eric Bavier f77bcbc374 guix: packages: Add package-direct-sources and package-transitive-sources.
* guix/tests.scm (dummy-origin): New syntax.
* guix/packages.scm (package-direct-sources)
  (package-transitive-sources): New procedures.
* tests/packages.scm ("package-direct-sources, no source")
  ("package-direct-sources, #f source")
  ("package-direct-sources, not input source", "package-direct-sources")
  ("package-transitive-sources"): Test them.
2015-05-02 23:15:40 -05:00
Ludovic Courtès dedb17ad01 profiles: Store search paths in manifests.
Discussed in <http://bugs.gnu.org/20255>.

* guix/packages.scm (sexp->search-path-specification): New variable.
* guix/profiles.scm (<manifest-entry>)[search-paths]: New field.
  (package->manifest-entry): Initialize it.
  (manifest->gexp): Match it.  Wrap #$deps in (propagated-inputs ...).
  Emit (search-paths ...).  Increment version.
  (find-package): New procedure.
  (sexp->manifest)[infer-search-paths]: New procedure.
  Use it to initialize the 'search-paths' field for versions 0 and 1.
  Add case for version 2.
* guix/scripts/package.scm (search-path-environment-variables)[manifest-entry->package]:
  Remove.
  Use 'manifest-entry-search-paths' instead of 'manifest-entry->package'
  plus 'package-native-search-paths'.
* tests/profiles.scm ("profile-manifest, search-paths"): New test.
2015-05-02 23:57:11 +02:00
Ludovic Courtès abcbda48c2 packages: Add '%hydra-supported-systems'.
* build-aux/hydra/gnu-system.scm (%hydra-supported-systems): Remove.
* guix/packages.scm (%hydra-supported-systems): New variable.
2015-05-01 16:05:40 +02:00
Mark H Weaver fc34deea24 packages: Add armhf-linux to %supported-systems.
* guix/packages.scm (%supported-systems): Add "armhf-linux".
2015-04-22 17:25:28 -04:00
Ludovic Courtès bbceb0ef8a packages: Add 'supported-package?'.
* guix/packages.scm (supported-package?): New procedure.
* tests/packages.scm ("supported-package?"): New test.
* build-aux/hydra/gnu-system.scm (package->job): Use it instead of
  'package-transitive-supported-systems'.
2015-04-19 23:34:53 +02:00
Ludovic Courtès 1590e8a1dd packages: Refer to the native tools when handling sources and downloads.
* guix/packages.scm (patch-and-repack)[build]: Change most #$ to #+.
* guix/cvs-download.scm (cvs-fetch)[build]: Likewise.
* guix/download.scm (url-fetch)[builder]: Likewise.
* guix/git-download.scm (git-fetch)[build]: Likewise.
* guix/svn-download.scm (svn-fetch)[build]: Likewise.
2015-04-15 10:19:47 +02:00
Ludovic Courtès 9bf3ced06c packages: 'package-transitive-supported-systems' accounts for implicit inputs.
Reported by Federico Beffa.

* guix/packages.scm (package-transitive-supported-systems): Use
  bag-direct-inputs + package->bag rather than package-direct-inputs.
* tests/packages.scm ("package-transitive-supported-systems"): Add
  explicit 'build-system' field to each 'dummy-package' form.
  ("package-transitive-supported-systems, implicit inputs"): New test.
2015-04-11 13:06:23 +02:00
Ludovic Courtès cceab87536 packages: Add 'bag-direct-inputs'.
* guix/packages.scm (bag-direct-inputs): New procedure.
  (bag-transitive-inputs): Use it.
2015-04-11 13:06:23 +02:00
Eric Bavier 17287d7d47 packages: Add zip archive support to 'patch-and-repack'.
Fixes <http://bugs.gnu.org/19830>.

* guix/packages.scm (%standard-patch-inputs): Add "unzip".
  (patch-and-repack)[decompression-type]: Detect zip archive.
  [build]: Invoke "unzip" when appropriate.
2015-03-24 15:59:30 -05:00
Ludovic Courtès a158484db4 packages: Make sure the patch inputs are not #f.
Fixes build issues whereby #:inputs would be #f.  See
<http://hydra.gnu.org/build/320333/nixlog/4/tail-reload>.

* guix/packages.scm (patch-and-repack): #:input defaults to #f.
  [lookup-input]: When INPUTS is #f, use (%standard-patch-inputs).
2015-03-21 22:07:16 +01:00
Ludovic Courtès ec3b1c575d gnu: Use 'glibc-utf8-locales-final' in the default patching inputs.
* gnu/packages/commencement.scm (glibc-utf8-locales-final): Make public.
* guix/packages.scm (%standard-patch-inputs): Use
  GLIBC-UTF8-LOCALES-FINAL instead of GLIBC-UTF8-LOCALES.
2015-03-21 21:58:04 +01:00
Ludovic Courtès cf87cc894d packages: Rewrite 'patch-and-repack' using gexps.
* guix/packages.scm (patch-and-repack): Remove 'store' parameter and
  change default value of #:inputs to (%standard-patch-inputs).
  [lookup-input, instantiate-patch]: New procedures.
  [patch-inputs]: Remove.
  [builder]: Rename to...
  [build]: ... this.  Use gexps instead of sexps.
  (patch-and-repack*): Remove.
  (origin->derivation): Use 'patch-and-repack' instead of
  'patch-and-repack*'.
* tests/packages.scm ("package-source-derivation,
  snippet")[source](snippet): Remove references to '%build-inputs' and
  '%outputs'.
2015-03-18 19:07:36 +01: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 4db87162e6 packages: Set the port conversion strategy to 'error'.
Suggested by Mark H Weaver.

* guix/build/gnu-build-system.scm (gnu-build): Set
  %DEFAULT-PORT-CONVERSION-STRATEGY to 'error.
* guix/packages.scm (patch-and-repack)[builder]: Likewise.
2015-02-28 01:10:24 +01:00
Ludovic Courtès 9cca706c2e packages: When possible, use a UTF-8 locale in patch-and-repack.
* guix/packages.scm (%standard-patch-inputs): Add "locales".
  (patch-and-repack)[builder]: Add 'locales' variable.  When it is true,
  call 'setenv' and 'setlocale'.
2015-02-27 00:03:17 +01:00
Ludovic Courtès b8bedf6051 packages: Add 'set-grafting' procedure.
* guix/packages.scm (set-grafting): New procedure.
2015-02-13 23:19:49 +01:00
Ludovic Courtès 6b1f9721a8 packages: Mark the 'patches' field as delayed.
* guix/packages.scm (<origin>)[patches]: Mark as 'delayed'.
  (print-origin, origin->derivation): Add call to 'force' when accessing
  'patches'.
2015-01-20 09:59:56 +01:00
Ludovic Courtès 4e190c2803 store: Make '%store-monad' an alias for '%state-monad'.
* guix/store.scm (define-alias): New macro.
  (%store-monad, store-return, store-bind): Define as aliases of the
  corresponding %STATE-MONAD part.
  (store-lift, text-file, interned-file): Return STORE as a second
  value.
  (run-with-store): Use 'run-with-state'.
* guix/packages.scm (set-guile-for-build, package-file): Return STORE as
  a second value.
* guix/monads.scm: Remove part of the module commentary.
2015-01-17 23:45:48 +01:00
Ludovic Courtès 57b7e1a62d Merge branch 'core-updates'
Conflicts:
	gnu/packages/bootstrap.scm
2015-01-16 13:27:03 +01:00
Ludovic Courtès f220a83848 packages: Convert source derivations to monadic style.
* guix/packages.scm (origin->derivation): Take body from
  'package-source-derivation', and change it to monadic style.  Expect
  METHOD to a monadic procedure.
  (package-source-derivation): Define in terms of 'origin->derivation'.
* guix/download.scm (url-fetch): Remove 'store' argument.  Remove
  'guile-for-build' variable.  Turn into a monadic procedure.
* guix/git-download.scm (git-fetch): Likewise.
* guix/svn-download.scm (svn-fetch): Likewise.
* tests/builders.scm (url-fetch*): New procedure.
  Change tests to call 'url-fetch*' instead of 'url-fetch'.
* tests/packages.scm ("package-source-derivation, snippet"): Remove
  'store' parameter of 'fetch' and change it to use 'interned-file'
  instead of 'add-to-store'.
* gnu/packages/bootstrap.scm (bootstrap-origin)[boot]: Remove 'store'
  parameter.
2015-01-14 14:42:10 +01:00
Ludovic Courtès e87f0591f3 monads: Move '%store-monad' and related procedures where they belong.
This turns (guix monads) into a generic module for monads, and moves the
store monad and related monadic procedures in their corresponding
module.

* guix/monads.scm (store-return, store-bind, %store-monad, store-lift,
  text-file, interned-file, package-file, package->derivation,
  package->cross-derivation, origin->derivation, imported-modules,
  compiled, modules, built-derivations, run-with-store): Move to...
* guix/store.scm (store-return, store-bind, %store-monad, store-lift,
  text-file, interned-file): ... here.
  (%guile-for-build): New variable.
  (run-with-store): Moved from monads.scm.  Remove default value for
  #:guile-for-build.
* guix/packages.scm (default-guile): Export.
  (set-guile-for-build): New procedure.
  (package-file, package->derivation, package->cross-derivation,
  origin->derivation): Moved from monads.scm.
* guix/derivations.scm (%guile-for-build): Remove.
  (imported-modules): Rename to...
  (%imported-modules): ... this.
  (compiled-modules): Rename to...
  (%compiled-modules): ... this.
  (built-derivations, imported-modules, compiled-modules): New
  procedures.
* gnu/services/avahi.scm, gnu/services/base.scm, gnu/services/dbus.scm,
  gnu/services/dmd.scm, gnu/services/networking.scm,
  gnu/services/ssh.scm, gnu/services/xorg.scm, gnu/system/install.scm,
  gnu/system/linux-initrd.scm, gnu/system/shadow.scm, guix/download.scm,
  guix/gexp.scm, guix/git-download.scm, guix/profiles.scm,
  guix/svn-download.scm, tests/monads.scm: Adjust imports accordingly.
* guix/monad-repl.scm (default-guile-derivation): New procedure.
  (store-monad-language, run-in-store): Use it.
* build-aux/hydra/gnu-system.scm (qemu-jobs): Add explicit
  'set-guile-for-build' call.
* guix/scripts/archive.scm (derivation-from-expression): Likewise.
* guix/scripts/build.scm (options/resolve-packages): Likewise.
* guix/scripts/environment.scm (guix-environment): Likewise.
* guix/scripts/system.scm (guix-system): Likewise.
* doc/guix.texi (The Store Monad): Adjust module names accordingly.
2015-01-14 13:34:52 +01:00
Ludovic Courtès 7b21fe5385 packages: Add 'file-pattern' field to 'search-path-specification'.
* guix/packages.scm (<search-path-specification>)[file-pattern]: New
  field.
  (search-path-specification->sexp): Honor it.
2014-12-27 23:22:55 +01:00