[pacman-dev] [PATCH v3 0/8] Patches for better optdep support

Benedikt Morbach benedikt.morbach at googlemail.com
Mon Aug 1 14:31:44 EDT 2011


I'm flooding your inbox one last time (for the next two weeks),
so you can all bitch about how crappy my patches are while I'm away ;-)

This implements most features from https://wiki.archlinux.org/index.php/User:Allan/Pacman_OptDepends
(I've added some things regarding package removal there)

I'v also added this here: https://wiki.archlinux.org/index.php/Pacman_Roadmap
Github link: https://github.com/moben/pacman/tree/optdep

What is there:
    - No regressions afaics
    - Only show uninstalled optdepends during install/upgrade
    - In package info, show [installed] after installed optdepends
    - In package info (local or -ii) show packages which optionally depend on the queried package
    - '-Qt' doesn't consider optdepends to be orphans, unless '--nooptdeps/-n' is given
      if it is given, display them like this: 'sqlite3 3.7.7.1-1 (optdepend for: dbmail, python)'
    - Recursive removal of unneeded optdeps

What is still missing:
    - In package info display the description alongside the "reverse optdeps" [1]
    - Cascading to optdepends on package removal with an optional flag [2]
    - Warn when removing optdepends for installed packages [3]
    - Anything listed under "Other Ideas"
    - Tests (mainly needed for the package removal stuff I think)
    - Docs with less sucky english ;-)

[1] Not sure if this would be to much and clutter the whole thing, especially for sync repos
[2] Maybe '--optdeps/-o'  (Related: make 'pacman -So foobar' install all optdepends)
[3] like ':: foo: requires bar', but nonfatal

Suggestions on how to implement [3]?
I've looked at how it works for normal requires by getting ALPM_ERR_UNSATISFIED_DEPS from libalpm,
but we don't want to raise an error here, so what to do?

I'm still not sure about http://mailman.archlinux.org/pipermail/pacman-dev/2011-July/013886.html
It sounds like a good idea, but would also mean changing (some|many|most|all) dep allocating functions from

    alpm_depend_t *func(foo)
to 
    int func(foo, alpm_depend_t *WriteThis)

and make them not allocate the alpm_depend_t themselves.
An alternative would be to create a new set of functions and make the current ones thin wrappers
around those, so most code can stay as simple as it is now and use the allocated object.

Comments?


---
Benedikt

Benedikt Morbach (8):
  Split optdep into alpm_depend_t and description
  Hook new optdepend structures up
  Only display uninstalled optdepends during install/upgrade
  Show optdep install status in package info
  optdepends are not orphans unless --nooptdepends is specified
  Make package info show optional requirements
  Make recursive removal consider optdepends
  Show list of optrequires with -Qtdn

 doc/pacman.8.txt         |    6 ++
 lib/libalpm/alpm.h       |   14 +++++-
 lib/libalpm/be_local.c   |   11 ++++-
 lib/libalpm/be_package.c |    5 +-
 lib/libalpm/be_sync.c    |    7 ++-
 lib/libalpm/deps.c       |   86 ++++++++++++++++++++++++++++++++-
 lib/libalpm/deps.h       |    3 +
 lib/libalpm/package.c    |   40 +++++++++++-----
 src/pacman/conf.h        |    1 +
 src/pacman/package.c     |   13 ++++-
 src/pacman/pacman.c      |    3 +
 src/pacman/query.c       |   27 +++++++++--
 src/pacman/util.c        |  120 +++++++++++++++++++++++++++++++++++++++-------
 src/pacman/util.h        |    2 +
 src/util/pactree.c       |    2 +-
 15 files changed, 296 insertions(+), 44 deletions(-)

-- 
1.7.6



More information about the pacman-dev mailing list