FS#5775 - pacman does not install all dependencies

Attached to Project: Pacman
Opened by Roman Kyrylych (Romashka) - Tuesday, 07 November 2006, 11:34 GMT
Last edited by Roman Kyrylych (Romashka) - Tuesday, 06 February 2007, 20:53 GMT
Task Type Bug Report
Category
Status Closed
Assigned To Aaron Griffin (phrakture)
Architecture not specified
Severity Critical
Priority High
Reported Version 0.7.2 Gimmick
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Original post is here: http://bbs.archlinux.org/viewtopic.php?p=206192#206192

1) pacman -S gnome-screensaver

Targets: libdrm-2.0.2-1 libgl-dri-6.5.1-1 glproto-1.4.7-1 mesa-6.5.1-1
gnome-screensaver-2.14.3-1

2) pacman -S gnome-screensaver

3) pacman -Rs gnome-screensaver

Targets: gnome-screensaver

I was shocked 8(

4) pacman -Qi mesa
. . .
Required By : gnome-screensaver xorg-res-utils
. . .

5) pacman -Qi xorg-res-utils
. . .
Depends On : libdmx libxaw libxft libxi libxinerama libxtst libxv
libxxf86dga libxxf86misc mesa
Required By : xorg-clients

How this could happen???

This is completely fresh installed machine, from tpowa's ISO + updates from full mirror of official repos (mirrored ~1 month ago).
I installed Xorg with
Code:
pacman -S xorg-server xorg-clients xf86-input-mouse xf86-input-keyboard xf86-video-vmware


Why pacman haven't installed mesa at that time???


-----

Then I did a clean Arch install on another machine and pacman -S xorg-server xorg-clients xf86-input-mouse xf86-input-keyboard xf86-video-vmware

xorg-res-utils were installed as a dependency for xorg-clients,
but no dependencies for xorg-res-utils were installed at all!


Then I did pacman -Rcs xorg-server xorg-clients xf86-input-mouse xf86-input-keyboard xf86-video-vmware
and total size of packages pacman wanted to remove was smaller than size of all xorg packages with deps which was shown during pacman -S.

I don't have logs for pacman -S / pacman -Rcs now, but I can repeat procedure and post them. It's easy to reproduce.

I don't checked this with pacman3 yet, so I don't know if this bug is fixed in it.
This task depends upon

This task blocks these from closing
 FS#6316 - Pacman 3 release bugcatcher 
Closed by  Roman Kyrylych (Romashka)
Friday, 09 February 2007, 10:24 GMT
Reason for closing:  Not a bug
Additional comments about closing:  See last comments.
Comment by Roman Kyrylych (Romashka) - Tuesday, 07 November 2006, 11:35 GMT
Sorry, I forgot to set Category to Pacman.
Comment by Roman Kyrylych (Romashka) - Wednesday, 08 November 2006, 01:22 GMT
Clarification:
IMHO the bug here is that pacman does not install mesa as a dependency for xorg-res-utils when installing xorg-clients.
Comment by Roman Kyrylych (Romashka) - Friday, 10 November 2006, 21:59 GMT
Here's a bug in -Rs in pacman3
Comment by Roman Kyrylych (Romashka) - Saturday, 11 November 2006, 17:26 GMT
Let the detective story begins... ;-)

1) installed Arch Linux from one of the latest tpowa's ISOs

2) pacman -Syu

3) pacman -S xorg-server xorg-clients xf86-input-keyboard xf86-input-mouse xf86-video-vmware

