On Sun, Mar 8, 2009 at 2:42 PM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
A question: is the behavior of first searching the target-list for packages to satisfy dependencies a documented and expected behavior of pacman?
Not documented, but expected :). Moreover, see my comment above about the current asymmetric behavior, that is quite odd imho.
I completely agree.
-- new suggestions :) [optional] --
3. Now it can happen, that a missing dependency is added to the *data list many times. For example, if there is a popular unresolvable package in our repo, let's say gtk2, and we have 10 packages in the target list depend on that, then we get "gtk2 requires foo" error 10 times (if user doesn't want to remove unresolvable packages). So we may want to check *data list before adding a new missing dependency to avoid duplication.
+1
4. One more comment (I've just realised this during writing the previous one). I never liked our unresolvable dependencies errors: User does "pacman -S foo1 foo2 foo3" and he may get "error: bar requires baz", and he says "What?". Now, after your patch we can easily say, what package "induced" that error (pkg param of resolvedeps). We have a field causingpkg in pmdepmissing_t, we may want to use that for this purpose. (With -R that field has an other meaning, so this may be not a good idea.) Or we can print this info via PM_TRANS_CONV_REMOVE_PKGS.
+1 I just found a funny test case on my first try. Funny because besides the same missing dependency message being printed many times, there is also a "provider package was selected" printed multiple times, which makes the whole thing worse. If I understood you correctly, all these missing dependency messages look the same because we are missing one information : the "causingpkg", which is a target package that has an unresolvable dependency, correct? So with that additional info, all these missing dependency messages would be different. It seems fine to me to reuse the causingpkg field for that, because that name is quite general. We would just need to document well what it means in -R case, and what it means in -S/-U case.
sudo LANG=C pacman -S kde --ignore libxinerama kde package not found, searching for group... :: group kde (including ignored packages): kdeaccessibility kdeadmin kdeartwork kdebase kdebase-runtime kdebase-workspace kdeedu kdegames kdegraphics kdelibs kdemultimedia kdenetwork kdepim kdepimlibs kdeplasma-addons kdesdk kdetoys kdeutils kdewebdev :: Install whole content? [Y/n] resolving dependencies... warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" warning: cannot resolve "libxinerama", a dependency of "qt" warning: cannot resolve "libxinerama", a dependency of "qt" warning: provider package was selected (freeglut provides glut) warning: cannot resolve "libxinerama", a dependency of "qt" :: the following package(s) cannot be upgraded due to unresolvable dependencies: kdeaccessibility kdeadmin kdeartwork kdebase kdebase-runtime kdebase-workspace kdeedu kdegames kdegraphics kdelibs kdemultimedia kdenetwork kdepim kdepimlibs kdeplasma-addons kdesdk kdetoys kdeutils kdewebdev
Do you want to skip the above package(s) for this upgrade? [Y/n] looking for inter-conflicts... local database is up to date