let pp_vpkglist pp fmt =
let pp_list fmt ~pp_item ~sep l =
let rec aux fmt = function
| [] -> assert false
| [last] ->
Format.fprintf fmt "@,%a" pp_item last
| vpkg :: tl ->
Format.fprintf fmt "@,%a%s" pp_item vpkg sep ;
aux fmt tl
in
match l with
| [] -> ()
| [sole] -> pp_item fmt sole
| _ -> Format.fprintf fmt "@[<h>%a@]" aux l
in
let string_of_relop = function
`Eq -> "="
| `Neq -> "!="
| `Geq -> ">="
| `Gt -> ">"
| `Leq -> "<="
| `Lt -> "<"
in
let pp_item fmt = function
|(p,None) -> Format.fprintf fmt "%s" p
|(p,Some(c,v)) ->
let (p,v,_) = pp {Cudf.default_package with Cudf.package = p ; version = v} in
Format.fprintf fmt "%s (%s %s)" p (string_of_relop c) v
in
pp_list fmt ~pp_item ~sep:" | "