On Monday 04 July 2011 22:48:44 Roman Zilka did opine thusly:
> Alan McKinnon (Mon, 04 Jul 2011 18:24:54 +0200):
> > On Monday 04 July 2011 14:47:47 Roman Zilka did opine thusly:
> > > Hi once again,
> > > 
> > > am I missing something or are these bugs? If bugs, do you
> > > think I should file them through bugzilla?
> > > 
> > > 
> > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> > > 
> > > 
> > > # emerge -uDN --with-bdeps y world
> > > Calculating dependencies... done!
> > > 
> > > >>> Auto-cleaning packages...
> > > >>> 
> > > >>> No outdated packages were found on your system.
> > 
> > So a routine world update says nothing needs to be done right
> > now.
> > 
> > > # emerge -uN -D 100 --with-bdeps y world
> > > Calculating dependencies... done!
> > > 
> > > >>> Auto-cleaning packages...
> > > >>> 
> > > >>> No outdated packages were found on your system.
> > 
> > I expect this to be the same, it will halt after a depth of 100
> > (a gigantic depth just btw)
> > 
> > > # emerge -ep world
> > > .......... shows mostly remerges, but also 6 new merges, for
> > > example sys-devel/autogen and virtual/pam. Shouldn't there
> > > be no new merges here? Let's re-check.
> > > 
> > > 
> > > # equery d virtual/pam
> > > 
> > >  * These packages depend on virtual/pam:
> > > net-mail/mailbase-1 (pam ? virtual/pam)
> > > net-misc/openssh-5.8_p1-r1 (pam ? virtual/pam)
> > > sys-apps/openrc-0.8.3-r1 (pam ? virtual/pam)
> > > sys-apps/shadow-4.1.4.3 (pam ? virtual/pam)
> > > sys-auth/consolekit-0.4.4 (pam ? virtual/pam)
> > > x11-apps/xdm-1.1.10-r1 (pam ? virtual/pam)
> > > x11-misc/xlockmore-5.31 (pam ? virtual/pam)
> > > 
> > > 
> > > # emerge -pq virtual/pam
> > > [ebuild  N    ] virtual/pam-0
> > 
> > -ep is not the same as -avuND!
> > 
> > The former is what happens if you tell portage to consider
> > nothing to be merged yet. It will try and rebuild every
> > possible thing you might ever need considering your setup.
> > 
> > The latter is simply everything that needs to be done now. With
> > that, build deps and virtuals can be omitted as they do not
> > need to be rebuilt to satisfy the current emerge.
> > 
> > Make sense?
> 
> Not quite. This is how I'm thinking: if '-ep world' says virtual/pam
> needs to be installed, then it either
> * is in the world file, or
> * is in the system set, or
> * is a buildtime or runtime dependency (immediate or deep) of one of
> the packages in the world set (i.e., world file and system set
> combined).
> 
> But it's neither in my world file, nor in my system set (checked
> with 'emerge -epO system'). So it must be a dependency. Then why
> doesn't '-uDN --with-bdeps y world' demand it? Obviously,
> virtual/pam is listed as necessary for running or building
> something in my world set. '-uDN world' shouldn't omit merging
> something I need to run my packages. And with '--with-bdeps y' it
> also shouldn't omit merging something I might ever need to build
> these packages.
> 
> The quoted equery call shows that virtual/pam is needed to run 7
> pieces of software in my world. (I understand it's not literally
> needed for them to run, but that's the semantics of runtime deps
> and portage has no way to know the difference, I suppose.) And it's
> not an alternative to another possible dependency - it must be
> virtual/pam (checked some of the ebuilds).

I think this is the root cause of your questions. You say "portage has 
no way to know the difference" - who says that is true? Did you assume 
it?

Why should virtual packages behave like regular packages? They are 
even in a different category to everything else. 

Treating virtuals just like regular packages doesn't make sense to me. 
Treating them as variables does make sense - they get expanded into 
lists of possibilities and when the graph is resolved, the existence 
of the virtual goes away. But that is speculation on my part.

I think if you get an authoritative answer to that question, then we 
can continue to examine the behaviour. Otherwise we are just guessing.



