[gnome-shell] Use the versioned libmutter*.so versions



commit a46ea3f8a07376f27cb08c42484f23b145800404
Author: Jonas Ådahl <jadahl gmail com>
Date:   Mon Nov 28 12:54:38 2016 +0800

    Use the versioned libmutter*.so versions
    
    Mutter now provides versioned libraries and pkg-config files, meaning
    an application using libmutter and friends need to depend on a specific
    version of the API.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777317

 configure.ac         |   28 +++++++++++++++++++---------
 js/Makefile.am       |    1 +
 js/misc/config.js.in |    2 ++
 js/ui/environment.js |    4 +++-
 src/Makefile.am      |    4 ++--
 5 files changed, 27 insertions(+), 12 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 04e2159..3652c6f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,6 +41,15 @@ GLIB_GSETTINGS
 AM_PATH_PYTHON([3])
 AC_SUBST(PYTHON)
 
+# We depend on a specific version of the libmutter API. The mutter variants of
+# the Cogl and Clutter libraries also use this API version.
+LIBMUTTER_API_VERSION=0
+
+LIBMUTTER=libmutter-$LIBMUTTER_API_VERSION
+LIBMUTTER_COGL=mutter-cogl-$LIBMUTTER_API_VERSION
+LIBMUTTER_COGL_PANGO=mutter-cogl-pango-$LIBMUTTER_API_VERSION
+LIBMUTTER_CLUTTER=mutter-clutter-$LIBMUTTER_API_VERSION
+
 # We need at least this, since gst_plugin_register_static() was added
 # in 0.10.16, but nothing older than 0.10.21 has been tested.
 GSTREAMER_MIN_VERSION=0.11.92
@@ -52,7 +61,7 @@ if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
    AC_MSG_RESULT(yes)
    build_recorder=true
    recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
-   PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules mutter-clutter-1.0)
+   PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules $LIBMUTTER_CLUTTER)
 else
    AC_MSG_RESULT(no)
 fi
@@ -74,7 +83,6 @@ AS_IF([test x$enable_systemd != xno], [
 
 AC_MSG_RESULT($enable_systemd)
 
-CLUTTER_MIN_VERSION=1.21.5
 GOBJECT_INTROSPECTION_MIN_VERSION=1.49.1
 GJS_MIN_VERSION=1.47.0
 MUTTER_MIN_VERSION=3.23.3
@@ -98,8 +106,8 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
             gjs-1.0 >= $GJS_MIN_VERSION
             $recorder_modules
             gdk-x11-3.0 libsoup-2.4
-            mutter-clutter-1.0 >= $CLUTTER_MIN_VERSION
-            mutter-cogl-pango-1.0
+            $LIBMUTTER_CLUTTER >= $MUTTER_MIN_VERSION
+            $LIBMUTTER_COGL_PANGO
             libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
             gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
             libcanberra libcanberra-gtk3
@@ -111,16 +119,18 @@ if test x$have_systemd = xyes; then
 fi
 
 PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
-PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION)
+PKG_CHECK_MODULES(MUTTER, $LIBMUTTER >= $MUTTER_MIN_VERSION)
 
 PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-1.0 >= $GJS_MIN_VERSION)
-PKG_CHECK_MODULES(ST, mutter-clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
+PKG_CHECK_MODULES(ST, $LIBMUTTER_CLUTTER gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
 PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
 PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
-PKG_CHECK_MODULES(TRAY, mutter-clutter-1.0 gtk+-3.0)
+PKG_CHECK_MODULES(TRAY, $LIBMUTTER_CLUTTER gtk+-3.0)
 PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
 PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.21.3)
 
+AC_SUBST(LIBMUTTER_API_VERSION)
+
 AC_ARG_ENABLE(browser-plugin,
               [AS_HELP_STRING([--enable-browser-plugin],
                               [Enable browser plugin [default=yes]])],,
@@ -145,10 +155,10 @@ AC_SUBST([GNOME_KEYBINDINGS_KEYSDIR])
 
 GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
 
-MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter`
+MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir $LIBMUTTER`
 AC_SUBST(MUTTER_GIR_DIR)
 
-MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter`
+MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir $LIBMUTTER`
 AC_SUBST(MUTTER_TYPELIB_DIR)
 
 GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0`
diff --git a/js/Makefile.am b/js/Makefile.am
index 6d9b85b..6369c75 100644
--- a/js/Makefile.am
+++ b/js/Makefile.am
@@ -11,6 +11,7 @@ misc/config.js: misc/config.js.in Makefile
            -e "s|[@]datadir@|$(datadir)|g" \
            -e "s|[@]libexecdir@|$(libexecdir)|g" \
            -e "s|[@]sysconfdir@|$(sysconfdir)|g" \
+           -e "s|[@]LIBMUTTER_API_VERSION@|$(LIBMUTTER_API_VERSION)|g" \
                $< > $@
 
 js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --sourcedir=$(builddir) 
--generate-dependencies $(srcdir)/js-resources.gresource.xml)
diff --git a/js/misc/config.js.in b/js/misc/config.js.in
index 9c4795d..82f20c6 100644
--- a/js/misc/config.js.in
+++ b/js/misc/config.js.in
@@ -15,3 +15,5 @@ const LOCALEDIR = '@datadir@/locale';
 /* other standard directories */
 const LIBEXECDIR = '@libexecdir@';
 const SYSCONFDIR = '@sysconfdir@';
+/* g-i package versions */
+const LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'
diff --git a/js/ui/environment.js b/js/ui/environment.js
index 68ddaa7..cc13621 100644
--- a/js/ui/environment.js
+++ b/js/ui/environment.js
@@ -1,6 +1,8 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
-imports.gi.versions.Clutter = '1.0';
+const Config = imports.misc.config;
+
+imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
 imports.gi.versions.Gio = '2.0';
 imports.gi.versions.Gdk = '3.0';
 imports.gi.versions.GdkPixbuf = '2.0';
diff --git a/src/Makefile.am b/src/Makefile.am
index 506bf91..3347a06 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -335,7 +335,7 @@ INTROSPECTION_GIRS += ShellMenu-0.1.gir
 CLEANFILES += ShellMenu-0.1.gir
 
 Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir
-Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4
+Shell_0_1_gir_INCLUDES = Clutter-$(LIBMUTTER_API_VERSION) ClutterX11-$(LIBMUTTER_API_VERSION) 
Meta-$(LIBMUTTER_API_VERSION) TelepathyGLib-0.12 Soup-2.4
 if HAVE_NETWORKMANAGER
 Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
 endif
@@ -350,7 +350,7 @@ INTROSPECTION_GIRS += Shell-0.1.gir
 CLEANFILES += Shell-0.1.gir
 
 St-1.0.gir: libst-1.0.la
-St_1_0_gir_INCLUDES = Clutter-1.0 Gtk-3.0
+St_1_0_gir_INCLUDES = Clutter-$(LIBMUTTER_API_VERSION) Gtk-3.0
 St_1_0_gir_CFLAGS = $(st_cflags) -DST_COMPILATION
 St_1_0_gir_LIBS = libst-1.0.la
 St_1_0_gir_FILES = $(filter-out %-private.h $(st_non_gir_sources), $(addprefix $(srcdir)/,$(st_source_h))) \


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]