This is a followup to 9544a04411.
* tests/channels.scm ("latest-channel-instances includes channel dependencies")
("latest-channel-instances excludes duplicate channel dependencies"):
Add #:verify-certificate? parameter to ‘update-cached-checkout’ mock.
Change-Id: Ia795b965c564e5552525327d1d748635dc66d5fd
This is a followup to c904350a81 and
d7890af335, which led to adding
‘setuptools’ and ‘wheel’ to ‘native-inputs’ in many (most?) cases.
* tests/pypi.scm ("pypi->guix-package, no wheel")
("pypi->guix-package, no requires.txt, but wheel.")
("pypi->guix-package, no usable requirement file, no wheel."): Add
‘python-setuptools’ and ‘python-wheel’ to the native inputs.
("package-latest-release"): Add ‘setuptools’ and ‘wheel’ to the expected
result.
Change-Id: I4d1001b0ad332836fe7d1d9ecd07d4adc32330af
Fixes a regression introduced in
a3ffb920f1 and revealed by
‘tests/pypi.scm’.
* guix/import/pypi.scm (parse-requires.txt): Reverse REQUIRED-DEPS and
TEST-DEPS when returning.
(parse-wheel-metadata): Likewise.
Change-Id: I2c374505052f0d9e46e7cc1c11d3e97ab522e068
The default value of #f for the ‘file-system’ field is invalid and would
trigger a type error when running ‘guix system search’.
* gnu/services/admin.scm (<resize-file-system-configuration>)[file-system]:
Remove default value.
(resize-file-system-service-type)[default-value]: Remove.
* doc/guix.texi (Miscellaneous Services): Adjust accordingly.
Change-Id: If73f8923f49d38827059ba98bd53636a7f3917fe
src/libdraw/openfont.c already substitutes "/lib/font/bit/" to "$PLAN9/font/",
so it's not necessary to do that ourself.
* gnu/packages/plan9.scm (plan9port)[arguments]: Don't remove 'fontsrv' in
INSTALL. Remove "/lib/font/bit" substitute and substitute more fonts.
Change-Id: Ic99b5ed29e13bcdfde62e065fb189a9c6b5a9580
Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
Fixes <https://issues.guix.gnu.org/31785>.
Similar to <https://github.com/NixOS/nix/issues/178>, fixed in
<29cde917fe>.
We can't rely on Goal deletion to release our locks in a timely manner. In
the case in which multiple guix-daemon processes simultaneously try producing
an output path path1, the one that gets there first (P1) will get the lock,
and the second one (P2) will continue trying to acquire the lock until it is
released. Once it has acquired the lock, it checks to see whether the path
has already become valid in the meantime, and if so it reports success to
those Goals waiting on its completion and finishes. Unfortunately, it fails
to release the locks it holds first, so those stay held until that Goal gets
deleted.
Suppose we have the following store path dependency graph:
path4
/ | \
path1 path2 path3
P2 is now sitting on path1's lock, and will continue to do so until path4 is
completed. Suppose there is also a P3, and it has been blocked while P1
builds path2. Now P3 is sitting on path2's lock, and can't acquire path1's
lock to determine that it has been completed. Likewise P2 is sitting on
path1's lock, and now can't acquire path2's lock to determine that it has been
completed. Finally, P3 completes path3 while P2 is blocked.
Now:
- P1 knows that path1 and path2 are complete, and holds no locks, but can't
determine that path3 is complete
- P2 knows that path1 and path3 are complete, and holds locks on path1 and
path3, but can't determine that path2 is complete
- P3 knows that path2 and path3 are complete, and holds a lock on path2, but
can't determine that path1 is complete
And none of these locks will be released until path4 is complete. Thus, we
have a deadlock.
To resolve this, we should explicitly release these locks as soon as they
should be released.
* nix/libstore/build.cc
(DerivationGoal::tryToBuild, SubstitutionGoal::tryToRun):
Explicitly release locks in the has-become-valid case.
* tests/store-deadlock.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
Change-Id: Ie510f84828892315fe6776c830db33d0f70bcef8
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This allows rebooting straight into the new system with ‘reboot -k’.
* guix/scripts/system/reconfigure.scm (kexec-loading-program)
(load-system-for-kexec): New procedures.
* gnu/tests/reconfigure.scm (run-kexec-test): New procedure.
(%test-upgrade-kexec): New variable.
* guix/scripts/system.scm (perform-action): Add #:load-for-kexec?.
Call ‘load-system-for-kexec’.
(show-help, %options): Add ‘--no-kexec’.
(%default-options): Add ‘load-for-kexec?’.
(process-action): Honor it and pass it to ‘perform-action’.
* gnu/machine/ssh.scm (deploy-managed-host): Add call to
‘load-system-for-kexec’.
* doc/guix.texi (Invoking guix system): Document it.
Change-Id: I86d11f1c348e4359bc9e73c86e5aebff60fe875c