The following commit has been merged in the master branch:
commit f9e91232fed156e5c94b63636d491325321699cc
Author: Ralf Treinen <trei...@pps.univ-paris-diderot.fr>
Date:   Fri Sep 14 16:05:35 2012 +0200

    fix version numbers in CUDF installation requests

diff --git a/debian/changelog b/debian/changelog
index 014516a..4e32631 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,8 +5,11 @@ dose3 (3.0.2-2) unstable; urgency=low
     architectures. (closes: #685171). Extracted from the upstream git
     repository (commit 7c30da3d). Thanks to Pietro Abate for having fixed
     this.
+  * Patch apt-cudf-pinning: Fix version numbers in the package installation
+    requests in the translation process from EDSP to CUDF (closes: #687643).
+    Thanks to Pietro Abate for the patch!
 
- -- Ralf Treinen <trei...@debian.org>  Sat, 08 Sep 2012 13:29:48 +0200
+ -- Ralf Treinen <trei...@debian.org>  Fri, 14 Sep 2012 16:04:03 +0200
 
 dose3 (3.0.2-1) unstable; urgency=low
 
diff --git a/debian/patches/apt-cudf-pinning b/debian/patches/apt-cudf-pinning
new file mode 100644
index 0000000..d101e58
--- /dev/null
+++ b/debian/patches/apt-cudf-pinning
@@ -0,0 +1,60 @@
+Author: Pietro Abate <pietro.ab...@pps.jussieu.fr>
+Integrated: Ralf Treinen <trei...@debian.org>
+Description: Fixes version numbers in CUDF installation requests
+
+diff --git a/applications/apt-cudf.ml b/applications/apt-cudf.ml
+index ffbb872..5ae7fdc 100644
+--- a/applications/apt-cudf.ml
++++ b/applications/apt-cudf.ml
+@@ -63,27 +63,37 @@ let print_progress ?i msg =
+     Format.printf "Message: %s@." msg
+ ;;
+ 
++
++(* Debian specific assumption: only one version of a package 
++   can be installed at a given time.
++   Hence, when a remove request is issued without version constraint,
++   we return (candidate.Cudf.package,None) that designates the only
++   package installed.
++ *)
++
+ let make_request tables universe native_arch request = 
+   let to_cudf (p,v) = (p,Debian.Debcudf.get_cudf_version tables (p,v)) in
++  let get_candidate (name,constr) = 
++    try
++      List.find 
++      (fun pkg -> 
++        try (Cudf.lookup_package_property pkg "apt-candidate") = "true"
++        with Not_found -> false) 
++      (CudfAdd.who_provides universe (name,constr))
++    with Not_found -> 
++      print_error "Package %s does not have a suitable candidate" name
++  in
+   let select_packages ?(remove=false) l = 
+     List.map (fun ((n,a),c) -> 
+       let (name,constr) = Boilerplate.debvpkg ~native_arch to_cudf ((n,a),c) 
in
+-      let candidate = 
+-        try
+-          List.find (fun pkg ->
+-            if request.Edsp.strict_pin then
+-              try (Cudf.lookup_package_property pkg "apt-candidate") = "true"
+-              with Not_found -> false
+-            else
+-              true
+-          ) (CudfAdd.who_provides universe (name,constr))
+-        with Not_found -> 
+-          print_error "Package %s does not have a suitable candidate" n
+-      in
+       if remove then
+-        (candidate.Cudf.package,None)
++        (name,None)
+       else
+-        (candidate.Cudf.package,Some(`Eq,candidate.Cudf.version))
++      match constr, request.Edsp.strict_pin with
++          None, false -> (name, None)
++      | _, _ -> (name,Some(`Eq,(get_candidate (name,constr)).Cudf.version))
++        (* FIXME: when apt will accept version constraints different from `Eq,
++           we will need to pass them through. *)
+     ) l 
+   in
+   if request.Edsp.upgrade || request.Edsp.distupgrade then
diff --git a/debian/patches/series b/debian/patches/series
index 8405a18..b6ff5fe 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
 binaries-prefix-edos
 version-3.0.2
 multiarch-conflicts
+apt-cudf-pinning

-- 
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