Targets: xproto-7.0.9-1 libice-1.0.1-1 libsm-1.0.1-1 libxau-1.0.1-1
libxdmcp-1.0.1-1 kbproto-1.0.2-1 inputproto-1.3.2-1
bigreqsproto-1.0.2-1 libx11-1.0.3-1 libxt-1.0.2-1 libxkbfile-1.0.3-1
libxkbui-1.0.2-1 xextproto-7.0.2-1 libxext-1.0.1-1 libxi-1.0.1-1
xf86miscproto-0.9.2-1 libxxf86misc-1.0.1-1 libfontenc-1.0.2-1
freetype2-2.2.1-3 fontsproto-2.0.2-1 libxfont-1.2.2-1
renderproto-0.9.1-1 libxrender-0.9.1-1 dmxproto-2.2.2-1 libdmx-1.0.2-1
libxmu-1.0.2-1 libxpm-3.5.5-1 printproto-1.0.3-1 libxp-1.0.0-1
libxaw-1.0.2-1 xf86vidmodeproto-2.2.2-1 libxxf86vm-1.0.1-1
xorg-fonts-encodings-1.0.1-1 xorg-fonts-alias-1.0.1-1
xorg-font-utils-1.0.1-1 expat-2.0.0-1 fontconfig-2.4.1-4
xorg-fonts-misc-1.0.0-3 xcursor-themes-1.0.1-1 xorg-xkb-utils-1.0.2-1
xkeyboard-config-0.6-1 fontcacheproto-0.1.2-1 libxfontcache-1.0.2-1
liblbxutil-1.0.1-1 randrproto-1.1.2-1 libxrandr-1.1.1-1
trapproto-3.4.3-1 libxtrap-1.0.0-1 mcpp-2.6-1 xorg-server-utils-1.0.2-2
xf86dgaproto-2.0.2-1 libxxf86dga-1.0.1-1 recordproto-1.13.2-1
libxtst-1.0.1-1 xineramaproto-1.1.2-1 libxinerama-1.0.0-1
videoproto-2.2.2-1 libxv-1.0.2-1 libxft-2.1.10-1 xorg-utils-1.0.1-1
xorg-server-1.1.1-3 fixesproto-4.0-2 libxfixes-4.0.1-1
libxcursor-1.1.7-1 libpng-1.2.12-1 xorg-apps-1.0.2-2 xorg-xauth-1.0.1-1
xorg-xsm-1.0.1-2 xorg-xinit-1.0.2-2 xorg-xfwp-1.0.1-2 libfs-1.0.0-1
xorg-xfs-1.0.2-1 xorg-xdm-1.1.0-1 xorg-twm-1.0.1-1
xorg-res-utils-1.0.0-1 xorg-clients-7.0-1 xf86-input-mouse-1.1.1-1
xf86-input-keyboard-1.1.0-1 xf86-video-vmware-10.13.0-1

Total Package Size: 23.1 MB

Proceed with upgrade? [Y/n] Y

!!! Note that there's no mesa listed here

4) pacman -Rs xorg-server xorg-clients xf86-input-keyboard xf86-input-mouse xf86-video-vmware

warning: cannot find package "mesa" or anything that provides it!
. . . (75 same lines in total!!!)

Targets: xf86-video-vmware xf86-input-keyboard xf86-input-mouse xorg-clients
xorg-res-utils xorg-twm xorg-xdm xorg-xfs libfs xorg-xfwp xorg-xinit
xorg-xsm xorg-xauth xorg-apps libpng libxcursor libxfixes fixesproto
xorg-server xorg-utils libxft libxv videoproto libxinerama
xineramaproto libxtst recordproto libxxf86dga xf86dgaproto
xorg-server-utils mcpp libxtrap trapproto libxrandr randrproto
liblbxutil libxfontcache fontcacheproto xkeyboard-config
xorg-xkb-utils xcursor-themes xorg-fonts-misc fontconfig expat
xorg-font-utils xorg-fonts-alias xorg-fonts-encodings libxxf86vm
xf86vidmodeproto libxaw libxp printproto libxpm libxmu libdmx
dmxproto libxrender renderproto libxfont fontsproto freetype2
libfontenc libxxf86misc xf86miscproto libxi libxext xextproto
libxkbui libxkbfile libxt libx11 bigreqsproto inputproto kbproto
libxdmcp libxau libsm libice xproto

Do you want to remove these packages? [Y/n] n


5) now let find who is requiring mesa,
to be sure write simple script info.sh:

#!/bin/bash
for i in `pacman -Q`; do
pacman -Qi $i
done

then do chmod +x info.sh and execute
./info.sh 2>/dev/nul | grep mesa -B 15 -A 1

