Subject: [PATCH] import: go: Fix match-error in 'go-package-description'

From: Sarah Morgensen <[email-masked]>
Date: Wed, 23 Jun 2021 15:46:46 -0700

* guix/import/go.scm (go-package-description): Make sure description* is
always a list, so the result is properly matched.
---
Hello Guix,

In the process of using `guix import go` I encountered a rare issue when the
go.pkg.dev Documentation and UnitInfo sections for a package are both blank:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix import go github.com/neelance/sourcemap
Backtrace:
In ice-9/boot-9.scm:
  1752:10  7 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           6 (apply-smob/0 #<thunk 7fd10955ef60>)
In ice-9/boot-9.scm:
    724:2  5 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8  4 (_ #(#(#<directory (guile-user) 7fd109558c80>)))
In guix/ui.scm:
  2147:12  3 (run-guix-command _ . _)
In guix/scripts/import.scm:
   120:11  2 (guix-import . _)
In guix/scripts/import/go.scm:
   118:27  1 (guix-import-go . _)
In guix/import/go.scm:
    191:4  0 (go-module->guix-package _ #:goproxy _ #:version _ # _)

guix/import/go.scm:191:4: In procedure go-module->guix-package:
Throw to key `match-error' with args `("match" "no matching pattern" #f)'.
--8<---------------cut here---------------end--------------->8---

Looks like the error is due to using false where the empty list was expected.
This tiny patch fixes that. Copyright for go.scm was added in
<https://issues.guix.gnu.org/49196>.

Sarah

 guix/import/go.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/guix/import/go.scm b/guix/import/go.scm
index d110954664..cf8c62abe2 100644
--- a/guix/import/go.scm
+++ b/guix/import/go.scm
@@ -186,8 +186,9 @@ e.g. \"google.golang.org/protobuf/proto\"."
          (description (if (not (null? overview))
                           overview
                           (select-content sxml)))
-         (description* (and (not (null? description))
-                            (first description))))
+         (description* (if (not (null? description))
+                           (first description)
+                           description)))
     (match description*
       (() #f)                           ;nothing selected
       ((p elements ...)

base-commit: 1f3d7b45349d43e5cc02594083e0cd44ef730992
-- 
2.31.1