Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 206827 - media-tv/mythtv-0.20.2_p14814 failed - libmythtv-0.20.2.so: undefined reference to `glXGetProcAddress'
Summary: media-tv/mythtv-0.20.2_p14814 failed - libmythtv-0.20.2.so: undefined referen...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Television related Applications in Gentoo's Portage
URL: http://svn.mythtv.org/trac/ticket/4064
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-01-21 02:54 UTC by Jason
Modified: 2008-04-03 23:30 UTC (History)
0 users

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jason 2008-01-21 02:54:17 UTC
After performed an update, emerge -a --update world ... a few library dependences broke

I resolved all but one, Checking dynamic linking consistency...
  broken /usr/lib/libmythavcodec-0.20.2.so.0.20.2 (requires  libdts.so.0), with the the assistance of revdep-rebuild

And now when I tried to update to media-tv/mythtv-0.20.2_p14814 to receive the following ....

make[1]: Entering directory `/var/tmp/portage/media-tv/mythtv-0.20.2_p14814/work/mythtv-0.20.2/programs'
cd mythtv && /usr/qt/3/bin/qmake mythtv.pro "QMAKE=/usr/qt/3/bin/qmake" -o Makefile
cd mythtv && make -f Makefile
make[2]: Entering directory `/var/tmp/portage/media-tv/mythtv-0.20.2_p14814/work/mythtv-0.20.2/programs/mythtv'
g++ -c -pipe -mtune=i686 -Wall -W -O3 -Wall -Wno-switch -fomit-frame-pointer -D_REENTRANT  -DMMX -Di386 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\" -DLIBDIR=\"/usr/lib\" -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/qt/3/mkspecs/linux-g++ -I. -I/usr/include -I/usr/include -I/usr/include -I../.. -I../../libs -I../../libs/libmyth -I../../libs/libmythtv -I../../libs/libavutil -I../../libs/libavformat -I../../libs/libavcodec -I../../libs/libmythupnp -I../../libs/libmythui -I../../libs/libmythlivemedia -I/usr/qt/3/include -I/usr/include -I/usr/include -o main.o main.cpp
/usr/qt/3/include/qsqldatabase.h:63: warning: 'class QSqlDriverCreatorBase' has virtual functions but non-virtual destructor
g++  -o mythtv main.o    -L/usr/qt/3/lib -L../../libs/libmyth -L../../libs/libmythtv -L../../libs/libavutil -L../../libs/libavcodec -L../../libs/libavformat -L../../libs/libmythfreemheg -L../../libs/libmythui -L../../libs/libmythupnp -L../../libs/libmythlivemedia -lmythtv-0.20.2 -lmythavformat-0.20.2 -lmythavutil-0.20.2 -lmythavcodec-0.20.2 -lmythfreemheg-0.20.2 -lmythupnp-0.20.2 -lmythlivemedia-0.20.2 -lmyth-0.20.2 -lmythui-0.20.2 -lfreetype -lmp3lame -lasound -lraw1394 -liec61883 -lavc1394 -L/usr/X11R6/lib -lXinerama -lXv -lXxf86vm -lXrandr -lqt-mt -lGLU -lGL -lXmu -lXext -lX11 -lm -lpthread
../../libs/libmythtv/libmythtv-0.20.2.so: undefined reference to `glXGetProcAddress'
collect2: ld returned 1 exit status
make[2]: *** [mythtv] Error 1
make[2]: Leaving directory `/var/tmp/portage/media-tv/mythtv-0.20.2_p14814/work/mythtv-0.20.2/programs/mythtv'
make[1]: *** [sub-mythtv] Error 2
make[1]: Leaving directory `/var/tmp/portage/media-tv/mythtv-0.20.2_p14814/work/mythtv-0.20.2/programs'
make: *** [sub-programs] Error 2
 *
 * ERROR: media-tv/mythtv-0.20.2_p14814 failed.
 * Call stack:
 *                     ebuild.sh, line 1701:  Called dyn_compile
 *                     ebuild.sh, line 1039:  Called qa_call 'src_compile'
 *                     ebuild.sh, line   44:  Called src_compile
 *   mythtv-0.20.2_p14814.ebuild, line  211:  Called die
 * The specific snippet of code:
 *      emake || die "emake failed"
 *  The die message:
 *   emake failed
 *
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/var/tmp/portage/media-tv/mythtv-0.20.2_p14814/temp/build.log'.

Reproducible: Always

Steps to Reproduce:
1.emerge -a =mythtv-0.20.2_p14668
2.
3.



Expected Results:  
install =mythtv-0.20.2_p14668

emerge --info ...

