After the horrors of bug #190237, here's a closer analysis:
After upgrading gcc-config to 1.4.0, running "gcc" went slower than before
under some circumstances. For me reproducable was:
rbu $ time gcc
real 0m0.002s
user 0m0.000s
sys 0m0.001s
root # time gcc
real 0m0.324s
user 0m0.220s
sys 0m0.042s
The difference between the two users is that the latter does not have
/usr/x86_64-pc-linux-gnu/gcc-bin/4.2.0 in its PATH. Removing the PATH from the
other user made gcc slow again.
This should not affect many situations (baiscally only when you are not
sourcing /etc/profile in your bashrc and use su without a dash). Still this
does not happen on an older system of mine running sys-devel/gcc-config-1.3.16.
old # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin
old # time gcc
real 0m0.009s
user 0m0.000s
sys 0m0.004s
$ emerge --info
Portage 2.1.3.7 (default-linux/amd64/2007.0/desktop, gcc-4.2.0, glibc-2.5-r4,
2.6.22-gentoo-r2 x86_64)
=================================================================
System uname: 2.6.22-gentoo-r2 x86_64 Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
Gentoo Base System release 1.12.9
Timestamp of tree: Sun, 26 Aug 2007 00:50:01 +0000
distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632)
[disabled]
ccache version 2.4 [enabled]
app-shells/bash: 3.2_p17
dev-java/java-config: 1.3.7, 2.0.33-r1
dev-lang/python: 2.4.4-r4
dev-python/pycrypto: 2.0.1-r6
dev-util/ccache: 2.4-r7
sys-apps/baselayout: 1.12.9-r2
sys-apps/sandbox: 1.2.17
sys-devel/autoconf: 2.13, 2.61
sys-devel/automake: 1.4_p6, 1.9.6-r2, 1.10
sys-devel/binutils: 2.17
sys-devel/gcc-config: 1.4.0
sys-devel/libtool: 1.5.24
virtual/os-headers: 2.6.21
ACCEPT_KEYWORDS="amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -mtune=nocona -O2 -pipe -mmmx -msse -msse2 -msse3
-mfpmath=sse -fweb -frename-registers -fomit-frame-pointer -fno-ident"
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/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf
/etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/
/etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo
/etc/texmf/web2c"
CXXFLAGS="-march=nocona -mtune=nocona -O2 -pipe -mmmx -msse -msse2 -msse3
-mfpmath=sse -fweb -frename-registers -fomit-frame-pointer -fno-ident"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digest autoaddcvs ccache collision-protect cvs digest
distlocks metadata-transfer multilib-strict noinfo parallel-fetch sandbox
sfperms sign strict test unmerge-orphans userfetch userpriv"
GENTOO_MIRRORS=" http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo
http://pandemonium.tiscali.de/pub/gentoo
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo
http://mirrors.sec.informatik.tu-darmstadt.de/gentoo
http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror
http://www.ibiblio.org/pub/Linux/distributions/gentoo
http://distfiles.gentoo.org"
LANG="de_DE.utf8"
LC_ALL="de_DE.utf8"
LDFLAGS=" -Wl,--as-needed -Wl,-O1"
LINGUAS="de en"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress
--force --whole-file --delete --delete-after --stats --timeout=180
--exclude=/distfiles --exclude=/local --exclude=/packages
--filter=H_**/files/digest-*"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/layman/java-overlay /usr/local/layman/kolab2
/usr/local/layman/gentopia /usr/local/layman/sunrise
/usr/local/layman/marineam-xen /usr/local/layman/xen /usr/local/layman/xeffects
/home/rbu/devel/gentoo/gentoo-x86"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"
USE="3dnow 3dnowex X X509 a52 aac aalib acl acpi alsa amd64 apache2 arts asf
audiofile avahi bash-completion berkdb bitmap-fonts bl bluetooth bzip2 bzlib
cairo cdr cli cracklib crypt cups curl dbus dga divx dri dts dv dvd dvdr
dvdread eds emboss encode esd evo exif fam ffmpeg firefox flac foomaticdb
fortran ftp gcj gdbm ggi gif gimpprint glibc-omitfp glitz gmedia gpm gstreamer
gtk gtk2 hal http iconv idn ieee1394 imagemagick ipv6 isdnlog jack java jpeg
kde kerberos kqemu ldap libcaca libnotify live logitech-mouse lzo mad midi
mikmod mmx mmx2 mmxext mozilla mp3 mpeg mudflap musepack nas ncurses network
networkmanager nls nptl nptlonly nsplugin nvidia ogg oggvorbis openal opengl
openmp oss pam pcre pdf perl php pic png ppds pppd pulseaudio python qemu qt3
qt3support qt4 quicktime readline realmedia reflection rss samba sasl sdl
session slang sndfile speex spell spl sse sse2 ssl subversion svg tcltk tcpd
test tetex theora threads tiff truetype truetype-fonts type1 type1-fonts
unicode urandom usb v4l v4l2 vcd vorbis wma wmf wmp x264 xanim xen xine xml
xorg xspf 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 mulaw multi null plug rate route
share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev"
KERNEL="linux" LCD_DEVICES="picolcd luise ncurses" LINGUAS="de en"
USERLAND="GNU" VIDEO_CARDS="nvidia dri vesa nv"
Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_COMPRESS,
PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
this is because i changed it all to use full CHOST's where as the older version
would default to the same exact file ...
for the sake of speed, it should be easy to drop in a symlink to the host
compiler config so it doesnt need to be looked up every time
you can see the same exact behavior with the old version if you execute a
cross-compiler without PATH set properly ... the gcc wrapper needs to query
portage to figure out the proper CHOST
... the NATIVE entry appearing in gcc-config -l is somewhat confusing and
disturbing and, btw., did you check for correct behavior when selecting NATIVE
in gcc-config ?
it is possible to select but selects the current selected compiler (by creating
a file NATIVE as a copy of the current compiler config file).
first, in this situation it's not really obvious which compiler is used.
second, i don't actually know what happens when you upgrade the compiler and
the current compiler gets unmerged ? even upgrade e.g. from 4.1.2 to 4.1.3
would render this NATIVE file incorrect and leave the system without a correct
working compiler ?!?