Commit Graph

5570 Commits

Author SHA1 Message Date
Christopher Baines
fbd61b5d3d
substitute: Remove buffer handling from fetch.
http-fetch does this, so just set the right option.

* guix/scripts/substitute.scm (fetch): Remove buffering code, and pass
 #:buffered? to http-fetch.
2021-02-22 20:43:09 +00:00
Ludovic Courtès
9a38bed2cf
packages: 'package-field-location' handles 'search-path' returning #f.
Fixes <https://bugs.gnu.org/46390>.
Reported by zimoun <zimon.toutoune@gmail.com>.

This is similar to the fix in d10474c38d.

* guix/packages.scm (package-field-location): Handle FILE not in %LOAD-PATH.
* tests/guix-lint.sh: Add test.
2021-02-22 12:07:45 +01:00
Brice Waegeneire
8a452e156e
ui: Fix typo in description.
* guix/ui.scm (switch-to-generation*): Fix typo in description.
2021-02-19 13:35:01 +01:00
Mathieu Othacehe
6e8cdf1d26
scripts: system: Accept <image> records as input.
* guix/scripts/system.scm (system-derivation-for-action): Replace "os"
argument by "image". Remove "image-size", "image-type", "label" and
"volatile-root?"  arguments.
(perform-action): Ditto.
(process-action): Construct the <image> record and pass it to "perform-action"
procedure.
* tests/guix-system.sh: Adapt accordingly.
* gnu/system/images/hurd.scm: Return the default image.
* gnu/system/images/novena.scm: Ditto.
* gnu/system/images/pine64.scm: Ditto.
* gnu/system/images/pinebook-pro.scm Ditto.
2021-02-17 10:57:02 +01:00
Mathieu Othacehe
ee2a5da80a
scripts: system: Remove 'vm-image' command.
Remove the 'vm-image' command that has been superseded by the 'image'
command.

* gnu/system/vm.scm (system-qemu-image): Remove it.
* guix/scripts/system.scm (system-derivation-for-action): Mark 'vm-image'
command as deprecated and use the image API to produce the VM image.
(perform-action, show-help): Adapt accordingly.
* tests/guix-system.sh: Ditto.
* doc/guix.texi (Invoking guix system,
Running Guix in a VM): Ditto.
* etc/completion/fish/guix.fish: Ditto.
* etc/completion/zsh/_guix: Ditto.
2021-02-17 10:52:28 +01:00
宋文武
858898e348
ftp-client: Before 'PASV', try 'EPSV' first for IPv6.
This fixes <https://bugs.gnu.org/46481>.

* guix/ftp-client.scm (ftp-epsv, ftp-passive): New procedures.
(ftp-list, ftp-retr): Replace call to 'ftp-pasv' with 'ftp-passive'.
2021-02-15 08:38:00 +08:00
Nicolas Goaziou
ab512c2104
import: crate: Use repository when home-page is unavailable
* guix/import/crate.scm (make-crate-sexp): Always use home-page, which is
properly set up by the caller.
(crate->guix-package): Make sure to use the repository when home-page is null.
2021-02-12 22:47:09 +01:00
宋文武
5207c5eb55
pull: Create the "${XDG_CONFIG_HOME}/guix" directory when needed.
This fixes <https://bugs.gnu.org/46269>.

* guix/scripts/pull.scm (ensure-default-profile): Add a 'mkdir-p' call before
'symlink'.
2021-02-12 20:54:33 +08:00
Lars-Dominik Braun
a643deac2d
environment: Allow starting from existing profile.
* guix/scripts/environment.scm (%options): Add -p/--profile switch.
(show-help): Document new switch.
(guix-environment): Handle new 'profile switch.

Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
2021-02-11 17:59:07 +08:00
Ludovic Courtès
18a4882e30
docker: Pass '--hard-dereference' to 'tar' to ensure reproducible builds.
Reported by zimoun at
<https://lists.gnu.org/archive/html/guix-devel/2021-02/msg00053.html>.

* guix/docker.scm (%tar-determinism-options): Add '--hard-dereference'.

Co-authored-by: zimoun <zimon.toutoune@gmail.com>
2021-02-08 23:50:35 +01:00
Leo Prikler
e1bdab4f0f
build-system: Add renpy-build-system.
* guix/build/renpy-build-system.scm: New file.
* guix/build-system/renpy.scm: New file.
* Makefile.am (MODULES): Add them here.
* doc/guix.texi (Build Systems): Document renpy-build-system.
2021-02-07 15:17:55 +01:00
Ludovic Courtès
fada92bb80
guix describe: 'display-profile-content' checks the right generation.
Fixes a regression introduced in
316fc2acbb, whereby 'guix pull -l' would
always display channel information corresponding to the latest profile
generation.

Reported by Vagrant Cascadian.

