Subject: guix import go fails when module does not have a documenation on pkg.go.dev
From: Björn Höfling <[email-masked]>
To: <[email-masked]>
Date: Sat, 26 Jun 2021 00:30:47 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

$ ./pre-inst-env guix import go github.com/caspr-io/yamlpath 
go-module->guix-package module-path: github.com/caspr-io/yamlpath
Backtrace:
In ice-9/boot-9.scm:
  1752:10  8 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           7 (apply-smob/0 #<thunk 7f370ddfc0c0>)
In ice-9/boot-9.scm:
    724:2  6 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
In ice-9/eval.scm:
    619:8  5 (_ #(#(#<directory (guile-user) 7f370de02c80>)))
In guix/ui.scm:
  2147:12  4 (run-guix-command _ . _)
In guix/scripts/import.scm:
   120:11  3 (guix-import . _)
In guix/scripts/import/go.scm:
   118:27  2 (guix-import-go . _)
In ice-9/eval.scm:
   293:34  1 (_ #(#(#(#(#(#(#(#(#(#(#(?) ?) ?) ?) ?) ?) ?) ?) ?) ?) ?))
    619:8  0 (_ #(#(#<directory (guix import go) 7f370b75a6e0> #f)))

ice-9/eval.scm:619:8: Throw to key `match-error' with args `("match" "no matching pattern" #f)'.

If you look at the page

https://pkg.go.dev/github.com/caspr-io/yamlpath

It has no Description, because the site cannot parse license
information correctly and thus conservatively does not display any info.

Can be trivially fixed with this:

diff --git a/guix/import/go.scm b/guix/import/go.scm
index d110954664..10095b9d24 100644
--- a/guix/import/go.scm
+++ b/guix/import/go.scm
@@ -190,6 +194,7 @@ e.g. \"google.golang.org/protobuf/proto\"."
                             (first description))))
     (match description*
       (() #f)                           ;nothing selected
+      (#f #f)
 
Hope this is independent of the other go-importer-bugs we have, like:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49202
http://issues.guix.gnu.org/issue/45984

Additionally, it would be nice if the go-module->guix-package would
print out the module it would fetch next (like I did above). Then the
broken module would be easier to find in recursive mode.

Björn