GNU bug report logs - #46303
Typo helper doesn't always know which command is missing

Previous Next

Package: guix;

Reported by: Leo Famulari <leo <at> famulari.name>

Date: Thu, 4 Feb 2021 19:54:02 UTC

Severity: normal

To reply to this bug, email your comments to 46303 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#46303; Package guix. (Thu, 04 Feb 2021 19:54:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Leo Famulari <leo <at> famulari.name>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Thu, 04 Feb 2021 19:54:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: zimoun <zimon.toutoune <at> gmail.com>
Cc: bug-guix <at> gnu.org
Subject: Typo helper doesn't always know which command is missing
Date: Thu, 4 Feb 2021 14:53:41 -0500
On Tue, Jan 19, 2021 at 10:28:08PM +0100, zimoun wrote:
> * guix/utils.scm (string-distance): New procedure.
> (string-closest): New procedure.
> * tests/utils.scm: Test it.

This is a great feature, but I found a tricky failure:

------
$ ./pre-inst-env guix system vm --no-grafts doc/os-config-bare-bones.texi --substitute-urls=https://ci.guix.gnu.org -d
guix: system: command not found                                                                                                          
hint: Did you mean `system'?

Try `guix --help' for more information.
$ guix environment guix
$ ./pre-inst-env guix system vm --no-grafts doc/os-config-bare-bones.texi -d
/gnu/store/pw453xpixcll02w1nz9mfggm2cn0jqpx-run-vm.sh.drv
------

It will only be seen by developers, so not a big deal, but it would
still be nice to correctly report which command is missing. Some
run-time dependency of guix is missing.




Information forwarded to bug-guix <at> gnu.org:
bug#46303; Package guix. (Thu, 04 Feb 2021 21:40:02 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: zimoun <zimon.toutoune <at> gmail.com>
To: Leo Famulari <leo <at> famulari.name>
Cc: bug-guix <at> gnu.org
Subject: Re: Typo helper doesn't always know which command is missing
Date: Thu, 04 Feb 2021 22:29:52 +0100
Hi Leo,

On Thu, 04 Feb 2021 at 14:53, Leo Famulari <leo <at> famulari.name> wrote:
> On Tue, Jan 19, 2021 at 10:28:08PM +0100, zimoun wrote:
>> * guix/utils.scm (string-distance): New procedure.
>> (string-closest): New procedure.
>> * tests/utils.scm: Test it.
>
> This is a great feature, but I found a tricky failure:
>
> ------
> $ ./pre-inst-env guix system vm --no-grafts doc/os-config-bare-bones.texi --substitute-urls=https://ci.guix.gnu.org -d
> guix: system: command not found                                                                                                          
> hint: Did you mean `system'?
>
> Try `guix --help' for more information.
> $ guix environment guix
> $ ./pre-inst-env guix system vm --no-grafts doc/os-config-bare-bones.texi -d
> /gnu/store/pw453xpixcll02w1nz9mfggm2cn0jqpx-run-vm.sh.drv
> ------
>
> It will only be seen by developers, so not a big deal, but it would
> still be nice to correctly report which command is missing. Some
> run-time dependency of guix is missing.

I am missing, because the command line is not wrong. :-)

Well, I am missing what you are suggesting.  I mean if “./pre-inst-env
guix <foo>” is run in an incorrect environment, then, I am not sure what
could be done.  How does it work with a commit which predates the hint
introduction?  How does it fail?  I guess it fails, if not I am missing
something. :-)


Basically, when “guix system” is called (or any other command), it
enters in ’run-guix-command’ and does this snippet:

--8<---------------cut here---------------start------------->8---
       (catch 'misc-error
         (lambda ()
           (resolve-interface `(guix scripts ,command)))
         (lambda _
           (let ((hint (command-hint command (commands))))
             (format (current-error-port)
                     (G_ "guix: ~a: command not found~%") command)
             (when hint
               (display-hint (format #f (G_ "Did you mean @code{~a}?")
                                     hint)))
             (show-guix-usage)))))
--8<---------------cut here---------------end--------------->8---

Therefore, it means that “(resolve-interface `(guix scripts ,command))”
fails for some reasons.  It seems really hard to catch the reasons.
Well, this cannot happen with regular “guix <foo>” otherwise it is
severe bug.  And in a developer setup, so much stuff could be wrong.

Well, these run-time dependencies could be checked by the script
“./pre-inst-env” but I do not know if it is worth.

Could you explain more what you would like?


On a side note, trying I get that the hint seems to work…

--8<---------------cut here---------------start------------->8---
$ guix system vm --no-grafts ~/src/guix/guix/doc/os-config-bare-bones.texi --substitute-urls=https://ci.guix.gnu.org --dry-run --derivatio
guix system: error: derivatio: unrecognized option
hint: Did you mean `derivation'?
--8<---------------cut here---------------end--------------->8---

…but not work for all the options:

--8<---------------cut here---------------start------------->8---
$ guix system vm --no-grafts ~/src/guix/guix/doc/os-config-bare-bones.texi --substitute-rls=https://ci.guix.gnu.org --dr-run --derivation
guix system: error: substitute-rls=https://ci.guix.gnu.org: unrecognized option
--8<---------------cut here---------------end--------------->8---

Another story than your report, right?


Cheers,
simon




This bug report was last modified 4 years and 128 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.