Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 262457 - collision between x11-libs/qt-assistant-4.4.2-r1 and x11-libs/qt-4.3.3
Summary: collision between x11-libs/qt-assistant-4.4.2-r1 and x11-libs/qt-4.3.3
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS
Depends on:
Blocks: 261959
  Show dependency tree
 
Reported: 2009-03-14 18:15 UTC by Tomasz Radziszewski
Modified: 2009-03-16 00:51 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tomasz Radziszewski 2009-03-14 18:15:25 UTC
I was upgrading qt from 4.3.3 to 4.4.2. The exact command I typed was:
emerge -a qt

It listed about 15 packages to upgrade and warned about two blockers but when I said yes, it continued. Then it came to x11-libs/qt-assistant-4.4.2-r1 and it reported collision.

When running the emerge command again, it doesn't list blockers any more! Unfortunately the blockers that were listed for the first time went out of my terminal buffer and I don't remember what they were.

The files that collide are:
        /usr/bin/assistant
        /usr/bin/pixeltool
        /usr/include/qt4/QtAssistant/QAssistantClient
        /usr/include/qt4/QtAssistant/QtAssistant
        /usr/include/qt4/QtAssistant/qassistantclient.h
        /usr/include/qt4/QtAssistant/qassistantclient_global.h
        /usr/lib64/pkgconfig/QtAssistantClient.pc
        /usr/lib64/qt4/libQtAssistantClient.prl
        /usr/lib64/qt4/libQtAssistantClient.so
        /usr/lib64/qt4/libQtAssistantClient.so.4


Reproducible: Didn't try

Steps to Reproduce:
1. Emerge qt-4.3.3 with all dependencies including x11-libs/qt-4.3.3 (or it may be sufficient to emerge only x11-libs/qt-4.3.3)
2. Try upgrading to qt-4.4.2 which will pull-in x11-libs/qt-assistant-4.4.2-r1


Actual Results:  
The ebuild x11-libs/qt-assistant-4.4.2-r1 failed with message about file collisions

Expected Results:  
Either:
 qt-4.3.3 with all deps is unmerged before emerging qt-4.4.2 
Or:
 qt-4.4.2 is installed in a way that doesn't collide with qt-4.3.3

