let pp_package ?(source=false) pp fmt pkg =
  let (p,v,fields) = pp pkg in
  Format.fprintf fmt "package: %s@," p;
  Format.fprintf fmt "version: %s" v;
  List.iter (function
    |(("source"|"sourcenumber"),_) -> ()
    |(k,v) -> Format.fprintf fmt "@,%s: %s" k v
  ) fields;
  if source then begin 
    try
      let source = List.assoc "source" fields in
      let sourceversion = 
        try "(= "^(List.assoc "sourcenumber" fields)^")" 
        with Not_found -> ""
      in
      Format.fprintf fmt "@,source: %s %s" source sourceversion
    with Not_found -> ()
  end