[pacman-dev] [PATCH] Add support for passing --unrequired twice (for optdep)
jjacky
i.am.jack.mail at gmail.com
Sun Jun 16 07:14:36 EDT 2013
On 06/16/13 11:57, Allan McRae wrote:
> On 15/06/13 22:07, Olivier Brunel wrote:
>> Passing two -t will restrict or filter output to packages also not set as
>> optional dependency by any installed package.
>>
>> Makes it easy to spot potentially useless packages using -Qdttq
>>
>> Signed-off-by: Olivier Brunel <i.am.jack.mail at gmail.com>
>> ---
>> doc/pacman.8.txt | 4 +++-
>> src/pacman/pacman.c | 2 +-
>> src/pacman/query.c | 11 ++++++++---
>> 3 files changed, 12 insertions(+), 5 deletions(-)
>>
>> diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
>> index 1cc1eaa..6abd491 100644
>> --- a/doc/pacman.8.txt
>> +++ b/doc/pacman.8.txt
>> @@ -314,7 +314,9 @@ Query Options[[QO]]
>>
>> *-t, \--unrequired*::
>> Restrict or filter output to packages not required by any currently
>> - installed package.
>> + installed package. Passing two '--unrequired' or '-t' flags will restrict or
>> + filter output to packages also not set as optional dependency by any
>> + currently installed package.
>
> I'd prefer the opposite:
>
> *-t, \--unrequired*::
> Restrict or filter output to packages not required or optionally
> required by any currently installed package. Specify this option twice
> to only filter packages that are direct dependencies (i.e. do not filter
> optional dependencies).
Sure, quick question then: Should the help string (on -Qh) be modified
to reflect this change?
If so, I'm not sure how best to quickly describe it; this removes the
"of any package" bit, but it should still be clear?
"list packages not direct/opt (-tt direct only) dependencies [filter]"
>
>> *-u, \--upgrades*::
>> Restrict or filter output to packages that are out-of-date on the local
>> diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
>> index 7aa0271..4a94d32 100644
>> --- a/src/pacman/pacman.c
>> +++ b/src/pacman/pacman.c
>> @@ -483,7 +483,7 @@ static int parsearg_query(int opt)
>> case 'p': config->op_q_isfile = 1; break;
>> case 'q': config->quiet = 1; break;
>> case 's': config->op_q_search = 1; break;
>> - case 't': config->op_q_unrequired = 1; break;
>> + case 't': (config->op_q_unrequired)++; break;
>> case 'u': config->op_q_upgrade = 1; break;
>> default: return 1;
>> }
>> diff --git a/src/pacman/query.c b/src/pacman/query.c
>> index f5862a2..f15555a 100644
>> --- a/src/pacman/query.c
>> +++ b/src/pacman/query.c
>> @@ -312,11 +312,16 @@ static unsigned short pkg_get_locality(alpm_pkg_t *pkg)
>> return PKG_LOCALITY_FOREIGN;
>> }
>>
>> -static int is_unrequired(alpm_pkg_t *pkg)
>> +static int is_unrequired(alpm_pkg_t *pkg, unsigned short level)
>> {
>> alpm_list_t *requiredby = alpm_pkg_compute_requiredby(pkg);
>> if(requiredby == NULL) {
>> - return 1;
>> + if(level > 1) {
>> + requiredby = alpm_pkg_compute_optionalfor(pkg);
>> + }
>> + if(requiredby == NULL) {
>> + return 1;
>> + }
>> }
>> FREELIST(requiredby);
>> return 0;
>> @@ -339,7 +344,7 @@ static int filter(alpm_pkg_t *pkg)
>> return 0;
>> }
>> /* check if this pkg is unrequired */
>> - if(config->op_q_unrequired && !is_unrequired(pkg)) {
>> + if(config->op_q_unrequired && !is_unrequired(pkg, config->op_q_unrequired)) {
>> return 0;
>> }
>> /* check if this pkg is outdated */
>>
>
>
More information about the pacman-dev
mailing list