While merging either media-video/mplayer-0.90_rc1 or _rc1-r1 or _rc2, the build fails when trying to link the mplayer executable. GCC (I use gcc version 3.2.1) complains of undefined references to several functions in libpangoxft-1.0.so. These functions appear to be defined in libfreetype.so.6.3.2. I have enclosed the error report from the link below: gcc -O4 -march=k6-2 -mcpu=k6-2 -pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Ilibmpdemux -Iloader -Ilibvo -I/usr/include/freetype2 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/X11R6/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/SDL -D_REENTRANT -o mplayer mplayer.o mp_msg.o cpudetect.o codec-cfg.o cfgparser.o my_profile.o spudec.o playtree.o playtreeparser.o asxparser.o vobsub.o subreader.o sub_cc.o find_sub.o m_config.o m_option.o parser-cfg.o m_struct.o unrarlib.o mixer.o parser-mpcmd.o libvo/libvo.a libao2/libao2.a vidix/libvidix.a Gui/libgui.a libmpcodecs/libmpcodecs.a mp3lib/libMP3.a liba52/liba52.a libmpeg2/libmpeg2.a loader/libloader.a loader/dshow/libDS_Filter.a loader/dmo/libDMO_Filter.a libaf/libaf.a libmpdemux/libmpdemux.a input/libinput.a postproc/libpostproc.a postproc/libswscale.a linux/libosdep.a libavcodec/libavcodec.a -lvorbis -logg -ldv -ldivxdecore -lpng -lz -lz -ljpeg -lfreetype -lcdda_interface -lcdda_paranoia -lnsl -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lglib-2.0 -lGL -lXxf86dga -lXv -lXxf86vm -lXinerama -L/usr/X11R6/lib -lXext -lX11 -lnsl -lnsl -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lpthread -lvgagl -lvga -lgif -L/usr/X11R6/lib -lXext -lX11 -lnsl -L/usr/kde/3.1/lib -ldl -lartsc -lpthread -lpthread -ldl -rdynamic -lm /usr/lib/libpangoxft-1.0.so: undefined reference to `FT_Stream_GetShort' /usr/lib/libpangoxft-1.0.so: undefined reference to `FT_Stream_ExitFrame' /usr/lib/libpangoxft-1.0.so: undefined reference to `FT_Stream_GetLong' /usr/lib/libpangoxft-1.0.so: undefined reference to `FT_Stream_Seek' /usr/lib/libpangoxft-1.0.so: undefined reference to `FT_Stream_EnterFrame' collect2: ld returned 1 exit status make: *** [mplayer] Error 1 !!! ERROR: media-video/mplayer-0.90_rc2 failed. !!! Function src_compile, Line 197, Exitcode 2 Since pango is a dependency of gkt+-2*, mplayer can be built without this error if "-gtk2" is in the USE flags. I have successfully built mplayer without gtk2 support in this manner. If it helps any, here are the versions of several of the packages I have installed that mplayer uses: dev-libs/glib-2.2.0, x11-libs/gtk+-2.0.6-r1, media-list/freetype-2.1.3-r2, x11-libs/pango-1.2.0.
I have the same libs, except for gtk+, which is 2.2.0 here. Try to remerge pango ?
Yes. I had tried remerging pango before I submitted this bug. I had also tried remerging some of pango's dependencies: glib, freetype, fontconfig, and I think I remerged xft as well. I'm going to try compiling mplayer with gtk+-2.2.0 now. I'll tell you how that works. P.S. If it helps any, the version of X11 I have merged is x11-base/xfree-4.2.0-r12.
Well, I now how more information but no answers. I tried recompiling mplayer with gtk+-2.2.0. No luck. I still got the same error message. :( I tried a whole bunch of things after that and came up with some more interesting data. Here it is: I discovered that there is a libfreetype.so in /usr/X11R6/lib. It is a symbolic link that points to libfreetype.6.2.so in the same directory. On a hunch, I decided to temporarily change it to point to /usr/lib/libfreetype.6.3.2.so instead. Then I compiled mplayer. It compiled!! Now I needed to know why it did. I searched around and discovered that libpangoxft.so is linked with options that have it use the libfreetype.so in /usr/X11R6/lib instead of the one in /usr/lib. This confused me so I read the configure script sources (configure.in and aclocal.m4) to find out why it did that. The results were even MORE confusing! The linker flags for libpangoxft.so are taken from pkg-config (dev-utils/pkgconfig). The confusing thing is that "pkg-config --libs xft" returns a different result than "xft-config --libs". The results are below: pkg-config: -L/usr/X11R6/lib -lXft -lfreetype -lXrender -lfontconfig xft-config: -lXft -lfreetype -lfontconfig -L/usr/X11R6/lib -lXrender I don't know if this caused it to link to /usr/X11R6/lib/libfreetype.so instead of /usr/lib/libfreetype.so. Next, I tried compiling mplayer with "-lfreetype" changed to "/usr/bin/libfreetype.so" to make sure mplayer links to the right libfreetype.so. This works. Thus, I think mplayer might be trying to link to /usr/X11R6/lib/libfreetype.so instead of /usr/lib/libfreetype.so. As I said before, I am using x11-base/xfree-4.2.0-r12. If mplayer and pango are _supposed_ to be linking to /usr/X11R6/lib/libfreetype.so then, xfree might need a newer built-in version of freetype. Would updating to xfree-4.2.99.3-r1 fix this? Anyway, I'm stumpped for the moment. That's all the raw data I came up with. Maybe you can figure it out. :)
Well, I updated x11-base/xfree last night. Now I am running x11-base/xfree-4.2.1-r2. This fixed the problem. Aparently, xfree-4.2.0-r11 (and -r12) came with a customized version of freetype. That's how a libfreetype.so ended up in /usr/X11R6/lib. I merged in xfree-4.2.1-r2 (which uses the global freetype) and removed xfree-4.2.0-r12. This got rid of /usr/X11R6/lib/libfreetype.so. Then I recompiled pango and mplayer. Everything works fine now. So now we know how to fix the problem. However, I think someplace a dependency should be added that requires xfree-4.2.1 so that this problem doesn't happen to someone else. That's my 2 cents. Thanks for the help. :)
Bug is here, so that should help people, and I know the problem, thanks for debuging it !
*** Bug 13256 has been marked as a duplicate of this bug. ***
While risking to be redundant, i already have xfree-4.2.1-r2 installed, and compile didn't work for me. Export USE="-gtk2" did.
Did you remeber to emerge -c xfree? The key is that /usr/X11R6/lib/libfreetype.so must be removed. That's the point behind upgrading xfree. (The old version of xfree had a built in version of freetype, but the new one uses the global version.)