let make_request tables universe request =
let select_packages l =
List.map (fun (n,a,c) ->
let candidate =
try
List.find (fun pkg ->
try (Cudf.lookup_package_property pkg "apt-candidate") = "true"
with Not_found -> false
) (Cudf.lookup_packages universe n)
with Not_found ->
print_error "Package %s does not have a suitable candidate" n
in
(n,Some(`Eq,candidate.Cudf.version))
) l
in
if request.Edsp.upgrade || request.Edsp.distupgrade then
let to_upgrade = function
|[] ->
let filter pkg = pkg.Cudf.installed in
let l = Cudf.get_packages ~filter universe in
List.map (fun pkg -> (pkg.Cudf.package,None)) l
|l -> select_packages l
in
{Cudf.default_request with
Cudf.request_id = request.Edsp.request;
Cudf.upgrade = to_upgrade request.Edsp.install;
Cudf.remove = select_packages request.Edsp.remove;
}
else
{Cudf.default_request with
Cudf.request_id = request.Edsp.request;
Cudf.install = select_packages request.Edsp.install;
Cudf.remove = select_packages request.Edsp.remove;
}