From f711850c09a5c7b2e99065dbe09c598a44dfd632 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Matthias=20Grie=C3=9Fmeier?= Date: Fri, 5 Apr 2013 11:23:47 +0200 Subject: [PATCH] Added new function 'download-only' to source-install (bnc #640403) --- doc/zypper.8 | 3 +++ src/Zypper.cc | 2 ++ src/misc.cc | 21 ++++++++++++++++----- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/doc/zypper.8 b/doc/zypper.8 index efadf21..ddba329 100644 --- a/doc/zypper.8 +++ b/doc/zypper.8 @@ -412,6 +412,9 @@ Don't install build dependencies. Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times. .TP +.I \ \ \ \ \-\-download\-only +Only download the packages, do not install. +.TP Examples: Install build dependencies of dbus-1 source package: diff --git a/src/Zypper.cc b/src/Zypper.cc index 77b4900..6be9b48 100644 --- a/src/Zypper.cc +++ b/src/Zypper.cc @@ -1147,6 +1147,7 @@ void Zypper::processCommandOptions() static struct option src_install_options[] = { {"build-deps-only", no_argument, 0, 'd'}, {"no-build-deps", no_argument, 0, 'D'}, + {"download-only", no_argument, 0, 0}, {"repo", required_argument, 0, 'r'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} @@ -1161,6 +1162,7 @@ void Zypper::processCommandOptions() "-d, --build-deps-only Install only build dependencies of specified packages.\n" "-D, --no-build-deps Don't install build dependencies.\n" "-r, --repo Install packages only from specified repositories.\n" + " --download-only Only download the packages, do not install.\n" ); break; } diff --git a/src/misc.cc b/src/misc.cc index f78bd14..eb82eb6 100644 --- a/src/misc.cc +++ b/src/misc.cc @@ -433,17 +433,28 @@ void install_src_pkgs(Zypper & zypper) try { - God->installSrcPackage(srcpkg); + if (zypper.cOpts().find("download-only") != zypper.cOpts().end()) + { + God->provideSrcPackage(srcpkg).resetDispose(); - zypper.out().info(boost::str(format( - _("Source package %s-%s successfully installed.")) - % srcpkg->name() % srcpkg->edition())); + zypper.out().info(boost::str(format( + _("Source package %s-%s successfully retrieved.")) + % srcpkg->name() % srcpkg->edition())); + } + else + { + God->installSrcPackage(srcpkg); + + zypper.out().info(boost::str(format( + _("Source package %s-%s successfully installed.")) + % srcpkg->name() % srcpkg->edition())); + } } catch (const Exception & ex) { ZYPP_CAUGHT(ex); zypper.out().error(ex, - boost::str(format(_("Problem installing source package %s-%s:")) + boost::str(format(_("Problem installing source package %s-%s:")) % srcpkg->name() % srcpkg->edition())); zypper.setExitCode(ZYPPER_EXIT_ERR_ZYPP); -- 2.7.4