Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 247581

Summary: emerge -e @installed fails finding sys-devel/binutils:${CTARGET}-${BVER} with USE="multislot"
Product: Portage Development Reporter: Tharrrk <tharrrk>
Component: Core - DependenciesAssignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: minor CC: esigra, notordoktor
Priority: High    
Version: 2.2   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 144480    

Description Tharrrk 2008-11-19 13:58:59 UTC
Seems like SLOT like "x86_64-pc-linux-gnu-2.18" is not recognized
I see no reason to include CTARGET when not cross-compiling so toolchain-binutils.eclass should set SLOT only to BVER, or let portage itself recognize slot correctly.

I made workaround by patching eclass in my local overlay like this, which is not very good, I know.

76c76
<       SLOT="${BVER}"
---
>       SLOT="${CTARGET}-${BVER}"


Reproducible: Always

Steps to Reproduce:
1. emerge -eva @installed
Actual Results:  
emerge: there are no ebuilds to satisfy "sys-devel/binutils:x86_64-pc-linux-gnu-2.19".

Expected Results:  
whole system rebuilt.

Portage 2.2_rc14 (default/linux/amd64/2008.0/desktop, gcc-4.3.2, glibc-2.8_p20080602-r0, 2.6.27-gentoo-r2 x86_64)
=================================================================                                                
System uname: Linux-2.6.27-gentoo-r2-x86_64-AMD_Athlon-tm-_64_Processor_3000+-with-glibc2.2.5                    
Timestamp of tree: Tue, 18 Nov 2008 23:02:01 +0000                                                               
app-shells/bash:     3.2_p39                                                                                     
dev-java/java-config: 1.3.7, 2.1.6-r1                                                                            
dev-lang/python:     2.4.3-r4, 2.5.2-r8
dev-python/pycrypto: 2.0.1-r6
dev-util/cmake:      2.6.2
sys-apps/baselayout: 2.0.0
sys-apps/openrc:     0.3.0-r1
sys-apps/sandbox:    1.2.18.1-r3
sys-devel/autoconf:  2.13, 2.63
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, 2.19
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   2.2.6a
virtual/os-headers:  2.6.27-r2
ACCEPT_KEYWORDS="amd64 ~amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O4 -march=native -mtune=native -pipe"
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/kde/4.1/env /usr/kde/4.1/share/config /usr/kde/4.1/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-O4 -march=native -mtune=native -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LANG="cs_CZ.UTF-8"
LC_ALL="cs_CZ.UTF-8"
LDFLAGS="-Wl,-O1"
LINGUAS="cs en"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
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/layman/nouveau /usr/local/portage/layman/java-overlay /usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext 7zip X a52 aac acl acpi alsa amd64 amrnb amrwb arts berkdb bluetooth branding bzip2 cairo cddb cdparanoia cdr clicracklib crypt cups curl dbus dri dts dv dvb dvd dvdr dvdread elf emboss encode esd evo exif extensible fbcon firefox flac fortran gcj gd gdbm gif glib glitz gnutls gpm gstreamer gtk hal iconv ieee1394 ipv6 isdnlog jpeg jpeg2k kde kdeprefix ldap libnotify lm_sensors lzo mad midi mikmod mjpeg mmx mmxext mng mp2 mp3 mp4 mpeg mudflap multilib multislot multiuser musepack ncurses network nls nptl nptlonly ogg opengl openmp pam pcre pdf perl png pnm ppds pppd pulseaudio python qt3 qt3support qt4 quicktime readline reflection rle rtc sdl session slang smp snmp spell spl srt sse sse2 ssl ssse3 startup-notification subversion svg sysfs tcpd teletext theora threads tifftruetype unicode usb v4l v4l2 vcd vorbis wavpack wmf x264 xcb xcomposite xinerama xml xorg xpm 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 infolog_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="cs en" USERLAND="GNU" VIDEO_CARDS="nv nvidia apm vmware v4l vesa"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Tharrrk 2008-11-19 14:08:16 UTC
It looks like sooner setting SLOT to version nubmer was the default behavior, why did it change?
It does the same with gcc.
Comment 2 Zac Medico gentoo-dev 2008-11-20 19:08:19 UTC
USE=multislot modifies SLOT in a way that it was never intended to be modified, and this makes it fundamentally incompatible with the way that @installed is currently implemented. If you must enable USE=multislot, an equivalent command that should work for you is `emerge -e @system @world`.
Comment 3 Tharrrk 2008-11-21 08:56:40 UTC
(In reply to comment #2)
> USE=multislot modifies SLOT in a way that it was never intended to be modified,
> and this makes it fundamentally incompatible with the way that @installed is
> currently implemented. If you must enable USE=multislot, an equivalent command
> that should work for you is `emerge -e @system @world`.
> 

I understand the need of having more complex SLOT definition when using crossdev for example. I think (not sure) that `emerge -s @system @world` won't rebuild kde-3* when kde-4* is installed, would it?

The reason for rebuilding is very simple - using CFLAGS -mcpu=native -mtune=native with >=gcc-4.2 and then switching to less equipped CPU (Phenom->AthlonX2).
The reason for using USE="multislot" is also very simple - some of the packages won't compile using gcc-4.3.2
Without multislot I would fall into very serious problems, I won't even be able to compile a new kernel.

What would be your recomendation than? Fix eclasses or fix a way of using SLOTs?

Thanks for your time.
Comment 4 Marius Mauch (RETIRED) gentoo-dev 2008-11-21 10:04:11 UTC
(In reply to comment #0)
(In reply to comment #1)
> It looks like sooner setting SLOT to version nubmer was the default behavior,
> why did it change?
> It does the same with gcc.

It hasn't been changed.

(In reply to comment #3)
> The reason for using USE="multislot" is also very simple - some of the packages
> won't compile using gcc-4.3.2
> Without multislot I would fall into very serious problems, I won't even be able
> to compile a new kernel.

That doesn't sound right. USE=multislot only allows certain toolchain packages to be installed for multiple architectures (and for gcc also allows installation of multiple micro releases). You can still install multiple gcc versions (like 4.1.x, 4.2.x and 4.3.x) without USE=multislot.
I strongly recommend you remove USE=multislot, chances are that it will cause more problems in the future.
Comment 5 Zac Medico gentoo-dev 2008-11-21 19:49:40 UTC
(In reply to comment #3)
> I understand the need of having more complex SLOT definition when using
> crossdev for example. I think (not sure) that `emerge -s @system @world` won't
> rebuild kde-3* when kde-4* is installed, would it?

The world file supports SLOT atoms now, so for example, if you have both kde-base/kde-meta:3.5 and kde-base/kde-meta:4.1 listed in /var/var/lib/portage/world then both will be pulled in by `emerge -s @system @world`. You should have both SLOTs in your world file anyway in order to prevent `emerge --depclean` from removing them.
Comment 6 SpanKY gentoo-dev 2015-08-27 17:13:21 UTC
the binutils eclass no longer sets $CTARGET in the SLOT and is thus static for cross-compilers, so portage no longer gets confused.  with the other fixes, i don't think there's anything left to do here.