summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan McRae <mcrae_allan@hotmail.com>2007-12-10 12:57:54 +1000
committerDan McGee <dan@archlinux.org>2007-12-17 20:44:21 -0600
commite5cdac7d48cb0bb4c3df6a4e0d1e84c195ff2b54 (patch)
tree4e25be2ddcf8ffb238b0d66d9b8671413857c9c0
parenta11b2065afd4e949006fa68c021a2ef60ed27d96 (diff)
downloadpacman-e5cdac7d48cb0bb4c3df6a4e0d1e84c195ff2b54.tar.xz
Only query pacman upgrade when performing actual upgrade
Fixes FS#7147. Do not ask about upgrading pacman when -w and -p flags are used. Signed-off-by: Allan McRae <mcrae_allan@hotmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--src/pacman/sync.c74
1 files changed, 38 insertions, 36 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 38200db8..5c539b85 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -512,43 +512,45 @@ static int sync_trans(alpm_list_t *targets, int sync_only)
goto cleanup;
}
- /* check if pacman itself is one of the packages to upgrade.
- * this can prevent some of the "syntax error" problems users can have
- * when sysupgrade'ing with an older version of pacman.
- */
- pkgs = alpm_trans_get_pkgs();
- for(i = pkgs; i; i = alpm_list_next(i)) {
- pmsyncpkg_t *sync = alpm_list_getdata(i);
- pmpkg_t *spkg = alpm_sync_get_pkg(sync);
- /* TODO pacman name should probably not be hardcoded. In addition, we
- * have problems on an -Syu if pacman has to pull in deps, so recommend
- * an '-S pacman' operation */
- if(strcmp("pacman", alpm_pkg_get_name(spkg)) == 0) {
- printf("\n");
- printf(_(":: pacman has detected a newer version of itself.\n"
- ":: It is recommended that you upgrade pacman by itself\n"
- ":: using 'pacman -S pacman', and then rerun the current\n"
- ":: operation. If you wish to continue the operation and\n"
- ":: not upgrade pacman separately, answer no.\n"));
- if(yesno(_(":: Cancel current operation? [Y/n] "))) {
- if(alpm_trans_release() == -1) {
- fprintf(stderr, _("error: failed to release transaction (%s)\n"),
- alpm_strerrorlast());
- retval = 1;
- goto cleanup;
- }
- if(alpm_trans_init(PM_TRANS_TYPE_SYNC, config->flags,
- cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
- fprintf(stderr, _("error: failed to init transaction (%s)\n"),
- alpm_strerrorlast());
- return(1);
- }
- if(alpm_trans_addtarget("pacman") == -1) {
- fprintf(stderr, _("error: pacman: %s\n"), alpm_strerrorlast());
- retval = 1;
- goto cleanup;
+ if(!(alpm_trans_get_flags() & (PM_TRANS_FLAG_DOWNLOADONLY | PM_TRANS_FLAG_PRINTURIS))) {
+ /* check if pacman itself is one of the packages to upgrade.
+ * this can prevent some of the "syntax error" problems users can have
+ * when sysupgrade'ing with an older version of pacman.
+ */
+ pkgs = alpm_trans_get_pkgs();
+ for(i = pkgs; i; i = alpm_list_next(i)) {
+ pmsyncpkg_t *sync = alpm_list_getdata(i);
+ pmpkg_t *spkg = alpm_sync_get_pkg(sync);
+ /* TODO pacman name should probably not be hardcoded. In addition, we
+ * have problems on an -Syu if pacman has to pull in deps, so recommend
+ * an '-S pacman' operation */
+ if(strcmp("pacman", alpm_pkg_get_name(spkg)) == 0) {
+ printf("\n");
+ printf(_(":: pacman has detected a newer version of itself.\n"
+ ":: It is recommended that you upgrade pacman by itself\n"
+ ":: using 'pacman -S pacman', and then rerun the current\n"
+ ":: operation. If you wish to continue the operation and\n"
+ ":: not upgrade pacman separately, answer no.\n"));
+ if(yesno(_(":: Cancel current operation? [Y/n] "))) {
+ if(alpm_trans_release() == -1) {
+ fprintf(stderr, _("error: failed to release transaction (%s)\n"),
+ alpm_strerrorlast());
+ retval = 1;
+ goto cleanup;
+ }
+ if(alpm_trans_init(PM_TRANS_TYPE_SYNC, config->flags,
+ cb_trans_evt, cb_trans_conv, cb_trans_progress) == -1) {
+ fprintf(stderr, _("error: failed to init transaction (%s)\n"),
+ alpm_strerrorlast());
+ return(1);
+ }
+ if(alpm_trans_addtarget("pacman") == -1) {
+ fprintf(stderr, _("error: pacman: %s\n"), alpm_strerrorlast());
+ retval = 1;
+ goto cleanup;
+ }
+ break;
}
- break;
}
}
}