let yum_rpm_resolve_dependencies_and_download names =
(* Liberate this data from python. *)
- let py = "
+ let tmpfile = tmpdir // "names.tmp" in
+ let py = sprintf "
import yum
import yum.misc
import sys
yb = yum.YumBase ()
-#yum.logginglevels.setDebugLevel(0) -- doesn't work?
+yb.preconf.debuglevel = %d
+yb.preconf.errorlevel = %d
+if %s:
+ yb.preconf.fn = %S
+yb.setCacheDir ()
# Look up the base packages from the command line.
deps = dict ()
-pkgs = yb.pkgSack.returnPackages (patterns=sys.argv[2:])
+pkgs = yb.pkgSack.returnPackages (patterns=sys.argv[1:])
for pkg in pkgs:
deps[pkg] = False
deps[pkg] = yum.misc.unique (deps[pkg])
# Write it to a file because yum spews garbage on stdout.
-f = open (sys.argv[1], \"w\")
+f = open (%S, \"w\")
for pkg in deps.keys ():
- f.write (\"%s %s %s %s %s\\n\" %
+ f.write (\"%%s %%s %%s %%s %%s\\n\" %%
(pkg.name, pkg.epoch, pkg.version, pkg.release, pkg.arch))
f.close ()
-" in
- let tmpfile = tmpdir // "names.tmp" in
- run_python py (tmpfile :: names);
+"
+ (if verbose then 1 else 0)
+ (if verbose then 1 else 0)
+ (match yum_config with None -> "False" | Some _ -> "True")
+ (match yum_config with None -> "" | Some filename -> filename)
+ tmpfile in
+ run_python py names;
let chan = open_in tmpfile in
let lines = input_all_lines chan in
close_in chan;
exit 1
);
- let cmd = sprintf "yumdownloader --destdir %s %s"
+ let cmd = sprintf "yumdownloader%s%s --destdir %s %s"
+ (if verbose then "" else " --quiet")
+ (match yum_config with None -> ""
+ | Some filename -> sprintf " -c %s" filename)
(Filename.quote tmpdir)
(String.concat " " (List.map Filename.quote pkgnames)) in
run_command cmd;