> 
> Even if it's all correct behavior, I'd still like to know where
> exactly is the robber on my train of thoughts.
> 
> > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> > > 
> > > 
> > > # emerge -uDN --with-bdeps y --autounmask y world
> > > Calculating dependencies... done!
> > > 
> > > >>> Auto-cleaning packages...
> > > >>> 
> > > >>> No outdated packages were found on your system.
> > > 
> > > # grep skype /var/lib/portage/world
> > > net-im/skype
> > > 
> > > 
> > > # emerge -p --autounmask y skype
> > > 
> > > These are the packages that would be merged, in order:
> > > 
> > > Calculating dependencies... done!
> > > [ebuild     U ~] net-im/skype-2.2.0.35-r1 [2.1.0.81]
> > > USE="-hardened%"
> > > 
> > > The following keyword changes are necessary to proceed:
> > > #required by skype (argument)
> > > 
> > > >=net-im/skype-2.2.0.35-r1 ~amd64
> > > 
> > > NOTE: This --autounmask behavior can be disabled by setting
> > > 
> > >       EMERGE_DEFAULT_OPTS="--autounmask=n" in
> > >       make.conf.
> > > 
> > > # grep KEYWORDS /usr/portage/net-im/skype/skype-2.*
> > > /usr/portage/net-im/skype/skype-2.1.0.81.ebuild:KEYWORDS="~a
> > > md64 ~x86"
> > > /usr/portage/net-im/skype/skype-2.2.0.25.ebuild:KEYWORDS="~a
> > > md64 ~x86"
> > > /usr/portage/net-im/skype/skype-2.2.0.35-r1.ebuild:KEYWORDS=
> > > "~amd64 ~x86" .......... Shouldn't 'emerge -uDN world' pull
> > > in skype-2.2.0.35-r1 too, as per the autounmask
> > > functionality?
> > 
> > autounmask is not the same as autounmask-write, and neither
> > means to automatically install the absolute latest version in
> > the tree.
> > 
> > The former will tell you what you need to do to satisfy deps,
> > and the current stable skype might suit. You haven't unmasked
> > skype and portage does not need to unmask anything to satisfy a
> > world update. So it is quite happy leaving things as they are.
> > 
> > If you want latest skype, you have two approaches:
> > 
> > Keyword it manually,
> > Run an unstable system.
> > 
> > Portage will not all of it's own do anything to violate you
> > ACCEPT_KEYWORDS setting - that one trumps everything when
> > automation kicks in.
> > 
> > In short, portage is working as designed and your understanding
> > is faulty.
> 
> It seems that you assume that my current skype is a stable version.
> In fact, it isn't - see the quoted grep of the ebuilds. There is
> not a single stable version of skype in portage now. They're all
> ~arch.
> 
> My ACCEPT_KEYWORDS="amd64". 'emerge skype' (I'll be omitting the
> '--autounmask y', it's the default anyway) wants to upgrade from my
> current 2.1.0.81 ~skype to 2.2.0.35-r1, which happens to be the
> latest available ~skype. I assume that's the strategy: if there's
> no stable version available, at least get the latest ~arch version.
> That's fine. But why doesn't the same strategy apply for a '-uDN
> world'?
> 
> The manpage says nothing about this, as my eyes interepret it. There
> might be some unintended hidden behavior of --autounmask or
> --update or something else. If it's intended, I'd still like to
> understand the reasoning - just to get what's going on.

You'd have to ask Zac what he intended. I can easily see the code 
being written such that emerging a package and updating world use 
completely different code paths, simply because they must evaluate 
things differently with subtle differences.

You'd really have to read the code to get proper answers to your 
questions. As we say in the eXtreme Programming world:

The code IS the design.



> 
> > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> > > 
> > > 
> > > I'm using latest stable portage for this - 2.1.10.3. ~arch
> > > is
> > > 2.1.10.4 and I haven't tried it, but its changelog doesn't
> > > suggest any changes in relevant areas.
> > > 
> > > 
> > > # cat /etc/portage/package.keywords
> > > =sys-boot/grub-1.97.1 **
> > > =app-emulation/wine-1.3.15 ~amd64
> > > 
> > > 
> > > # cat /etc/portage/package.mask
> > > <sys-boot/grub-1.0
> > > 
> > > 
> > > # cat /etc/portage/package.use
> > > media-libs/libsdl joystick
> > > dev-python/PyQt4 webkit
> > > dev-libs/libxml2 python
> > > dev-lang/perl ithreads
> > > media-plugins/audacious-plugins scrobbler
> > > 
> > > 
> > > # emerge --info
> > > Portage 2.1.10.3 (default/linux/amd64/10.0/desktop,
> > > gcc-4.4.5,
> > > glibc-2.12.2-r0, 2.6.38-gentoo-r6 x86_64)
> > > ============================================================
> > > ===== System uname:
> > > Linux-2.6.38-gentoo-r6-x86_64-AMD_Athlon-tm-_X2_Dual-Core_QL
> > > -65-wit h-gentoo-2.0.2 Timestamp of tree: Sun, 03 Jul 2011
> > > 18:15:01 +0000 app-shells/bash:          4.1_p9
> > > dev-lang/python:          2.7.1-r1, 3.1.3-r1
> > > dev-util/cmake:           2.8.4-r1
> > > dev-util/pkgconfig:       0.25-r2
> > > sys-apps/baselayout:      2.0.2
> > > sys-apps/openrc:          0.8.3-r1
> > > sys-apps/sandbox:         2.4
> > > sys-devel/autoconf:       2.68
> > > sys-devel/automake:       1.9.6-r3, 1.11.1
> > > sys-devel/binutils:       2.20.1-r1
> > > sys-devel/gcc:            4.4.5
> > > sys-devel/gcc-config:     1.4.1-r1
> > > sys-devel/libtool:        2.2.10
> > > sys-devel/make:           3.82
> > > sys-kernel/linux-headers: 2.6.36.1 (virtual/os-headers)
> > > sys-libs/glibc:           2.12.2
> > > Repositories: gentoo
> > > ACCEPT_KEYWORDS="amd64 x86"
> > > ACCEPT_LICENSE="*"
> > > CBUILD="x86_64-pc-linux-gnu"
> > > CFLAGS="-O2 -pipe -fomit-frame-pointer -mtune=athlon64-sse3
> > > -march=athlon64-sse3 -mmmx -msse -msse2 -msse3 -m3dnow"
> > > CHOST="x86_64-pc-linux-gnu"
> > > CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
> > > CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d
> > > /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release
> > > /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo
> > > /etc/texmf/language.dat.d /etc/texmf/language.def.d
> > > /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-O2 -pipe
> > > -fomit-frame-pointer -mtune=athlon64-sse3
> > > -march=athlon64-sse3
> > > -mmmx -msse -msse2 -msse3 -m3dnow" DISTDIR="/tmp/distfiles"
> > > FEATURES="assume-digests binpkg-logs collision-protect
> > > distlocks ebuild-locks fixlafiles fixpackages news nodoc
> > > noinfo
> > > parallel-fetch protect-owned sandbox severe sfperms strict
> > > unknown-features-warn unmerge-logs unmerge-orphans userfetch
> > > usersync" FFLAGS=""
> > > GENTOO_MIRRORS="http://gentoo.mirror.web4u.cz/
> > > http://gentoo.mirror.dkm.cz/pub/gentoo/
> > > ftp://gentoo.mirror.web4u.cz/
> > > ftp://gentoo.mirror.dkm.cz/pub/gentoo/
> > > http://gentoo.supp.name/"; LANG="en_US.UTF-8"
> > > LC_ALL="en_US.UTF-8"
> > > LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--as-needed"
> > > LINGUAS="en cs ja"
> > > MAKEOPTS="-j2"
> > > PKGDIR="/usr/portage/packages"
> > > PORTAGE_CONFIGROOT="/"
> > > 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="/tmp"
> > > PORTDIR="/usr/portage"
> > > PORTDIR_OVERLAY=""
> > > SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
> > > USE="3dnow X a52 aac acpi alsa amd64 bash-completion berkdb
> > > branding bzip2 cairo cddb cdr cjk cli consolekit cracklib
> > > crypt css dbus dri dts dv dvd dvdr encode exif fam ffmpeg
> > > flac ftp gdbm gdu geoip gif gnutls gsm gtk gzip iconv icq
> > > icu idn imap javascript jbig jpeg jpeg2k latex lcms ldap
> > > libnotify lzma mad matroska mbox mime mmx mng modules mp3
> > > mp4 mpeg mplayer mudflap multilib musepack musicbrainz
> > > ncurses nls nocd nptl nptlonly ogg opengl oscar pam pango
> > > pcre pdf png pppd qt3support qt4 quicktime raw readline
> > > recode sdl session shorten smp sockets sound speex spell
> > > sse sse2 ssl startup-notification svg sysfs syslog szip
> > > theora threads tiff truetype udev unicode usb videos
> > > vim-syntax vorbis wavpack wifi x264 xcb xml xorg xpm
> > > xscreensaver xv xvid 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 cgi cgid 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"
> > > CALLIGRA_FEATURES="braindump flow karbon kexi kpresenter
> > > krita
> > > tables words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface
> > > irq
> > > load memory rrdtool swap syslog" ELIBC="glibc"
> > > GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin
> > > garmintxt gpsclock itrax mtk3301 nmea ntrip navcom
> > > oceanserver
> > > oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing
> > > tsip
> > > tripmate tnt ubx" INPUT_DEVICES="evdev keyboard mouse
> > > synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz
> > > cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
> > > LINGUAS="en cs ja"
> > > PHP_TARGETS="php5-3" RUBY_TARGETS="ruby18" USERLAND="GNU"
> > > VIDEO_CARDS="radeon vesa fglrx" XTABLES_ADDONS="quota2 psd
> > > pknock lscan length2 ipv4options ipset ipp2p iface geoip
> > > fuzzy condition tee tarpit sysrq steal rawnat logmark
> > > ipmark dhcpmac delude chaos account" Unset:  CPPFLAGS,
> > > CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK,
> > > PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS,
> > > PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
-- 
alan dot mckinnon at gmail dot com

Reply via email to