* bug#71979: (file-name->module-name (location-file (package-location pkg))) returns wrong module
2024-07-18 15:34 ` Ludovic Courtès
@ 2024-07-18 21:21 ` Tomas Volf
0 siblings, 0 replies; 3+ messages in thread
From: Tomas Volf @ 2024-07-18 21:21 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 71979
[-- Attachment #1: Type: text/plain, Size: 4173 bytes --]
Hello Ludo',
On 2024-07-18 17:34:08 +0200, Ludovic Courtès wrote:
> Hi Tomas,
>
> Tomas Volf <~@wolfsden.cz> skribis:
>
> > when I try to use the above, it returns wrong module. The module returned is
> > prefixed by #{.}# symbol. Full reproducer:
> >
> > (define-module (xx)
> > #:use-module (guix)
> > #:use-module (guix modules)
> > #:use-module (guix utils))
> >
> > (define-public pkg
> > (package
> > (name "foo")
> > (version #f)
> > (source #f)
> > (build-system #f)
> > (synopsis #f)
> > (description #f)
> > (license #f)
> > (home-page #f)))
> >
> > (pk (file-name->module-name (location-file (package-location pkg))))
> >
> > Now just run it:
> >
> > $ GUILE_AUTO_COMPILE=0 guile -L . -c '(use-modules (xx))'
> >
> > ;;; ((#{.}# xx))
> >
> > Notice that the module is not just (xx) as it should have been.
>
> Oh, good catch.
>
> I went ahead and pushed a fix as
> e3dfed59d39ac60dd2e2b9ef9f4ef63a2a081f41. Let me know if you find
> anything wrong!
Thank you for the fix. I can confirm (using the original reproducer) that it
works when run from guix repl:
$ GUILE_AUTO_COMPILE=0 guix repl -qL .
GNU Guile 3.0.9
Copyright (C) 1995-2023 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guix-user)> ,use (xx)
;;; ((xx))
However there seem to be few more edge cases that are still not working.
Dot multiple times:
$ GUILE_AUTO_COMPILE=0 guix repl -qL ././.
GNU Guile 3.0.9
Copyright (C) 1995-2023 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guix-user)> ,use (xx)
;;; ((#{.}# #{.}# xx))
Double-dot:
$ GUILE_AUTO_COMPILE=0 guix repl -qL ../tmp
GNU Guile 3.0.9
Copyright (C) 1995-2023 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guix-user)> ,use (xx)
;;; ((.. tmp xx))
Should I report those as separate bugs? Or do you think I should just re-open
this one?
Side-note: I have to say I am confused about behavior of guix repl with
/dev/stdin. Everything seems to work there:
$ echo '(use-modules (xx))' | GUILE_AUTO_COMPILE=0 guix repl -L . /dev/stdin
;;; ((xx))
$ echo '(use-modules (xx))' | GUILE_AUTO_COMPILE=0 guix repl -L ././. /dev/stdin
;;; ((xx))
$ echo '(use-modules (xx))' | GUILE_AUTO_COMPILE=0 guix repl -L ../tmp /dev/stdin
;;; ((xx))
I have no idea why. I would also try -c as I did in my original reproduces, but
guix repl does not support it (I wonder why).
For completeness' sake I am including original message I wrote before trying
`guix repl' and therefore writing the above text instead:
However I am unsure whether it works. I pulled the Guix channel:
$ guix describe
Generation 1 Jul 18 2024 18:44:20 (current)
guix e3dfed5
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: e3dfed59d39ac60dd2e2b9ef9f4ef63a2a081f41
As far as I can tell that commit should include your fix (or even better, that
commit is your fix). However when I try the reproducer from the original bug
report, I am still getting:
$ GUILE_AUTO_COMPILE=0 guile -L . -c '(use-modules (xx))'
;;; ((#{.}# xx))
>
> Thanks,
> Ludo’.
--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread