Author: Ralf Treinen <treinen@debian.org>
Description: packages that provide the same virtual package in different
  versions, or that provide the same versioned virtual package as a real
  package, are co-installable
Debian-bug: #867104

diff --git a/deb/debcudf.ml b/deb/debcudf.ml
index 44f72e8..c70ed67 100644
--- a/deb/debcudf.ml
+++ b/deb/debcudf.ml
@@ -307,12 +307,13 @@ let loadlc ?native_arch ?package_arch tables name l =
 let loadlp ?native_arch ?package_arch tables l =
   List.flatten (
     List.map (fun ((name,_) as vpkgname,constr) ->
-      let encname = add_arch_info ?native_arch ?package_arch vpkgname in
-      match constr with
-      |None -> [("--virtual-"^encname,Some(`Eq,Util.max32int - 1))]
-      |Some("=",v) ->
-        let constr = Some(`Eq,get_cudf_version tables (name,v)) in
-        [("--virtual-"^encname,constr);(encname,constr)]
+        let encname = add_arch_info ?native_arch ?package_arch vpkgname in
+        let vencname = "--virtual-"^encname in 
+        match constr with
+        |None -> [(vencname,Some(`Eq,Util.max32int - 1))]
+        |Some("=",v) ->
+          let constr = Some(`Eq,get_cudf_version tables (name,v)) in
+          [(vencname,constr);(vencname,Some(`Eq,Util.max32int - 1))]
       |_ -> fatal "This should never happen : a provide can be either = or unversioned"
     ) l
   )