Name : xorg-res-utils
Version : 1.0.0-1
Groups : None
Packager : Arch Linux (http://www.archlinux.org)
URL : http://xorg.freedesktop.org/
License : None
Architecture : i686
Size : 146504
Build Date : Sat Feb 18 10:39:05 2006 UTC
Install Date : Sat Nov 11 17:14:52 2006 UTC
Install Script : No
Reason: : installed as a dependency for another package
Provides : None
Depends On : libdmx libxaw libxft libxi libxinerama libxtst libxv
libxxf86dga libxxf86misc mesa
Required By : xorg-clients

So, the only package which require mesa is xorg-res-utils which is required by xorg-clients.
Why the hell pacman installed _all_ dependencies of xorg-res-utils _except_ mesa???
And why "warning: cannot find package "mesa" or anything that provides it!" appeared 75 times (!!!) before displaying list of packaged suggested for removal???

But... wait a minute... xorg-res-utils PKGBUILD contains depends=(libxaw) - only 1 dependency instead of 10!!!
WTF???

# cat /var/lib/pacman/current/xorg-res-utils-1.0.0-1/depends
%DEPENDS%
libxaw

OK, now
# /var/lib/pacman/local/xorg-res-utils-1.0.0-1/depends
%DEPENDS%
mesa
libxxf86dga
libxi
libxxf86misc
libxtst
libxinerama
libxv
libdmx
libxft
libxaw

%REQUIREDBY%
xorg-clients

%CONFLICTS%

%PROVIDES%


WTF is going???

1) All this depends except mesa are depends of xorg-utils, not xorg-res-utils!!!
2) WTF mesa is doing here???
3) Why the hell depends are changed at all???

Comment by Roman Kyrylych (Romashka) - Saturday, 11 November 2006, 17:37 GMT
I read http://bugs.archlinux.org/task/3999 but IMHO problems desctibed there were of slightly another kind.
Here we have strange changes in package database which leads to weird behaviour.
Comment by Aaron Griffin (phrakture) - Tuesday, 14 November 2006, 08:42 GMT
I have a suspicion this has to do with the forced resolution of virtual packages.... but that's just a guess. I will test this in pacman3
Comment by Roman Kyrylych (Romashka) - Tuesday, 06 February 2007, 19:25 GMT
Sadly, this bug is not fixed at all. :(
Comment by Aaron Griffin (phrakture) - Wednesday, 07 February 2007, 04:48 GMT
Soo.... I just tried to reproduce both of these on a nearly fresh system. Not only did pacman3 remove all packages as it should, it did it in exactly the reverse order.

Can you please provide some steps to reproduce this, as I can't seem to do it.

Comment by Roman Kyrylych (Romashka) - Wednesday, 07 February 2007, 10:07 GMT
As I posted in ML already, this is fixed: http://bugs.archlinux.org/?getfile=884
But everything as described in the longest comment (http://bugs.archlinux.org/task/5775#comment12437) is clearly reproduceable with rc8 (except pacman doesn't show "warning: cannot find package "mesa" or anything that provides it!" 75 times). I have nothing to add to this comment. See the second part of it - xorg-res-utils record in database becomes wrong - 10 depends instead of 1.
Comment by Dan McGee (toofishes) - Thursday, 08 February 2007, 01:22 GMT
Could not reproduce this in a brand new QEMU install. The depends of both the local and current xorg-res-utils were the same- only libxaw. This was with xorg-res-utils-1.0.3-1 being installed.
Comment by Roman Kyrylych (Romashka) - Friday, 09 February 2007, 10:20 GMT
I found the reason!
The problem is that xorg-res-utils-1.0.0-1.pkg.tar.gz contained wrong .PKGINFO all time until 1.0.3-1 update!

# Generated by makepkg 2.9.8
# Sat Feb 18 10:39:05 UTC 2006
pkgname = xorg-res-utils
pkgver = 1.0.0-1
pkgdesc = X.Org X11 resource utilities
url = http://xorg.freedesktop.org/
builddate = Sat Feb 18 10:39:05 2006
packager = Arch Linux (http://www.archlinux.org)
size = 146504
arch = i686
depend = mesa
depend = libxxf86dga
depend = libxi
depend = libxxf86misc
depend = libxtst
depend = libxinerama
depend = libxv
depend = libdmx
depend = libxft
depend = libxaw

While PKGBUILD always contained depends=(libxaw) and thus gensync generated the following xorg-res-utils-1.0.0-1/depends in our Current repo:
%DEPENDS%
libxaw

When pacman (any version) installed xorg-res-utils-1.0.0-1 it generated the following /var/lib/pacman/local/xorg-res-utils-1.0.0-1/depends:
%DEPENDS%
mesa
libxxf86dga
libxi
libxxf86misc
libxtst
libxinerama
libxv
libdmx
libxft
libxaw

%REQUIREDBY%
xorg-clients

So, pacman and gensync did everything correctly. It was a weird bug in old makepkg that lead to generating wrong .PKGINFO in xorg-res-utils-1.0.0-1 package.
Comment by Roman Kyrylych (Romashka) - Friday, 09 February 2007, 10:21 GMT
Or PKGBUILD's depends array was modified on dev's machine after building a package, but new package wasn't rebuilt.

Loading...