Gentoo Archives: gentoo-user

From: Roman Zilka <zilka@×××××××.cz>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Strangeness in dep calculation
Date: Mon, 04 Jul 2011 20:52:07
Message-Id: 20110704224844.8d4160b7.zilka@fi.muni.cz
In Reply to: Re: [gentoo-user] Strangeness in dep calculation by Alan McKinnon
1 Alan McKinnon (Mon, 04 Jul 2011 18:24:54 +0200):
2 > On Monday 04 July 2011 14:47:47 Roman Zilka did opine thusly:
3 > > Hi once again,
4 > >
5 > > am I missing something or are these bugs? If bugs, do you think I
6 > > should file them through bugzilla?
7 > >
8 > >
9 > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 > >
11 > >
12 > > # emerge -uDN --with-bdeps y world
13 > > Calculating dependencies... done!
14 > >
15 > > >>> Auto-cleaning packages...
16 > > >>>
17 > > >>> No outdated packages were found on your system.
18 >
19 > So a routine world update says nothing needs to be done right now.
20 >
21 > > # emerge -uN -D 100 --with-bdeps y world
22 > > Calculating dependencies... done!
23 > >
24 > > >>> Auto-cleaning packages...
25 > > >>>
26 > > >>> No outdated packages were found on your system.
27 >
28 > I expect this to be the same, it will halt after a depth of 100 (a
29 > gigantic depth just btw)
30 >
31 > >
32 > > # emerge -ep world
33 > > .......... shows mostly remerges, but also 6 new merges, for example
34 > > sys-devel/autogen and virtual/pam. Shouldn't there be no new merges
35 > > here? Let's re-check.
36 > >
37 > >
38 > > # equery d virtual/pam
39 > > * These packages depend on virtual/pam:
40 > > net-mail/mailbase-1 (pam ? virtual/pam)
41 > > net-misc/openssh-5.8_p1-r1 (pam ? virtual/pam)
42 > > sys-apps/openrc-0.8.3-r1 (pam ? virtual/pam)
43 > > sys-apps/shadow-4.1.4.3 (pam ? virtual/pam)
44 > > sys-auth/consolekit-0.4.4 (pam ? virtual/pam)
45 > > x11-apps/xdm-1.1.10-r1 (pam ? virtual/pam)
46 > > x11-misc/xlockmore-5.31 (pam ? virtual/pam)
47 > >
48 > >
49 > > # emerge -pq virtual/pam
50 > > [ebuild N ] virtual/pam-0
51 >
52 > -ep is not the same as -avuND!
53 >
54 > The former is what happens if you tell portage to consider nothing to
55 > be merged yet. It will try and rebuild every possible thing you might
56 > ever need considering your setup.
57 >
58 > The latter is simply everything that needs to be done now. With that,
59 > build deps and virtuals can be omitted as they do not need to be
60 > rebuilt to satisfy the current emerge.
61 >
62 > Make sense?
63
64 Not quite. This is how I'm thinking: if '-ep world' says virtual/pam
65 needs to be installed, then it either
66 * is in the world file, or
67 * is in the system set, or
68 * is a buildtime or runtime dependency (immediate or deep) of one of the
69 packages in the world set (i.e., world file and system set combined).
70
71 But it's neither in my world file, nor in my system set (checked with
72 'emerge -epO system'). So it must be a dependency. Then why doesn't
73 '-uDN --with-bdeps y world' demand it? Obviously, virtual/pam is listed
74 as necessary for running or building something in my world set. '-uDN
75 world' shouldn't omit merging something I need to run my packages. And
76 with '--with-bdeps y' it also shouldn't omit merging something I might
77 ever need to build these packages.
78
79 The quoted equery call shows that virtual/pam is needed to run 7 pieces
80 of software in my world. (I understand it's not literally needed for
81 them to run, but that's the semantics of runtime deps and portage has
82 no way to know the difference, I suppose.) And it's not an alternative
83 to another possible dependency - it must be virtual/pam (checked some
84 of the ebuilds).
85
86 Even if it's all correct behavior, I'd still like to know where exactly
87 is the robber on my train of thoughts.
88
89
90 > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
91 > >
92 > >
93 > > # emerge -uDN --with-bdeps y --autounmask y world
94 > > Calculating dependencies... done!
95 > >
96 > > >>> Auto-cleaning packages...
97 > > >>>
98 > > >>> No outdated packages were found on your system.
99 > >
100 > > # grep skype /var/lib/portage/world
101 > > net-im/skype
102 > >
103 > >
104 > > # emerge -p --autounmask y skype
105 > >
106 > > These are the packages that would be merged, in order:
107 > >
108 > > Calculating dependencies... done!
109 > > [ebuild U ~] net-im/skype-2.2.0.35-r1 [2.1.0.81]
110 > > USE="-hardened%"
111 > >
112 > > The following keyword changes are necessary to proceed:
113 > > #required by skype (argument)
114 > >
115 > > >=net-im/skype-2.2.0.35-r1 ~amd64
116 > >
117 > > NOTE: This --autounmask behavior can be disabled by setting
118 > > EMERGE_DEFAULT_OPTS="--autounmask=n" in make.conf.
119 > >
120 > >
121 > > # grep KEYWORDS /usr/portage/net-im/skype/skype-2.*
122 > > /usr/portage/net-im/skype/skype-2.1.0.81.ebuild:KEYWORDS="~amd64
123 > > ~x86"
124 > > /usr/portage/net-im/skype/skype-2.2.0.25.ebuild:KEYWORDS="~amd64
125 > > ~x86"
126 > > /usr/portage/net-im/skype/skype-2.2.0.35-r1.ebuild:KEYWORDS="~amd64
127 > > ~x86" .......... Shouldn't 'emerge -uDN world' pull in
128 > > skype-2.2.0.35-r1 too, as per the autounmask functionality?
129 >
130 > autounmask is not the same as autounmask-write, and neither means to
131 > automatically install the absolute latest version in the tree.
132 >
133 > The former will tell you what you need to do to satisfy deps, and the
134 > current stable skype might suit. You haven't unmasked skype and
135 > portage does not need to unmask anything to satisfy a world update. So
136 > it is quite happy leaving things as they are.
137 >
138 > If you want latest skype, you have two approaches:
139 >
140 > Keyword it manually,
141 > Run an unstable system.
142 >
143 > Portage will not all of it's own do anything to violate you
144 > ACCEPT_KEYWORDS setting - that one trumps everything when automation
145 > kicks in.
146 >
147 > In short, portage is working as designed and your understanding is
148 > faulty.
149
150 It seems that you assume that my current skype is a stable version. In
151 fact, it isn't - see the quoted grep of the ebuilds. There is not a
152 single stable version of skype in portage now. They're all ~arch.
153
154 My ACCEPT_KEYWORDS="amd64". 'emerge skype' (I'll be omitting the
155 '--autounmask y', it's the default anyway) wants to upgrade from my
156 current 2.1.0.81 ~skype to 2.2.0.35-r1, which happens to be the latest
157 available ~skype. I assume that's the strategy: if there's no stable
158 version available, at least get the latest ~arch version. That's fine.
159 But why doesn't the same strategy apply for a '-uDN world'?
160
161 The manpage says nothing about this, as my eyes interepret it. There
162 might be some unintended hidden behavior of --autounmask or --update or
163 something else. If it's intended, I'd still like to understand the
164 reasoning - just to get what's going on.
165
166
167 > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
168 > >
169 > >
170 > > I'm using latest stable portage for this - 2.1.10.3. ~arch is
171 > > 2.1.10.4 and I haven't tried it, but its changelog doesn't suggest
172 > > any changes in relevant areas.
173 > >
174 > >
175 > > # cat /etc/portage/package.keywords
176 > > =sys-boot/grub-1.97.1 **
177 > > =app-emulation/wine-1.3.15 ~amd64
178 > >
179 > >
180 > > # cat /etc/portage/package.mask
181 > > <sys-boot/grub-1.0
182 > >
183 > >
184 > > # cat /etc/portage/package.use
185 > > media-libs/libsdl joystick
186 > > dev-python/PyQt4 webkit
187 > > dev-libs/libxml2 python
188 > > dev-lang/perl ithreads
189 > > media-plugins/audacious-plugins scrobbler
190 > >
191 > >
192 > > # emerge --info
193 > > Portage 2.1.10.3 (default/linux/amd64/10.0/desktop, gcc-4.4.5,
194 > > glibc-2.12.2-r0, 2.6.38-gentoo-r6 x86_64)
195 > > =================================================================
196 > > System uname:
197 > > Linux-2.6.38-gentoo-r6-x86_64-AMD_Athlon-tm-_X2_Dual-Core_QL-65-wit
198 > > h-gentoo-2.0.2 Timestamp of tree: Sun, 03 Jul 2011 18:15:01 +0000
199 > > app-shells/bash: 4.1_p9
200 > > dev-lang/python: 2.7.1-r1, 3.1.3-r1
201 > > dev-util/cmake: 2.8.4-r1
202 > > dev-util/pkgconfig: 0.25-r2
203 > > sys-apps/baselayout: 2.0.2
204 > > sys-apps/openrc: 0.8.3-r1
205 > > sys-apps/sandbox: 2.4
206 > > sys-devel/autoconf: 2.68
207 > > sys-devel/automake: 1.9.6-r3, 1.11.1
208 > > sys-devel/binutils: 2.20.1-r1
209 > > sys-devel/gcc: 4.4.5
210 > > sys-devel/gcc-config: 1.4.1-r1
211 > > sys-devel/libtool: 2.2.10
212 > > sys-devel/make: 3.82
213 > > sys-kernel/linux-headers: 2.6.36.1 (virtual/os-headers)
214 > > sys-libs/glibc: 2.12.2
215 > > Repositories: gentoo
216 > > ACCEPT_KEYWORDS="amd64 x86"
217 > > ACCEPT_LICENSE="*"
218 > > CBUILD="x86_64-pc-linux-gnu"
219 > > CFLAGS="-O2 -pipe -fomit-frame-pointer -mtune=athlon64-sse3
220 > > -march=athlon64-sse3 -mmmx -msse -msse2 -msse3 -m3dnow"
221 > > CHOST="x86_64-pc-linux-gnu"
222 > > CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
223 > > CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d
224 > > /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release
225 > > /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo
226 > > /etc/texmf/language.dat.d /etc/texmf/language.def.d
227 > > /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-O2 -pipe
228 > > -fomit-frame-pointer -mtune=athlon64-sse3 -march=athlon64-sse3
229 > > -mmmx -msse -msse2 -msse3 -m3dnow" DISTDIR="/tmp/distfiles"
230 > > FEATURES="assume-digests binpkg-logs collision-protect distlocks
231 > > ebuild-locks fixlafiles fixpackages news nodoc noinfo
232 > > parallel-fetch protect-owned sandbox severe sfperms strict
233 > > unknown-features-warn unmerge-logs unmerge-orphans userfetch
234 > > usersync" FFLAGS=""
235 > > GENTOO_MIRRORS="http://gentoo.mirror.web4u.cz/
236 > > http://gentoo.mirror.dkm.cz/pub/gentoo/
237 > > ftp://gentoo.mirror.web4u.cz/
238 > > ftp://gentoo.mirror.dkm.cz/pub/gentoo/ http://gentoo.supp.name/"
239 > > LANG="en_US.UTF-8"
240 > > LC_ALL="en_US.UTF-8"
241 > > LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--as-needed"
242 > > LINGUAS="en cs ja"
243 > > MAKEOPTS="-j2"
244 > > PKGDIR="/usr/portage/packages"
245 > > PORTAGE_CONFIGROOT="/"
246 > > PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times
247 > > --compress --force --whole-file --delete --stats --timeout=180
248 > > --exclude=/distfiles --exclude=/local --exclude=/packages"
249 > > PORTAGE_TMPDIR="/tmp"
250 > > PORTDIR="/usr/portage"
251 > > PORTDIR_OVERLAY=""
252 > > SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
253 > > USE="3dnow X a52 aac acpi alsa amd64 bash-completion berkdb branding
254 > > bzip2 cairo cddb cdr cjk cli consolekit cracklib crypt css dbus dri
255 > > dts dv dvd dvdr encode exif fam ffmpeg flac ftp gdbm gdu geoip gif
256 > > gnutls gsm gtk gzip iconv icq icu idn imap javascript jbig jpeg
257 > > jpeg2k latex lcms ldap libnotify lzma mad matroska mbox mime mmx
258 > > mng modules mp3 mp4 mpeg mplayer mudflap multilib musepack
259 > > musicbrainz ncurses nls nocd nptl nptlonly ogg opengl oscar pam
260 > > pango pcre pdf png pppd qt3support qt4 quicktime raw readline
261 > > recode sdl session shorten smp sockets sound speex spell sse sse2
262 > > ssl startup-notification svg sysfs syslog szip theora threads tiff
263 > > truetype udev unicode usb videos vim-syntax vorbis wavpack wifi
264 > > x264 xcb xml xorg xpm xscreensaver xv xvid zlib"
265 > > ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci
266 > > emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0
267 > > intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
268 > > ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty
269 > > extplug file hooks iec958 ioplug ladspa lfloat linear meter
270 > > mmap_emul mulaw multi null plug rate route share shm softvol"
271 > > APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon
272 > > authn_dbm authn_default authn_file authz_dbm authz_default
273 > > authz_groupfile authz_host authz_owner authz_user autoindex cache
274 > > cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires
275 > > ext_filter file_cache filter headers include info log_config logio
276 > > mem_cache mime mime_magic negotiation rewrite setenvif speling
277 > > status unique_id userdir usertrack vhost_alias"
278 > > CALLIGRA_FEATURES="braindump flow karbon kexi kpresenter krita
279 > > tables words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq
280 > > load memory rrdtool swap syslog" ELIBC="glibc"
281 > > GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin
282 > > garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver
283 > > oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip
284 > > tripmate tnt ubx" INPUT_DEVICES="evdev keyboard mouse synaptics"
285 > > KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780
286 > > lb216 lcdm001 mtxorb ncurses text" LINGUAS="en cs ja"
287 > > PHP_TARGETS="php5-3" RUBY_TARGETS="ruby18" USERLAND="GNU"
288 > > VIDEO_CARDS="radeon vesa fglrx" XTABLES_ADDONS="quota2 psd pknock
289 > > lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition
290 > > tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos
291 > > account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS,
292 > > INSTALL_MASK, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS,
293 > > PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

Replies

Subject Author
Re: [gentoo-user] Strangeness in dep calculation Alan McKinnon <alan.mckinnon@×××××.com>
Re: [gentoo-user] Strangeness in dep calculation Neil Bothwick <neil@××××××××××.uk>