emerge --info
Portage 2.1.6.7 (default/linux/amd64/2008.0/desktop, gcc-4.1.2, glibc-2.6.1-r0, 2.6.25-gentoo-r7hp x86_64)
=================================================================
System uname: Linux-2.6.25-gentoo-r7hp-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_4000+-with-glibc2.2.5
Timestamp of tree: Sat, 14 Mar 2009 14:25:01 +0000
ccache version 2.4 [enabled]
app-shells/bash:     3.2_p33
dev-java/java-config: 1.3.7, 2.1.6
dev-lang/python:     2.5.2-r7
dev-util/ccache:     2.4-r7
dev-util/cmake:      2.4.6-r1
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.2.18.1-r2
sys-devel/autoconf:  2.13, 2.61-r2
sys-devel/automake:  1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.23-r3
ACCEPT_KEYWORDS="amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -msse2 -m3dnow -O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d"
CXXFLAGS="-march=athlon64 -msse2 -m3dnow -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="ccache distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://gentoo.prz.rzeszow.pl http://src.gentoo.pl http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1"
LINGUAS="pl en"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="--timeout=102"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="3dnow X a52 aac aalib acpi alsa amd64 apm atm avahi bash-completion berkdb bluetooth branding bzip2 cairo calendar cddb cdparanoia cdr cgi cli cracklib crypt css ctype cups cvs cxx dbus directfb dri dvd dvdr dvdread eds emboss encode esd evo exif fam fastcgi ffmpeg firefox flac fontconfig fortran ftp gd gdbm geoip gif gimp gnuplot gpm gstreamer hal iconv ieee1394 imagemagick imap imlib isdnlog jabber java javascript jingle jpeg jpeg2k kde lame latex libcaca libnotify libsamplerate mad matroska midi mikmod mime mmap mmx mng mp3 mpeg mplayer mudflap multilib ncurses nls nntp nptl nptlonly nsplugin nvidia offensive ogg opengl openmp oss pam pcre pdf perl php plotutils png ppds pppd python qt3 qt3support qt4 quicktime readline reflection rss scanner sdl session spell spl sse sse2 ssl startup-notification subversion svg sysfs syslog tcpd theora threads tiff timidity truetype unicode usb vcd videos vim-syntax vnc vorbis wifi wmf xinetd xml xorg xpm xscreensaver xulrunner xv xvid xvmc zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="pl en" USERLAND="GNU" VIDEO_CARDS="nvidia"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS
Comment 1 Ben de Groot (RETIRED) gentoo-dev 2009-03-14 22:23:48 UTC
qt-4.3.3 should be unmerged by portage before installing any of the split qt 4.4 (or 4.5) packages, as they block each other.
Comment 2 Zac Medico gentoo-dev 2009-03-15 05:29:28 UTC
(In reply to comment #1)
> qt-4.3.3 should be unmerged by portage before installing any of the split qt
> 4.4 (or 4.5) packages, as they block each other.

Actually, the way that it's designed to work is that it will merge the split ebuilds into place before uninstalling the older version. However, it will bail out due to a file collision if there is not an explicit blocker between the two packages which have colliding files. I see that the x11-libs/qt-assistant-4.4.2-r1 ebuild doesn't contain any blockers, so apparently it needs to block <qt-4.4.
Comment 3 Ben de Groot (RETIRED) gentoo-dev 2009-03-15 10:33:10 UTC
qt-assistant depends on qt-gui, which in turn depends on qt-core. And qt-core blocks <qt-4.4.0. So at the point qt-assistant fails, qt-core must be installed already, and this would have blocked qt-4.3 already.
Comment 4 Zac Medico gentoo-dev 2009-03-15 19:07:31 UTC
The key thing to note is that blockers are not considered to be transitive. If A depends on B and B blocks C, it does not necessarily imply that A blocks C.
Comment 5 Ben de Groot (RETIRED) gentoo-dev 2009-03-15 19:38:04 UTC
I understand. But because of the dependencies, you cannot install qt-assistant unless qt-core is already installed (as qt-core is the basis for all other split qt packages). And qt-core blocks <qt-4.4.0. So at the point qt-assistant is being merged, that blocker should already have been dealt with.
Comment 6 Zac Medico gentoo-dev 2009-03-15 19:56:32 UTC
I guess you're right. That particular issue is fixed in svn r12611 and released in portage-2.1.6.8.

http://sources.gentoo.org/viewcvs.py/portage?view=rev&rev=12611

Anyway, it won't hurt anything to add a blocker to qt-assistant (and it will prevent older portage from bailing out in this case).
Comment 7 Zac Medico gentoo-dev 2009-03-16 00:41:25 UTC
(In reply to comment #5)
> And qt-core blocks <qt-4.4.0. So at the point qt-assistant
> is being merged, that blocker should already have been dealt with.

Actually, given the behavior currently in portage-2.1.6.8, that will only work if there's no qt-4.4 upgrade in the merge list. If such an upgrade exists in there merge list then the uninstall of qt-4.3 is intentionally delayed until just after the qt-4.4 ebuild is installed. The reason for the delay is that upgrades normally occur in this fashion (old version is uninstalled just after the new version is merged into place). Doesn't this behavior seem logical? Since the qt-4.4 ebuild depends on qt-assistant, you get a file collision whenever the qt-4.4 upgrade happens to get pulled in.
Comment 8 Zac Medico gentoo-dev 2009-03-16 00:51:17 UTC
As per the intentional behavior described in comment #7, I've added blockers to the qt-assistant ebuilds.