store: 'references/substitutes' correctly handles the order of substitutes.
Before that, 'references/substitutes' would assume that
'substitutable-path-info' would return things in the same order as its
arguments, which is not the case. Thus, it would sometimes provide
incorrect reference information, occasionally leading to infinite
loop (because dependency information would denote cycles.)
Fixes <http://bugs.gnu.org/22914>.
Reported by Eric Bavier <ericbavier@openmailbox.org>.
* guix/store.scm (references/substitutes): Make ITEMS the first argument
of the loop; match on it. Use 'any' to find a matching substitute.
(substitutable-path-info): Clarify docstring about ordering.
gnu: vigra: Update to a development snapshot.
* gnu/packages/image.scm (vigra): Update to a git snapshot to fix build
problems with the current python-numpy.
gnu: Add einstein.
* gnu/packages/games.scm (einstein): New variable.
* gnu/packages/patches/einstein-build.patch: New file.
* gnu-system.am (dist_patch_DATA): Register patch.
doc: Typos and small stylistic changes.
* guix.texi: Correct typos and make minor changes.
gnu: jalv: Drop Qt-4 support.
* gnu/packages/audio.scm (jalv)[inputs]: Drop qt-4. It does not receive any
upstream security updates, and Qt-4 support is marked as experimental in
the jalv documentation.
tests: Disable tests that would rebuild the world due to grafting.
The Perl replacement added in d8173f2 leads some tests to involve
grafting, which in turn triggers derivation builds that rebuild the
world. Work around that.
* tests/packages.scm: Add call to '%graft?'.
("package-derivation, direct graft")
("package-cross-derivation, direct graft"): Comment out.
grafts: Memoize intermediate results in 'cumulative-grafts'.
The time for:
guix build inkscape -n --no-substitutes
goes down by 30% (in the presence of 3 replacements among all the
packages.)
* guix/grafts.scm (cumulative-grafts): Turn into a monadic procedure in
%STATE-MONAD. Use the current state as a derivation-to-graft cache.
(graft-derivation): Call 'cumulative-grafts' within 'run-with-state'.
packages: The result of 'bag-grafts' does not contain duplicates.
* guix/packages.scm (bag-grafts): Add call to 'delete-duplicates'.
grafts: Use dependency information from substitutes when possible.
This avoids starting derivation builds just for the sake of knowing the
references of their outputs, thereby restoring the expected behavior of
--dry-run when substitutes are available.
* guix/grafts.scm (non-self-references): Remove 'store' parameter, and
add 'references'. Use it. Update caller.
(references-oracle): New variable.
(cumulative-grafts): Add 'references' parameter and use it. Update
callers.
(graft-derivation): Remove 'build-derivations' call. Add call to
'references-oracle'.
store: Add 'references/substitutes'.
* guix/store.scm (references/substitutes): New procedure.
* tests/store.scm ("references/substitutes missing reference info")
("references/substitutes with substitute info"): New tests.
tests: Narinfos can specify an non-empty reference list.
* guix/tests.scm (derivation-narinfo): Add #:references and honor it.
(call-with-derivation-narinfo, call-with-derivation-substitute):
Likewise.
(with-derivation-narinfo, with-derivation-substitute): Add 'references'
keyword.
guix build: Set the build options early.
This fixes a bug whereby, with grafts leading to builds very early,
build options such as --substitute-urls would not be taken into account
yet.
Reported by Andreas Enge <andreas@enge.fr>.
* guix/scripts/build.scm (guix-build): Move 'opts' to the beginning.
Use 'with-store' instead of 'open-connection'. Call
'set-build-options-from-command-line' right after 'with-store'.
gnu: letsencrypt, python-acme: Update to 0.4.2.
These packages should be updated together.
* gnu/packages/tls.scm (letsencrypt): Update to 0.4.2.
(python-acme, python2-acme): Update to 0.4.2.
gnu: python-cryptography, python-cryptography-vectors: Update to 1.2.3.
These packages should be updated together.
* gnu/packages/python.scm (python-cryptography): Update to 1.2.3.
(python-cryptography-vectors): Update to 1.2.3.
doc: Mention syslogd configuration.
* gnu/services/base.scm (syslog-service): Add xref to Inetutils in the
docstring.
(%default-syslog.conf): Export.
* doc/guix.texi (Base Services): Update accordingly.
lint: cve: Gracefully handle HTTP errors.
* guix/scripts/lint.scm (current-vulnerabilities*): New procedure.
(package-vulnerabilities): Use it.
gnu: gnome: Sync description and synopsis.
* gnu/packages/gnome.scm (gnome)[synopsis, description]: Use official
GNU blurb.
gnu: nano: Update to 2.5.3.
* gnu/packages/nano.scm (nano): Update to 2.5.3.
gnu: libgit2: Update to 0.23.4.
* gnu/packages/version-control.scm (libgit2): Update to 0.23.4.