let strongdeps_int ?(transitive=true) graph univ pkglist =
  let cudfpool = Depsolver_int.init_pool_univ ~global_constraints:false univ in
  Util.Progress.set_total mainbar (List.length pkglist);
  Util.Timer.start strongtimer;
  List.iter (fun pkg ->
    Util.Progress.progress mainbar;
    G.add_vertex graph pkg;
    let id = CudfAdd.vartoint univ pkg in
    if somedisj cudfpool id then begin 
      let closure = Depsolver_int.dependency_closure_cache cudfpool [id] in
      let solver = Depsolver_int.init_solver_closure cudfpool closure in
      match Depsolver_int.solve solver (Diagnostic_int.Sng (None,id)) with
      |Diagnostic_int.Failure(_) -> ()
      |Diagnostic_int.Success(f_int) ->
          check_strong univ transitive graph solver id (f_int ())
    end
  ) pkglist ;
  Util.Progress.reset mainbar;
  debug "strong dep graph: %d nodes, %d edges" (G.nb_vertex graph) (G.nb_edges graph);
  Util.Timer.stop strongtimer graph