$(ABI="something" get_libdir) will return nothing. these ebuilds use this construction: ~app-i18n/atokx3-3.0.0 =dev-db/oracle-instantclient-jdbc-11.2.0.3 =media-gfx/nvidia-cg-toolkit-3.1.0013-r{1,2} =media-libs/xine-lib-1.2* =www-plugins/nspluginwrapper-1.4.4* results: i.e. nvidia-cg-toolkit: pkg-config --libs nvidia-cg-toolkit -L/opt/nvidia-cg-toolkit/ -lCg but ls -d1 /opt/nvidia-cg-toolkit/* /opt/nvidia-cg-toolkit/bin /opt/nvidia-cg-toolkit/include /opt/nvidia-cg-toolkit/lib Reproducible: Always
what are you trying to accomplish? looks like wrong use of ABI
(In reply to comment #1) > what are you trying to accomplish? looks like wrong use of ABI wut? part of nvidia-cg-toolkit ebuild from the main tree: .... install_pkgconfig() { # Two args: .pc file + abi local suffix use amd64 && use multilib && [[ $2 == x86 ]] && suffix="-32" insinto /usr/$(get_libdir)/pkgconfig sed \ -e "s:GENTOO_LIBDIR:$(ABI=$2 get_libdir):g" \ -e "s:DESCRIPTION:${DESCRIPTION}:g" \ -e "s:VERSION:${PV}:g" \ -e "s|HOMEPAGE|${HOMEPAGE}|g" \ -e "s:SUFFIX:${suffix}:g" \ "${FILESDIR}/${1}.in" > "${T}/${1/.pc/${suffix}.pc}" || die eprefixify "${T}/${1/.pc/${suffix}.pc}" doins "${T}/${1/.pc/${suffix}.pc}" } .... what wrong!?
this ebuild generate broken *.pc files understand?
Let me elaborate. As far as I understand ebuilds that use $(ABI="arch" get_libdir) fails to work on x86 systems (I have not reproduced bug on amd64). According to eclass documentation 70 # Note that the prefered method is to set CC="$(tc-getCC) $(get_abi_CFLAGS)" 71 # This will hopefully be added to portage soon... 72 # 73 # If <ABI> is not specified, ${ABI} is used. 74 # If <ABI> is not specified and ${ABI} is not defined, ${DEFAULT_ABI} is used. 75 # If <ABI> is not specified and ${ABI} and ${DEFAULT_ABI} are not defined, we return an empty string. 76 get_abi_var() { this is valid costruct, so this bug should be reproduced and fixed. I'll be able to create x86 chroot only tomorrow, so if anybody can try to check it please do.
The point of bug #454644 is to create a tracker bug for fixing ebuilds (one package per blocking bug) to not use multilib.eclass at all, but use new eclasses instead that do support multilib ABIs, like multilib-build.eclass. So please file separate bug reports for separate packages, and attach ebuild patches for their separate maintainers to consider.
(In reply to comment #5) > The point of bug #454644 is to create a tracker bug for fixing ebuilds (one > package per blocking bug) to not use multilib.eclass at all, but use new > eclasses instead that do support multilib ABIs, like multilib-build.eclass. > So please file separate bug reports for separate packages, and attach ebuild > patches for their separate maintainers to consider. sorry about adding to #454644 bug. But I see no reason for closing this bug this is a separate bug report with separate maintainers to consider.
lack of actual details here. of course `ABI="something" get_libdir` will return nothing because you never defined LIBDIR_something. `ABI=x86 get_libdir` will return $LIBDIR_x86 and `ABI=amd64 get_libdir` will return $LIBDIR_amd64. this is expected behavior and works.
I've reproduced this bug on a chroot system. Steps to reproduce: 1). install x86 system from stage3 2). set ACCEPT_KEYWORDS="~x86" 3). optionally set ABI_X86="32" 4). here to check faster 4.1). edit =www-plugins/nspluginwrapper-1.4.4-r3 ebuild: add line: echo $(ABI=x86 get_libdir) before ./configure 4.2). run repoman manifest 4.3). run ebuild nspluginwrapper-1.4.4-r3 configure Expected results: echo will write lib Actual results: echo write an empty line I'm not setting this bug to confimed as I want someone from core team to check this scenario, maybe I've forgotten to make some required steps. However, I'll ask megabaks to add emerge --info and broken .pc file to this bug report to make it consistent.
Created attachment 344946 [details] nvidia-cg-toolkit.pc emerge --info: Portage 2.1.11.60 (default/linux/x86/13.0, gcc-4.6.3, glibc-2.14.1-r3, 3.8.1-pf i686) ================================================================= System uname: Linux-3.8.1-pf-i686-Intel-R-_Core-TM-2_Quad_CPU_Q9400_@_2.66GHz-with-gentoo-2.2 KiB Mem: 6229324 total, 1132800 free KiB Swap: 0 total, 0 free Timestamp of tree: Tue, 09 Apr 2013 00:30:01 +0000 ld GNU ld (GNU Binutils) 2.23.1 ccache version 3.1.9 [disabled] app-shells/bash: 4.2_p45 dev-java/java-config: 2.1.12-r1 dev-lang/python: 2.7.3-r3, 3.2.3-r2 dev-util/ccache: 3.1.9 dev-util/cmake: 2.8.10.2-r1 dev-util/pkgconfig: 0.28 sys-apps/baselayout: 2.2 sys-apps/openrc: 0.11.8 sys-apps/sandbox: 2.6-r1 sys-devel/autoconf: 2.13, 2.69 sys-devel/automake: 1.9.6-r3, 1.11.6, 1.13.1 sys-devel/binutils: 2.23.1 sys-devel/gcc: 4.4.7, 4.5.4, 4.6.3, 4.7.2-r1 sys-devel/gcc-config: 1.8 sys-devel/libtool: 2.4.2 sys-devel/make: 3.82-r4 sys-kernel/linux-headers: 3.8 (virtual/os-headers) sys-libs/glibc: 2.14.1-r3 Repositories: gentoo stuff rion ACCEPT_KEYWORDS="x86 ~x86" ACCEPT_LICENSE="*" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -march=core2 -mtune=generic -mfpmath=sse -msse4.1 -fomit-frame-pointer -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt" 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/apache2-php5/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -march=core2 -mtune=generic -mfpmath=sse -msse4.1 -fomit-frame-pointer -pipe" DISTDIR="/var/distfiles" EMERGE_DEFAULT_OPTS="-j2" FCFLAGS="-O2 -march=i686 -pipe" FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks fixlafiles merge-sync metadata-transfer news parallel-fetch parallel-install prelink-checksums protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans" FFLAGS="-O2 -march=i686 -pipe" GENTOO_MIRRORS="rsync://trumpetti.atm.tut.fi/gentoo/ http://mirror.yandex.ru/gentoo-distfiles/" LANG="ru_RU.UTF-8" LC_ALL="" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j5" PKGDIR="/usr/portage/packages" PORTAGE_BUNZIP2_COMMAND="lbunzip2 -n4" PORTAGE_BZIP2_COMMAND="lbzip2 -n4" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_EXTRA_OPTS="--timeout=360 --compress-level=9" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage/layman/stuff /usr/local/portage/layman/rion" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="X X509 a52 aac acl acpi alsa berkdb bluetooth bzip2 cairo chm cli consolekit cracklib crypt ctype cuda cue cxx dbus dirac djvu dri dvd ebook embedded emerald emovix enca encode exif extras faac fat ffmpeg filter flac flash fontconfig fortran fuse gdbm ggi gif gnutls gpm gstreamer gtk gtk2 gui hddtemp iconv icq id3tag jabber javascript jpeg kde ladspa lame lcms libsamplerate lm_sensors lzma mad matroska mmap mng modules mp3 mpeg mplayer mudflap musepack mysql nas ncurses nls nptl nsplugin ntfs objc objc++ objc-gc ogg openal opencl opengl openmp optimisememory pam pcre pdf phonon plugins png policykit profiler qt3support qt4 quicktime rar readline schroedinger sdl sdl-image secure-delete session shine skins smp sql sse sse2 sse3 ssl ssse3 stream svg taglib tcpd theora threads tiff truetype twolame udev unicode unsupported upnp usb vaapi vdpau vorbis vpx wav wavpack webkit win32codecs wma-fixed wmf x264 x86 xanim xcomposite xv xvid zip zlib" ABI_X86="32" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 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="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" 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="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="ru en" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="nvidia" 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, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, USE_PYTHON
(In reply to comment #8) nspluginwrapper is KEYWORDS=amd64, so any behavior shown on an x86 system is irrelevant. what you describe is expected behavior. a quick glance at xine-lib shows that it's fine -- it only pokes ABI=x86 when it knows it's using a multilib profile. nvidia-cg-toolkit calls `ABI=x86 get_libdir` on an x86 system which won't work. it probably should change the logic in the `use x86` case to not pass x86 as the 2nd arg to install_pkgconfig, and do do ABI=$2 only when $# is 2. [[ $# -eq 2 ]] && local ABI=$2
I think this is no longer the case with current profiles.