Use the "download" command of zypper, if it is >= 1.9.14. --- src/rpm.ml | 62 +++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/src/rpm.ml b/src/rpm.ml index f79b357..ee3a163 100644 --- a/src/rpm.ml +++ b/src/rpm.ml @@ -306,28 +306,48 @@ and opensuse_download_all_packages pkgs dir = sprintf "%s.%s" name arch ) rpms in - (* This isn't quite right because zypper will resolve the dependencies - * of the listed packages against the public repos and download all the - * dependencies too. We only really want it to download the named - * packages. XXX - *) + let is_zypper_1_9_14 = + !zypper_major > 1 + || (!zypper_major = 1 && !zypper_minor > 9) + || (!zypper_major = 1 && !zypper_minor = 9 && !zypper_patch >= 14) in + let cmd = - sprintf " - %s%s \\ - --root %s \\ - --reposd-dir /etc/zypp/repos.d \\ - --cache-dir %s \\ - --pkg-cache-dir %s \\ - --gpg-auto-import-keys --no-gpg-checks --non-interactive \\ - install \\ - --auto-agree-with-licenses --download-only \\ - %s" - Config.zypper - (if !settings.debug >= 1 then " --verbose --verbose" else " --quiet") - (quote tdir) - (quote tdir) - (quote tdir) - (quoted_list rpms) in + if is_zypper_1_9_14 then + sprintf " + %s%s \\ + --reposd-dir /etc/zypp/repos.d \\ + --cache-dir %s \\ + --pkg-cache-dir %s \\ + --gpg-auto-import-keys --no-gpg-checks --non-interactive \\ + download \\ + %s" + Config.zypper + (if !settings.debug >= 1 then " --verbose --verbose" else " --quiet") + (quote tdir) + (quote tdir) + (quoted_list rpms) + else + (* This isn't quite right because zypper will resolve the dependencies + * of the listed packages against the public repos and download all the + * dependencies too. We only really want it to download the named + * packages. XXX + *) + sprintf " + %s%s \\ + --root %s \\ + --reposd-dir /etc/zypp/repos.d \\ + --cache-dir %s \\ + --pkg-cache-dir %s \\ + --gpg-auto-import-keys --no-gpg-checks --non-interactive \\ + install \\ + --auto-agree-with-licenses --download-only \\ + %s" + Config.zypper + (if !settings.debug >= 1 then " --verbose --verbose" else " --quiet") + (quote tdir) + (quote tdir) + (quote tdir) + (quoted_list rpms) in run_command cmd; rpm_unpack tdir dir -- 2.0.4