The following commit has been merged in the master branch:
commit b12ae0e30920c20aa448ce3f731922981173eeca
Author: Ralf Treinen <trei...@pps.univ-paris-diderot.fr>
Date:   Wed Sep 26 16:52:13 2012 +0200

    patch multiarch-conflicts: replace our own patch that was cherry-picked from
    the master branch of the upstream git, by a patch that was created by 
upstream
    on top of version 3.0.2

diff --git a/debian/changelog b/debian/changelog
index 014516a..625cbd3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,11 +2,12 @@ dose3 (3.0.2-2) unstable; urgency=low
 
   * Patch multiarch-conflicts: fix the translation of conflicts in case of
     multiarchs, a conflict on package p has to apply to p of all possible
-    architectures. (closes: #685171). Extracted from the upstream git
-    repository (commit 7c30da3d). Thanks to Pietro Abate for having fixed
-    this.
+    architectures. (closes: #685171). Patch extracted from the
+    3.0.2-hotfix branch of the upstream git repository (commit
+    a2f69265323d8cead088eeee2a731db582d3cc81). Thanks to Pietro Abate for
+    having fixed this.
 
- -- Ralf Treinen <trei...@debian.org>  Sat, 08 Sep 2012 13:29:48 +0200
+ -- Ralf Treinen <trei...@debian.org>  Wed, 26 Sep 2012 16:57:24 +0200
 
 dose3 (3.0.2-1) unstable; urgency=low
 
diff --git a/debian/patches/multiarch-conflicts 
b/debian/patches/multiarch-conflicts
index 12188bd..25b3d8c 100644
--- a/debian/patches/multiarch-conflicts
+++ b/debian/patches/multiarch-conflicts
@@ -1,67 +1,94 @@
-Index: dose3/deb/debcudf.ml
-===================================================================
---- dose3.orig/deb/debcudf.ml  2012-09-08 14:06:46.000000000 +0200
-+++ dose3/deb/debcudf.ml       2012-09-08 14:14:46.000000000 +0200
-@@ -320,27 +320,66 @@
+--- a/deb/debcudf.ml
++++ b/deb/debcudf.ml
+@@ -12,6 +12,7 @@
  
+ (** Debian Specific Cudf conversion routines *)
+ 
++module SSet = Set.Make(String)
+ open ExtLib
+ open Common
+ open Packages
+@@ -20,7 +21,7 @@ include Util.Logging(struct let label = __FILE__ end) ;;
+ module SMap = Map.Make (String)
+ 
+ type tables = {
+-  virtual_table : unit Util.StringHashtbl.t;
++  virtual_table : SSet.t ref Util.StringHashtbl.t;
+   unit_table : unit Util.StringHashtbl.t ;
+   versions_table : int Util.StringHashtbl.t;
+   versioned_table : unit Util.StringHashtbl.t;
+@@ -93,9 +94,14 @@ let add_v table k v =
+   if not(Hashtbl.mem table k) then
+     Hashtbl.add table k v
+ 
++let add_s h k v =
++  try let s = Util.StringHashtbl.find h k in s := SSet.add v !s
++  with Not_found -> Util.StringHashtbl.add h k (ref (SSet.singleton v))
++;;
++
+ (* collect names of virtual packages *)
+ let init_virtual_table table pkg =
+-  List.iter (fun ((name,_),_) -> add table name ()) pkg.provides
++  List.iter (fun ((name,_),_) -> add_s table name pkg.name) pkg.provides
+ 
+ (* collect names of real packages *)
+ let init_unit_table table pkg = 
+@@ -321,26 +327,88 @@ let add_extra extras tables pkg =
  let tocudf tables ?(options=default_options) ?(inst=false) pkg =
    if options.native <> "" then begin
--    let _name = add_arch options.native pkg.architecture pkg.name in
+     let _name = add_arch options.native pkg.architecture pkg.name in
 -    let version = get_cudf_version tables (pkg.name,pkg.version)  in
--    let _provides = 
++    let _version = get_cudf_version tables (pkg.name,pkg.version)  in
++
+     let _provides = 
 -      let l = 
--        match pkg.multiarch with
++      let pr = CudfAdd.encode pkg.name,None in
++      let multiarchprovides = 
+         match pkg.multiarch with
 -        |`None -> [(CudfAdd.encode pkg.name,None)]
 -        |`Foreign -> List.map (fun arch -> (add_arch options.native arch 
pkg.name,Some(`Eq,version))) options.foreign
 -        |`Allowed -> [(CudfAdd.encode pkg.name,None) ; (CudfAdd.encode 
(pkg.name^":any"),None)]
 -        |`Same -> []
 -      in
 -      l@(add_arch_l options.native pkg.architecture (loadlp tables 
pkg.provides))
-+    let pkgarch = pkg.architecture (* binary package : dependencies are 
package specific *)
-+    in
-+    let _name = add_arch options.native pkgarch pkg.name
-+    in
-+    let _version = get_cudf_version tables (pkg.name,pkg.version)  in
-+    let _provides = match pkg.multiarch with
-+      |`None ->
-+         (* only arch-less package and pkgarch provides *)
-+         (CudfAdd.encode pkg.name,None)::
-+           (add_arch_l options.native pkgarch (loadlp tables pkg.provides))
-+      |`Foreign ->
-+         (* packages of same name and version of itself in all archs except 
its own
-+            each package this package provides is provided in all arches *)
-+          List.flatten (
-+            List.map (function
-+              |arch when arch = pkgarch ->
-+                  (add_arch_l options.native arch (loadlp tables 
pkg.provides))
-+              |arch ->
-+                  (add_arch options.native arch pkg.name,Some(`Eq,_version)) 
::
++        |`None ->
++           (* only arch-less package and pkgarch provides *)
++             (add_arch_l options.native pkg.architecture (loadlp tables 
pkg.provides))
++        |`Foreign ->
++           (* packages of same name and version of itself in all archs except 
its own
++              each package this package provides is provided in all arches *)
++            List.flatten (
++              List.map (function
++                |arch when arch = pkg.architecture ->
 +                    (add_arch_l options.native arch (loadlp tables 
pkg.provides))
-+            ) (options.native::options.foreign)
-+          )
-+      |`Allowed ->
-+         (* archless package and arch: any package *)
-+         (* all provides as arch: any *)
-+         (* pkgarch provides *)
-+         (CudfAdd.encode pkg.name,None)::
-+           (CudfAdd.encode (pkg.name^":any"),None)::
-+             (List.map (fun (name, v) -> (CudfAdd.encode (name^":any"), v)) 
(loadlp tables pkg.provides))@
-+                (add_arch_l options.native pkgarch (loadlp tables 
pkg.provides))
-+      |`Same ->
-+         (add_arch_l options.native pkgarch (loadlp tables pkg.provides))
++                |arch ->
++                    (add_arch options.native arch 
pkg.name,Some(`Eq,_version)) ::
++                      (add_arch_l options.native arch (loadlp tables 
pkg.provides))
++              ) (options.native::options.foreign)
++            )
++        |`Allowed ->
++           (* archless package and arch: any package *)
++           (* all provides as arch: any *)
++           (* pkgarch provides *)
++             (CudfAdd.encode (pkg.name^":any"),None)::
++               (List.map (fun (name, v) -> (CudfAdd.encode (name^":any"), v)) 
(loadlp tables pkg.provides))@
++                  (add_arch_l options.native pkg.architecture (loadlp tables 
pkg.provides))
++        |`Same ->
++           (add_arch_l options.native pkg.architecture (loadlp tables 
pkg.provides))
++      in pr::multiarchprovides
      in
-     let _conflicts = 
+-    let _conflicts = 
 -      (* self conflict / multi-arch conflict *)
--      let sc = (add_arch options.native pkg.architecture pkg.name,None) in
++    let _conflicts =
++      let originalconflicts = pkg.breaks @ pkg.conflicts in
++      (* self conflict *)
+       let sc = (add_arch options.native pkg.architecture pkg.name,None) in
 -      let mac = (CudfAdd.encode pkg.name,None) in
 -      let l = pkg.breaks @ pkg.conflicts in
 -      match pkg.multiarch with
 -      |(`None|`Foreign|`Allowed) -> 
 -          sc::mac::(add_arch_l options.native pkg.architecture (loadl tables 
l))
 -      |`Same -> sc::(add_arch_l options.native pkg.architecture (loadl tables 
l))
-+      let originalconflicts = pkg.breaks @ pkg.conflicts in
-+      (* self conflict *)
-+      let sc = (add_arch options.native pkgarch pkg.name,None) in
 +      let multiarchconstraints = match pkg.multiarch with
 +        |(`None|`Foreign|`Allowed) ->
 +            (* conflict with all other packages with differents archs *)
@@ -71,20 +98,52 @@ Index: dose3/deb/debcudf.ml
 +            (* conflict with packages of same name but different arch and 
version*)
 +            let masc =
 +              List.filter_map (function
-+                |arch when arch = pkgarch -> None
++                |arch when arch = pkg.architecture -> None
 +                |arch -> Some(add_arch options.native arch 
pkg.name,Some(`Neq,_version))
 +              ) (options.native::options.foreign)
 +            in
 +            sc :: masc
 +      in
 +      let multiarchconflicts =
-+        List.flatten (
-+          List.map (fun arch ->
-+            add_arch_l options.native arch (loadl tables originalconflicts)
-+          ) (options.native::options.foreign)
-+        )
++        match pkg.multiarch with
++        |(`None|`Foreign|`Allowed) -> 
++            List.flatten (
++              List.map (fun arch ->
++                add_arch_l options.native arch (loadl tables 
originalconflicts)
++              ) (options.native::options.foreign)
++            )
++        |`Same -> 
++            List.flatten (
++              List.map (fun arch ->
++                add_arch_l options.native arch (
++                  loadl tables (
++                    List.flatten (
++                      List.map (fun ((n,a),c) ->
++                        try
++                          List.filter_map (fun pn ->
++                            if pn <> pkg.name then
++                              Some((pn,a),c)
++                            else None
++                          ) (SSet.elements !(Util.StringHashtbl.find 
tables.virtual_table n))
++                        with Not_found ->
++                          if n <> pkg.name then [((n,a),c)] else []
++                      ) (originalconflicts)
++                    )
++                  ) 
++                )
++              ) (options.native::options.foreign)
++            )
 +      in
 +      multiarchconflicts @ multiarchconstraints
      in
      let _depends = 
        List.map (add_arch_l options.native pkg.architecture) 
+@@ -348,7 +416,7 @@ let tocudf tables ?(options=default_options) ?(inst=false) 
pkg =
+     in
+     { Cudf.default_package with
+       Cudf.package = _name ;
+-      Cudf.version = get_cudf_version tables (pkg.name,pkg.version) ;
++      Cudf.version = _version ;
+       Cudf.keep = if options.ignore_essential then `Keep_none else 
add_essential pkg.essential;
+       Cudf.depends = _depends;
+       Cudf.conflicts = _conflicts ;

-- 
dose3 packaging

_______________________________________________
Pkg-ocaml-maint-commits mailing list
Pkg-ocaml-maint-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits

Reply via email to