Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 106993 - PDEPEND treated as if RDEPEND (in x11-libs/qt-3.3.4-r8)
Summary: PDEPEND treated as if RDEPEND (in x11-libs/qt-3.3.4-r8)
Status: RESOLVED INVALID
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Dependencies (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-09-23 06:14 UTC by sf
Modified: 2005-09-23 08:55 UTC (History)
0 users

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 sf 2005-09-23 06:14:50 UTC
Today I tried to upgrade qt. emerge gives:

# emerge -pv1 qt

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild     U ] x11-libs/qt-3.3.4-r8 [3.3.4-r3] +cups -debug +doc -examples
+firebird +gif -immqt -immqt-bc +ipv6 +mysql +nas +odbc +opengl +postgres
-sqlite +xinerama 0 kB 
[ebuild  N    ] dev-db/qt-unixODBC-3.3.4-r1  0 kB 

Total size of downloads: 0 kB


# emerge -pv1 qt-unixODBC

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] dev-db/qt-unixODBC-3.3.4-r1  0 kB 

Total size of downloads: 0 kB


emerge -B qt succeeded, but

# emerge -K1 qt
Calculating dependencies -
!!! There are no packages available to satisfy: "~dev-db/qt-unixODBC-3.3.4"
!!! Either add a suitable binary package or compile from an ebuild.


qt-unixODBC pdepends on qt, and qt depends on qt-unixODBC. So the expected
sequence is qt first, then qt-unixODBC, but portage seems to treat the PDEPEND
in qt as an RDEPEND and insists on merging qt-unixODBC first, which is wrong.


