Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 563482 - sys-apps/portage: document that --oneshot can create states where --deep is needed for all commands
Summary: sys-apps/portage: document that --oneshot can create states where --deep is n...
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Documentation (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS
: 563506 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-10-19 11:46 UTC by Toralf Förster
Modified: 2016-02-02 14:00 UTC (History)
2 users (show)

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


Attachments
emerge-history.txt (emerge-history.txt,690.54 KB, text/plain)
2015-10-19 11:46 UTC, Toralf Förster
Details
environment (environment,105.71 KB, text/plain)
2015-10-19 11:46 UTC, Toralf Förster
Details
lxqt-base:lxqt-about-0.9.0:20151019-025327.log (lxqt-base:lxqt-about-0.9.0:20151019-025327.log,8.88 KB, text/plain)
2015-10-19 11:46 UTC, Toralf Förster
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Toralf Förster gentoo-dev 2015-10-19 11:46:00 UTC
[ 66%] Building CXX object CMakeFiles/lxqt-about.dir/main.cpp.o
/usr/bin/x86_64-pc-linux-gnu-g++  -DLXQT_ETC_XDG_DIR=\"/etc/xdg\" -DLXQT_RELATIVE_SHARE_DIR=\"lxqt\" -DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=\"lxqt/translations\" -DLXQT_SHARE_DIR=\"/usr/share/lxqt\" -DLXQT_SHARE_TRANSLATIONS_DIR=\"/usr/share/lxqt/translations\" -DLXQT_VERSION=\"0.9.0\" -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -DQT_XML_LIB  -DNDEBUG -march=native -O2 -pipe  -fPIC -I/usr/include/lxqt -I/usr/include/qt5xdg -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtXml -isystem /usr/include/qt5/QtDBus -I/var/tmp/portage/lxqt-base/lxqt-about-0.9.0/work/lxqt-about-0.9.0 -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/KF5/KWindowSystem -isystem /usr/include/KF5    -fPIC -o CMakeFiles/lxqt-about.dir/main.cpp.o -c /var/tmp/portage/lxqt-base/lxqt-about-0.9.0/work/lxqt-about-0.9.0/main.cpp
[100%] Linking CXX executable lxqt-about
/usr/bin/cmake -E cmake_link_script CMakeFiles/lxqt-about.dir/link.txt --verbose=1
/usr/bin/x86_64-pc-linux-gnu-g++   -march=native -O2 -pipe  -fPIC   -Wl,-O1 -Wl,--as-needed CMakeFiles/lxqt-about.dir/main.cpp.o  -o lxqt-about -rdynamic /usr/lib64/liblxqt.so.0.9.0 /usr/lib64/libQt5DBus.so.5.5.1 /usr/lib64/libKF5WindowSystem.so.5.14.0 /usr/lib64/libQt5Widgets.so.5.4.2 /usr/lib64/libQt5X11Extras.so.5.4.2 /usr/lib64/libQt5Gui.so.5.5.1 -lQt5Xdg /usr/lib64/libQt5Xml.so.5.4.2 /usr/lib64/libQt5Core.so.5.5.1 
/usr/lib64/libQt5Widgets.so.5.4.2: undefined reference to `QPlatformTextureList::appendTexture(QWidget*, unsigned int, QRect const&, QFlags<QPlatformTextureList::Flag>)'


$ cat ./info.txt
  -----------------------------------------------------------------

  This is an unstable amd64 chroot image (named amd64-gnome-unstable_20150918-212335) at a hardened host acting as a tinderbox.

  -----------------------------------------------------------------

  Portage 2.2.23 (python 3.4.3-final-0, default/linux/amd64/13.0/desktop/gnome, gcc-4.9.3, glibc-2.21-r1, 4.2.3-hardened-r3 x86_64)
=================================================================
System uname: Linux-4.2.3-hardened-r3-x86_64-Intel-R-_Core-TM-_i7-3770_CPU_@_3.40GHz-with-gentoo-2.2
KiB Mem:    16166720 total,    862532 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Mon, 19 Oct 2015 00:23:51 +0000
sh bash 4.3_p42
ld GNU ld (Gentoo 2.25.1 p1.1) 2.25.1
app-shells/bash:          4.3_p42::gentoo
dev-java/java-config:     2.2.0::gentoo
dev-lang/perl:            5.22.0::gentoo
dev-lang/python:          2.7.10::gentoo, 3.4.3::gentoo
dev-util/cmake:           3.3.2-r1::gentoo
sys-apps/baselayout:      2.2::gentoo
sys-apps/openrc:          0.18.3::gentoo
sys-apps/sandbox:         2.9::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69-r1::gentoo
sys-devel/automake:       1.9.6-r4::gentoo, 1.10.3-r1::gentoo, 1.11.6-r1::gentoo, 1.12.6::gentoo, 1.13.4::gentoo, 1.14.1::gentoo, 1.15::gentoo
sys-devel/binutils:       2.25.1-r1::gentoo
sys-devel/gcc:            4.8.5::gentoo, 4.9.3::gentoo
sys-devel/gcc-config:     1.8::gentoo
sys-devel/libtool:        2.4.6-r1::gentoo
sys-devel/make:           4.1-r1::gentoo
sys-kernel/linux-headers: 4.2::gentoo (virtual/os-headers)
sys-libs/glibc:           2.21-r1::gentoo
Repositories:

local
    location: /usr/local/portage
    masters: gentoo

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: 9999

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /etc/entropy /etc/stunnel/stunnel.conf /usr/lib64/fax /usr/share/config /usr/share/easy-rsa /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0 /var/lib/hsqldb /var/lib/i2pd/certificates /var/rancid/.cloginrc /var/spool/fax/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.5/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cli-php5.5/ext-active/ /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="-march=native -O2 -pipe"
DISTDIR="/var/tmp/distfiles"
EMERGE_DEFAULT_OPTS="--color=n --nospinner --tree --quiet-build --accept-properties=-interactive --accept-restrict=-fetch"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync network-sandbox news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://ftp.uni-erlangen.de/pub/mirrors/gentoo rsync://mirror.netcologne.de/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gor.bytemark.co.uk/gentoo/ rsync://ftp.snt.utwente.nl/gentoo"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j1"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl acpi adns alsa amd64 avx2 berkdb bluetooth branding btrfs cairo cdda cdr clang cli colord consolekit corefonts cracklib crypt cups curl cxx dbus designer dnssec dri dts dvb dvd dvdr ecc eds emboss encode evo exif fam firefox flac fontconfig fortran gd gdbm gif git glamor gnome gnome-keyring gnome-online-accounts gnutls gpg gpm gstreamer gtk gudev gui hpn iconv imap inifile introspection ipv6 javascript jpeg lapack lcms ldap libkms libnotify libsecret libvirtd logrotate mad minizip mmx mmxext mng modules mp3 mp4 mpeg mssql multilib multimedia mysql mysqli nautilus ncurses nls nptl odbc ogg opencv opengl openmp openmpi openssl pam pango pax_kernel pcre pcre16 pdf png policykit postscript ppds pulseaudio python qt3support qt4 readline sddm sdl seccomp semantic-desktop session sockets spell sqlite sse sse2 sse4_2 ssh-askpass ssl ssse3 startup-notification svg system-libvpx system-sqlite tcpd theora tiff tracker truetype udev udisks unicode upower usb usbredir v4l vorbis webkit widgets wxwidgets x264 xattr xcb xml xmlreader xscreensaver xslt xv xvfb xvid xvmc xz zenmap zlib" ABI_X86="64" 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" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd 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="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" 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 ublox ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en en_GB" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_4" RUBY_TARGETS="ruby20 ruby21" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga nouveau nv r128 radeon savage sis tdfx trident vesa via vmware dummy v4l" 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:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 1 Toralf Förster gentoo-dev 2015-10-19 11:46:03 UTC
Created attachment 414900 [details]
emerge-history.txt
Comment 2 Toralf Förster gentoo-dev 2015-10-19 11:46:05 UTC
Created attachment 414902 [details]
environment
Comment 3 Toralf Förster gentoo-dev 2015-10-19 11:46:07 UTC
Created attachment 414904 [details]
lxqt-base:lxqt-about-0.9.0:20151019-025327.log
Comment 4 Toralf Förster gentoo-dev 2015-10-19 16:05:40 UTC
*** Bug 563506 has been marked as a duplicate of this bug. ***
Comment 5 Toralf Förster gentoo-dev 2015-10-19 16:09:19 UTC
kensington + josef64 points to the right direction :

With --deep a downgrade of the dependency graph would be forced.
But b/c that package is new there shouldn't be any needs for -D :


tor-relay / # emerge -1pvtDNU lxqt-base/lxqt-about

These are the packages that would be merged, in reverse order:

Calculating dependencies  ..... done!
[ebuild  N     ] lxqt-base/lxqt-about-0.9.0::gentoo  0 KiB
[ebuild     UD ]  dev-qt/qtgui-5.4.2-r1:5::gentoo [5.5.1:5::gentoo] USE="dbus gif harfbuzz%* jpeg png udev xcb -accessibility -debug -egl -eglfs -evdev -gles2 -gtkstyle -ibus {-test} (-libinput%) (-tslib%) (-tuio%)" 0 KiB
[ebuild     UD ]   dev-qt/qtdbus-5.4.2:5::gentoo [5.5.1:5::gentoo] USE="-debug {-test}" 0 KiB
[ebuild     UD ]    dev-qt/qtcore-5.4.2:5::gentoo [5.5.1:5::gentoo] USE="-debug -icu -systemd {-test}" 0 KiB

Total: 4 packages (3 downgrades, 1 new), Size of downloads: 0 KiB
tor-relay / #
tor-relay / #
tor-relay / #
tor-relay / # emerge -1pvt lxqt-base/lxqt-about

These are the packages that would be merged, in reverse order:

Calculating dependencies  .. .... done!
[ebuild  N     ] lxqt-base/lxqt-about-0.9.0::gentoo  0 KiB

Total: 1 package (1 new), Size of downloads: 0 KiB
Comment 6 Davide Pesavento (RETIRED) gentoo-dev 2015-10-19 21:02:26 UTC
The depgraph on your system is inconsistent because you have qtgui-5.5.1 and qtwidgets-5.4.2, but qtwidgets depends on ~qtgui-${PV}.

Did you disable --complete-graph-if-new-ver when you upgraded qtcore and qtgui?
Comment 7 Toralf Förster gentoo-dev 2015-10-20 13:42:32 UTC
(In reply to Davide Pesavento from comment #6)
> The depgraph on your system is inconsistent because you have qtgui-5.5.1 and
> qtwidgets-5.4.2, but qtwidgets depends on ~qtgui-${PV}.
> 
> Did you disable --complete-graph-if-new-ver when you upgraded qtcore and
> qtgui?

oh - no, at my tinderbox chroot images I do either via script or manually "emerge -1" or "emerge -1u" or "emerge -uvtDNU @world" mostly, but no other special things.
FWIW I discouraged all of the scripts to use --deep (except for @world upgrade) just to find out corner cases like this.
Comment 8 Davide Pesavento (RETIRED) gentoo-dev 2015-10-20 14:00:59 UTC
(In reply to Toralf Förster from comment #7)
> oh - no, at my tinderbox chroot images I do either via script or manually
> "emerge -1" or "emerge -1u" or "emerge -uvtDNU @world" mostly, but no other
> special things.
> FWIW I discouraged all of the scripts to use --deep (except for @world
> upgrade) just to find out corner cases like this.

I'm trying to do the same (upgrading only a subset of packages from 5.4.2 to 5.5.1), and there is no way I can convince emerge to proceed. I get either

WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict:

or

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

So I really have no idea how you did that. But I believe the dependencies in the qt ebuilds are correct. I'm CC'ing dev-portage in case they have any ideas.
Comment 9 Davide Pesavento (RETIRED) gentoo-dev 2015-10-20 14:06:29 UTC
Random thought: maybe qtwidgets wasn't pulled in by anything else when you upgraded qtcore/gui/dbus to 5.5.1 (i.e. it would have been removed by a --depclean), so emerge didn't consider it while building the graph.
Then you installed something (e.g. lxqt-about) that pulled in qtwidgets, but the installed version of qtwidgets (5.4.2) was sufficient to satisfy the to-be-installed package, so no upgrade was performed.

Is this possible with the current solver?
Comment 10 Zac Medico gentoo-dev 2015-10-20 16:22:30 UTC
(In reply to Davide Pesavento from comment #9)
> Random thought: maybe qtwidgets wasn't pulled in by anything else when you
> upgraded qtcore/gui/dbus to 5.5.1 (i.e. it would have been removed by a
> --depclean), so emerge didn't consider it while building the graph.
> Then you installed something (e.g. lxqt-about) that pulled in qtwidgets, but
> the installed version of qtwidgets (5.4.2) was sufficient to satisfy the
> to-be-installed package, so no upgrade was performed.
> 
> Is this possible with the current solver?

Yes, because he uses the -1/--oneshot option, it allows dependencies of those packages to be broken if the are not reachable from @world. This is also consistent with the downgrade behavior observed with --deep.
Comment 11 Toralf Förster gentoo-dev 2015-10-20 16:40:59 UTC
(In reply to Zac Medico from comment #10)
> Yes, because he uses the -1/--oneshot option, it allows dependencies of
> those packages to be broken if the are not reachable from @world. This is
> also consistent with the downgrade behavior observed with --deep.

so -1 is a bad idea :-/
Comment 12 Zac Medico gentoo-dev 2015-10-20 17:03:43 UTC
(In reply to Toralf Förster from comment #11)
> (In reply to Zac Medico from comment #10)
> > Yes, because he uses the -1/--oneshot option, it allows dependencies of
> > those packages to be broken if the are not reachable from @world. This is
> > also consistent with the downgrade behavior observed with --deep.
> 
> so -1 is a bad idea :-/

Yes, in the way that you use it. Generally, it should only be used if the package is already reachable from @world. Otherwise, you'll introduce a state where you you need to use --deep when installing new packages.
Comment 13 Davide Pesavento (RETIRED) gentoo-dev 2015-10-20 17:10:35 UTC
(In reply to Zac Medico from comment #10)
> (In reply to Davide Pesavento from comment #9)
> > Random thought: maybe qtwidgets wasn't pulled in by anything else when you
> > upgraded qtcore/gui/dbus to 5.5.1 (i.e. it would have been removed by a
> > --depclean), so emerge didn't consider it while building the graph.
> > Then you installed something (e.g. lxqt-about) that pulled in qtwidgets, but
> > the installed version of qtwidgets (5.4.2) was sufficient to satisfy the
> > to-be-installed package, so no upgrade was performed.
> > 
> > Is this possible with the current solver?
> 
> Yes, because he uses the -1/--oneshot option, it allows dependencies of
> those packages to be broken if the are not reachable from @world. This is
> also consistent with the downgrade behavior observed with --deep.

Ok, thanks for the explanation. Is there a workaround? Something like "--complete-graph --oneshot"?

In any case, I'd consider this bug as invalid.
Comment 14 Zac Medico gentoo-dev 2015-10-20 18:28:56 UTC
(In reply to Davide Pesavento from comment #13)
> Ok, thanks for the explanation. Is there a workaround? Something like
> "--complete-graph --oneshot"?

No, because having installed packages that are not reachable from @world breaks assumptions that are necessary to use commands without --deep. Once you've created a state like this, you have no choice but to use --deep for all commands.

> In any case, I'd consider this bug as invalid.

Yeah, there's no way to fix this except to enable --deep for all commands, which is typically not needed.
Comment 15 Jauhien Piatlicki (RETIRED) gentoo-dev 2015-10-20 18:57:17 UTC
Is this documented somewhere where user can easily find it?
Comment 16 Zac Medico gentoo-dev 2015-10-20 19:10:27 UTC
We can add a note about his to the --oneshot documentation in the emerge man page.
Comment 17 Toralf Förster gentoo-dev 2015-10-20 19:19:12 UTC
(In reply to Zac Medico from comment #16)
> We can add a note about his to the --oneshot documentation in the emerge man
> page.

yes - please (I should have been realized this earlier - but I wasn't ware of this behaviour till today)
Comment 18 Zac Medico gentoo-dev 2015-10-20 19:44:12 UTC
There's a patch in the following branch:

https://github.com/zmedico/portage/tree/bug_563482

I've posted it for review here:

https://archives.gentoo.org/gentoo-portage-dev/message/8b9b505dd5d7620f4703a8dc34764a56
Comment 20 Toralf Förster gentoo-dev 2015-10-24 20:06:39 UTC
/me wonder what happens, if somebody emerge a "top-level" package, eg.: dolphin at a fresh system, and the emerge of just the last package (dolphin) fails.
Then a bunch of X11/KDE deps are installed but dolphin isn't in the world file.

b/c the user is fine with the KDE itself he will not run "emerge --depclean".

Would this let the system in a state where "--deep" is needed now every time ?
Comment 21 Zac Medico gentoo-dev 2015-10-24 20:27:27 UTC
(In reply to Toralf Förster from comment #20)
> /me wonder what happens, if somebody emerge a "top-level" package, eg.:
> dolphin at a fresh system, and the emerge of just the last package (dolphin)
> fails.
> Then a bunch of X11/KDE deps are installed but dolphin isn't in the world
> file.
> 
> b/c the user is fine with the KDE itself he will not run "emerge --depclean".

The best practice would be to use 'emerge --noreplace atom' to add desired atoms to the world file, and then use 'emerge --depclean' to remove any unnecessary packages that may remain.

> Would this let the system in a state where "--deep" is needed now every time
> ?

Yes, it's indistinguishable from installing those (now unneeded) dependencies with --oneshot.
Comment 22 Alexander Berntsen (RETIRED) gentoo-dev 2016-02-02 14:00:37 UTC
This was fixed in 2.2.24.