wxGTK-2.4.2-r4 uses one symbol from libpangox, but is not linked to this lib. Because of that, there is a patch in portage which adds -lpangox to its .la file. But this is not enough to allow audacity building with -Wl,--as-needed for instance.
wxGTK-2.6 has a better fix, which is to use the libpango equivalent to this function. Hence no need for -lpangox.
The attached patch replaces the first with the latter. This way, audacity builds fine with -Wl,--as-needed (binutils-2.16.92 here).
Created attachment 85882 [details, diff]
the patch is for the ebuild, nothing new needed in $FILESDIR.
I'm very fine with this, if it applies cleanly, especially as the MR in the patch is me.
If this is replaced without a revision bump, then the old patch can go to /dev/null as well in $FILESDIR.
PS: Some FILESDIR expressions could take some quoting.
What about wxGTK 2.6? I have problems building audacity with having:
freshly recompiled: wxGTK-126.96.36.199 (USE="X opengl sdl unicode -debug -doc -gnome -joystick -odbc")
though same error:
/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/bin/ld: warning: libstdc++.so.5, needed by /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../libwx_gtk2-2.4.so, may conflict with libstdc++.so.6
/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../libwx_gtk2-2.4.so: undefined reference to `pango_x_get_context'
collect2: ld returned 1 exit status
make: *** [../audacity] Error 1
make: Leaving directory `/var/tmp/portage/audacity-1.2.4b-r1/work/audacity-src-1.2.4b/src'
make: *** [audacity] Error 2
I cannot apply the patch, as it is for wxGTK 2.4.2-r4, and I prefer not to downgrade. My emerge info:
Portage 2.1_pre9-r5 (default-linux/x86/2005.1, gcc-3.4.6, glibc-2.4-r1, 2.6.14-gentoo-r4-stablis i686)
System uname: 2.6.14-gentoo-r4-stablis i686 Intel(R) Pentium(R) M processor 2.00GHz
Gentoo Base System version 1.12.0_pre18
dev-lang/python: 2.3.5-r2, 2.4.2-r1
sys-devel/autoconf: 2.13, 2.59-r7
sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
CFLAGS="-O2 -march=pentium-m -pipe -fomit-frame-pointer"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/X11/xkb /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/splash /etc/terminfo /etc/texmf/web2c /etc/env.d"
CXXFLAGS="-O2 -march=pentium-m -pipe -fomit-frame-pointer"
FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"
USE="x86 X alsa apm avi berkdb bitmap-fonts cli crypt cups dri eds emboss encode foomaticdb fortran gdbm gif gpm gstreamer gtk gtk2 imlib isdnlog jpeg libg++ libwww mad mikmod motif mp3 mpeg ncurses nls nptl nptlonly ogg oggvorbis opengl oss pam pcre pdflib perl png pppd python qt quicktime readline reflection sdl session slang spell spl ssl tcpd truetype truetype-fonts type1-fonts unicode vorbis win32codecs xml2 xmms xorg xv zlib elibc_glibc input_devices_keyboard input_devices_mouse input_devices_synaptics kernel_linux userland_GNU video_cards_i810 video_cards_vesa"
Unset: ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, LINGUAS
It is picking up wxGTK-2.4 instead of 2.6.
The question is why.
Meanwhile you can check if you still need wxGTK-2.4 and uninstall if you don't, and symlink /usr/bin/wx-config to the appopriate thing in /usr/lib/wx/config (gtk2-unicode-release-2.6?).
Alternatively you could help figuring out why it's picking up the wrong wx libraries ;)
Well, pardon me if i'm wrong, but the deps are req`d by the specs in the ebuild itself.
I've now digested the ebuild from here:
where it takes the 2.6-ies, and well it compiled flawlessly :)
Why does an originating ebuilder put 2.4 and lazies to update that, well, that surely the riddle :)) Needst to see, what threaturing problems arose from wxGTK 2.4 to 2.6. Shouldn't we apply to an originating ebuilder?
As all normal libs, wxGTK should have maintain the backwards-compatibility 'feature', if so, we may use audacity and other with new wxGTKs, only the ebuilds have to get updated..
Mart, you can possibly find your answers here:
I'm sorry but your wording left the expression you are compiling against wxGTK-2.6, and I wasn't aware of the state of audacity in portage (it's not under wxwidgets herd, and I haven't yet had the time to check packages out that depend on wx but aren't in the herd)
It's clear now that this is not the case, and the case is exactly what this bug is about :)
As for #110809, WX_WIN_COMPATIBILITY_2_4 is on by default during the whole wxWidgets-2.6 cycle, and we aren't turning it off. This will remain so at least until 2.8 comes out.
Everything doesn't work with these compatibility settings, which is the reason audacity didn't work before with 2.6 until they figured they'd fix it.
wxWidgets breaks ABI backwards compatibility between minor version numbers, but tries to keep as much API backwards compatibility as possible, but it changes still, and is allowed to.
wxGTK-2.4 is dead (Bug 145032)