let file_origin =
let get_binaries accu arch =
Benl_utils.parse_control_file `binary
(!Benl_clflags.cache_dir // ("Packages_"^arch))
(fun x -> List.mem x relevant_binary_keys)
(fun name pkg accu ->
try
let old_pkg = PAMap.find (name, arch) accu in
let old_ver = Package.get "version" old_pkg in
let ver = Package.get "version" pkg in
if Benl_base.Version.compare old_ver ver < 0
then PAMap.add (name, arch) pkg accu
else accu
with _ ->
PAMap.add (name, arch) pkg accu
)
accu
in
let get_sources accu =
Benl_utils.parse_control_file `source
(!Benl_clflags.cache_dir // "Sources")
(fun x -> List.mem x relevant_source_keys)
(fun name pkg accu ->
try
let old_pkg = M.find name accu in
let old_ver = Package.get "version" old_pkg in
let ver = Package.get "version" pkg in
if Benl_base.Version.compare old_ver ver < 0
then M.add name pkg accu
else accu
with _ ->
M.add name pkg accu
)
accu
in
{ get_binaries = get_binaries; get_sources = get_sources }