Display install status of optdependencies
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@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 |
Display install status of optdependencies
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@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@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 > > |
| All times are GMT. The time now is 07:50 AM. |
VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.