[pacman-dev] [PATCH] Display install status of optdependencies

Arokux B. arokux at gmail.com
Sun Aug 12 09:17:50 EDT 2012


Hi,

I would prefer to see [install] and [pending] in front of the package
name and description, not after it,

i.e.

    [installed] tk: gitk and git gui
    perl-libwww: git svn
    [pending] perl-term-readkey: git svn
    perl-mime-tools: git send-email
    perl-net-smtp-ssl: git send-email TLS support

maybe even like this:

    [installed] tk: gitk and git gui
                   perl-libwww: git svn
    [pending] perl-term-readkey: git svn
                  perl-mime-tools: git send-email
                  perl-net-smtp-ssl: git send-email TLS support

Best,
Arokux



On Sun, Aug 12, 2012 at 1:11 PM, Allan McRae <allan at archlinux.org> wrote:
> When a packages (new) optdepends are printed in install (update),
> add a note of their current installation status.  Packages currently
> installed are labelled with [installed] and packages to be installed
> in this transaction are labelled [pending].
>
> Signed-off-by: Allan McRae <allan at archlinux.org>
> ---
>
> I went a different way to previous patches that altered this.  They
> all did not display installed optdependencies, but I prefer showing
> them by default.  Later there may be an option added to install all
> optdepends by default and in that case the output can be removed.
>
>
> Example output:
>
>> sudo ./src/pacman/pacman -S git perl-term-readkey
> Password:
> resolving dependencies...
> looking for inter-conflicts...
>
> Packages (2): git-1.7.11.4-1  perl-term-readkey-2.30.02-2
>
> Total Installed Size:   16.79 MiB
>
> Proceed with installation? [Y/n]
> (2/2) checking package integrity                   [######################] 100%
> (2/2) loading package files                        [######################] 100%
> (2/2) checking for file conflicts                  [######################] 100%
> (1/2) installing git                               [######################] 100%
> Optional dependencies for git
>     tk: gitk and git gui [installed]
>     perl-libwww: git svn
>     perl-term-readkey: git svn [pending]
>     perl-mime-tools: git send-email
>     perl-net-smtp-ssl: git send-email TLS support
>     perl-authen-sasl: git send-email TLS support
>     python2: various helper scripts [installed]
>     subversion: git svn [installed]
>     cvsps: git cvsimport
> (2/2) installing perl-term-readkey                 [######################] 100%
>
>
>  src/pacman/util.c | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/src/pacman/util.c b/src/pacman/util.c
> index 995308c..4d8727f 100644
> --- a/src/pacman/util.c
> +++ b/src/pacman/util.c
> @@ -1192,6 +1192,22 @@ static int depend_cmp(const void *d1, const void *d2)
>         return ret;
>  }
>
> +static char *make_optstring(alpm_depend_t *optdep)
> +{
> +       char *optstring = alpm_dep_compute_string(optdep);
> +       char *status = NULL;
> +       if(alpm_db_get_pkg(alpm_get_localdb(config->handle), optdep->name)) {
> +               status = _(" [installed]");
> +       } else if(alpm_pkg_find(alpm_trans_get_add(config->handle), optdep->name)) {
> +               status = _(" [pending]");
> +       }
> +       if(status) {
> +               optstring = realloc(optstring, strlen(optstring) + strlen(status) + 1);
> +               strcpy(optstring + strlen(optstring), status);
> +       }
> +       return optstring;
> +}
> +
>  void display_new_optdepends(alpm_pkg_t *oldpkg, alpm_pkg_t *newpkg)
>  {
>         alpm_list_t *i, *old, *new, *optdeps, *optstrings = NULL;
> @@ -1203,7 +1219,7 @@ void display_new_optdepends(alpm_pkg_t *oldpkg, alpm_pkg_t *newpkg)
>         /* turn optdepends list into a text list */
>         for(i = optdeps; i; i = alpm_list_next(i)) {
>                 alpm_depend_t *optdep = i->data;
> -               optstrings = alpm_list_add(optstrings, alpm_dep_compute_string(optdep));
> +               optstrings = alpm_list_add(optstrings, make_optstring(optdep));
>         }
>
>         if(optstrings) {
> @@ -1225,7 +1241,7 @@ void display_optdepends(alpm_pkg_t *pkg)
>         /* turn optdepends list into a text list */
>         for(i = optdeps; i; i = alpm_list_next(i)) {
>                 alpm_depend_t *optdep = i->data;
> -               optstrings = alpm_list_add(optstrings, alpm_dep_compute_string(optdep));
> +               optstrings = alpm_list_add(optstrings, make_optstring(optdep));
>         }
>
>         if(optstrings) {
> --
> 1.7.11.4
>
>


More information about the pacman-dev mailing list