let edsp_load_list options file =
let archs =
if options.Debian.Debcudf.native <> "" then
options.Debian.Debcudf.native :: options.Debian.Debcudf.foreign
else []
in
let (_,pkglist) = Debian.Edsp.input_raw ~archs file in
let tables = Debian.Debcudf.init_tables pkglist in
let preamble =
let l = List.map snd Debian.Edsp.extras_tocudf in
Common.CudfAdd.add_properties Debian.Debcudf.preamble l
in
let univ = Hashtbl.create (2*(List.length pkglist)-1) in
let cudfpkglist =
List.filter_map (fun pkg ->
let p = Debian.Edsp.tocudf tables ~options pkg in
if not(Hashtbl.mem univ (p.Cudf.package,p.Cudf.version)) then begin
Hashtbl.add univ (p.Cudf.package,p.Cudf.version) pkg;
Some p
end else begin
warning "Duplicated package (same version, name and architecture) : (%s,%s,%s)"
pkg.Debian.Packages.name pkg.Debian.Packages.version pkg.Debian.Packages.architecture;
None
end
) pkglist
in
let to_cudf (p,v) = (p,Debian.Debcudf.get_cudf_version tables (p,v)) in
let from_cudf (p,i) = (p, Debian.Debcudf.get_real_version tables (p,i)) in
(preamble,[cudfpkglist;[]],from_cudf,to_cudf)