Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   ArchLinux Pacman Development (http://www.linux-archive.org/archlinux-pacman-development/)
-   -   make -d less strict; add -dd option (http://www.linux-archive.org/archlinux-pacman-development/482206-make-d-less-strict-add-dd-option.html)

Florian Pritz 01-28-2011 07:11 AM

make -d less strict; add -dd option
 
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

Dan McGee 01-28-2011 06:48 PM

make -d less strict; add -dd option
 
On Fri, Jan 28, 2011 at 2:11 AM, Florian Pritz
<bluewind@server-speed.net> wrote:
> From: Florian Pritz <bluewind@xssn.at>
>
> -d skips checking the version of a dependency.
>
> -dd skips the whole dependency check
Periods are awesome, please use one. :)

I assume this follows the actual implementation of this in the
backend, even though it has a patch 1/2 subject? Maybe resubmitting
just the two -d/-dd patches as a single set would be good to make sure
I know what to apply here.

>
> 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,
Missing period.

> + 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.
No double-space.

>
> *-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;
Why do we need to back the depversion flag out at all? Given that
nodepversion is less strong than nodeps, it doesn't make intuitive
sense to have to do this.

> + } 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
>
>

Florian Pritz 01-28-2011 06:59 PM

make -d less strict; add -dd option
 
On 28.01.2011 20:48, Dan McGee wrote:
> On Fri, Jan 28, 2011 at 2:11 AM, Florian Pritz
> <bluewind@server-speed.net> wrote:
>> From: Florian Pritz <bluewind@xssn.at>
>>
>> -d skips checking the version of a dependency.
>>
>> -dd skips the whole dependency check
> Periods are awesome, please use one. :)

Fixed.

> I assume this follows the actual implementation of this in the
> backend, even though it has a patch 1/2 subject? Maybe resubmitting
> just the two -d/-dd patches as a single set would be good to make sure
> I know what to apply here.

Oh sorry I broke that when using format-patch. :(

I didn't want to resubmit all 5 patches so I just exported 3 and 4 (old
numbers). This one is the fixed 3 and "[PATCH 2/2] makepkg: add
soprovides support" is the fixed 4.

>> - 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,
> Missing period.
>
>> + 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.
> No double-space.

Both fixed

>> *-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;
> Why do we need to back the depversion flag out at all? Given that
> nodepversion is less strong than nodeps, it doesn't make intuitive
> sense to have to do this.

I haven't checked that yet, but if it's not needed I'll take it out.

--
Florian Pritz -- {flo,bluewind}@server-speed.net

Dan McGee 01-31-2011 03:09 PM

make -d less strict; add -dd option
 
On Fri, Jan 28, 2011 at 1:59 PM, Florian Pritz
<bluewind@server-speed.net> wrote:
> On 28.01.2011 20:48, Dan McGee wrote:
>> On Fri, Jan 28, 2011 at 2:11 AM, Florian Pritz
>> <bluewind@server-speed.net> wrote:
>>> From: Florian Pritz <bluewind@xssn.at>
>>>
>>> -d skips checking the version of a dependency.
>>>
>>> -dd skips the whole dependency check
>> Periods are awesome, please use one. :)
>
> Fixed.
>
>> I assume this follows the actual implementation of this in the
>> backend, even though it has a patch 1/2 subject? Maybe resubmitting
>> just the two -d/-dd patches as a single set would be good to make sure
>> I know what to apply here.
>
> Oh sorry I broke that when using format-patch. :(
>
> I didn't want to resubmit all 5 patches so I just exported 3 and 4 (old
> numbers). This one is the fixed 3 and "[PATCH 2/2] makepkg: add
> soprovides support" is the fixed 4.
>
>>> - * * * 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,
>> Missing period.
>>
>>> + * * * 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.
>> No double-space.
>
> Both fixed
>
>>> **-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;
>> Why do we need to back the depversion flag out at all? Given that
>> nodepversion is less strong than nodeps, it doesn't make intuitive
>> sense to have to do this.
>
> I haven't checked that yet, but if it's not needed I'll take it out.

Test this yet?

-Dan


All times are GMT. The time now is 09:04 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.