Now that 4.0/4.0.1 is out, I thought it might be time to finally send these patches in for review. This will probably still need some polish (maybe quite a bit in some places) but it works quite well and I have been using it for some time. The code is also at https://github.com/moben/pacman branch:optdep And now, please review ald yell at my bad code :) --- Benedikt Benedikt Morbach (14): Split optdep into alpm_depend_t and description Hook new optdepend structures up Only display uninstalled optdepends during install/upgrade Add option for showing all optdeps again Show optdep install status in package info optdepends are not orphans unless --optdeps is specified Make package info show optional requirements Make recursive removal consider optdepends Show list of optrequires with -Qtdn Warn on optdep removal Add flag to recurse through optdepends Add option to install all optdepends by default Add option to ask which optdeps to install Make HandleOptdeps Ask and Install work together better doc/pacman.8.txt | 11 +++ doc/pacman.conf.5.txt | 14 +++ etc/pacman.conf.in | 2 + lib/libalpm/add.c | 4 +- lib/libalpm/alpm.h | 25 +++++- lib/libalpm/be_local.c | 12 ++- lib/libalpm/be_package.c | 5 +- lib/libalpm/be_sync.c | 8 ++- lib/libalpm/deps.c | 127 ++++++++++++++++++++++++++--- lib/libalpm/deps.h | 5 +- lib/libalpm/error.c | 2 + lib/libalpm/package.c | 40 ++++++--- lib/libalpm/remove.c | 22 ++++- lib/libalpm/sync.c | 2 +- lib/libalpm/trans.c | 10 ++- src/pacman/conf.c | 27 ++++++ src/pacman/conf.h | 10 ++ src/pacman/package.c | 24 ++++- src/pacman/pacman.c | 7 ++ src/pacman/query.c | 27 +++++- src/pacman/remove.c | 23 ++++- src/pacman/sync.c | 125 +++++++++++++++++++++++++++-- src/pacman/upgrade.c | 2 +- src/pacman/util.c | 177 ++++++++++++++++++++++++++++++++++------ src/pacman/util.h | 5 +- src/util/pactree.c | 2 +- src/util/testdb.c | 2 +- test/pacman/tests/query010.py | 12 +++ test/pacman/tests/query011.py | 15 ++++ test/pacman/tests/query012.py | 13 +++ test/pacman/tests/query020.py | 14 +++ test/pacman/tests/query021.py | 14 +++ test/pacman/tests/query022.py | 14 +++ test/pacman/tests/remove053.py | 15 ++++ test/pacman/tests/remove054.py | 14 +++ test/pacman/tests/remove055.py | 20 +++++ test/pacman/tests/remove056.py | 20 +++++ test/pacman/tests/sync060.py | 12 +++ test/pacman/tests/sync061.py | 15 ++++ test/pacman/tests/sync062.py | 17 ++++ test/pacman/tests/sync063.py | 17 ++++ 41 files changed, 839 insertions(+), 93 deletions(-) create mode 100644 test/pacman/tests/query010.py create mode 100644 test/pacman/tests/query011.py create mode 100644 test/pacman/tests/query012.py create mode 100644 test/pacman/tests/query020.py create mode 100644 test/pacman/tests/query021.py create mode 100644 test/pacman/tests/query022.py create mode 100644 test/pacman/tests/remove053.py create mode 100644 test/pacman/tests/remove054.py create mode 100644 test/pacman/tests/remove055.py create mode 100644 test/pacman/tests/remove056.py create mode 100644 test/pacman/tests/sync060.py create mode 100644 test/pacman/tests/sync061.py create mode 100644 test/pacman/tests/sync062.py create mode 100644 test/pacman/tests/sync063.py -- 1.7.7.3