/etc/make.conf: LINGUAS="en de" /etc/portage/package.use: app-text/acroread -linguas_de emerge --nodeps -pv app-text/acroread These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] app-text/acroread-7.0.5-r2 USE="cups ldap nls nsplugin" LINGUAS="de* -da -es -fi -fr -it -ja -ko -nl -no -pt -sv -zh_CN -zh_TW" 42,742 kB Total size of downloads: 42,742 kB emerge --info: (But this happens using any Portage >= 2.1.1_pre3-r3. I didn't verify on earlier versions.) Portage 2.1.1_pre4 (default-linux/x86/2006.0, gcc-4.1.1/vanilla, glibc-2.4-r3, 2.6.17-gentoo-r4 i686) ================================================================= System uname: 2.6.17-gentoo-r4 i686 AMD Athlon(TM) XP 2800+ Gentoo Base System version 1.12.1 distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] ccache version 2.4 [enabled] app-admin/eselect-compiler: 2.0.0_rc2-r1 dev-lang/python: 2.4.3-r1 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.4-r2 dev-util/confcache: 0.4.2-r1 sys-apps/sandbox: 1.2.18.1 sys-devel/autoconf: 2.13, 2.60 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2 sys-devel/binutils: 2.17 sys-devel/gcc-config: 2.0.0_rc1 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.11-r5 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-mtune=athlon-xp -march=athlon-xp -O3 -pipe -fprefetch-loop-arrays -mmmx -msse -m3dnow -fomit-frame-pointer -fno-ident -falign-functions=64 -fweb -frename-registers" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /mnt/etc /usr/kde/devel/env /usr/kde/devel/share/config /usr/kde/devel/shutdown /usr/share/X11/xkb /usr/share/config /var/www/localhost /var/www/localhost/cgi-bin /var/www/localhost/htdig /var/www/localhost/htdocs/phpmyadmin" CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/eselect/compiler /etc/gconf /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c" CXXFLAGS="-mtune=athlon-xp -march=athlon-xp -O3 -pipe -fprefetch-loop-arrays -mmmx -msse -m3dnow -fomit-frame-pointer -fno-ident -falign-functions=64 -fweb -frename-registers -fvisibility-inlines-hidden" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig ccache confcache distlocks metadata-transfer parallel-fetch sandbox sfperms strict" GENTOO_MIRRORS="http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror" LANG="en_US.utf8" LDFLAGS="-Wl,-O1 -Wl,--sort-common" LINGUAS="en de" MAKEOPTS="-j2" 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'" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/overlays/portage" SYNC="rsync://private mirror" USE="x86 16bit 3dnow 3dnowext 3ds S3TC X X509 Xaw3d a52 aac acl acpi aim alsa apache2 apm arts artswrappersuid artworkextra asf async audiofile avi bash-completion bdf berkdb bitmap-fonts bzip2 bzlib c++ cairo caps cdb cdparanoia cdr cg chroot cli client codecs compiz composite cpdflib cracklib crypt css cups curl curlwrappers dbus dga dio divx4linux djbfft dlloader dmi dri dts dvd dvdr dvdread eds emacs emacs-w3 emboss encode esd ethereal exif expat extensions fam fame fastcgi fb fbcon ffmpeg fftw firefox flac fluidsynth font-server foomaticdb foreign-package foreign-sysvinit fortran fpx freetype gd gdbm german gif glibc-omitfp glitz glut glx gnokii gnutls gpm graphviz gs gtk gtk2 hal iconv icq idea idn ieee1394 imap imlib innodb ipv6 isdnlog java javascript jbig jce joystick jp2 jpeg jpeg2k kde kdeenablefinal latex ldap leim libg++ libwww lm_sensors lzo lzw mad matroska mikmod milter mime mjpeg mmap mmx mmxext mng modplug monkey mono motif mozdevelop mozilla mozsvg mp3 mp4 mpeg mpi mplayer mule multi-tty mysqli ncurses network nls nptl nptlonly nsplugin ntlm nvidia offensive ogg openal opengl oss pam pcntl pcre pdf pdflib perl php pic pie plotutils png posix pppd python qt qt3 qt4 quicktime readline real recode reflection samba sasl scanner sdk sdl session shared sharedmem smime sndfile snmp sockets sox speex spell spl sse ssl svg symbol_visibility sysvipc tcpd tetex theora threads tiff transcode truetype truetype-fonts type1-fonts udev unicode usb v4l v4l2 vcd vcdimager vdr vdr-net videos vidix vorbis win32codecs wmf wxwindows xanim xchatdccserver xcomposite xface xine xinerama xml xml2 xmlrpc xmms xorg xpm xrandr xscreensaver xsl xv xvid xvmc yv12 zlib zvbi elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux linguas_en linguas_de userland_GNU video_cards_apm video_cards_nv video_cards_nvidia" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_RSYNC_EXTRA_OPTS
It's the same with all versions of portage because LINGUAS="de" is expanded to linguas_de at the last moment (after normal USE flags have already been stacked). I realize that it's not ideal, but if you remove LINGUAS from make.conf and instead put linguas_de in your USE flags then you will be able to override it via package.use.
Thanks, I know the workaround. Personally, I don't need/use LINGUAS for any ebuild but one. It's just inconsistent behaviour in Portage and inconvenient for users who rely on localisation. To have to remove LINGUAS from make.conf (global scope) and add individual linguas_xx USE flags (which are TTBOMK even undocumented currently; if not: Where are they documented?) in package.use (local scope) is strange. Especially since http://www.gentoo.org/doc/en/guide-localization.xml tells the users explicitly to set LINGUAS in make.conf. I presume this is considered a bug and will be fixed at some point?
Yeah, I'm not satisfied with the current behavior either.
maybe this is just a dupe of per-package env ?
No, the USE flags are handled much differently than most other things that eventually end up as environment variables.
LINGUAS is not an environment variable ?
LINGUAS is a USE_EXPAND environment variable, which gives it special properties. Inside portage.py, the config class uses the values of all USE_EXPAND variables to generate USE flags such as linguas_de. Those generated flags are used in the python side of portage to evaluate conditional expressions in dependencies and such. The python side of portage finally makes those generated flags available to the ebuild environment in the form of the USE environment variable (ebuilds should check for the generated flags inside USE rather than use LINGUAS directly).
This is fixed in svn r4112.
This has been released in 2.1.1_pre4-r3.
More fixes related to this bug have been released in 2.1.1_pre4-r4. See bug 142909 for details.