Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 348605 - games-arcade/monster-masher is incompatible with gnome-base/libgnome-2.32.0
Summary: games-arcade/monster-masher is incompatible with gnome-base/libgnome-2.32.0
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Games (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Games
Keywords: InVCS
Depends on: 348644
  Show dependency tree
Reported: 2010-12-13 11:54 UTC by Diego Elio Pettenò (RETIRED)
Modified: 2011-04-22 21:11 UTC (History)
2 users (show)

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

Build log (monster-masher-1.8.1:20101213-110629.log,55.55 KB, text/plain)
2010-12-13 11:54 UTC, Diego Elio Pettenò (RETIRED)
port to use libcanberra (monster-masher-1.8.1-libcanberra.patch,1.70 KB, patch)
2011-03-06 16:28 UTC, David Leverton
Details | Diff
port to use libcanberra mk 2 (monster-masher-1.8.1-libcanberra.patch,1.81 KB, patch)
2011-03-07 22:15 UTC, David Leverton
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Diego Elio Pettenò (RETIRED) gentoo-dev 2010-12-13 11:54:29 UTC
Portage (default/linux/x86/10.0, gcc-4.5.1-asneeded, glibc-2.12.1-r3, i686)
System uname: Linux-
Timestamp of tree: Mon, 13 Dec 2010 00:25:01 +0000
distcc 3.1 i686-pc-linux-gnu [disabled]
ccache version 3.1.3 [disabled]
app-shells/bash:     4.1_p9
dev-java/java-config: 2.1.11-r2
dev-lang/python:     2.4.6, 2.6.6-r1, 2.7, 3.1.3
dev-util/ccache:     3.1.3
dev-util/cmake:      2.8.1-r2
sys-apps/baselayout: 2.0.1-r1
sys-apps/openrc:     0.6.8
sys-apps/sandbox:    2.4
sys-devel/autoconf:  2.13, 2.68
sys-devel/automake:  1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.21
sys-devel/gcc:       4.5.1-r1
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.4-r1
sys-devel/make:      3.82
virtual/os-headers: (sys-kernel/linux-headers)
CFLAGS="-O2 -pipe"
CONFIG_PROTECT="/etc /opt/openjms/config /usr/share/bufrtables /usr/share/config /usr/share/qpsmtpd/plugins /var/bind /var/lib/hsqldb /var/lib/redmine/config /var/phxd /var/spool/torque /var/vpopmail/etc /var/yp/Makefile"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/games/angband/edit/ /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs distlocks fixlafiles fixpackages news parallel-fetch protect-owned sandbox sfperms split-log strict test test-fail-continue unknown-features-warn unmerge-orphans userfetch userpriv usersandbox"
FFLAGS="-O2 -pipe"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
USE="acl berkdb bzip2 cli cracklib crypt cups cxx dri fortran gdbm gpm iconv ipv6 java5 java6 modules mudflap mysql ncurses nls nostatic nptl nptlonly openmp pam pcre perl postgres pppd python qt3support readline ruby session ssl sysfs tcpd unicode vhosts x86 xorg 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 mmap_emul 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 auth_digest cgi" 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" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" PHP_TARGETS="php5-2" RUBY_TARGETS="ruby18 jruby ruby19 ree18" USERLAND="GNU" VIDEO_CARDS="intel radeon nouveau vmware" 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"
Comment 1 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-12-13 11:54:47 UTC
Created attachment 257019 [details]
Build log
Comment 2 Mr. Bones. (RETIRED) gentoo-dev 2010-12-13 16:28:07 UTC
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?
Comment 3 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-12-13 17:46:00 UTC
Because it has been deprecated for years?
Comment 4 Mr. Bones. (RETIRED) gentoo-dev 2010-12-13 19:11:00 UTC
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.
Comment 5 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-12-13 19:29:00 UTC
Not really, you're relying on indirect/transitive linking, which is a bad thing. See my blog post on the matter, if you wish:
Comment 6 Mr. Bones. (RETIRED) gentoo-dev 2010-12-13 19:40:43 UTC
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.
Comment 7 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-12-13 19:59:13 UTC
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.
Comment 8 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-12-13 20:37:48 UTC
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.
Comment 9 Mr. Bones. (RETIRED) gentoo-dev 2010-12-13 21:41:05 UTC
builds fine for me on stable x86.
Comment 10 Mr. Bones. (RETIRED) gentoo-dev 2010-12-13 21:44:56 UTC
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
Comment 11 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-12-13 21:45:20 UTC
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?
Comment 12 Gilles Dartiguelongue gentoo-dev 2011-02-21 13:15:20 UTC
@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.
Comment 13 David Leverton 2011-03-06 16:28:42 UTC
Created attachment 264965 [details, diff]
port to use libcanberra

Attached patch makes it use libcanberra instead of ESD
Comment 14 David Leverton 2011-03-07 22:15:31 UTC
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.
Comment 15 Gilles Dartiguelongue gentoo-dev 2011-04-22 21:11:36 UTC
+*monster-masher-1.8.1-r1 (22 Apr 2011)
+  22 Apr 2011; Gilles Dartiguelongue <>
+  +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.