guix build: Add '--rounds'.
* guix/scripts/build.scm (show-build-options-help)
(%standard-build-options): Add --rounds.
(set-build-options-from-command-line): Honor it.
* doc/guix.texi (Invoking guix build): Document it.
* doc/contributing.texi (Submitting Patches): Mention it.
store: Allow clients to request multiple builds.
* guix/store.scm (set-build-options): Add #:rounds parameter and honor it.
* tests/store.scm ("build multiple times"): New test.
daemon: Allow builds to be repeated.
This makes it easy to detect non-deterministic builds.
* nix/libstore/build.cc (DerivationGoal): Remove 'InodesSeen'; add
'curRound', 'nrRound', and 'prevInfos'.
(DerivationGoal::inputsRealised): Initialize 'nrRound'.
(NotDeterministic): New error type.
(DerivationGoal::buildDone): Check whether we need to repeat.
(DerivationGoal::startBuilder): Adjust message.
(DerivationGoal::registerOutputs): Check whether we get the same result.
* nix/libstore/globals.cc (Settings::get(const string & name, int def)):
New method.
* nix/libstore/globals.hh (Settings): Add it.
* nix/libstore/store-api.hh (ValidPathInfo): Add operator ==.
* nix/nix-daemon/nix-daemon.cc (performOp): Allow "build-repeat" for
"untrusted" users.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
gnu: python-pillow: Update to 3.0.0.
* gnu/packages/python.scm (python-pillow, python2-pillow): Update to 3.0.0.
gnu: numactl: Update to 2.0.10.
* gnu/packages/linux.scm (numactl)[source]: Update to 2.0.10.
[arguments]: Adapt phases to use the autotools machinery.
[native-inputs]: Add autotools packages.
gnu-maintenance: Exclude development releases from GNOME update candidates.
Suggested by Efraim Flashner <efraim@flashner.co.il>.
* guix/gnu-maintenance.scm (latest-ftp-release): Add #:keep-file?
parameter and honor it.
(latest-gnome-release)[%not-dot]: New variable.
[even-minor-version?, even-numbered-tarball?]: New procedures.
Pass EVEN-NUMBERED-TARBALL? as #:keep-file? argument.
gnu: glade3: Update to 3.8.5.
* gnu/packages/gnome.scm (glade3): Update to 3.8.5.
gnu: autogen: Update to 5.18.7.
* gnu/packages/autogen.scm (autogen): Update to 5.18.7.
gnu-maintenance: ftp.gnome.org does not provide signatures.
* guix/gnu-maintenance.scm (latest-ftp-release): Add #:file->signature
parameter. Honor it.
(latest-gnome-release): Pass #:file->signature.
* guix/upstream.scm (coalesce-sources): Keep 'signature-urls' as #f
unless both sources provide it.
gnu-maintenance: Add GNOME updater.
* guix/gnu-maintenance.scm (ftp-server/directory)[quirks]: Remove glib.
(false-if-ftp-error): New macro.
(latest-release*): Use it.
(non-emacs-gnu-package?): Rename to...
(pure-gnu-package?): ... this. Add call to 'gnome-package?'.
(%gnu-updater): Adjust accordingly.
(gnome-package?, latest-gnome-release): New procedures.
(%gnome-updater): New variable.
* guix/scripts/refresh.scm (%updaters): Add %GNOME-UPDATER.
* doc/guix.texi (Invoking guix refresh): Mention it.
gnu-maintenance: Generalize 'latest-ftp-release'.
* guix/gnu-maintenance.scm (latest-release): Rename to...
(latest-ftp-release): ... this. Add #:server and #:directory
parameters.
(latest-release): New procedure.
refresh: Bail out when asked for a nonexistent updater.
* guix/scripts/refresh.scm (lookup-updater): Call 'leave' when 'find'
returns #f.
gnu-maintenance: Do not look for releases in "w32" sub-directories.
* guix/gnu-maintenance.scm (latest-release): Filter out "w32"
directories.
gnu-maintenance: Add tests for 'release-file?'.
* tests/gnu-maintenance.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
* guix/gnu-maintenance.scm (release-file?): Export.
gnu-maintenance: Properly handle TeXmacs.
* guix/gnu-maintenance.scm (ftp-server/directory): Add comment.
(release-file?): Use 'string-ci=?' instead of 'equal?' when comparing
project names.
gnu-maintenance: Adjust tarball regexp for IceCat tarballs.
* guix/gnu-maintenance.scm (%tarball-rx): Tweak to match IceCat tarball
patterns.
gnu-maintenance: Fix URLs returned by 'latest-release' for deep trees.
With this, (latest-release "gcc") returns an <upstream-source> with URL:
ftp://ftp.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.gz
Previous it would omit "gcc-5.3.0/" from the URL.
Fixes a regression introduced in 0a7c5a0.
* guix/gnu-maintenance.scm (latest-release)[file->url, file->source]:
Add 'directory' parameter. Update users.
doc: 'guix environment --container' does not create '/env'.
* doc/guix.texi (Invoking guix environment): Remove outdated mention of
'/env' for '--container'.
gnu: node: Do not use bundled dependencies.
The Node build system was previously building its own copies of
OpenSSL (yikes!), libuv, and zlib.
* gnu/packages/node.scm (node)[inputs]: Add openssl, libuv, and zlib.
[arguments]: Add configure flags for using system libraries. Use
'modify-phases' syntax.
gnu: util-linux: Make description more descriptive.
* gnu/packages/linux.scm (util-linux)[description]: Give some more
information about the package.
Signed-off-by: Andreas Enge <andreas@enge.fr>