* guix/scripts/describe.scm (profile-generation-channels): New
procedure.
(display-profile-content): Change default value of 'channels'.
2021-02-05 23:15:36 +01:00
Ludovic Courtès
29009fdb2d
channels: Consider the current channel commit as authentic.
Fixes <https://bugs.gnu.org/45895>.

When the ~/.cache/guix/authentication is empty, this change allows
authentication to start at the current commit, as shown by 'guix
describe', instead of starting from the introductory commit, which would
take more and more time (there's currently 18K commits per year).

* guix/git-authenticate.scm (authenticate-repository): Add #:authentic-commits.
[authenticated-commits]: Append it.
* guix/channels.scm (authenticate-channel)[authentic-commits]: New
variable.  Pass it to 'authenticate-repository'.
2021-02-04 09:23:39 +01:00
Ludovic Courtès
55daad123e
build: Add '--with-channel-commit' and related configure flags.
Partially fixes <https://bugs.gnu.org/45896>.

* m4/guix.m4 (GUIX_CHANNEL_METADATA): New macro.
* configure.ac: Use it.
* guix/config.scm.in (%channel-metadata): Adjust accordingly.
2021-02-04 09:23:39 +01:00
Ludovic Courtès
316fc2acbb
channels: Record 'guix' channel metadata in (guix config).
Partially fixes <https://bugs.gnu.org/45896>.

* guix/config.scm.in (%channel-metadata): New variable.
* guix/describe.scm (channel-metadata): Use it.
(current-channels): New procedure.
(current-profile-entries): Clarify docstring.
* guix/self.scm (compiled-guix): Add #:channel-metadata and pass it to
'make-config.scm'.
(make-config.scm): Add #:channel-metadata and define '%channel-metadata'
in the generated file.
(guix-derivation): Add #:channel-metadata and pass it to 'compiled-guix'.
* guix/channels.scm (build-from-source): Replace 'name', 'source', and
'commit' parameters with 'instance'.  Pass #:channel-metadata to BUILD.
(build-channel-instance): Adjust accordingly.
* build-aux/build-self.scm (build-program): Add #:channel-metadata
and pass it to 'guix-derivation'.
(build): Add #:channel-metadata and pass it to 'build-program'.
* guix/scripts/describe.scm (display-profile-info): Add optional
'channels' parameter.  Pass it to 'display-profile-content'.
(display-profile-content): Add optional 'channels' parameter and honor
it.  Iterate on CHANNELS rather than on the manifest entries of
PROFILE.
(guix-describe): When PROFILE is #f, call 'current-channels' and pass it
to 'display-profile-info', unless it returns the empty list.
2021-02-04 09:23:39 +01:00
Ludovic Courtès
814ee99da8
store: 'store-path-hash-part' really returns false for invalid file names.
The "store-path-hash-part #f", due to a SRFI-64 bug, was marked as
successful even though 'store-path-hash-part' was throwing an exception.

* guix/store.scm (store-path-hash-part): Really return #f.
2021-02-04 09:23:38 +01:00
zimoun
f0a1a55c66
ui: Add hint for command typo.
* guix/ui.scm (command-hint): New variable
(run-guix-command): Use it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-02-03 12:41:29 +01:00
zimoun
0df4d5aa04
guix: scripts: Add hint for option typo.
* guix/scripts.scm (option-hint): New procedure.
(parse-command-line): Add 'option-hint'.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2021-02-03 12:41:28 +01:00
zimoun
9505b54a4f
utils: Add string distance.
* guix/utils.scm (string-distance): New procedure.
(string-closest): New procedure.
* tests/utils.scm ("string-distance", "string-closest"): New tests.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-02-03 12:41:28 +01:00
Christopher Baines
2d518f7eb5
guix: narinfo: Export narinfo-contents.
As this is useful if you want to work with narinfo signatures outside of Guix,
in the Guix Data Service for example.

* guix/narinfo.scm: Export narinfo-contents.
2021-02-02 19:29:52 +00:00
Maxim Cournoyer
889f425b35
import: gnu: Fix the detection of non-GNU packages.
* guix/import/gnu.scm (gnu->guix-package): Move the 'find-package' call before
the 'latest-release' call, which would fail when the package did not have an
entry on the FTP server.
2021-02-02 13:48:35 -05:00
Ludovic Courtès
aedbc5ff32
guix package: Add '--export-channels'.
* guix/channels.scm (sexp->channel): Export.
* guix/describe.scm: Use (guix channels).
(manifest-entry-provenance): New procedure.
* guix/scripts/package.scm (channel=?, export-channels): New
procedures.
(show-help, %options): Add '--export-channels'.
(process-query): Honor it.
* build-aux/build-self.scm (build-program)[select?]: Exclude (guix
channels) to account for the (guix describe) change above.
* doc/guix.texi (Invoking guix package): Document it.
2021-02-01 17:32:35 +01:00
Ludovic Courtès
60d72f5364
channels: Add 'channel->code'.
* guix/channels.scm (channel->code): New procedure, taken from...
* guix/scripts/describe.scm (channel->sexp): ... here.
Adjust callers accordingly.
2021-02-01 17:32:35 +01:00
Ludovic Courtès
1b88b7bad2
guix describe: Use 'manifest-entry-channel'.
* guix/channels.scm (manifest-entry-channel): Export.
* guix/scripts/describe.scm (display-profile-content): Use it.
2021-02-01 17:32:35 +01:00
Ludovic Courtès
a47f16a874
channels: Add the channel name to channel sexps.
* guix/channels.scm (channel-instance->sexp): Add 'name'.
(sexp->channel): Extract the name from SEXP, using the optional argument
as a fallback.
2021-02-01 17:32:35 +01:00
Ludovic Courtès
9272cc700e
channels: Factorize 'manifest-entry-channel' and channel serialization.
* guix/channels.scm (sexp->channel, manifest-entry-channel): New
procedures.
(profile-channels): Replace lambda by 'manifest-entry-channel'.
(channel-instance->sexp): New procedure.
(channel-instances->manifest)[instance->entry]: Use
'channel-instance->sexp' instead of inline code.
2021-02-01 17:32:35 +01:00
Ludovic Courtès
9fd7b050e2
guix package: Add '--export-manifest'.
* guix/scripts/package.scm (export-manifest): New procedure.
(show-help, %options): Add '--export-manifest'.
(process-query): Honor it.
* guix/build/profiles.scm (build-profile): Mention it.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Document it.
2021-02-01 17:32:35 +01:00
Ludovic Courtès
579506e272
utils: Add 'version-unique-prefix'.
* guix/utils.scm (version-unique-prefix): New procedure.
* tests/utils.scm ("version-unique-prefix"): New test.
2021-02-01 17:32:34 +01:00
Ludovic Courtès
b41e21488f
profiles: Add 'manifest->code'.
* guix/profiles.scm (manifest->code): New procedure.
* tests/profiles.scm ("manifest->code, simple")
("manifest->code, simple, versions")
("manifest->code, transformations"): New tests.
2021-02-01 17:32:31 +01:00
zimoun
60947257ae
scripts: import: json: Fix error handling.
Fixes partially <https://bugs.gnu.org/44115>.

* guix/scripts/import/json.scm (guix-import-json): Handle error.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-31 21:49:59 +01:00
zimoun
460e7d8bc9
import: gnu: Mention package name upon failure.
* guix/import/gnu.scm (gnu->guix-package): Use 'formatted-message' and
mention the package name in error messages.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-31 21:49:59 +01:00
zimoun
be84fc600e
gnu-maintenance: Fix error handling.
Fixes partially <https://bugs.gnu.org/44115>.

* guix/gnu-maintenance.scm (latest-release): Handle 'ftp-error'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-31 21:49:58 +01:00
Ludovic Courtès
13a7d2a538
database: Validate #:nar-size and #:time when registering store items.
* guix/store/database.scm (assert-integer): New procedure.
(update-or-insert): Use it to validate NAR-SIZE and TIME.
* tests/store-database.scm ("sqlite-register with incorrect size"): New
test.
2021-01-31 21:49:58 +01:00
Ludovic Courtès
9c4869fe9c
database: Remove workarounds unnecessary with guile-sqlite3 0.1.2.
* guix/store/database.scm (sqlite-exec, sqlite-finalize): Remove.
2021-01-31 21:49:58 +01:00
Ludovic Courtès
246c0c60da
ci: Add missing imports.
This is a followup to 041a9466ea.

* guix/ci.scm: Add missing imports.
* guix/channels.scm: Remove (guix ci) import.
2021-01-31 21:49:58 +01:00
Mathieu Othacehe
041a9466ea
guix: channels: Introduce "channel-with-substitutes-available".
* guix/channels.scm (find-latest-commit-with-substitutes,
channel-with-substitutes-available): New procedures.
* guix/scripts/pull.scm (guix-pull): Move "channel-list" call inside the
%current-system parameter scope.
* doc/guix.texi (Channels with substitutes): New section.
2021-01-31 18:36:42 +01:00
Ludovic Courtès
ede4a81947
guix system: Adjust 'upgrade-shepherd-services' to shepherd service change.
Fixes a regression introduced in 95f72dcd7a.

* guix/scripts/system/reconfigure.scm (upgrade-shepherd-services)[target-services]:
Add call to 'shepherd-configuration-services'.
2021-01-30 18:23:52 +01:00
Maxime Devos
95f72dcd7a
services: shepherd: Allow custom 'shepherd' package.
* gnu/services/shepherd.scm (<shepherd-configuration>): New record.
(shepherd-boot-gexp, shepherd-root-service-type): Use it.
(scm->go, shepherd-configuration-file): Allow passing custom
shepherd package.
* gnu/system.scm (operating-system-shepherd-service-names): Use the new
record.
* guix/scripts/system.scm (export-shepherd-graph): Adjust accordingly.
* doc/guix.texi (Shepherd Services). Document it.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2021-01-30 15:36:57 +01:00
nixo
ba093a6d27
build-system/julia: Don't rely on file name to set module name.
* guix/build/julia-build-system.scm (project.toml->name): New procedure.
  (precompile, check, julia-build): Accept new key argument #:julia-package-name.
* guix/build-system/julia.scm (julia-build): ... add it.
* doc/guix.texi (julia-build-system): Update julia-package-name accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-30 15:36:56 +01:00
nixo
a23b384f3f
build-system/julia: Enable tests.
* guix/build-system/julia.scm (julia-build): Set tests? default to #t.
* guix/build/julia-build-system.scm (check): Respect tests? and fix julia
  invocation.
  (%standard-phases): Add check phase after install.
* doc/guix.texi (julia-build-system): Update accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-30 15:36:56 +01:00
Ludovic Courtès
7cfd789150
inferior: Speed up 'cached-channel-instance' for cache hits.
That way a command like:

  guix time-machine --commit=5aeee07cc9 -- describe

goes from 3.4s to 0.5s on a cache hit, even slightly less when passing
the full commit ID.

* guix/inferior.scm (channel-full-commit): New procedure.
(cached-channel-instance): Remove 'instances' top-level variable.  Add
'commits' and use it for 'key'.  Move 'latest-channel-instances' call to
the cache miss case.
2021-01-29 12:09:11 +01:00
zimoun
95852b305b
ui: Look up extensions before built-in commands.
* guix/ui.scm (run-guix-command): Modify order so that extensions are allowed
to override default commands.

Co-authored-by: Ricardo Wurmus <rekado@elephly.net>
2021-01-28 15:07:55 +01:00
Ricardo Wurmus
446c711308
guix: Add Open Software License 2.1.
* guix/licenses.scm (osl2.1): New variable.
2021-01-28 15:07:55 +01:00
Ricardo Wurmus
09ab0d42b0
guix: Fix typo.
* guix/inferior.scm (inferior-available-packages): Remove extra word in
docstring.
2021-01-28 15:07:52 +01:00
Ludovic Courtès
0f20b3fa20
inferior: Memoize entries in 'inferior-package->manifest-entry'.
Fixes a performance issue as reported by Ricardo Wurmus
in <https://bugs.gnu.org/46100>.

* guix/inferior.scm (inferior-package->manifest-entry): Remove #:parent parameter.
[cache]: New variable.
[memoized]: New macro.
[loop]: New procedure.
2021-01-27 23:03:06 +01:00
Ludovic Courtès
7df3ab0f0d
store: Add 'find-roots' RPC.
* guix/serialization.scm (read-string-pairs): New procedure.
* guix/store.scm (read-arg): Add support for 'string-pairs'.
(find-roots): New procedure.
* tests/store.scm ("add-indirect-root and find-roots"): New test.
2021-01-22 08:36:03 +01:00
Ludovic Courtès
d4a562ba7a
Revert "substitute: Remove extra 'newline' call."
This reverts commit d5a1b0e86f.

This change turned out to be misguided; it would lead to "substitute:"
lines being printed on the client side, without anything beyond the
colon sign.
2021-01-21 00:14:38 +01:00
Ludovic Courtès
98d3abe744
repl: Fix exception handling for interpreted code.
The 'stack' variable could be #f when code is interpreted, which in
practice happens when running in "legacy" mode--i.e., when
'open-inferior' invokes "guile" instead of "guix repl".

* guix/repl.scm (send-repl-response)[handle-exception]: Check whether
STACK is true before passing it to 'stack->frames'.
* tests/inferior.scm ("&inferior-exception, legacy mode"): New test.
2021-01-21 00:14:38 +01:00
Ludovic Courtès
3d43b7aef3
import, swh: Adjust to Guile-JSON 4.5.x unspecified value handling.
* guix/import/cpan.scm (<cpan-release>)[home-page]: Add 'unspecified?'
case.
* guix/import/gem.scm (<gem>)[licenses]: Likewise.
(json->gem-dependency-list): Likewise.
* guix/swh.scm (<directory-entry>)[checksums]: Likewise.
2021-01-21 00:14:38 +01:00
Tobias Geerinckx-Rice
166ccaefe8
archive: Note service type in ACL hint.
* guix/scripts/archive.scm (authorize-key): Mention guix-service-type.
2021-01-20 18:49:29 +01:00