Portage 2.1.3.19 (default-linux/x86/2007.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.22-gentoo-r9 i686)
=================================================================
System uname: 2.6.22-gentoo-r9 i686 Intel(R) Pentium(R) III CPU 1133MHz
Timestamp of tree: Thu, 17 Jan 2008 23:00:01 +0000
app-shells/bash:     3.2_p17-r1
dev-java/java-config: 1.3.7, 2.0.33-r1
dev-lang/python:     2.4.4-r6
dev-python/pycrypto: 2.0.1-r6
sys-apps/baselayout: 1.12.10-r5
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.61-r1
sys-devel/automake:  1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.18-r1
sys-devel/gcc-config: 1.3.14
sys-devel/libtool:   1.5.24
virtual/os-headers:  2.6.23-r3
ACCEPT_KEYWORDS="x86"
CBUILD="i486-pc-linux-gnu"
CFLAGS="-O2 -mtune=i686 -pipe"
CHOST="i486-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/fonts/fonts.conf /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/udev/rules.d"
CXXFLAGS="-O2 -mtune=i686 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
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/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="3dnow X a52 aac acl alsa apache2 automount berkdb bindist bitmap-fonts caps cdb cddb cdr cli cracklib crypt cups curl dbus dri dts dvb dvd dvdr encode esd exif fam ffmpeg fftw firefox flac fortran gd gdbm gif gpm gstreamer gtk gtk2 hal iconv ieee1394 ipv6 isdnlog java javascript joystick jpeg ldap libdvdread lirc lm_sensors mad mailwrapper midi mikmod mmx mp3 mpeg mudflap mysql ncurses nls nptl nptlonly nsplugin ntponly nxclient ogg opengl openmp pam pcre pdf perl png posix pppd python qt3 quicktime readline real reflection samba sdl server session spell spl ssl startup-notification tcpd theora threads transcode truetype truetype-fonts type1 type1-fonts unicode usb v4l vcd vorbis wifi win32codecs x86 xcomposite xine xml xorg xvid zlib" 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 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 info log_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" LIRC_DEVICES="atiusb" USERLAND="GNU" VIDEO_CARDS="nvidia"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Steve Dibb (RETIRED) gentoo-dev 2008-01-21 04:36:10 UTC
do you have libdca installed?
Comment 2 Jason 2008-01-21 12:59:47 UTC
(In reply to comment #1)
> do you have libdca installed?
> 

Yes .... libdca-0.0.5.
Comment 3 Jason 2008-01-26 12:39:41 UTC
(In reply to comment #1)
> do you have libdca installed?
> 

Temporarily reverted back to libdts-0.0.2-r5 because mythtv-0.20.2_p14324 won't function properly without it. Features cease to work ...

Hopefully libdts-0.0.2-r5 isn't removed until this issue is resolved.
Comment 4 Doug Goldstein (RETIRED) gentoo-dev 2008-02-14 21:19:58 UTC
Please try with a newer revision because I believe this was an --as-needed issue and should be fixed.
Comment 5 Jason 2008-03-09 23:51:02 UTC
(In reply to comment #4)
> Please try with a newer revision because I believe this was an --as-needed
> issue and should be fixed.
> 

Is there anyway I can safely revert back to the libdts package if it doesn't work?
I quickpkg'd the libdts just in case ... what command can I use to emerge it back if your sugestion doesn't work? A simple "emerge -av /usr/portage/packages/media-libs/libdts-0.0.2-r5.tbz2" doesn't work. I receive the  following ...
!!! All ebuilds that could satisfy "=media-libs/libdts-0.0.2-r5" have been masked.
!!! One of the following masked packages is required to complete your request:
- media-libs/libdts-0.0.2-r5 (masked by: )

I have libdts set in the "/etc/portage/package.unmask" file.
Comment 6 Jason 2008-03-31 20:59:04 UTC
Is there anyway I can safely revert back to the libdts package if it doesn't
work?
I quickpkg'd the libdts just in case ... what command can I use to emerge it
back if your sugestion doesn't work? A simple "emerge -av
/usr/portage/packages/media-libs/libdts-0.0.2-r5.tbz2" doesn't work. I receive
the  following ...
!!! All ebuilds that could satisfy "=media-libs/libdts-0.0.2-r5" have been
masked.
!!! One of the following masked packages is required to complete your request:
- media-libs/libdts-0.0.2-r5 (masked by: )

I have libdts set in the "/etc/portage/package.unmask" file.
Comment 7 Doug Goldstein (RETIRED) gentoo-dev 2008-03-31 21:37:41 UTC
libdts plays no role in this issue. man emerge would tell you how to use a binary package. emerge -gav libdts
Comment 8 Jason 2008-04-01 20:55:43 UTC
(In reply to comment #7)
> libdts plays no role in this issue. man emerge would tell you how to use a
> binary package. emerge -gav libdts
> 

The issue persists ... see below ...

collect2: ld returned 1 exit status
make[2]: *** [mythtv] Error 1
make[2]: Leaving directory `/var/tmp/portage/media-tv/mythtv-0.20.2_p15634/work/mythtv-0.20.2/programs/mythtv'
make[1]: *** [sub-mythtv] Error 2
make[1]: Leaving directory `/var/tmp/portage/media-tv/mythtv-0.20.2_p15634/work/mythtv-0.20.2/programs'
make: *** [sub-programs] Error 2
 *
 * ERROR: media-tv/mythtv-0.20.2_p15634 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_compile
 *             environment, line 2847:  Called die
 * The specific snippet of code:
 *       emake || die "emake failed";
 *  The die message:
 *   emake failed
 *
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/var/tmp/portage/media-tv/mythtv-0.20.2_p15634/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/media-tv/mythtv-0.20.2_p15634/temp/environment'.
 *

 * Messages for package media-tv/mythtv-0.20.2_p15634:

 *
 * ERROR: media-tv/mythtv-0.20.2_p15634 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_compile
 *             environment, line 2847:  Called die
 * The specific snippet of code:
 *       emake || die "emake failed";
 *  The die message:
 *   emake failed
 *
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/var/tmp/portage/media-tv/mythtv-0.20.2_p15634/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/media-tv/mythtv-0.20.2_p15634/temp/environment'.
Comment 9 Jason 2008-04-01 21:06:46 UTC
(In reply to comment #7)
> libdts plays no role in this issue. man emerge would tell you how to use a
> binary package. emerge -gav libdts
> 

And to add ...
mythtv-0.20.2_p15634 is dependent on libdca. When I replace libdts with libdca trancoding and commercial flagging ceases to work. Hence the need to keep libdts around (in my case).
Comment 10 Doug Goldstein (RETIRED) gentoo-dev 2008-04-01 21:10:32 UTC
(In reply to comment #8)
> (In reply to comment #7)
> > libdts plays no role in this issue. man emerge would tell you how to use a
> > binary package. emerge -gav libdts
> > 
> 
> The issue persists ... see below ...
> 
> collect2: ld returned 1 exit status
> make[2]: *** [mythtv] Error 1
> make[2]: Leaving directory

<snip>

The actual error is above this.
Comment 11 Doug Goldstein (RETIRED) gentoo-dev 2008-04-01 21:13:12 UTC
(In reply to comment #9)
> (In reply to comment #7)
> > libdts plays no role in this issue. man emerge would tell you how to use a
> > binary package. emerge -gav libdts
> > 
> 
> And to add ...
> mythtv-0.20.2_p15634 is dependent on libdca. When I replace libdts with libdca
> trancoding and commercial flagging ceases to work. Hence the need to keep
> libdts around (in my case).
> 

Correct. libdts was renamed to libdca due to DTS complaining of a trademark violations. All projects have switched to linking to libdca. In newer revisions of MythTV, which you're trying to compile, it requires libdca.
Comment 12 Doug Goldstein (RETIRED) gentoo-dev 2008-04-01 21:18:59 UTC
libdca and libdts have NOTHING to do with this issue as I've been stating. Here's the original error you pasted...

g++  -o mythtv main.o    -L/usr/qt/3/lib -L../../libs/libmyth
-L../../libs/libmythtv -L../../libs/libavutil -L../../libs/libavcodec
-L../../libs/libavformat -L../../libs/libmythfreemheg -L../../libs/libmythui
-L../../libs/libmythupnp -L../../libs/libmythlivemedia -lmythtv-0.20.2
-lmythavformat-0.20.2 -lmythavutil-0.20.2 -lmythavcodec-0.20.2
-lmythfreemheg-0.20.2 -lmythupnp-0.20.2 -lmythlivemedia-0.20.2 -lmyth-0.20.2
-lmythui-0.20.2 -lfreetype -lmp3lame -lasound -lraw1394 -liec61883 -lavc1394
-L/usr/X11R6/lib -lXinerama -lXv -lXxf86vm -lXrandr -lqt-mt -lGLU -lGL -lXmu
-lXext -lX11 -lm -lpthread
../../libs/libmythtv/libmythtv-0.20.2.so: undefined reference to
`glXGetProcAddress'

The above error just states that -lmythtv-0.20.2 requires the symbol glXGetProcAddress (which is a function) for it to link. However, that's not being satisfied.

glXGetProcAddress() is always found in libGL.so, it provides a way to call various OpenGL extensions since it get the address of the function which provides the extension.

$ strings /usr/lib/libGL.so  | grep glXGetProcAddress

Should show that.

libGL.so is tied to specific cards and specific manufactures. Which is why on Gentoo, we provided "eselect opengl".

Verify that "eselect opengl" is configured properly and recompile (I can guarantee it's not)
Comment 13 Doug Goldstein (RETIRED) gentoo-dev 2008-04-01 21:24:19 UTC
$ eselect opengl list
Available OpenGL implementations:
  [1]   nvidia *
  [2]   xorg-x11

For example.. I have an NVIDIA card..
Comment 14 Jason 2008-04-02 20:53:38 UTC
(In reply to comment #13)
> $ eselect opengl list
> Available OpenGL implementations:
>   [1]   nvidia *
>   [2]   xorg-x11
> 
> For example.. I have an NVIDIA card..
> 

Output from ...
strings /usr/lib/libGL.so  | grep glXGetProcAddress
glXGetProcAddressARB
glXGetProcAddressARB

Is the above the expected output?

And from ...
eselect opengl list
Available OpenGL implementations:
  [1]   nvidia *
  [2]   xorg-x11

I do indeed have an nvidia card.
Comment 15 Doug Goldstein (RETIRED) gentoo-dev 2008-04-02 21:00:38 UTC
(In reply to comment #14)
> (In reply to comment #13)
> > $ eselect opengl list
> > Available OpenGL implementations:
> >   [1]   nvidia *
> >   [2]   xorg-x11
> > 
> > For example.. I have an NVIDIA card..
> > 
> 
> Output from ...
> strings /usr/lib/libGL.so  | grep glXGetProcAddress
> glXGetProcAddressARB
> glXGetProcAddressARB
> 
> Is the above the expected output?

no. glXGetProcAddress != glXGetProcAddressARB

> 
> And from ...
> eselect opengl list
> Available OpenGL implementations:
>   [1]   nvidia *
>   [2]   xorg-x11
> 
> I do indeed have an nvidia card.
> 

Which version of the nvidia drivers? Which card do you have?
Comment 16 Jason 2008-04-02 22:33:08 UTC
(In reply to comment #15)
> (In reply to comment #14)
> > (In reply to comment #13)
> > > $ eselect opengl list
> > > Available OpenGL implementations:
> > >   [1]   nvidia *
> > >   [2]   xorg-x11
> > > 
> > > For example.. I have an NVIDIA card..
> > > 
> > 
> > Output from ...
> > strings /usr/lib/libGL.so  | grep glXGetProcAddress
> > glXGetProcAddressARB
> > glXGetProcAddressARB
> > 
> > Is the above the expected output?
> 
> no. glXGetProcAddress != glXGetProcAddressARB
> 
> > 
> > And from ...
> > eselect opengl list
> > Available OpenGL implementations:
> >   [1]   nvidia *
> >   [2]   xorg-x11
> > 
> > I do indeed have an nvidia card.
> > 
> 
> Which version of the nvidia drivers? Which card do you have?
> 

The card is a 
01:00.0 VGA compatible controller: nVidia Corporation NV15 [GeForce2 GTS/Pro] (rev a4)

The drivers are 
*  x11-drivers/nvidia-drivers
      Latest version installed: 1.0.7185
      Homepage:      http://www.nvidia.com/
      Description:   NVIDIA X11 driver and GLX libraries
      License:       NVIDIA

I am stuck with these drivers because of the age of the card.
Comment 17 Doug Goldstein (RETIRED) gentoo-dev 2008-04-03 14:20:41 UTC
Remove the current version masks you have on nvidia-drivers. You should be using 71.86.04.
Comment 18 Jason 2008-04-03 22:39:54 UTC
(In reply to comment #17)
> Remove the current version masks you have on nvidia-drivers. You should be
> using 71.86.04.
> 

I updated to x11-drivers/nvidia-drivers-71.86.01 (x11-drivers/nvidia-drivers-71.86.04 is ~x86 masked)

eselect opengl list
Available OpenGL implementations:
   [1]   nvidia *
   [2]   xorg-x11

Running this results in the same output ...
strings /usr/lib/libGL.so  | grep glXGetProcAddress
glXGetProcAddressARB
glXGetProcAddressARB

And emerge mythtv failed again. Same results.
Comment 19 Doug Goldstein (RETIRED) gentoo-dev 2008-04-03 23:30:19 UTC
Well here's your answer... http://svn.mythtv.org/trac/ticket/4064

Appears nvidia-drivers-1.0.7185 and nvidia-drivers-71.x.y install a GLX 1.4 compatible header but the actual driver itself doesn't implement GLX 1.4. That's just... broken...

Use the latest 0.21 version and it'll be fixed for you.