Portage 2.0.51.22-r2 (default-linux/x86/2005.0, gcc-3.3.5-20050130,
glibc-2.3.4.20041102-r1, 2.6.11.11 i686)
=================================================================
System uname: 2.6.11.11 i686 Intel(R) Pentium(R) 4 Mobile CPU 1.70GHz
Gentoo Base System version 1.6.13
dev-lang/python:     2.3.5-r2
sys-apps/sandbox:    1.2.12
sys-devel/autoconf:  2.13, 2.59-r6
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6
sys-devel/binutils:  2.15.92.0.2-r10
sys-devel/libtool:   1.5.18-r1
virtual/os-headers:  2.6.8.1-r4
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i586-pc-linux-gnu"
CFLAGS="-march=i586 -O2 -Os -fomit-frame-pointer -pipe"
CHOST="i586-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.1/share/config
/usr/kde/3/share/config /usr/lib/X11/xkb /usr/share/config
/usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/
/usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/
/usr/share/texmf/xdvi/ /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-march=i586 -O2 -Os -fomit-frame-pointer -pipe"
DISTDIR="/gentoo/distfiles"
FEATURES="autoconfig buildpkg collision-protect distlocks sandbox sfperms strict
userpriv usersandbox"
GENTOO_MIRRORS="http://mirrors.sec.informatik.tu-darmstadt.de/gentoo
http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo"
LANG="en_US.utf8"
PKGDIR="/gentoo/packages"
PORTAGE_TMPDIR="/tmp/gentoo/tmp"
PORTDIR="/gentoo/portage"
PORTDIR_OVERLAY="/gentoo/overlay"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="x86 X X509 Xaw3d aalib acl acpi activefilter adns alsa apm async avi berkdb
bidi bitmap-fonts caps cdr chroot crypt cscope cspoe cups curl dga directfb doc
dvb dvd dvdr eds emboss encode erandom ethereal evo f77 fam fbcon firebird flac
flash foomaticdb fortran freetds freetype gb gcj gd gdbm ggi gif gphoto2 gpm gps
gstreamer gtk gtk2 hbci imagemagick imap imlib imlib2 informix innodb ipv6 java
jbig jikes jpeg junit ladcca lcms ldap libg++ libwww lirc mad mailwrapper mcal
md5sum mikmod motif mozilla mozsvg mp3 mpeg mpi mysql nas ncurses nhc98 nls nntp
nptl oav oci8 odbc ogg oggvorbis opengl oss pam pcmcia pda pdflib pg-hier
pg-intdatetime pg-vacuumdelay pic pie plotutils png pnp postgres ppds prebuilt
quicktime readline samba sasl scanner sdl slang slp snmp socks5 speex spell ssl
svga tcpd tetex threads tiff truetype truetype-fonts type1-fonts unicode usb
vanilla vorbis wavelan wmf xface xine xinerama xml xml2 xmms xv zlib
userland_GNU kernel_linux elibc_glibc"
Unset:  ASFLAGS, CTARGET, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS
Comment 1 Jason Stubbs (RETIRED) gentoo-dev 2005-09-23 06:25:44 UTC
 (In reply to comment #0)    
> # emerge -pv1 qt    
>     
> [ebuild     U ] x11-libs/qt-3.3.4-r8 [3.3.4-r3] +cups -debug +doc -examples    
> +firebird +gif -immqt -immqt-bc +ipv6 +mysql +nas +odbc +opengl +postgres    
> -sqlite +xinerama 0 kB     
> [ebuild  N    ] dev-db/qt-unixODBC-3.3.4-r1  0 kB     
    
qt upgrade followed by qt-unixODBC new install.    
    
> # emerge -pv1 qt-unixODBC    
>     
> [ebuild  N    ] dev-db/qt-unixODBC-3.3.4-r1  0 kB     
    
qt-unixODBC new install only because your currently installed qt version    
satisfies qt-unixODBC's dependency.    
    
> # emerge -K1 qt    
> !!! There are no packages available to satisfy: "~dev-db/qt-unixODBC-3.3.4"    
> !!! Either add a suitable binary package or compile from an ebuild.    
    
You have no binary package for qt-unixODBC.    
    
> qt-unixODBC pdepends on qt, and qt depends on qt-unixODBC. So the expected    
> sequence is qt first, then qt-unixODBC    
    
This logic is correct.    
    
> but portage seems to treat the PDEPEND in qt as an RDEPEND and insists on    
> merging qt-unixODBC first, which is wrong.    
    
Nothing in the samples you have given shows this. 
 
In the past it was a DEPEND both ways, which triggered portage's mishandling  
of circular dependencies and caused the behaviour you are describing. However,  
if qt-unixODBC now PDEPENDs on qt what you are describing should not be  
possible. 
 
Comment 2 sf 2005-09-23 08:33:55 UTC
Ok, my assumption that portage wanted to emerge qt-unixODBC first was wrong.

Nonetheless, "emerge -K qt" should have simply merged qt and finished without
error. After all, PDEPEND is just advisory. (At least in this specific case, or
is it not?)

Accordingly, "emerge -k qt" merged qt and _only then_ started to _build_
qt-unixODBC. After interrupting the build I get "dev-db/qt-unixODBC-3.3.4-r1" in
"emerge -ubkDvp world" so portage can handle the fact that a pdepended package
is not installed quite well.

Questions:

1. Is PDEPEND a mandatory dependency (in general), in the sense that the package
is broken without the pdepended packages?

2. Same question for the specific case: Is qt broken without qt-unixODBC?

3. If PDEPEND is not only advisory (Answer to question 1 is yes) and qt-unixODBC
is not required for qt to function correctly (Answer to question 2 is no) then
why is qt-unixODBC pdepended on?

4. If PDEPEND is only advisory (Answer to question 1 is no) then why does
"emerge -K qt" fail?

When I see the light in this matter I'll change the bug summary to more clearly
describe the issue.
Comment 3 sf 2005-09-23 08:49:41 UTC
Still more questions:

Could I simply drop the odbc USE flag from qt and emerge qt-unixODBC manually to
end up with exactly the same result?

If yes, is this no abuse of USE flags? /etc/make.conf.example states: "The USE
variable is used to enable optional build-time functionality." What is the
"build-time functionality" in this case?
Comment 4 SpanKY gentoo-dev 2005-09-23 08:55:34 UTC
no, PDEPEND is not advisory

you used -K which means you were allowing only binary packages ... portage was
unable to find a binary package for qt unixodbc thus it rightly aborted

use --nodeps if you want to force it to be emerged