Summary: | games-arcade/monster-masher is incompatible with gnome-base/libgnome-2.32.0 | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Diego Elio Pettenò (RETIRED) <flameeyes> |
Component: | [OLD] Games | Assignee: | Gentoo Games <games> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gnome, levertond |
Priority: | High | Keywords: | InVCS |
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | 348644 | ||
Bug Blocks: | |||
Attachments: |
Build log
port to use libcanberra port to use libcanberra mk 2 |
Description
Diego Elio Pettenò (RETIRED)
2010-12-13 11:54:29 UTC
Created attachment 257019 [details]
Build log
pkg-config --libs libgnome-2.0 -pthread -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lgmodule-2.0 -lORBit-2 -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0 I would expect to see -lesd there. Why isn't it? Because it has been deprecated for years? If you build libgnome with USE=esd I would expect it to be in the pc file. If it's not output with --libs I think that's a bug in libgnome. Not really, you're relying on indirect/transitive linking, which is a bad thing. See my blog post on the matter, if you wish: http://blog.flameeyes.eu/2010/05/18/depend-on-what-you-use So you think that it's ok that libgnome doesn't have -lesd in the --libs output from the pc file even though it needs it? Doesn't sound right to me. You're not asking for the static libs, but just the libs, so yes, it is correct that -lesd is not in that list. It's monster-masher that's using esd _directly_ so it should be looking for esd! Interestingly enough, libgnome-2.0 here doesn't LINK to esd either, with USE=esd enabled, but that's a different problem I guess, CCing gnome for reference though. Let's ignore the esd linkage for now, okay? gnome-sound APIs now use libcanberra internally. That means that gnome_sound_connection_get() and will always return error (-1), and gnome_sound_sample_load also always return -1 but still cache the sample using the libcanberra API. And within the monster-masher sound.cpp: void Sound::play(const std::string &name) { int id; cache_map::iterator i = cache.find(name); if (i != cache.end()) id = i->second; else { id = gnome_sound_sample_load(name.c_str(), (MONSTER_MASHER_SOUND_DIR + name).c_str()); cache.insert(make_pair(name, id)); } esd_sample_play(gnome_sound_connection_get(), id); } So it won't work, even if it were to link; let's be glad it failed to link. builds fine for me on stable x86. And this is the final link line: i686-pc-linux-gnu-g++ -march=amdfam10 -O2 -Wall -DORBIT2=1 -pthread -I/usr/include/libgnome-2.0 -I/usr/include/orbit-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/bonobo-activation-2.0 -I/usr/include/gconfmm-2.6 -I/usr/lib/gconfmm-2.6/include -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/gtkmm-2.4 -I/usr/lib/gtkmm-2.4/include -I/usr/include/giomm-2.4 -I/usr/lib/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/pangomm-1.4/include -I/usr/include/gtk-2.0 -I/usr/include/gtk-unix-print-2.0 -I/usr/include/atkmm-1.6 -I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/cairomm-1.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/libgnomecanvasmm-2.6 -I/usr/lib/libgnomecanvasmm-2.6/include -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gail-1.0 -I/usr/include/libart-2.0 -I/usr/include/libglademm-2.4 -I/usr/lib/libglademm-2.4/include -I/usr/include/libglade-2.0 -I/usr/include/libxml2 -Wall -O3 -march=amdfam10 -O2 -Wall -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o monster-masher animation.o arena.o canvas-message.o canvas.o center-menu.o fading-decoration.o footsteps.o game.o graphic.o helpers.o hero.o image-cache.o intro.o main-window.o main.o monsters.o movement.o new-game-window.o obstacles.o persistent.o pixbuf-drawing.o player.o preferences-window.o sound.o splat-helpers.o thing.o -pthread -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lgconfmm-2.6 -lgconf-2 -lgnomecanvasmm-2.6 -lgnomecanvas-2 -lart_lgpl_2 -lglademm-2.4 -lgtkmm-2.4 -lglade-2.0 -latkmm-1.6 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 libgnome 2.32 is not stable, yet. And the problem here is not much building as much as the whole bloody code will fail to execute, the equivalent substitution will be: void Sound::play(const std::string &name) { cache_map::iterator i = cache.find(name); if (i == cache.end()) cache.insert(make_pair(name, -1)); esd_sample_play(-1, -1); } See what could go wrong? @games, we plan on removing esd USE flag in libgnome because of the problem described by diego. monster-masher hasn't seen a release since 2009 so we are going to mask it unless there's a patch to disable esd support. We'll go forward by the end of the week maximum so please state if you have a disagreement here quickly, TIA. Created attachment 264965 [details, diff]
port to use libcanberra
Attached patch makes it use libcanberra instead of ESD
Created attachment 265083 [details, diff] port to use libcanberra mk 2 Helps if I remove the references to the ESD headers.... I've also sent this upstream now, thanks to Eva for reminding me in bug 357675 (it's not being actively developed anymore, as mentioned earlier, but it doesn't hurt). Upstream takes bug reports by email rather than a bug tracker, so no link, but I'll mention if I hear anything back. +*monster-masher-1.8.1-r1 (22 Apr 2011) + + 22 Apr 2011; Gilles Dartiguelongue <eva@gentoo.org> + +monster-masher-1.8.1-r1.ebuild, + +files/monster-masher-1.8.1-libcanberra.patch: + Version bump. Port to libcanberra, bug #348605. + Thanks for the patch it works just fine. |