Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 465082 - media-gfx/nvidia-cg-toolkit: `ABI=x86 get_libdir` is invalid on KEYWORDS=x86 systems
Summary: media-gfx/nvidia-cg-toolkit: `ABI=x86 get_libdir` is invalid on KEYWORDS=x86 ...
Status: RESOLVED OBSOLETE
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Eclasses (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: No maintainer - Look at https://wiki.gentoo.org/wiki/Project:Proxy_Maintainers if you want to take care of it
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-04-08 13:10 UTC by megabaks
Modified: 2022-03-16 01:53 UTC (History)
1 user (show)

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


Attachments
nvidia-cg-toolkit.pc (nvidia-cg-toolkit.pc,273 bytes, text/plain)
2013-04-09 11:31 UTC, megabaks
Details

Note You need to log in before you can comment on or make changes to this bug.
Description megabaks 2013-04-08 13:10:57 UTC
$(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
Comment 1 Samuli Suominen (RETIRED) gentoo-dev 2013-04-08 14:02:47 UTC
what are you trying to accomplish? looks like wrong use of ABI
Comment 2 megabaks 2013-04-08 14:42:54 UTC
(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!?
Comment 3 megabaks 2013-04-08 14:45:04 UTC
this ebuild generate broken *.pc files
understand?
Comment 4 Alexander Vershilov (RETIRED) gentoo-dev 2013-04-08 15:30:14 UTC
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.
Comment 5 Jeroen Roovers (RETIRED) gentoo-dev 2013-04-08 18:59:58 UTC
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.
Comment 6 Alexander Vershilov (RETIRED) gentoo-dev 2013-04-08 19:25:45 UTC
(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.
Comment 7 SpanKY gentoo-dev 2013-04-08 19:54:34 UTC
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.
Comment 8 Alexander Vershilov (RETIRED) gentoo-dev 2013-04-09 06:14:47 UTC
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.
Comment 9 megabaks 2013-04-09 11:31:21 UTC
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
Comment 10 SpanKY gentoo-dev 2013-04-10 02:26:42 UTC
(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
Comment 11 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2014-07-02 20:49:28 UTC
I think this is no longer the case with current profiles.