1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 13:10:33 +02:00
Commit Graph

179240 Commits

Author SHA1 Message Date
Maxim Cournoyer
f3d73553cd transformations: Fix recursive?' inheritance for with-git-url'.
* guix/transformations.scm (transform-package-source-git-url): Use the second
value of `package-git-url+recursive?'.
* tests/transformations.scm
("options->transformation, with-git-url, recursive? inheritance"): New test.

Change-Id: Ifd89bf1b0267f2b080b872cc7b318b9ae3706422
2026-01-29 13:51:06 +09:00
jgart
df96ee97e9 gnu: Add wayout.
* gnu/packages/xdisorg.scm (wayout): New variable.

Change-Id: Ibe4c302ff273e84f9baf444a56c10970d59ba120
Signed-off-by: jgart <jgart@dismail.de>
2026-01-28 14:15:41 -05:00
jgart
d3aa1a72ee gnu: Add lisgd.
* gnu/packages/freedesktop.scm (lisgd): New variable.

Change-Id: I3ebee227ff08c500380739613b36b7ebc81c7deb
Signed-off-by: jgart <jgart@dismail.de>
2026-01-28 14:11:08 -05:00
jgart
d4c83934a4 gnu: emacs-shell-maker: Update to 0.84.8.
* gnu/packages/emacs-xyz.scm (emacs-shell-maker): Update to 0.84.8.
[arguments]: Patch curl.
[inputs]: Add curl.

Change-Id: Icab3e1fdc5ef20a1959e4735098a9c3df6d7eae1
2026-01-28 13:59:13 -05:00
Christopher Baines
1c230ec96e scripts: substitute: Default to fast decompression.
This changes the behaviour for the first one or few nars the substitute script
downloads, with uncompressed and zstd compressed nars prefered rather than
picking by file size.

* guix/scripts/substitute.scm: (%default-fast-decompression?): Change to #t.
* tests/substitute.scm ("substitute, preferred nar URL is 404, other is 200"):
Adjust test.

Change-Id: I89202f084cd6b9d506bcb3d46f75de690c6986b5
2026-01-28 17:45:33 +00:00
Christopher Baines
86d06b4cad substitutes: Handle closing connections to substitute servers.
When reusing a HTTP connection to fetch multiple nars, and the remote server
signals that the connection should be closed.

* guix/substitutes.scm (download-nar): Close connections to substitute servers
when a Connection: close header is specified in the response.

Change-Id: Id3746c848a2157419060d5d968f724bc82a28e49
2026-01-28 17:44:57 +00:00
Christopher Baines
be84a75c39 substitutes: Add #:keep-alive? keyword argument to download-nar.
To be consistent with other procedures that make network requests.

* guix/substitutes.scm (download-nar): Add #:keep-alive? option.
* guix/scripts/substitute.scm (process-substitution/fallback)
(process-substitution): Call download-nar with #:keep-alive? #t.

Change-Id: I83b27d0c3a0916d058fbbbeb7aa77dbb8a742768
2026-01-28 17:44:57 +00:00
Christopher Baines
53d306ca39 substitutes: Move download-nar from substitutes script to here.
From the substitutes script.  This makes it possible to use download-nar in
the the Guile guix-daemon.

* guix/scripts/substitute.scm (%fetch-timeout): Move down to where it's now
used.
(%random-state, with-timeout, catch-system-error, http-response-error?,
download-nar): Move to…
* guix/substitutes.scm: …here.

Change-Id: I8c09bf4b33cb5c6d042057d4d9adeb36c24c11dc
2026-01-28 17:44:57 +00:00
Christopher Baines
41a20ca0d2 scripts: substitute: Don't enforce cached connections in download-nar.
This is in preparation for moving the download-nar procedure out of the
script.

As well as calling open-connection-for-uri/cached, with-cached-connection adds
a single retry to the expression passed in, in the case of a exception that
suggests there's a problem with the cached connection. This is important
because download-nar/http-fetch doesn't check if a connection used for
multiple requests should be closed (because the servers set the relevant
response header).

To make download-nar more generic, have it take open-connection-for-uri as a
keyword argument, and replicate the with-cached-connection single retry by
closing the port in the case of a network error, and recalling
open-connection-for-uri.  This will work fine in the case when connection
caching is not in use, as well as when open-connection-for-uri/cached is used,
since open-connection-for-uri/cached will open a new connection if the cached
port is closed.

* guix/scripts/substitute.scm (kind-and-args-exception?): Remove and inline
where necessary.
(call-with-cached-connection): Remove procedure.
(with-cached-connection): Remove syntax rule.
(http-response-error?): New procedure.
(download-nar): Add new #:open-connection-for-uri keyword argument and use it,
also replace with-cached-connection.
(process-substitution/fallback,process-substitution): Pass
 #:open-connection-for-uri open-connection-for-uri/cached to download-nar.

Change-Id: I277b1d8dfef79aa1711755b10b9944da7c19157c
2026-01-28 17:44:57 +00:00
Christopher Baines
999a8a668b http-client: Include EPIPE in network-error?.
The substitute script checks for EPIPE errors, so this allows using
network-error?.

* guix/http-client.scm (network-error?): Include EPIPE.

Change-Id: I96d76d77997ed21a38bf9c41479fea67ab01e084
2026-01-28 17:44:57 +00:00
Christopher Baines
b354ef2df3 http-client: Add network-error? from the substitute script.
Plus remove http-get-error? from network-error? as http-get-error? doesn't
indicate a network error.

* guix/scripts/substitute.scm (process-substitution/fallback)
(process-substitution): Use http-get-error?  with network-error?.
(system-error?, network-error?): Move from here…
* guix/http-client.scm: …to here, and also don't use http-get-error?.

Change-Id: I61ee9e5fbf90ebb76a34aa8b9ec8f5d74f8a3c54
2026-01-28 17:44:56 +00:00
Christopher Baines
dce5b6371e scripts: substitute: Extract script specific output from download-nar.
As this moves download-nar in a direction where it could be used outside the
substitute script.

* guix/scripts/substitute.scm (download-nar): Return expected and actual
hashes and move status-port output to guix-substitute.
(process-substitution/fallback): Remove port argument, and move output to port
to guix-substitute.
(process-substitution): Return hashes from download-nar or
process-substitution/fallback, plus the narinfo.
(guix-substitute): Don't pass the reply-port in to process-substitution and
implement the messages to the reply-port here.

Change-Id: Icbddb9a47620b3520cdd2e8095f37a99824c1ce0
2026-01-28 17:44:56 +00:00
Christopher Baines
3e8d419da9 scripts: substitute: Untangle selecting fast vs small compressions.
Pulling the logic up to the script makes this code more portable and not
reliant on setting a global variable.

* guix/scripts/substitute.scm (%prefer-fast-decompression?): Rename to…
(%default-fast-decompression?): this.
(call-with-cpu-usage-monitoring): Use multiple values to return the results
from the thunk as well as the cpu usage.
(display-narinfo-data): Update accordingly.
(download-nar): Add fast-decompression? as a keyword argument, remove
code to set! it and monitor the cpu-usage.
(process-substitution, process-substitution/fallback): Accept and pass through
fast-decompression? to download-nar.
(guix-substitute): Move the cpu usage monitoring and fast decompression
switching logic here.

Change-Id: I4e80b457b55bcda8c0ff4ee224dd94a55e1b24fb
2026-01-28 17:44:56 +00:00
Christopher Baines
392cf48739 http-client: Alter http-fetch to return the response.
Rather than just the port and response-content-length.  I'm looking at using
the response headers within the substitute script to work out when to close
the connection.

* guix/http-client.scm (http-fetch): Return the response as the second value,
rather than the response-content-length.
* guix/build/download-nar.scm (download-nar): Adapt accordingly.
* guix/build/download.scm (url-fetch): Adapt accordingly.
* guix/scripts/substitute.scm (process-substitution): Adapt accordingly.
* guix/scripts/challenge.scm (call-with-nar): Adapt accordingly.

Change-Id: I490ecf7cef1f5ebbf1e6ed026f6a8fc9dacc56be
2026-01-28 17:44:56 +00:00
Christopher Baines
dd6ee2f53a scripts: substitute: Simplify with-timeout usage.
To reduce the codepaths in download-nar.

* guix/scripts/substitute.scm (with-timeout): Accept a #f duration and don't
set a timeout.
(download-nar): Remove the if for fetch-timeout.

Change-Id: I4e944a425a8612e96659dd84dd0e315012f080ab
2026-01-28 17:44:56 +00:00
Cayetano Santos
45469682c8 gnu: python-botorch: Update to 0.16.1.
* gnu/packages/machine-learning.scm (python-botorch): Update to 0.16.1.

Merges guix/guix!5935

Change-Id: I6d2d9d3b3071a7974a41020c2f42b4547cc92fcf
2026-01-28 14:16:43 +01:00
Cayetano Santos
e1890ff86f gnu: python-gpytorch: Update to 1.15.1.
* gnu/packages/machine-learning.scm (python-gpytorch): Update to 1.15.1.

Merges guix/guix!5935

Change-Id: I1b2d4b8937f74143910ba281f7496d4b1c10b81c
2026-01-28 14:16:35 +01:00
Cayetano Santos
f5dd93caf3 gnu: python-pynndescent: Update to 0.6.0.
* gnu/packages/machine-learning.scm (python-pynndescent): Update to 0.6.0.
[native-inputs]: Remove python-wheel.

Merges guix/guix!5935

Change-Id: Ib9dcb82bede9d2806c0e44c8b39c428aaac97804
2026-01-28 14:16:09 +01:00
Cayetano Santos
f18a45499a gnu: bowtie: Update to 2.5.4.
* gnu/packages/bioinformatics.scm (bowtie): Update to 2.5.4.
[source]: Use G-Expressions in ’snippet.
[arguments]: Use G-Expressions.
<#:make-flags>: Add CC.
<#:phases>: Add ’tests? arguments to ’check phase; add ’fix-prefix.
[inputs]: Drop variables, add onetbb, delete tbb-2020 and
python-wrapper.
[native-inputs]: Add python-wrapper, which and perl-file-which.

Merges guix/guix!5491

Change-Id: I12686b06911c11170748b64af722c5311b2e542d
2026-01-28 14:03:59 +01:00
Patrick Norton
adfeff04bc gnu: iotop: Update to 1.31.
* gnu/packages/linux.scm (iotop): Update to 1.31.

Closes: guix/guix#5961
Change-Id: I1f15cb19542d9be4a738adf113bded904e4d3b6a
Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
2026-01-28 18:31:55 +08:00
Ashish SHUKLA
039695115f gnu: knot: Update to 3.5.3.
* gnu/packages/dns.scm (knot): Update to 3.5.3.

Closes: guix/guix#5984
Change-Id: Iffe0cc8e828c99bd8c3345cbb656369425a438f0
Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
2026-01-28 18:31:51 +08:00
Thomas Kramer
33209c4ff5 gnu: Add python-gdstk.
* gnu/packages/electronics.scm (python-gdstk): New variable

Merges guix/guix!5798

Change-Id: I00e6ae26aaf741acd24caceba6d3181ab83ed692
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
2026-01-28 10:21:26 +01:00
Thomas Kramer
e3fe03c5ed gnu: Add gdstk.
* gnu/packages/electronics.scm (gdstk): New variable

Merges guix/guix!5798

Change-Id: Ic159f22e31fadb7f348bf768b1e23e0ef71d2331
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
2026-01-28 10:21:17 +01:00
Cayetano Santos
59dbdc642a gnu: emacs-lsp-mode: Update to 9.0.1-1.328c979.
* gnu/packages/emacs-xyz.scm (emacs-lsp-mode): Update to
9.0.1-1.328c979.
[arguments]: Update #:emacs.

Change-Id: I79a5da405f9ef77e9a8376db421c3709a69e2fb4
2026-01-28 09:07:27 +01:00
Ludovic Courtès
40c24a92af serialization: Use ‘bytevector-slice’ from Guile >= 3.0.9.
* guix/serialization.scm (sub-bytevector): Remove.
(read-byte-string): Use ‘bytevector-slice’.
* configure.ac: Require Guile 3.0.9.
* doc/contributing.texi (Requirements): Adjust accordingly.

Change-Id: I7aa11a2182530ea5131be591db03b17efb6847a4
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #4495
2026-01-27 13:01:14 +01:00
Ludovic Courtès
ab72a155c6 store: Move low-level protocol bit-twiddling to (guix remote-procedures).
* guix/store.scm (%protocol-version, %worker-magic-1, %worker-magic-2)
(protocol-major, protocol-minor, protocol-version): Move to…
* guix/remote-procedures.scm: … here.

Change-Id: Idbb23e63ab6314aa7e9ce0e3e5aa835be85c27d9
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-01-27 12:58:18 +01:00
Ludovic Courtès
68f1f74fb8 Define remote procedure interface in (guix remote-procedures).
* guix/store.scm (define-enumerate-type, operation-id)
(hash-algo, build-mode, gc-action): Remove.
(operation, define-operation): Remove.
(client-stub, define-client-stubs): New macros.
(%client-stubs): New variable.
<top level>: Call ‘visit-remote-procedures’.
(define-top-level-client-procedures): New macro.
<top level>: Call ‘define-top-level-client-procedures’.
(valid-path?, query-path-hash, query-path-info, ensure-path)
(find-roots, add-temp-root, add-indirect-root)
(references, referrers, valid-derivers, query-derivation-outputs)
(has-substitutes, substitutable-paths, substitutable-path-info)
(optimize-store, import-paths, query-failed-paths)
(clear-failed-paths, hash-path->path): Remove.
(set-build-options): Rewrite in terms of ‘set-options’.
(add-data-to-store): Rewrite in terms of ‘add-data-to-store/direct’.
(add-to-store, add-file-tree-to-store): Use ‘remote-procedure-id’ instead of
‘operation-id’.
(build-things): Rewrite in terms of ‘build-things/direct’.
(%built-in-builders): Rewrite in terms of ‘built-in-builders/direct’.
(verify-store): Rewrite in terms of ‘verify-store/direct’.
(run-gc): Rewrite in terms of ‘run-gc/direct’.
(export-path): Rewrite in terms of ‘export-path/direct’.
(substitute-urls): Rewrite in terms of ’substitute-urls/direct’.
* guix/remote-procedures.scm: New file.
* Makefile.am (MODULES): Add it.

Change-Id: I78b3d47e34205e8f8b93a51b273f56edc46e3902
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-01-27 12:58:18 +01:00
Ludovic Courtès
b67831bb6e store: Require a more recent minor version.
* guix/store.scm (open-connection): Require minor version #x61 or later.
(set-build-options): Remove now useless conditionals.
(build-things): Remove ‘build/old’ and the condition on the minor version.

Change-Id: I17835524ad7d69d29dba81292c6691212e200117
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-01-27 12:58:17 +01:00
Ludovic Courtès
40b525be02 store: Rewrite ‘run-gc’ client stub using ‘operation’.
* guix/store.scm (run-gc): Rewrite using ‘operation’.

Change-Id: I63c83604be22af83ada073993994e8695ab4e7b0
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-01-27 12:58:17 +01:00
Ludovic Courtès
4dd5fd2dff store: Remove unnecessary protocol version conditionals.
In commit 36457566f9 (2014), the
‘worker-protocol.hh’ defines #x10e as the protocol version.  Thus, minor
versions lower than 14 existed in Nix but never existed in Guix.

* guix/store.scm (open-connection): Ensure minor version >= 14.
(set-build-options): Remove unnecessary conditionals on
‘store-connection-minor-version’.
(run-gc): Likewise.

Change-Id: I5fc32fbdf7412150ac81543b5da17d2c6f3473a1
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-01-27 12:58:17 +01:00
Ludovic Courtès
132250beff serialization: Rename ‘string’ to ‘utf8-string’.
This avoids name clash with the ‘string’ binding of core Guile.

* guix/serialization.scm <top level>: Change ‘string’ to ‘utf8-string’.
* guix/store.scm (valid-path?, hash-part->path):
(add-data-to-store, add-indirect-root): Adjust operation specification
accordingly.

Change-Id: Ibf7c571ac46689c2870a2c6db6a3632405d47544
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-01-27 12:58:17 +01:00
Ludovic Courtès
0c1ea038e9 serialization: Formally declare serializable types.
* guix/serialization.scm (write-boolean, read-boolean)
(read-base16, write-base16): New procedures.
(<substitutable>, <path-info>): New record types.
(read-substitutable-path-list, read-path-info): New procedures.
(define-serializable-types): New macro.
<top level>: Use it.
* guix/store.scm (<substitutable>, <path-info>)
(read-substitutable-path-list, read-path-info): Move to serialization.scm.
(read-arg, write-arg): Remove.
* guix/store.scm (open-connection, process-stderr)
(add-to-store, add-file-tree-to-store, run-gc)
(export-path, export-paths): Use ‘write-value’ and ‘read-value’.
(store-path): Rename to…
(make-store-path): … this.
(output-path, fixed-output-path): Adjust accordingly.

Change-Id: I0b8863e48cb59205fa7812e8202f9a175ec8606b
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-01-27 12:58:17 +01:00
Clombrong
8dc57904e3 services: Add endlessh-service-type.
* docs/guix.texi: Document EndleSSH service and configuration.
* gnu/services/ssh.scm: New service.
* gnu/services/ssh.scm: Define shepherd service.

Merges: https://codeberg.org/guix/guix/pulls/5910
Co-Authored-By: Giacomo Leidi <therewasa@fishinthecalculator.me>
Change-Id: Ief4520b536276b88f2e5027ef0897bf84b2835df
Signed-off-by: Giacomo Leidi <therewasa@fishinthecalculator.me>
2026-01-27 11:46:03 +01:00
Daniel Khodabakhsh
3f5ebde420 gnu: Add node-typescript.
* gnu/packages/node-xyz.scm (node-typescript): New variable.

Change-Id: Ief680a973c6f4f98837db3b2b15109c10fda8c6e
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:46 +01:00
Daniel Khodabakhsh
116f04b948 gnu: Add node-types-source-map-support.
* gnu/packages/node-xyz.scm (node-types-source-map-support): New variable.

Change-Id: I4bfda700f971ad4b8ec2d04ff510e263f94d94bd
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:46 +01:00
Daniel Khodabakhsh
526e87d09f gnu: Add node-types-node.
* gnu/packages/node-xyz.scm (node-types-node): New variable.

Change-Id: I31801972ed59743856d56585aad450aa8368baea
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:46 +01:00
Daniel Khodabakhsh
ee7d8a74a6 gnu: Add node-chalk.
* gnu/packages/node-xyz.scm (node-chalk): New variable.

Change-Id: Ia267af1f10b4b322682ceb44d0bae7d9ee0dc30b
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:46 +01:00
Daniel Khodabakhsh
a93c9ae66c gnu: Add node-command-line-usage.
* gnu/packages/node-xyz.scm (node-command-line-usage): New variable.

Change-Id: I30410f1287e1a4aa07ea159e160bc7c6e79073ed
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:46 +01:00
Daniel Khodabakhsh
58e6543f6b gnu: Add node-hereby.
* gnu/packages/node-xyz.scm (node-hereby): New variable.

Change-Id: Ide051fbc2be3d80f70a45f1030211e20fbc9f9bf
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:46 +01:00
Daniel Khodabakhsh
5c98e5269a gnu: Add node-glob.
* gnu/packages/node-xyz.scm (node-glob): New variable.

Change-Id: I8a16ef870f604cac35cda534b49006c7f746895e
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
0342cecbac gnu: Add node-minimatch.
* gnu/packages/node-xyz.scm (node-minimatch): New variable.

Change-Id: Ided488ef27a54d680681d966845e6e8cee74c0f3
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
edaab3e577 gnu: Add node-table-layout.
* gnu/packages/node-xyz.scm (node-table-layout): New variable.

Change-Id: I52722b5c23f877e0e11efca970a55a9bff4941eb
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
3081706ffa gnu: Add node-wordwrapjs.
* gnu/packages/node-xyz.scm (node-wordwrapjs): New variable.

Change-Id: I7a85881db3e2ce9cd99517b655b53add55ee7158
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
46d3c833c6 gnu: Add node-ansi-styles.
* gnu/packages/node-xyz.scm (node-ansi-styles): New variable.

Change-Id: I5ea900aae7a16418d442de5cd058eed5e18a7cbc
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
c40a927df6 gnu: Add node-brace-expansion.
* gnu/packages/node-xyz.scm (node-brace-expansion): New variable.

Change-Id: I3d2d96c5a888d3e70ed23248e7e02b3a92ae14c2
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
2371b45028 gnu: Add node-fast-xml-parser.
* gnu/packages/node-xyz.scm (node-fast-xml-parser): New variable.

Change-Id: I1e569fed347895d0409b65110f184e90f7d9222c
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
6649e34002 gnu: Add node-minipass-7.
* gnu/packages/node-xyz.scm (node-minipass-7): New variable.

Change-Id: I9a7fa292a8117795959a3f45cb300d9e07fd6a45
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
aae52b37be gnu: Add node-path-scurry.
* gnu/packages/node-xyz.scm (node-path-scurry): New variable.

Change-Id: I39598efc068bc706a481d121f6b0c5615a83effc
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
6d11b2c0c0 gnu: Add node-pretty-ms.
* gnu/packages/node-xyz.scm (node-pretty-ms): New variable.

Change-Id: I77eb83b965af37f31076766d4a0e795e61d64ab7
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00
Daniel Khodabakhsh
efe368426f gnu: Add node-source-map-support.
* gnu/packages/node-xyz.scm (node-source-map-support): New variable.

Change-Id: Ie975afe66498a174a78536c0075c53306a73593d
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-01-27 10:39:45 +01:00