app-misc/beagle-0.3.9-r3 fails to compile with mono-2.8-r1 because starting with 2.8, mono cflags are defined in mono-2.pc instead of mono.pc (mono.pc is now relegated purely to probing mono version and directories); beagle tries to look for cflags from mono.pc to set its include path, and therefore cannot find jit.h when it tries to compile mono-glue.c See mono commits http://github.com/mono/mono/commit/9e1f34dd2d7be45b2a3a6b1c133a4a1de8c3d864 and http://github.com/mono/mono/commit/d48630accf73bebc00d9b4b43f8812c0106ba4be for details. # USE="avahi chm doc eds firefox galago google gtk inotify ole pdf xscreensaver" emerge mono [...] /bin/sh ../libtool --tag=CC --mode=compile x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -pthread -DQT_SHARED -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/qt4 -I/usr/include/qt4/QtGui -I/usr/include/libdrm -I/usr/include/qt4/QtCore -I/usr/include/librsvg-2.0 -pthread -I/usr/include/wv -I/usr/include/freetype2 -I/usr/include/libgsf-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libxml2 -march=native -O2 -pipe -c -o mono-glue.lo mono-glue.c libtool: compile: x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -pthread -DQT_SHARED -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/qt4 -I/usr/include/qt4/QtGui -I/usr/include/libdrm -I/usr/include/qt4/QtCore -I/usr/include/librsvg-2.0 -pthread -I/usr/include/wv -I/usr/include/freetype2 -I/usr/include/libgsf-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libxml2 -march=native -O2 -pipe -c mono-glue.c -fPIC -DPIC -o .libs/mono-glue.o mono-glue.c:29:26: fatal error: mono/jit/jit.h: No such file or directory compilation terminated. make[2]: *** [mono-glue.lo] Error 1 make[2]: Leaving directory `/var/tmp/portage/app-misc/beagle-0.3.9-r3/work/beagle-0.3.9/glue' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/app-misc/beagle-0.3.9-r3/work/beagle-0.3.9' make: *** [all] Error 2 emake failed * ERROR: app-misc/beagle-0.3.9-r3 failed: * died running emake, base_src_make
Created attachment 250799 [details] complete build log
Created attachment 250801 [details, diff] beagle-0.3.9-mono2.8.patch This patch allows beagle to compile with mono-2.8 * mono-2.8 uses mono-2.pc instead of mono.pc for setting cflags and libs; need to modify configure.in accordingly. * mono-2.8 disables direct access to struct MonoType fields; use accessors instead (mono_type_get_type and mono_field_get_flags have been present in the API since at least mono-1.2, so we do not need any version ifdefs). * Cast FSpot.MetadataStore to IEnumerable in foreach() to prevent CS1640 errors (non-unique enumeration of the type) with mono-2.8's gmcs.
I have reported the issue upstream (with a slightly different patch, since upstream git master suffers from one additional issue) at https://bugzilla.gnome.org/show_bug.cgi?id=632282
Thanks for your investigation
Pacho, since we don't ship mono 2.4 or lower, please feel free to add this patch to the ebuild. If there's no complaints on the upstream bug, I'll commit this upstream as well.
+*beagle-0.3.9-r4 (08 Nov 2010) + + 08 Nov 2010; Pacho Ramos <pacho@gentoo.org> +beagle-0.3.9-r4.ebuild, + +files/beagle-0.3.9-mono2.8.patch: + Fix building against mono-2.8 (bug #341195 with a patch created by + Alexandre Rostovtsev (and with Arun Raghavan approval). Remove .la files. +
*** Bug 353535 has been marked as a duplicate of this bug. ***