let parse_package_stanza filter par =
let p = {
name = parse_s ~err:"(MISSING NAME)" parse_name "Package" par;
version = parse_s ~err:"(MISSING VERSION)" parse_version "Version" par;
architecture = parse_s ~err:"(MISSING ARCH)" parse_arch "Architecture" par;
binary = [];
build_depends =
parse_s ~opt:[] ~multi:true parse_builddepsformula "Build-Depends" par;
build_depends_indep =
parse_s ~opt:[] ~multi:true parse_builddepsformula "Build-Depends-Indep" par;
build_conflicts =
parse_s ~opt:[] ~multi:true parse_builddepslist "Build-Conflicts" par;
build_conflicts_indep =
parse_s ~opt:[] ~multi:true parse_builddepslist "Build-Conflicts-Indep" par
}
in
if Option.is_none filter then Some p
else if (Option.get filter) p then Some(p)
else None