let get_architectures native_opt foreign =
let cmd = "apt-config dump" in
let arch = ref "" in
let archs = ref [] in
let out = Std.input_list (Unix.open_process_in cmd) in
List.iter (fun s ->
let key, value = ExtString.String.split s " " in
if key = "APT::Architecture" then
arch := ExtString.String.slice ~first: 1 ~last:(-2) value
else if key = "APT::Architectures::" || key = "APT::Architectures" then
let s = ExtString.String.slice ~first:1 ~last:(-2) value in
if s <> "" then
archs := (ExtString.String.slice ~first:1 ~last:(-2) value)::!archs
) out;
match native_opt, foreign with
|None,[] -> (!arch,List.filter ((<>) !arch) !archs)
|None, l -> (!arch, l)
|Some a, [] -> (a,List.filter ((<>) !arch) !archs)
|Some a, l -> (a,l)