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

2023-03-03 Thread Ludovic Courtès
Simon Tournier  skribis:

> 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’.





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

2023-03-02 Thread Simon Tournier
Hi,

I reopen the bug.

On jeu., 02 mars 2023 at 17:44, Andrew Tropin  wrote:

> 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.

--8<---cut here---start->8---
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)
--8<---cut here---end--->8---


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. :-)

--8<---cut here---start->8---
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)
--8<---cut here---end--->8---


1: 


Cheers,
simon





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

2023-03-02 Thread Andrew Tropin
On 2023-02-27 15:01, Ludovic Courtès wrote:

> Hi Simon,
>
> Simon Tournier  skribis:
>
>> Fixes .
>> Reported by 宋文武 .
>>
>> * 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


signature.asc
Description: PGP signature