let upgrade tables pkgset universe broken migrationlist =
let getv v = Debian.Debcudf.get_cudf_version tables ("",v) in
let to_add =
List.fold_left (fun l ((pkg,_),target) ->
let orig = getv pkg.Debian.Packages.version in
let newv =
match target with
|`Eq v -> getv v
|`Hi v -> (getv v) + 1
|`Lo v |`In (_,v) -> (getv v) - 1
in
let p = Cudf.lookup_package universe (pkg.Debian.Packages.name,orig) in
let number = Debian.Evolution.string_of_range target in
(dummy p number newv)::l
) [] migrationlist
in
let to_remove =
List.fold_left (fun acc ((pkg,_),_) ->
let orig = getv pkg.Debian.Packages.version in
let p = Cudf.lookup_package universe (pkg.Debian.Packages.name,orig) in
p::acc
) broken migrationlist
in
let universe_subset = exclude pkgset to_remove in
Cudf.load_universe (to_add@universe_subset)