offload: Make 'parallel-builds' a hard limit.
* guix/scripts/offload.scm (machine-choice-lock-file,
machine-slot-file, acquire-build-slot, release-build-slot): New
procedures.
(choose-build-machine): Operate with (machine-choice-lock-file)
taken. Acquire a build slot for each of MACHINES. Release those not
used.
offload: Further generalize lock files.
* guix/scripts/offload.scm (lock-machine, unlock-machine): Remove.
(lock-file, unlock-file): New procedures.
(with-file-lock): New macro.
(with-machine-lock): Rewrite in terms of 'with-file-lock'.
offload: Generalize the machine lock mechanism.
* guix/scripts/offload.scm (lock-machine): Add 'hint' parameter.
(unlock-machine): Remove 'machine' parameter.
(with-machine-lock): Add 'hint' parameter, and pass it down.
(process-request): Adjust uses of 'with-machine-lock' to pass the
'bandwidth hint.
utils: Add a non-blocking option for 'fcntl-flock'.
* guix/utils.scm (F_SETLK): New variable.
(fcntl-flock): Add 'wait?' keyword parameter; honor it.
* tests/utils.scm ("fcntl-flock non-blocking"): New test.
doc: Explain what's special about the (gnu packages ...) name space.
* doc/guix.texi (Invoking guix package): Explain where packages are
searched for and link to "Package Modules".
(Defining Packages) <example>: Use 'define-module' clause instead of
'use-modules'. Explain why and link to "Package Modules".
(Invoking guix build): Explain where packages aer searched for and
link to "Package Modules".
(Package Modules): Explain that (gnu packages ...) is scanned.
gnu: Add a2ps, trueprint, enscript, and source-highlight
* gnu/packages/pretty-print.scm: New file
* gnu/packages/patches/source-highlight-regexrange-test.patch: New file
* gnu-system.am (dist_patch_DATA): Add patch.
(GNU_SYSTEM_MODULES): Add pretty-print.scm
store: 'export-paths' doesn't export references of the given files.
This fixes a regression introduced in
99fbddf9a623757e39d88bfb431f8f7d6f24b75b ("store: Change 'export-paths'
to always export in topological order.")
* guix/store.scm (export-paths): Define 'ordered' variable. Iterate
over it.
* tests/store.scm ("export/import paths, ensure topological order"): Add
'file0'. Adjust accordingly.
gnu: Add ncmpc.
* gnu/packages/mpd.scm (ncmpc): New variable.
utils: 'fcntl-flock' passes an errno when throwing an exception.
* guix/utils.scm (%libc-errno-pointer, errno): New procedures.
(fcntl-flock): Use it as the exception's argument.
offload: Serialize file transfers to build machines.
* guix/scripts/offload.scm (machine-lock-file, lock-machine,
unlock-machine): New procedures.
(with-machine-lock): New macro.
(process-request): Wrap 'send-files' and 'retrieve-files' calls in
'with-machine-lock'.
tests: Rewrite 'fcntl-lock' test.
* tests/utils.scm (temp-file): New variable.
("fcntl-flock"): Rewrite to actually test whether the child process
waits for the lock to be released. The previous test was wrong
because (1) it expected F_SETLK semantics, not F_SETLKW, and (2) it
got EBADF because of a mismatch between the open mode and the lock
style.
download: Perform derivations locally.
* guix/download.scm (url-fetch): Pass #:local-build? #t to
'build-expression->derivation'.
* guix/git-download.scm (git-fetch): Likewise.
gnu: Add bitlbee.
* gnu/packages/messaging.scm (bitlbee): New variable.
* gnu/packages/patches/bitlbee-fix-tests.patch: New file.
* gnu/packages/patches/bitlbee-memset-fix.patch: New file.
* gnu-system.am (dist_patch_DATA): Add patches.
gnu: Add libotr.
* gnu/packages/messaging.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
gnu: gnupg: Add support for version 1.4.16.
* gnu/packages/gnupg.scm (gnupg-1): New variable.
gnu: Add lynx.
* gnu/packages/lynx.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
gnu: gnutls: Upgrade to 3.2.12.
* gnu/packages/gnutls.scm (gnutls): Upgrade to 3.2.12.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
gnu: Add ElementTree and pybugz.
* gnu/packages/python.scm (python2-element-tree, python2-pybugz): New
variables.
doc: Factorize documentation of common build options.
* doc/guix.texi (Invoking guix package): Remove documentation for
--dry-run, --fallback, --no-substitutes, and --max-silent-time. Add a
cross-ref to "Invoking guix build".
(Invoking guix archive): Add "common build options" as the cross-ref
topic for "Invoking guix build".
(Invoking guix build): Move common build options separately. Add a
paragraph to explain.
gnu: subversion: Update to 1.7.14.
* gnu/packages/version-control.scm (subversion): Update to 1.7.14.