[PATCH v2] scripts: repl: Extend REPL %load-path with all channels.

  • Open
  • quality assurance status badge
Details
3 participants
  • Andrew Tropin
  • Ludovic Courtès
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal
Merged with
S
S
Simon Tournier wrote on 17 Feb 2023 15:56
(name . Josselin Poiret)(address . dev@jpoiret.xyz)
20230217145627.85062-1-zimon.toutoune@gmail.com
Reported by ??? <iyzsong@envs.net>.

* guix/scripts/repl.scm (define-command): Before starting the REPL,
run (current-profile) which makes available all channels.
---

Hi,

Instead I am proposing this, it avoids to load all the module.

For testing, once applied to some Guix checkout, just run:

$ ./pre-inst-env guix pull --disable-authentication -C /tmp/channels.scm -p /tmp/new
$ echo '(use-modules (rde features))' | /tmp/new/bin/guix repl /dev/stdin

where /tmp/channels.scm reads,

(list
(channel
(name 'rde)
(introduction
(make-channel-introduction
"257cebd587b66e4d865b3537a9a88cccd7107c95"
(openpgp-fingerprint
"2841 9AC6 5038 7440 C7E9 2FFA 2208 D209 58C1 DEB0"))))
(channel
(name 'guix)
(url "/home/simon/src/guix/guix")))

tweaking the path to your Guix checkout.

Cheers,
simon


guix/scripts/repl.scm | 1 +
1 file changed, 1 insertion(+)

Toggle diff (16 lines)
diff --git a/guix/scripts/repl.scm b/guix/scripts/repl.scm
index 787c63d48e..fc55d79c41 100644
--- a/guix/scripts/repl.scm
+++ b/guix/scripts/repl.scm
@@ -211,6 +211,7 @@ (define script
((guile)
(save-module-excursion
(lambda ()
+ (current-profile) ;Run (%package-module-path) as explained above.
(set-user-module)
;; Do not exit repl on SIGINT.
((@@ (ice-9 top-repl) call-with-sigint)

base-commit: cb45e9d0dc6cbe6f69a858f71252411610b4ce82
--
2.38.1
S
S
Simon Tournier wrote on 17 Feb 2023 16:10
control message for bug #61574
(address . control@debbugs.gnu.org)
87v8k05nvq.fsf@gmail.com
merge 61574 61343
quit
L
L
Ludovic Courtès wrote on 27 Feb 2023 15:01
Re: bug#61574: [PATCH v2] scripts: repl: Extend REPL %load-path with all channels.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87sferky1k.fsf@gnu.org
Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (6 lines)
> Reported by ??? <iyzsong@envs.net>.
>
> * guix/scripts/repl.scm (define-command): Before starting the REPL,
> run (current-profile) which makes available all channels.

[...]

Toggle quote (7 lines)
> +++ b/guix/scripts/repl.scm
> @@ -211,6 +211,7 @@ (define script
> ((guile)
> (save-module-excursion
> (lambda ()
> + (current-profile) ;Run (%package-module-path) as explained above.

I tweaked the comment :-) and applied.

Thanks!

Ludo’.
Closed
A
A
Andrew Tropin wrote on 2 Mar 2023 14:44
Re: bug#61343: bug#61574: [PATCH v2] scripts: repl: Extend REPL %load-path with all channels.
87o7pbs1xn.fsf@trop.in
On 2023-02-27 15:01, Ludovic Courtès wrote:

Toggle quote (23 lines)
> Hi Simon,
>
> Simon Tournier <zimon.toutoune@gmail.com> skribis:
>
>> Fixes <https://bugs.gnu.org/61343>.
>> Reported by ??? <iyzsong@envs.net>.
>>
>> * guix/scripts/repl.scm (define-command): Before starting the REPL,
>> run (current-profile) which makes available all channels.
>
> [...]
>
>> +++ b/guix/scripts/repl.scm
>> @@ -211,6 +211,7 @@ (define script
>> ((guile)
>> (save-module-excursion
>> (lambda ()
>> + (current-profile) ;Run (%package-module-path) as explained above.
>
> I tweaked the comment :-) and applied.
>
> Thanks!

Hi Simon and Ludo!

Thank you for the patch, I also faced this problem and it seems this
change doesn't fix it.

echo '(use-modules (rde features))' | guix repl /dev/stdin

still fails on a7763e067d86908210758aab80d33e4f8b815b1c.

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmQAqDQACgkQIgjSCVjB
3rDE6A//axSFCBoXmlCd7bxMl8moMOE19oPSgDYEJ7Ms5NuGSwpSuVctJHJy5Xf4
L7gdFMv5LZ8My8lJ3CsaYkpOXU1pl1wSqAp1zm+b5i7ORffqx/QBEknJeRBFv9d/
nElIWkIlgkg1d0CDs34afomcVy85CCpZ0IXq82aiTi3WXRwlftqevClxPScws8/P
/B/HCPe45TCxgkFycdJDckM2WhOHvhCp8oZZmZa5jDzOmamr9vj/ZXA/oySueC3u
fuLfaHKReT9+r4al92KGGjow0ezHZVzxV27ZHIRQD2ZUAomvlwV/yL1BNg590MIM
p/6i/wGvLMlUbugFyJuHU0Xu/ge71JxCsm3kV2qBGzBFJAeaj+/Z47frLsyxWQTx
+cILD5AHwtTXyFoOGK+F9gLeCU8FNEQRBtlbgfLMjkin7aQBUPFDGOgMpXGAVpfI
PYprUfVTyrE49uv68z58DXocnQsJ2Sx5BrSbxMtcXizbx2XBsX9Cr+1KNMZ5jLHy
VWUHJHJETDrOvdQOhHumPVF8EWZ0SnMXtxgeMUaDmQQriHQuhvAxNWhUkHOlHOOl
vLXQVPs+wS7GEZhP3eJX3DUrvvUkeTVtsnswDQUS2wX6rs/ujKaSDhK9c0nCcRkt
hbO8STr6XgKrPxeoRjtMohp198MBsW0aFcLpjhUreswSD3W8z5U=
=BP2f
-----END PGP SIGNATURE-----

Closed
S
S
Simon Tournier wrote on 2 Mar 2023 20:48
Re: bug#61574: bug#61343: bug#61574: [PATCH v2] scripts: repl: Extend REPL %load-path with all channels.
87cz5rdjew.fsf@gmail.com
Hi,

I reopen the bug.

On jeu., 02 mars 2023 at 17:44, Andrew Tropin <andrew@trop.in> wrote:

Toggle quote (3 lines)
> Thank you for the patch, I also faced this problem and it seems this
> change doesn't fix it.

Indeed. I have no clue what I messed up. Since I removed the Git
worktree, I am not able to investigate the root of my mistake. I
remember running with ’guix repl -q’ for avoiding spurious ~/.guile
configuration and I remember running “./pre-inst-env guix pull -p
/tmp/new” and checking. Hum?! Anyway!

My apologies.

Back to the issue:

1. The patch does not tweak ’guix repl script.scm’ but only the
interactive part – which also has the issue, I guess.

2. The culprit seems (current-profile) which does not correctly load
%package-module-path as the comment is suggesting,

;; This in turn ensures that
;; (%package-module-path) will contain entries for the channels
;; available in the current profile.


Adding (gnu packages) as Josselin suggested but commenting
(current-profile) make channels available both for scripts and
interactive. For instance this patch works, which means something is
buggy somewhere.

Toggle snippet (35 lines)
1 file changed, 5 insertions(+), 2 deletions(-)
guix/scripts/repl.scm | 7 +++++--

modified guix/scripts/repl.scm
@@ -22,6 +22,7 @@ (define-module (guix scripts repl)
#:use-module (guix ui)
#:use-module (guix scripts)
#:use-module (guix repl)
+ #:use-module (gnu packages)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-37)
@@ -193,7 +194,8 @@ (define script
;; 'set-program-arguments'. This in turn ensures that
;; (%package-module-path) will contain entries for the channels
;; available in the current profile.
- (current-profile)
+ (pk 'script)
+ ;(current-profile)
(set-program-arguments script)
(set-user-module)
@@ -211,7 +213,8 @@ (define script
((guile)
(save-module-excursion
(lambda ()
- (current-profile) ;Run (%package-module-path) as explained above.
+ (pk 'no-script)
+ ;(current-profile) ;Run (%package-module-path) as explained above.
(set-user-module)
;; Do not exit repl on SIGINT.
((@@ (ice-9 top-repl) call-with-sigint)


Well, I have tried to debug by adding ’pk’ around but I often get error
when “Computing Guix derivation”. Well, the test-error is a long
process here. :-)

As discussed in #42688 [1], instead of
1b179d7876f19f04009a2f9e248ac10711f4c660, the plain call to
(%package-module-path) – instead of (current-profile) – fixes the issue.

This patch works and avoids the full load of (gnu packages), I guess
twice. :-)

Toggle snippet (34 lines)
1 file changed, 3 insertions(+), 3 deletions(-)
guix/scripts/repl.scm | 6 +++---

modified guix/scripts/repl.scm
@@ -27,7 +27,7 @@ (define-module (guix scripts repl)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
#:use-module (rnrs bytevectors)
- #:autoload (guix describe) (current-profile)
+ #:autoload (gnu packages) (%package-module-path)
#:autoload (system repl repl) (start-repl)
#:autoload (system repl server)
(make-tcp-server-socket make-unix-domain-server-socket)
@@ -193,7 +193,7 @@ (define script
;; 'set-program-arguments'. This in turn ensures that
;; (%package-module-path) will contain entries for the channels
;; available in the current profile.
- (current-profile)
+ (%package-module-path)
(set-program-arguments script)
(set-user-module)
@@ -211,7 +211,7 @@ (define script
((guile)
(save-module-excursion
(lambda ()
- (current-profile) ;Run (%package-module-path) as explained above.
+ (%package-module-path)
(set-user-module)
;; Do not exit repl on SIGINT.
((@@ (ice-9 top-repl) call-with-sigint)


S
S
Simon Tournier wrote on 2 Mar 2023 19:04
control message for bug #61574
(address . control@debbugs.gnu.org)
871qm7f2s9.fsf@gmail.com
reopen 61574
tags 61574 - fixed patch
quit
L
L
Ludovic Courtès wrote on 3 Mar 2023 12:14
Re: bug#61574: bug#61343: bug#61574: [PATCH v2] scripts: repl: Extend REPL %load-path with all channels.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
875ybixf2f.fsf@gnu.org
Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (20 lines)
> 1 file changed, 3 insertions(+), 3 deletions(-)
> guix/scripts/repl.scm | 6 +++---
>
> modified guix/scripts/repl.scm
> @@ -27,7 +27,7 @@ (define-module (guix scripts repl)
> #:use-module (srfi srfi-37)
> #:use-module (ice-9 match)
> #:use-module (rnrs bytevectors)
> - #:autoload (guix describe) (current-profile)
> + #:autoload (gnu packages) (%package-module-path)
> #:autoload (system repl repl) (start-repl)
> #:autoload (system repl server)
> (make-tcp-server-socket make-unix-domain-server-socket)
> @@ -193,7 +193,7 @@ (define script
> ;; 'set-program-arguments'. This in turn ensures that
> ;; (%package-module-path) will contain entries for the channels
> ;; available in the current profile.
> - (current-profile)
> + (%package-module-path)

Per the comment right above, this change would break the program name
memoization, wouldn’t it?

Ludo’.
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 61574@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 61574
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch