Subject: bug#64734: Recursive hackage import fails

From: Saku Laesvuori <[email-masked]>
Date: Wed, 19 Jul 2023 23:12:03 +0300

Importing hackage packages recursively fails with similar error to this:

```
$ guix import hackage linear-generics --recursive
Backtrace:
          11 (primitive-load "/home/saku/.config/guix/current/bin/gu…")
In guix/ui.scm:
   2309:7 10 (run-guix . _)
  2272:10  9 (run-guix-command _ . _)
In guix/scripts/import.scm:
    90:11  8 (guix-import . _)
In guix/scripts/import/hackage.scm:
   129:26  7 (guix-import-hackage . _)
In guix/import/utils.scm:
    651:3  6 (recursive-import _ #:repo->guix-package _ #:guix-name . #)
   613:31  5 (topological-sort _ #<procedure 7f8f515f4720 at guix/i…> …)
   655:29  4 (_ _)
In unknown file:
           3 (remove #<procedure 7f8f51610ce0 at guix/import/utils.…> …)
In guix/import/utils.scm:
   635:39  2 (exists? #<<upstream-input> name: "th-abstraction" dow…> …)
In guix/import/hackage.scm:
    128:6  1 (hackage-name->package-name #<<upstream-input> name: "t…>)
In unknown file:
           0 (string-prefix? "ghc-" #<<upstream-input> name: "th-ab…> …)

ERROR: In procedure string-prefix?:
In procedure string-prefix?: Wrong type argument in position 2 (expecting string): #<<upstream-input> name: "th-abstraction" downstream-name: "ghc-th-abstraction" type: regular min-version: any max-version: any>

```

I tried to find out what passes the `upstream-input` to
`hackage-name->package-name`, but only found out with `pk` that it seems
to only happen with the recursed dependencies and not with the root
package. I also tried to make `hackage-name->package-name` accept
`upstream-input` records but that a new error, so I assume the issue is
that something in the importer is returning `upstream-input` records
when it should return package names.

I could try to debug this further but I don't feel like I know enough
about debugging with guile nor about debugging scheme.