Subject: Re: bug#61033: opam importer can't handle list field

From: Julien Lepiller <[email-masked]>
Date: Sat, 28 Jan 2023 13:18:11 +0100

Le Tue, 24 Jan 2023 03:23:44 +0100,
Csepp <[email-masked]> a écrit :

> Truncated stack trace:
> 
> ```
> ...
> In guix/import/opam.scm:
>     287:2  3 (opam->guix-package "mirage-crypto-pk" #:repo _ # _)
> In unknown file:
>            2 (filter #<procedure 7f43905afd00 at guix/import/opam.s…>
> …) In guix/import/opam.scm:
>    290:13  1 (_ ("mirage-no-solo5" "mirage-no-xen"))
> In unknown file:
>            0 (string-prefix? "conf-" ("mirage-no-solo5" "mirage-n…")
> …)
> 
> ERROR: In procedure string-prefix?:
> In procedure string-prefix?: Wrong type argument in position 2
> (expecting string): ("mirage-no-solo5" "mirage-no-xen") ```
> 
> 
> 

The issue is related to lines like this in the list of dependencies:

(("mirage-no-solo5" & "mirage-no-xen") | "zarith-freestanding" |
"mirage-runtime" {>= "4.0"})

This reads as a choice between three dependencies:
- mirage-no-solo5 with mirage-no-xen
- zarith-freestanding
- mirage-runtime

The importer infrastructure is not intelligent enough to really be able
to solve constraints in imported packages, so I don't see an easy
solution. It could silently use the first option, or put a comment
instead.

Ideas?