[Pkg-ocaml-maint-commits] [dose3] 05/06: Add patches 0001-check_request_using-can-return-discording-result-bet.patch and 0002-tentative-fix-for-missing-essential-problem-apt-cudf.patch
Johannes Schauer
josch at moszumanska.debian.org
Fri Sep 9 04:32:53 UTC 2016
This is an automated email from the git hooks/post-receive script.
josch pushed a commit to branch master
in repository dose3.
commit a042fb5717adc4aa103881e8325364dfdd4dbcf6
Author: Johannes Schauer <josch at debian.org>
Date: Thu Sep 8 23:01:41 2016 +0200
Add patches 0001-check_request_using-can-return-discording-result-bet.patch and 0002-tentative-fix-for-missing-essential-problem-apt-cudf.patch
---
debian/changelog | 5 +
...st_using-can-return-discording-result-bet.patch | 47 ++++++++
...ix-for-missing-essential-problem-apt-cudf.patch | 132 +++++++++++++++++++++
debian/patches/series | 2 +
4 files changed, 186 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index d1475c3..47d92d9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,11 @@ dose3 (5.0.1-1) UNRELEASED; urgency=medium
* new upstream release
* remove patches distcheck-fg-bg and getrealname as they have been
incorporated upstream
+ * backport patches
+ 0001-check_request_using-can-return-discording-result-bet.patch and
+ 0002-tentative-fix-for-missing-essential-problem-apt-cudf.patch from
+ upstream git to fix missing Essential:yes packages when invoking external
+ solvers
-- Johannes Schauer <josch at debian.org> Thu, 08 Sep 2016 22:50:19 +0200
diff --git a/debian/patches/0001-check_request_using-can-return-discording-result-bet.patch b/debian/patches/0001-check_request_using-can-return-discording-result-bet.patch
new file mode 100644
index 0000000..3ede757
--- /dev/null
+++ b/debian/patches/0001-check_request_using-can-return-discording-result-bet.patch
@@ -0,0 +1,47 @@
+From 4f355af62b6fed07d077f1f52b9762af092b79b9 Mon Sep 17 00:00:00 2001
+From: Pietro Abate <pietro.abate at pps.univ-paris-diderot.fr>
+Date: Tue, 6 Sep 2016 14:09:50 +0200
+Subject: [PATCH 1/2] check_request_using can return discording result between
+ internal and external solver
+
+---
+ algo/depsolver.ml | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/algo/depsolver.ml b/algo/depsolver.ml
+index 2f05f51..a3d2f44 100644
+--- a/algo/depsolver.ml
++++ b/algo/depsolver.ml
+@@ -463,19 +463,24 @@ let check_request_using
+ let universe = Cudf.load_universe (dummy::pkglist) in
+ (dummy,edos_install universe dummy)
+ in
+- match call_solver with
+- | None ->
+- let (dummy,d) = intSolver universe request in
++ let callIntSolver ?(explain=false) (universe,request) =
++ let (dummy,d) = intSolver ~explain universe request in
+ if Diagnostic.is_solution d then
+ let is = List.remove (Diagnostic.get_installationset d) dummy in
+ Sat (Some pre,Cudf.load_universe is)
+ else
+ if explain then Unsat (Some d) else Unsat None
++ in
++ match call_solver with
++ | None -> callIntSolver (universe,request)
+ | Some call_solver ->
+ try Sat(call_solver (pre,universe,request)) with
+ |CudfSolver.Unsat when not explain -> Unsat None
+- |CudfSolver.Unsat when explain ->
+- Unsat (Some (snd(intSolver ~explain universe request)))
++ |CudfSolver.Unsat when explain -> begin
++ let sol = callIntSolver ~explain (universe,request) in
++ match sol with
++ |Sat _ -> warning "External and Internal Solver do not agree." ; sol
++ |_ -> sol end
+ |CudfSolver.Error s -> Error s
+ ;;
+
+--
+2.9.3
+
diff --git a/debian/patches/0002-tentative-fix-for-missing-essential-problem-apt-cudf.patch b/debian/patches/0002-tentative-fix-for-missing-essential-problem-apt-cudf.patch
new file mode 100644
index 0000000..0b013a6
--- /dev/null
+++ b/debian/patches/0002-tentative-fix-for-missing-essential-problem-apt-cudf.patch
@@ -0,0 +1,132 @@
+From 64098ce1a7dfec991ccc61f1033f8daf547d1e76 Mon Sep 17 00:00:00 2001
+From: Pietro Abate <pietro.abate at pps.univ-paris-diderot.fr>
+Date: Tue, 6 Sep 2016 18:17:23 +0200
+Subject: [PATCH 2/2] tentative fix for missing essential problem apt-cudf
+
+---
+ algo/depsolver.ml | 57 +++++++++++++++++++++++++++++++++---------------
+ applications/apt-cudf.ml | 16 ++++++++++----
+ 2 files changed, 52 insertions(+), 21 deletions(-)
+
+diff --git a/algo/depsolver.ml b/algo/depsolver.ml
+index a3d2f44..52b3762 100644
+--- a/algo/depsolver.ml
++++ b/algo/depsolver.ml
+@@ -431,8 +431,8 @@ let upgrade_constr universe name =
+ in (name,Some(`Geq,p.Cudf.version))
+
+ let check_request_using
+- ?call_solver ?criteria ?(dummy=dummy_request) ?(explain=false) (pre,universe,request) =
+- let intSolver ?(explain=false) universe request =
++ ?call_solver ?criteria ?dummy ?(explain=false) (pre,universe,request) =
++ let add_dummy universe request dummy =
+ let deps =
+ let il = request.Cudf.install in
+ (* we preserve the user defined constraints, while adding the upgrade constraint *)
+@@ -461,27 +461,50 @@ let check_request_using
+ (* XXX it should be possible to add a package to a cudf document ! *)
+ let pkglist = Cudf.get_packages universe in
+ let universe = Cudf.load_universe (dummy::pkglist) in
+- (dummy,edos_install universe dummy)
++ (universe,dummy)
+ in
+- let callIntSolver ?(explain=false) (universe,request) =
+- let (dummy,d) = intSolver ~explain universe request in
++ let remove_dummy ?(explain=false) (dummy,d) =
+ if Diagnostic.is_solution d then
+- let is = List.remove (Diagnostic.get_installationset d) dummy in
++ let is = List.remove_if (Cudf.(=%) dummy) (Diagnostic.get_installationset d) in
+ Sat (Some pre,Cudf.load_universe is)
+ else
+ if explain then Unsat (Some d) else Unsat None
+ in
+- match call_solver with
+- | None -> callIntSolver (universe,request)
+- | Some call_solver ->
+- try Sat(call_solver (pre,universe,request)) with
+- |CudfSolver.Unsat when not explain -> Unsat None
+- |CudfSolver.Unsat when explain -> begin
+- let sol = callIntSolver ~explain (universe,request) in
+- match sol with
+- |Sat _ -> warning "External and Internal Solver do not agree." ; sol
+- |_ -> sol end
+- |CudfSolver.Error s -> Error s
++ match call_solver,dummy with
++ |None,None ->
++ let (u,r) = add_dummy universe request dummy_request in
++ remove_dummy (r,edos_install u r)
++ |None,Some dummy ->
++ let (u,r) = add_dummy universe request dummy in
++ remove_dummy (r,edos_install u r)
++ |Some call_solver,None -> begin
++ try
++ let (presol,sol) = call_solver (pre,universe,request) in
++ Sat(presol,sol)
++ with
++ |CudfSolver.Unsat when not explain -> Unsat None
++ |CudfSolver.Unsat when explain ->
++ let (u,r) = add_dummy universe request dummy_request in
++ remove_dummy (r,edos_install u r)
++ end
++ |Some call_solver,Some dummy -> begin
++ let (u,dr) = add_dummy universe request dummy in
++ let dr_constr = (dr.Cudf.package,Some (`Eq,dr.Cudf.version)) in
++ let r = { request with Cudf.install = dr_constr::request.Cudf.install } in
++ try
++ let (presol,sol) = call_solver (pre,u,r) in
++ let is = List.remove_if (Cudf.(=%) dr) (Cudf.get_packages sol) in
++ Sat(presol,Cudf.load_universe is)
++ with
++ |CudfSolver.Unsat when not explain -> Unsat None
++ |CudfSolver.Unsat when explain -> begin
++ let (u,r) = add_dummy universe request dummy in
++ match remove_dummy (r,edos_install u r) with
++ |Sat _ as sol ->
++ warning "External and Internal Solver do not agree." ; sol
++ |sol -> sol end
++ |CudfSolver.Error s -> Error s
++ end
+ ;;
+
+ (** check if a cudf request is satisfiable. we do not care about
+diff --git a/applications/apt-cudf.ml b/applications/apt-cudf.ml
+index 90b980d..5ab782f 100644
+--- a/applications/apt-cudf.ml
++++ b/applications/apt-cudf.ml
+@@ -98,7 +98,9 @@ let pp_pkg fmt (p,univ) =
+ Format.fprintf fmt "Package: %s\n" pkg#name;
+ Format.fprintf fmt "Version: %s\n" pkg#version;
+ Format.fprintf fmt "Architecture: %s\n" pkg#architecture;
+- with Not_found -> fatal "apt-cudf internal error"
++ with Not_found ->
++ fatal "apt-cudf internal error (Not found : %s)"
++ (Printf.sprintf "%s=%d" p.Cudf.package p.Cudf.version)
+
+ let pp_pkg_list fmt (l,univ) =
+ try
+@@ -106,13 +108,19 @@ let pp_pkg_list fmt (l,univ) =
+ String.concat ", "
+ (List.map (fun p ->
+ let pkg = Hashtbl.find univ (p.Cudf.package,p.Cudf.version) in
+- Printf.sprintf "%s=%s/%s"
+- pkg#name
++ Printf.sprintf "%s=%s/%s"
++ pkg#name
+ pkg#version
+ pkg#architecture
+ ) l)
+ )
+- with Not_found -> fatal "apt-cudf internal error"
++ with Not_found ->
++ fatal "apt-cudf internal error (Not found : [%s])"
++ (String.concat ", "
++ (List.map (fun p ->
++ Printf.sprintf "%s=%d" p.Cudf.package p.Cudf.version
++ ) l)
++ )
+ ;;
+
+ let pp_pkg_list_tran fmt (l,univ) = pp_pkg_list fmt (List.map snd l,univ) ;;
+--
+2.9.3
+
diff --git a/debian/patches/series b/debian/patches/series
index 9dceec7..9c1cf73 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,3 @@
binaries-prefix-edos
+0001-check_request_using-can-return-discording-result-bet.patch
+0002-tentative-fix-for-missing-essential-problem-apt-cudf.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/dose3.git
More information about the Pkg-ocaml-maint-commits
mailing list