summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNagy Gabor <ngaba@bibl.u-szeged.hu>2009-05-14 18:25:16 +0200
committerDan McGee <dan@archlinux.org>2009-07-23 03:16:52 +0200
commit1d19f0896ccc1560a7e2f5b93cfe095b4aefe84a (patch)
treefc8916e5fb63e474d3cdcd8af937b1c6d07d811d /src
parentca6ef852f9944ad31e8a136f7faf71da2c5fb57f (diff)
downloadpacman-1d19f0896ccc1560a7e2f5b93cfe095b4aefe84a.tar.gz
pacman-1d19f0896ccc1560a7e2f5b93cfe095b4aefe84a.tar.xz
Introduce -Suu
If the user switches from unstable repo to a stable one, it is quite hard to sync its system with the new repo (the user will see many "Local is newer than stable" messages, nothing more). That's why I introduced -Suu, which treats a sync package like an upgrade, iff the package version doesn't match with the local one's. I added a new pactest (sync104.py) to test this, and I updated the documentation of -Su. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> [Dan: slight doc reword] Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r--src/pacman/pacman.c4
-rw-r--r--src/pacman/sync.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 48d45ad1..d5e600a5 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -130,7 +130,7 @@ static void usage(int op, const char * const myname)
printf(_(" -l, --list <repo> view a list of packages in a repo\n"));
printf(_(" -p, --print-uris print out URIs for given packages and their dependencies\n"));
printf(_(" -s, --search <regex> search remote repositories for matching strings\n"));
- printf(_(" -u, --sysupgrade upgrade all packages that are out of date\n"));
+ printf(_(" -u, --sysupgrade upgrade all outdated packages (-uu enables downgrade)\n"));
printf(_(" -w, --downloadonly download packages but do not install/upgrade anything\n"));
printf(_(" -y, --refresh download fresh package databases from the server\n"));
printf(_(" --needed don't reinstall up to date packages\n"));
@@ -508,7 +508,7 @@ static int parseargs(int argc, char *argv[])
config->op_q_unrequired = 1;
break;
case 'u':
- config->op_s_upgrade = 1;
+ (config->op_s_upgrade)++;
config->op_q_upgrade = 1;
config->flags |= PM_TRANS_FLAG_UNNEEDED;
break;
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index cb0b8b19..4da65400 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -563,7 +563,7 @@ static int sync_trans(alpm_list_t *targets)
if(config->op_s_upgrade) {
printf(_(":: Starting full system upgrade...\n"));
alpm_logaction("starting full system upgrade\n");
- if(alpm_trans_sysupgrade() == -1) {
+ if(alpm_trans_sysupgrade(config->op_s_upgrade >= 2) == -1) {
pm_fprintf(stderr, PM_LOG_ERROR, "%s\n", alpm_strerrorlast());
retval = 1;
goto cleanup;