GNOME Bugzilla – Bug 560990
Cannot compile without compositor
Last modified: 2008-11-24 06:25:06 UTC
Please describe the problem: Metacity 2.25.5 Make fails. It looks to me like maybe the --disable-compositor and/or --disable-render switches don't work? Steps to reproduce: Make fails when compiling with: ./configure --prefix=/usr --disable-gconf --disable-verbose-mode --disable-sm --disable-startup-notification --disable-compositor --disable-schemas-install --disable-scrollkeeper --disable-render Actual results: ... libpng12 -I/usr/include/pixman-1 -I/usr/X11R7/include -I ./include -DMETACITY_LIBEXECDIR=\"/usr/libexec\" -DHOST_ALIAS=\"\" -DMETACITY_LOCALEDIR=\"/usr/share/locale\" -DMETACITY_PKGDATADIR=\"/usr/share/metacity\" -DMETACITY_DATADIR=\"/usr/share\" -DG_LOG_DOMAIN=\"metacity\" -DSN_API_NOT_YET_FROZEN=1 -g -O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -MT compositor-xrender.o -MD -MP -MF .deps/compositor-xrender.Tpo -c -o compositor-xrender.o `test -f 'compositor/compositor-xrender.c' || echo './'`compositor/compositor-xrender.c compositor/compositor-xrender.c:46:39: error: X11/extensions/Xcomposite.h: No such file or directory compositor/compositor-xrender.c:47:36: error: X11/extensions/Xdamage.h: No such file or directory compositor/compositor-xrender.c:198: error: expected specifier-qualifier-list before 'Damage' compositor/compositor-xrender.c: In function 'win_extents': compositor/compositor-xrender.c:958: error: 'MetaCompWindow' has no member named 'needs_shadow' compositor/compositor-xrender.c:962: error: 'MetaCompWindow' has no member named 'shadow_dx' compositor/compositor-xrender.c:962: error: 'MetaCompWindow' has no member named 'shadow_type' compositor/compositor-xrender.c:963: error: 'MetaCompWindow' has no member named 'shadow_dy' compositor/compositor-xrender.c:963: error: 'MetaCompWindow' has no member named 'shadow_type' compositor/compositor-xrender.c:965: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:968: error: 'MetaCompWindow' has no member named 'opacity' compositor/compositor-xrender.c:969: error: 'MetaCompWindow' has no member named 'opacity' compositor/compositor-xrender.c:971: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:971: error: 'MetaCompWindow' has no member named 'shadow_type' compositor/compositor-xrender.c:972: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:975: error: 'MetaCompWindow' has no member named 'shadow_width' compositor/compositor-xrender.c:975: error: 'MetaCompWindow' has no member named 'shadow_height' compositor/compositor-xrender.c:978: error: 'MetaCompWindow' has no member named 'shadow_dx' compositor/compositor-xrender.c:979: error: 'MetaCompWindow' has no member named 'shadow_dy' compositor/compositor-xrender.c:980: error: 'MetaCompWindow' has no member named 'shadow_width' compositor/compositor-xrender.c:981: error: 'MetaCompWindow' has no member named 'shadow_height' compositor/compositor-xrender.c: In function 'paint_dock_shadows': compositor/compositor-xrender.c:1103: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1107: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1112: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1114: error: 'MetaCompWindow' has no member named 'shadow_dx' compositor/compositor-xrender.c:1115: error: 'MetaCompWindow' has no member named 'shadow_dy' compositor/compositor-xrender.c:1116: error: 'MetaCompWindow' has no member named 'shadow_width' compositor/compositor-xrender.c:1116: error: 'MetaCompWindow' has no member named 'shadow_height' compositor/compositor-xrender.c: In function 'paint_windows': compositor/compositor-xrender.c:1190: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1191: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1197: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1199: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1200: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1212: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1213: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1215: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1216: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1241: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1252: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1255: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1257: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1258: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1277: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1279: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1284: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1285: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1290: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1292: error: 'MetaCompWindow' has no member named 'shadow_dx' compositor/compositor-xrender.c:1293: error: 'MetaCompWindow' has no member named 'shadow_dy' compositor/compositor-xrender.c:1294: error: 'MetaCompWindow' has no member named 'shadow_width' compositor/compositor-xrender.c:1294: error: 'MetaCompWindow' has no member named 'shadow_height' compositor/compositor-xrender.c:1299: error: 'MetaCompWindow' has no member named 'opacity' compositor/compositor-xrender.c:1299: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1301: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1302: error: 'MetaCompWindow' has no member named 'opacity' compositor/compositor-xrender.c:1306: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1306: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1307: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1309: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1330: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1331: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1336: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1338: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1339: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c: In function 'repair_win': compositor/compositor-xrender.c:1514: warning: implicit declaration of function 'XDamageSubtract' compositor/compositor-xrender.c:1514: warning: nested extern declaration of 'XDamageSubtract' compositor/compositor-xrender.c:1514: error: 'MetaCompWindow' has no member named 'damage' compositor/compositor-xrender.c:1519: error: 'MetaCompWindow' has no member named 'damage' compositor/compositor-xrender.c: In function 'free_win': compositor/compositor-xrender.c:1558: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1560: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1561: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:1564: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1566: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1567: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1570: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1572: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1573: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1576: error: 'MetaCompWindow' has no member named 'shadow_pict' compositor/compositor-xrender.c:1578: error: 'MetaCompWindow' has no member named 'shadow_pict' compositor/compositor-xrender.c:1579: error: 'MetaCompWindow' has no member named 'shadow_pict' compositor/compositor-xrender.c:1582: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1584: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1585: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1588: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1590: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1591: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1594: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1596: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1597: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1602: error: 'MetaCompWindow' has no member named 'damage' compositor/compositor-xrender.c:1604: warning: implicit declaration of function 'XDamageDestroy' compositor/compositor-xrender.c:1604: warning: nested extern declaration of 'XDamageDestroy' compositor/compositor-xrender.c:1604: error: 'MetaCompWindow' has no member named 'damage' compositor/compositor-xrender.c:1607: error: 'MetaCompWindow' has no member named 'damage' compositor/compositor-xrender.c: In function 'map_win': compositor/compositor-xrender.c:1625: warning: unused variable 'xdisplay' compositor/compositor-xrender.c: In function 'unmap_win': compositor/compositor-xrender.c:1670: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1672: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1673: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1674: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c: In function 'determine_mode': compositor/compositor-xrender.c:1689: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1691: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1692: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1695: error: 'MetaCompWindow' has no member named 'shadow_pict' compositor/compositor-xrender.c:1697: error: 'MetaCompWindow' has no member named 'shadow_pict' compositor/compositor-xrender.c:1698: error: 'MetaCompWindow' has no member named 'shadow_pict' compositor/compositor-xrender.c:1707: error: 'MetaCompWindow' has no member named 'opacity' compositor/compositor-xrender.c:1712: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1716: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c: In function 'add_win': compositor/compositor-xrender.c:1845: error: 'MetaCompWindow' has no member named 'damage' compositor/compositor-xrender.c:1847: error: 'MetaCompWindow' has no member named 'damage' compositor/compositor-xrender.c:1847: warning: implicit declaration of function 'XDamageCreate' compositor/compositor-xrender.c:1847: warning: nested extern declaration of 'XDamageCreate' compositor/compositor-xrender.c:1847: error: 'XDamageReportNonEmpty' undeclared (first use in this function) compositor/compositor-xrender.c:1847: error: (Each undeclared identifier is reported only once compositor/compositor-xrender.c:1847: error: for each function it appears in.) compositor/compositor-xrender.c:1849: error: 'MetaCompWindow' has no member named 'alpha_pict' compositor/compositor-xrender.c:1850: error: 'MetaCompWindow' has no member named 'shadow_pict' compositor/compositor-xrender.c:1851: error: 'MetaCompWindow' has no member named 'border_size' compositor/compositor-xrender.c:1852: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1853: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:1854: error: 'MetaCompWindow' has no member named 'shadow_dx' compositor/compositor-xrender.c:1855: error: 'MetaCompWindow' has no member named 'shadow_dy' compositor/compositor-xrender.c:1856: error: 'MetaCompWindow' has no member named 'shadow_width' compositor/compositor-xrender.c:1857: error: 'MetaCompWindow' has no member named 'shadow_height' compositor/compositor-xrender.c:1860: error: 'MetaCompWindow' has no member named 'shadow_type' compositor/compositor-xrender.c:1862: error: 'MetaCompWindow' has no member named 'shadow_type' compositor/compositor-xrender.c:1864: error: 'MetaCompWindow' has no member named 'opacity' compositor/compositor-xrender.c:1866: error: 'MetaCompWindow' has no member named 'border_clip' compositor/compositor-xrender.c:1869: error: 'MetaCompWindow' has no member named 'needs_shadow' compositor/compositor-xrender.c:1872: error: 'MetaCompWindow' has no member named 'needs_shadow' compositor/compositor-xrender.c: In function 'destroy_win': compositor/compositor-xrender.c:1903: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1905: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1906: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1907: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c: In function 'resize_win': compositor/compositor-xrender.c:1992: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:1995: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2047: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:2049: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:2050: error: 'MetaCompWindow' has no member named 'picture' compositor/compositor-xrender.c:2053: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:2055: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:2056: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:2065: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2066: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2068: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2075: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2080: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c: In function 'process_configure_notify': compositor/compositor-xrender.c:2159: error: 'MetaCompWindow' has no member named 'needs_shadow' compositor/compositor-xrender.c:2160: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c: In function 'process_property_notify': compositor/compositor-xrender.c:2255: error: 'MetaCompWindow' has no member named 'opacity' compositor/compositor-xrender.c:2257: error: 'MetaCompWindow' has no member named 'needs_shadow' compositor/compositor-xrender.c:2259: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:2261: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:2262: error: 'MetaCompWindow' has no member named 'shadow' compositor/compositor-xrender.c:2265: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2266: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2267: error: 'MetaCompWindow' has no member named 'extents' compositor/compositor-xrender.c:2284: error: 'MetaCompWindow' has no member named 'needs_shadow' compositor/compositor-xrender.c: At top level: compositor/compositor-xrender.c:2405: error: expected declaration specifiers or '...' before 'XDamageNotifyEvent' compositor/compositor-xrender.c: In function 'process_damage': compositor/compositor-xrender.c:2408: error: 'event' undeclared (first use in this function) compositor/compositor-xrender.c: In function 'show_overlay_window': compositor/compositor-xrender.c:2482: warning: unused variable 'xdisplay' compositor/compositor-xrender.c: In function 'get_output_window': compositor/compositor-xrender.c:2520: warning: unused variable 'xdisplay' make[4]: *** [compositor-xrender.o] Error 1 make[4]: Leaving directory `/tmp/metacity-2.25.5/src' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/tmp/metacity-2.25.5/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/tmp/metacity-2.25.5/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/tmp/metacity-2.25.5' make: *** [all] Error 2 Expected results: Does this happen every time? Other information:
*** Bug 561961 has been marked as a duplicate of this bug. ***
Related if not the single/specific cause is a weird configure.in section, starting around line 213 (as of 2.24.0): >XCOMPOSITE_VERSION=0.2 >AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION]) >if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then > have_xcomposite=yes >else > have_xcomposite=no >fi >AC_MSG_RESULT($have_xcomposite) > >if test x$enable_compositor = xyes; then > have_xcomposite=yes > echo "CompositeExt support forced on" >elif test x$enable_compositor = xauto; then > echo "Building compositing manager by default now." > have_xcomposite=yes >else > have_xcomposite=no >fi Seems like the the results of the first check (Xcomposite version) are ignored, always overwritten by the --{en,dis}able-compositor flag. If user --disable-compositor, then the Xcomposite version doesn't (or at least shouldn't!) matter. If the version isn't sufficient, then --enable-compositor (explicit or as default) needs to be an error.
Created attachment 123274 [details] [review] XComposite vs --disable-xcomposite cleanup Fix for Comment #2. The user-visible "echo" msgs are confusing too! What is "CompositeExt" as opposed to "compositing manager"?
Created attachment 123277 [details] [review] XComposite vs --disable-xcomposite cleanup Need to keep XCOMPOSITE_VERSION global/always-defined for use elsewhere.
Thanks for the patch-- checked in as r4028. I agree about the CompositeExt stuff, and have rewritten those too.
Please reopen...the configure checks are saner so it's easier to see how compositing is getting enabled, but the actual bug that got us here ("disabling" compositor doesn't fully disable use of compositor, so the build fails) is still present as of SVN revision 4031.
Fair enough. Reopened.
Created attachment 123302 [details] [review] Conditoinalize the compositor code that requires extensions Looks like compositor-xrender.c is only used by compositor.c, and only if HAVE_COMPOSITE_EXTENSIONS (as determined by configure.in) is true. Therefore, the whole compositor-xrender.c is irrelevant if H_C_E isn't true. This patch simply uses the same conditional logic as H_C_E to omit c-x.c altogether if it's not going to be used, which is likely to match the build environments where it can't be compiled anyway. Works For Me(tm) on OS X 10.4 with the two --disable- flags per original poster, untested on systems that don't need those flags (i.e., have modern fully-featured x11).