From: Florian Pritz <bluewind@xssn.at> -dd ignores only the version of a dependency being checked, but not the package itself. Signed-off-by: Florian Pritz <bluewind@xssn.at> Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com> --- doc/pacman.8.txt | 1 + src/pacman/pacman.c | 11 ++++++++++- test/pacman/tests/sync-sdd1.py | 2 -- test/pacman/tests/sync-sdd4.py | 2 -- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt index 2b47a88..735bff9 100644 --- a/doc/pacman.8.txt +++ b/doc/pacman.8.txt @@ -155,6 +155,7 @@ Transaction Options (apply to '-S', '-R' and '-U') Skips all dependency checks. Normally, pacman will always check a package's dependency fields to ensure that all dependencies are installed and there are no package conflicts in the system. + Specify this option twice to skip the version checking only. *-k, \--dbonly*:: Adds/Removes the database entry only, leaves all files in place. diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index 7d51124..d83ec07 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -512,8 +512,17 @@ static int parsearg_query(int opt) /* options common to -S -R -U */ static int parsearg_trans(int opt) { + static int nodeps = 0; switch(opt) { - case 'd': config->flags |= PM_TRANS_FLAG_NODEPS; break; + case 'd': + nodeps++; + if(nodeps == 1) { + config->flags |= PM_TRANS_FLAG_NODEPS; + } else if(nodeps == 2) { + config->flags ^= PM_TRANS_FLAG_NODEPS; + config->flags |= PM_TRANS_FLAG_NODEPVERSION; + } + break; case 'k': config->flags |= PM_TRANS_FLAG_DBONLY; break; case OP_NOPROGRESSBAR: config->noprogressbar = 1; break; case OP_NOSCRIPTLET: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break; diff --git a/test/pacman/tests/sync-sdd1.py b/test/pacman/tests/sync-sdd1.py index 4438ef0..c73d203 100644 --- a/test/pacman/tests/sync-sdd1.py +++ b/test/pacman/tests/sync-sdd1.py @@ -14,5 +14,3 @@ self.addrule("PKG_EXIST=pkg1") self.addrule("PKG_EXIST=pkg2") self.addrule("PKG_DEPENDS=pkg1|provision>1.0-1") - -self.expectfailure = True diff --git a/test/pacman/tests/sync-sdd4.py b/test/pacman/tests/sync-sdd4.py index 4cd4b54..c96c6df 100644 --- a/test/pacman/tests/sync-sdd4.py +++ b/test/pacman/tests/sync-sdd4.py @@ -13,5 +13,3 @@ self.addrule("PACMAN_RETCODE=1") self.addrule("!PKG_EXIST=pkg1") self.addrule("!PKG_EXIST=pkg2") - -self.expectfailure = True -- 1.7.3.1