summaryrefslogtreecommitdiff
path: root/guix/inferior.scm
AgeCommit message (Expand)Author
2021-08-09inferior: 'cached-channel-instance' no longer calls 'show-what-to-build'....This allows the user of 'cached-channel-instance' to install the build handler of its choice. In particular, it allows "guix time-machine" to install a build notifier with the right options instead of using the defaults that 'cached-channel-instance' would pass to 'show-what-to-build*'. * guix/inferior.scm (cached-channel-instance): Remove call to 'show-what-to-build*'. (inferior-for-channels): Wrap body in 'with-build-handler'. * guix/scripts/time-machine.scm (guix-time-machine): Use 'with-build-handler'. Ludovic Courtès
2021-05-15inferior: Support querying package replacements....I'm looking at this to help with adding support for looking up package replacements to store in the Guix Data Service. * guix/inferior.scm (inferior-package-replacement): New procedure. * tests/inferior.scm ("inferior-package-replacement"): New test. Christopher Baines
2021-03-13inferior: Add <inferior> printer....This avoids printing the whole package table in backtraces and such. * guix/inferior.scm (write-inferior): New procedure. <top level>: Call 'set-record-type-printer!'. Ludovic Courtès
2021-03-10inferior: Use a safe symlink monadic procedure....This is a follow-up of 6ee7e3d26b8f5d2a234518cc2ab1bfeba7cd7c18. * guix/inferior.scm (cached-channel-instance): Introduce "symlink/safe" and use it instead of symlink. Remove the duplicated "file-exists?" call. Mathieu Othacehe
2021-03-10Revert "inferior: Break cached-channel-instance into two procedures."...This reverts commit 7d63b775513e7049047222dbe403a4181f63828d because it raises some concerns, see: https://lists.gnu.org/archive/html/guix-devel/2021-03/msg00124.html. Mathieu Othacehe
2021-03-10inferior: Fix concurrent cached-profile calls....* guix/inferior.scm (cached-profile): Do not create the profile symlink if it already exists. Mathieu Othacehe
2021-03-10inferior: Break cached-channel-instance into two procedures....Break cached-channel-instance into two different procedures: channels->cached-profile and instances->cached-profile operating respectively on channels and channels instances. * guix/inferior.scm (cached-channel-instance): Rename it into ... (cached-profile): ... this new procedure. (channels->cached-profile, instances->cached-profile): New procedures. * guix/scripts/time-machine.scm (guix-time-machine): Adapt accordingly. Mathieu Othacehe
2021-01-29inferior: 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. Ludovic Courtès
2021-01-28guix: Fix typo....* guix/inferior.scm (inferior-available-packages): Remove extra word in docstring. Ricardo Wurmus
2021-01-27inferior: 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. Ludovic Courtès
2020-12-19maint: Require Guile >= 2.2.6....* configure.ac: For Guile 2.2, require 2.2.6 or later. * guix/gexp.scm (define-syntax-parameter-once): Remove. Use 'define-syntax-parameter' instead. * guix/mnoads.scm: Likewise. * guix/inferior.scm (proxy)[select*]: Remove. * guix/scripts/publish.scm <top level>: Remove replacement for (@@ (web http) read-header-line). * guix/store/deduplication.scm (counting-wrapper-port): Remove. (nar-sha256): Call 'port-position' on PORT to compute SIZE. Ludovic Courtès
2020-07-25utils: Move <location> and '&error-location' to (guix diagnostics)....* guix/utils.scm (<location>, source-properties->location) (location->source-properties, &error-location): Move to... * guix/diagnostics.scm: ... here. * gnu.scm: Adjust imports accordingly. * gnu/machine.scm: Likewise. * gnu/system.scm: Likewise. * gnu/tests.scm: Likewise. * guix/inferior.scm: Likewise. * tests/channels.scm: Likewise. * tests/packages.scm: Likewise. Ludovic Courtès
2020-06-16time-machine: Add '--disable-authentication'....* guix/inferior.scm (cached-channel-instance): Add #:authenticate? and pass it to 'latest-channel-instances'. * guix/scripts/time-machine.scm (show-help, %options): Add '--disable-authentication'. (%default-options): Add 'authenticate-channels?'. (guix-time-machine): Honor it. Ludovic Courtès
2020-03-19inferior: '&inferior-exception' includes a stack trace....* guix/inferior.scm (port->inferior): Bump protocol to (0 1 1). (&inferior-exception)[stack]: New field. (read-repl-response): Recognize 'exception' form for protocol (0 1 1). * tests/inferior.scm ("&inferior-exception"): Check the value returned by 'inferior-exception-stack'. Ludovic Courtès
2020-03-19inferior: Adjust to protocol (0 1)....* guix/inferior.scm (port->inferior): For protocol (0 x ...), where x >= 1, send the (() repl-version ...) form. Ludovic Courtès
2020-03-12inferior: Distinguish inferior exceptions....This avoids ambiguities when looking at a backtrace where the exception was actually thrown by an inferior in a very different context. * guix/inferior.scm (&inferior-exception): New condition type. (read-repl-response): Add optional 'inferior' parameter. Raise '&inferior-exception' instead of rethrowing to KEY when receiving an 'exception' message. (read-inferior-response): Pass INFERIOR to 'read-repl-response'. * tests/inferior.scm ("&inferior-exception"): New test. Ludovic Courtès
2020-01-15More module autoload adjustments....This is a followup to 7a0836cffdfe3ab9ee899602f218277646959144. * guix/scripts/package.scm: Adjust binding list of the (guix store roots) autoload. * guix/inferior.scm: Adjust binding list of the (guix cache) autoload. Ludovic Courtès
2019-12-29inferior: Add 'inferior-package-provenance'....* guix/inferior.scm (inferior-package-provenance): New procedure. Ludovic Courtès
2019-11-15inferior: 'cached-channel-instance' takes an open store connection....* guix/inferior.scm (cached-channel-instance): Take an explicit 'store' argument. (inferior-for-channels): Wrap call to 'cached-channel-instance' in 'with-store'. * guix/time-machine.scm (guix-time-machine): Wrap call to 'cached-channel-instance' in 'with-store'. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Konrad Hinsen
2019-11-15Add 'guix time-machine'....* guix/scripts/time-machine.scm: New file. * Makefile.am: (MODULES): Add it. * guix/scripts/pull.scm (channel-list): Export. * guix/inferior.scm (cached-channel-instance): New procedure. (inferior-for-channels): Use it. * doc/guix.texi (Invoking guix time-machine): New section. (Channels): Cross-reference it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Konrad Hinsen
2019-10-15inferior: Set the error port when using older Guix versions....This makes the behaviour more consistent. * guix/inferior.scm (inferior-pipe): Wrap the second open-pipe* call with with-error-to-port, to match the first call to open-pipe*. Christopher Baines
2019-10-15inferior: Allow controlling the inferior error port....Previously, stderr for the inferior process would always be sent to /dev/null because the current-output-port when the process is launched is a void port. This change means that it's possible to pass in a different port to use. * guix/inferior.scm (inferior-pipe): Take the error-port as an argument. (open-inferior): Add new error-port keyword argument, with a default of (%make-void-port "w"). Christopher Baines
2019-10-01inferior: Change to use the (guix repl) module....Rather than (guix scripts repl), from which the machine-repl procedure was removed in [1]. 1: 92a4087bf4862d5ba9b77111eba3c68c2a1c4679 * guix/inferior.scm (inferior-pipe): Load (guix repl) rather than (guix scripts repl). Christopher Baines
2019-09-23inferior: Fix typo....* guix/inferior: Fix spelling of "specifications". Vagrant Cascadian
2019-09-21inferior: Propagate '&store-protocol-error' error conditions....Until now '&store-protocol-error' conditions raised in the inferior would not be correctly propagated because SRFI-35 records lack a read syntax. Reported at <https://bugs.gnu.org/37449> by Carl Dong <contact@carldong.me>. * guix/inferior.scm (port->inferior): Import (srfi srfi-34) in the inferior. (inferior-eval-with-store): Define 'error?' and 'error-message'. Wrap call to PROC in 'guard'. Check the response of INFERIOR for a 'store-protocol-error' or a 'result' tag. * tests/inferior.scm ("inferior-eval-with-store, &store-protocol-error"): New test. Ludovic Courtès
2019-07-04inferior: Add 'read-repl-response'....* guix/inferior.scm (read-repl-response): New procedure. (read-inferior-response): Use it. Ludovic Courtès
2019-03-08channels: Do not fail when the inferior lacks 'guix repl'....Fixes <https://bugs.gnu.org/34637>. Reported by Martin Flack <martin.flack@gmail.com>. Previously we'd fail to build the package cache for old versions of Guix that lack 'guix repl'. Now we simply ignore the issue and keep going without a cache. * guix/inferior.scm (gexp->derivation-in-inferior): Add #:silent-failure? and honor it. [drop-extra-keyword]: New procedure. Use it. * guix/channels.scm (package-cache-file): Pass #:silent-failure? #t. Ludovic Courtès
2019-02-12inferior: Add 'inferior-available-packages'....* guix/inferior.scm (inferior-available-packages): New procedure. * tests/inferior.scm ("inferior-available-packages"): New test. Ludovic Courtès
2019-01-21store: Rename <nix-server> to <store-connection>....* guix/store.scm (<nix-server>): Rename to... (<store-connection>): ... this. Adjust users accordingly. (nix-server?, nix-server-major-version) (nix-server-minor-version, nix-server-socket) (nix-server-version): Define as deprecated aliases. * guix/inferior.scm: Adjust accordingly. * guix/ssh.scm: Likewise. Ludovic Courtès
2019-01-20inferior: 'gexp->derivation-in-inferior' honors EXP's load path....Previously the imported modules and extensions of EXP would be missing from the load path of 'guix repl'. * guix/inferior.scm (gexp->derivation-in-inferior)[script]: New variable. [trampoline]: Write (primitive-load #$script) to PIPE. Add #$output. * tests/channels.scm ("channel-instances->manifest")[depends?]: Check for requisites rather than direct references. Adjust callers accordingly. Ludovic Courtès
2019-01-15inferior: Add 'gexp->derivation-in-inferior'....* guix/inferior.scm (gexp->derivation-in-inferior): New procedure. Ludovic Courtès
2019-01-09Remove most uses of the _IO*F constants....These constants, for use with 'setvbuf', were deprecated in Guile 2.2 and disappeared in Guile 3.0. Here we keep these constants in build-side code where removing them is not feasible. * guix/build/download-nar.scm (download-nar): Adjust 'setvbuf' calls to the Guile 2.2+ API. * guix/build/download.scm (open-socket-for-uri): Likewise. (open-connection-for-uri, url-fetch): Likewise. * guix/build/make-bootstrap.scm (make-stripped-libc): Likewise. * guix/build/union.scm (setvbuf) [guile-2.0]: New conditional wrapper. (union-build): Adjust to new API. * guix/ftp-client.scm (ftp-open, ftp-list, ftp-retr): Likewise. * guix/http-client.scm (http-fetch): Likewise. * guix/inferior.scm (proxy): Likewise. * guix/scripts/substitute.scm (fetch, http-multiple-get): Likewise. * guix/self.scm (compiled-modules): Likewise. * guix/ssh.scm (remote-daemon-channel, store-import-channel) (store-export-channel): Likewise. * guix/ui.scm (initialize-guix): Likewise. * tests/publish.scm (http-get-port): Likewise. * guix/store.scm (%newlines): Adjust comment. Ludovic Courtès
2019-01-09maint: Remove 'cond-expand' forms for Guile 2.0....Note: Leave 'cond-expand' forms used in the build-side modules that can run on %BOOTSTRAP-GUILE, which is currently Guile 2.0. * guix/build/compile.scm: Move 'use-modules' clause from 'cond-expand' to 'define-module' form. (%default-optimizations): Remove 'cond-expand'. * guix/build/download.scm (tls-wrap): Remove 'cond-expand'. * guix/build/syscalls.scm: Remove 'cond-expand' form around '%set-automatic-finalization-enabled?!' and 'without-automatic-finalization'. * guix/inferior.scm (port->inferior): Remove 'cond-expand'. * guix/scripts/pack.scm (wrapped-package)[build]: Remove 'cond-expand'. * guix/status.scm (build-event-output-port): Remove 'cond-expand'. * guix/store.scm (open-inet-socket): Remove 'cond-expand'. * guix/ui.scm (install-locale): Remove 'cond-expand'. * tests/status.scm ("current-build-output-port, UTF-8 + garbage"): Remove 'cond-expand'. * tests/store.scm ("current-build-output-port, UTF-8 + garbage"): Remove 'cond-expand'. Ludovic Courtès
2018-12-24ssh: Add 'remote-inferior'....* guix/inferior.scm (<inferior>)[close]: New field. (port->inferior): New procedure. (open-inferior): Rewrite in terms of 'port->inferior'. (close-inferior): Honor INFERIOR's 'close' field. (inferior-eval-with-store): Add FIXME comment. * guix/ssh.scm (remote-inferior): New procedure. Ludovic Courtès
2018-11-28inferior: Add 'inferior-eval-with-store'....* guix/inferior.scm (inferior-eval-with-store): New procedure, with code formerly in 'inferior-package-derivation'. (inferior-package-derivation): Rewrite in terms of 'inferior-eval-with-store'. * tests/inferior.scm ("inferior-eval-with-store"): New test. Ludovic Courtès
2018-09-21inferior: Add 'inferior-for-channels'....* guix/inferior.scm (%inferior-cache-directory): New variable. (inferior-for-channels): New procedure. Ludovic Courtès
2018-09-21inferior: Add 'inferior-package->manifest-entry'....* guix/inferior.scm (inferior-package->manifest-entry): New procedure. * tests/inferior.scm (manifest-entry->list): New procedure. ("inferior-package->manifest-entry"): New test. Ludovic Courtès
2018-09-21inferior: Add 'inferior-package-search-paths' & co....* guix/inferior.scm (%inferior-package-search-paths) (inferior-package-native-search-paths) (inferior-package-search-paths) (inferior-package-transitive-native-search-paths): New procedures. * tests/inferior.scm ("inferior-package-search-paths"): New test. Ludovic Courtès
2018-09-21inferior: Add 'inferior-package-inputs' & co....* guix/inferior.scm (open-inferior): Use (ice-9 match). (inferior-package-input-field, inferior-package-inputs): (inferior-package-native-inputs) (inferior-package-propagated-inputs) (inferior-package-transitive-propagated-inputs): New procedures. * tests/inferior.scm ("inferior-package-inputs"): New test. inputs fixlet Ludovic Courtès
2018-09-21inferior: Add 'lookup-inferior-packages'....* guix/inferior.scm (<inferior>)[packages, table]: New fields. (open-inferior): Initialize these new fields. (inferior-packages): Rename to... (%inferior-packages): ... this. (inferior-packages): New procedure; force the promise. (%inferior-package-table, lookup-inferior-packages): New procedures. * tests/inferior.scm ("lookup-inferior-packages") ("lookup-inferior-packages and eq?-ness"): New tests. Ludovic Courtès
2018-09-21inferior: Add 'inferior-package-derivation'....* guix/inferior.scm (read-inferior-response) (send-inferior-request): New procedures. (inferior-eval): Rewrite in terms of these. (proxy, inferior-package-derivation, inferior-package->derivation) (package-compiler): New procedures. * tests/inferior.scm ("inferior-package-derivation"): New test. Ludovic Courtès
2018-09-04inferior: Add home-page and location package accessors....* guix/inferior.scm (inferior-package-home-page) (inferior-package-location): New procedures. * tests/inferior.scm ("inferior-packages"): Test them. Ludovic Courtès
2018-08-21inferior: Adjust for Guile 2.0....Partly fixes <https://bugs.gnu.org/32326>. Reported by Michael Bowcutt <mbowcutt@riseup.net>. * guix/inferior.scm (open-inferior): Wrap 'setvbuf' call in 'cond-expand'. Ludovic Courtès
2018-07-13Add (guix inferior) and (guix scripts repl)....* guix/inferior.scm, guix/scripts/repl.scm, tests/inferior.scm: New files. * Makefile.am (MODULES): Add 'guix/scripts/repl.scm' and 'guix/inferior.scm'. (SCM_TESTS): Add 'tests/inferior.scm'. * doc/guix.texi (Invoking guix repl): New node. Ludovic Courtès