[pacman-dev] [PATCH] Group optional dependencies by installation status

Allan McRae allan at archlinux.org
Thu Jul 11 22:43:41 EDT 2013


On 12/07/13 04:43, Drew DeVault wrote:
> Not sure how expensive alpm_db_get_pkg is, so it might be worthwhile to
> use something other than make_optstring to accomplish this if we want to
> avoid calling it four times per package.

Optional dependencies are (or should be) listed in a PKGBUILD in order
of importance.  We previously rejected outputting them in alphabetical
order because of this.   Given this patch just groups the installed/not
installed nature of the optdepend, I suppose this is more reasonable,
but I am still reluctant.

Also, surely uninstalled optdepends are the more important ones and
should be listed first.

Allan

> Signed-off-by: Drew DeVault <sir at cmpwn.com>
> ---
>  src/pacman/util.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/src/pacman/util.c b/src/pacman/util.c
> index 23c4009..c1d3dab 100644
> --- a/src/pacman/util.c
> +++ b/src/pacman/util.c
> @@ -1243,10 +1243,19 @@ void display_optdepends(alpm_pkg_t *pkg)
>  
>      optdeps = alpm_pkg_get_optdepends(pkg);
>  
> -    /* turn optdepends list into a text list */
> +    /* turn optdepends list into a text list, with uninstalled
> dependencies last */
>      for(i = optdeps; i; i = alpm_list_next(i)) {
>          alpm_depend_t *optdep = i->data;
> -        optstrings = alpm_list_add(optstrings, make_optstring(optdep));
> +        if(alpm_db_get_pkg(alpm_get_localdb(config->handle),
> optdep->name) != 0) {
> +            optstrings = alpm_list_add(optstrings, make_optstring(optdep));
> +        }
> +    }
> +
> +    for(i = optdeps; i; i = alpm_list_next(i)) {
> +        alpm_depend_t *optdep = i->data;
> +        if(alpm_db_get_pkg(alpm_get_localdb(config->handle),
> optdep->name) == 0) {
> +            optstrings = alpm_list_add(optstrings, make_optstring(optdep));
> +        }
>      }
>  
>      if(optstrings) {
> 



More information about the pacman-dev mailing list