From: Florian Pritz <bluewind@xssn.at> -d skips checking the version of a dependency. -dd skips the whole dependency check Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com> Signed-off-by: Florian Pritz <bluewind@server-speed.net> --- doc/pacman.8.txt | 7 ++++--- src/pacman/pacman.c | 9 ++++++++- test/pacman/tests/sync-nodepversion01.py | 6 ++---- test/pacman/tests/sync-nodepversion03.py | 4 ++-- test/pacman/tests/sync-nodepversion04.py | 4 +--- test/pacman/tests/sync-nodepversion05.py | 4 ++-- test/pacman/tests/sync045.py | 4 ++-- test/pacman/tests/upgrade072.py | 2 +- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt index 2b47a88..4ce8fa2 100644 --- a/doc/pacman.8.txt +++ b/doc/pacman.8.txt @@ -152,9 +152,10 @@ Options Transaction Options (apply to '-S', '-R' and '-U') -------------------------------------------------- *-d, \--nodeps*:: - 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. + Skips dependency version checks. Package names are still checked 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 all dependency checks. *-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 c267060..363b167 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -553,7 +553,14 @@ static int parsearg_query(int opt) static int parsearg_trans(int opt) { switch(opt) { - case 'd': config->flags |= PM_TRANS_FLAG_NODEPS; break; + case 'd': + if(config->flags & PM_TRANS_FLAG_NODEPVERSION) { + config->flags ^= PM_TRANS_FLAG_NODEPVERSION; + config->flags |= PM_TRANS_FLAG_NODEPS; + } else { + 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-nodepversion01.py b/test/pacman/tests/sync-nodepversion01.py index 3db445f..5829b9e 100644 --- a/test/pacman/tests/sync-nodepversion01.py +++ b/test/pacman/tests/sync-nodepversion01.py @@ -1,4 +1,4 @@ -self.description = "nodepversion: -Sdd works" +self.description = "nodepversion: -Sd works" p1 = pmpkg("pkg1", "1.0-2") p1.depends = ["provision>1.0-1"] @@ -8,11 +8,9 @@ p2.provides = ["provision=1.0-1"] self.addpkg2db("sync", p2) -self.args = "-Sdd %s" % p1.name +self.args = "-Sd %s" % p1.name self.addrule("PACMAN_RETCODE=0") 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-nodepversion03.py b/test/pacman/tests/sync-nodepversion03.py index 8ebb1c8..378ff76 100644 --- a/test/pacman/tests/sync-nodepversion03.py +++ b/test/pacman/tests/sync-nodepversion03.py @@ -1,4 +1,4 @@ -self.description = "nodepversion: -Sd works but no deps" +self.description = "nodepversion: -Sdd works but no deps" p1 = pmpkg("pkg1", "1.0-2") p1.depends = ["provision>=1.0-2"] @@ -8,7 +8,7 @@ p2.provides = ["provision=1.0-1"] self.addpkg2db("sync", p2) -self.args = "-Sd %s" % p1.name +self.args = "-Sdd %s" % p1.name self.addrule("PACMAN_RETCODE=0") self.addrule("PKG_EXIST=pkg1") diff --git a/test/pacman/tests/sync-nodepversion04.py b/test/pacman/tests/sync-nodepversion04.py index f5a091e..2bf83bb 100644 --- a/test/pacman/tests/sync-nodepversion04.py +++ b/test/pacman/tests/sync-nodepversion04.py @@ -8,10 +8,8 @@ p2.provides = ["provision=1.0-1"] self.addpkg2db("sync", p2) -self.args = "-Sdd %s" % p1.name +self.args = "-Sd %s" % p1.name self.addrule("PACMAN_RETCODE=1") self.addrule("!PKG_EXIST=pkg1") self.addrule("!PKG_EXIST=pkg2") - -self.expectfailure = True diff --git a/test/pacman/tests/sync-nodepversion05.py b/test/pacman/tests/sync-nodepversion05.py index f2a45f0..bc048db 100644 --- a/test/pacman/tests/sync-nodepversion05.py +++ b/test/pacman/tests/sync-nodepversion05.py @@ -1,4 +1,4 @@ -self.description = "nodepversion: -Sudd works" +self.description = "nodepversion: -Sud works" p1 = pmpkg("pkg1", "1.0-1") p1.depends = ["provision=1.0"] @@ -12,7 +12,7 @@ sp2.provides = ["provision=1.1"] self.addpkg2db("sync", sp2) -self.args = "-Sudd" +self.args = "-Sud" self.addrule("PACMAN_RETCODE=0") self.addrule("PKG_VERSION=pkg1|1.0-1") diff --git a/test/pacman/tests/sync045.py b/test/pacman/tests/sync045.py index 574c0a5..6c31983 100644 --- a/test/pacman/tests/sync045.py +++ b/test/pacman/tests/sync045.py @@ -1,4 +1,4 @@ -self.description = "Install a sync package conflicting with two local ones (-d)" +self.description = "Install a sync package conflicting with two local ones (-dd)" sp = pmpkg("pkg1") sp.conflicts = ["pkg2", "pkg3"] @@ -10,7 +10,7 @@ lp2 = pmpkg("pkg3") self.addpkg2db("local", lp2); -self.args = "-Sd %s --ask=4" % sp.name +self.args = "-Sdd %s --ask=4" % sp.name self.addrule("PACMAN_RETCODE=0") self.addrule("PKG_EXIST=pkg1") diff --git a/test/pacman/tests/upgrade072.py b/test/pacman/tests/upgrade072.py index f88e150..116103b 100644 --- a/test/pacman/tests/upgrade072.py +++ b/test/pacman/tests/upgrade072.py @@ -6,7 +6,7 @@ p.depends = ["dep1"] self.addpkg(p) -self.args = "-Ud %s" % p.filename() +self.args = "-Udd %s" % p.filename() self.addrule("PACMAN_RETCODE=0") self.addrule("PKG_EXIST=dummy") -- 1.7.3.5