[gnome-shell] make NetworkManager optional



commit 9f3499a7c33e33f9da204f752e5021afee9c68b2
Author: Michael Biebl <biebl debian org>
Date:   Tue Feb 11 17:20:15 2014 -0500

    make NetworkManager optional
    
    NetworkManager is only available on Linux.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=669495

 configure.ac         |   48 +++++++++++++++++++++++++++++++++++++++++++++---
 js/Makefile.am       |    1 +
 js/misc/config.js.in |    2 ++
 js/ui/panel.js       |   14 +++++++++++---
 js/ui/sessionMode.js |    8 +++++++-
 src/Makefile.am      |   15 ++++++++++++---
 6 files changed, 78 insertions(+), 10 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 4624bfe..2ab00cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -105,9 +105,7 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
             libcanberra libcanberra-gtk3
             telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
             polkit-agent-1 >= $POLKIT_MIN_VERSION
-            libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION
-            libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
-            libsecret-unstable gcr-base-3 >= $GCR_MIN_VERSION"
+            gcr-base-3 >= $GCR_MIN_VERSION"
 if test x$have_systemd = xyes; then
   SHARED_PCS="${SHARED_PCS} libsystemd-journal"
 fi
@@ -182,6 +180,38 @@ if test "$langinfo_ok" = "yes"; then
             [Define if _NL_TIME_FIRST_WEEKDAY is available])
 fi
 
+AC_ARG_ENABLE(networkmanager,
+             AS_HELP_STRING([--disable-networkmanager],
+                            [disable NetworkManager support  @<:@default=auto@:>@]),,
+              [enable_networkmanager=auto])
+
+if test "x$enable_networkmanager" != "xno"; then
+   PKG_CHECK_MODULES(NETWORKMANAGER,
+                     [libnm-glib
+                     libnm-util >= $NETWORKMANAGER_MIN_VERSION
+                     libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
+                     libsecret-unstable],
+                     [have_networkmanager=yes],
+                     [have_networkmanager=no])
+
+   GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS"
+   GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS"
+else
+   have_networkmanager="no  (disabled)"
+fi
+
+if test "x$have_networkmanager" = "xyes"; then
+   AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
+   AC_SUBST([HAVE_NETWORKMANAGER], [1])
+else
+   if test "x$enable_networkmanager" = "xyes"; then
+      AC_MSG_ERROR([Couldn't find NetworkManager.])
+   fi
+   AC_SUBST([HAVE_NETWORKMANAGER], [0])
+fi
+
+AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
+
 # Sets GLIB_GENMARSHAL and GLIB_MKENUMS
 AM_PATH_GLIB_2_0()
 
@@ -223,3 +253,15 @@ AC_CONFIG_FILES([
   man/Makefile
 ])
 AC_OUTPUT
+
+echo "
+Build configuration:
+
+       Prefix:                                 ${prefix}
+       Source code location:                   ${srcdir}
+       Compiler:                               ${CC}
+       Compiler Warnings:                      $enable_compile_warnings
+
+       Support for NetworkManager:             $have_networkmanager
+       Support for GStreamer recording:        $build_recorder
+"
diff --git a/js/Makefile.am b/js/Makefile.am
index e51c4fb..09ceab1 100644
--- a/js/Makefile.am
+++ b/js/Makefile.am
@@ -6,6 +6,7 @@ misc/config.js: misc/config.js.in Makefile
        sed -e "s|[ ]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \
            -e "s|[ ]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
            -e "s|[ ]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
+           -e "s|[ ]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \
            -e "s|[ ]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \
            -e "s|[ ]datadir@|$(datadir)|g" \
            -e "s|[ ]libexecdir@|$(libexecdir)|g" \
diff --git a/js/misc/config.js.in b/js/misc/config.js.in
index 9769104..9c4795d 100644
--- a/js/misc/config.js.in
+++ b/js/misc/config.js.in
@@ -6,6 +6,8 @@ const PACKAGE_NAME = '@PACKAGE_NAME@';
 const PACKAGE_VERSION = '@PACKAGE_VERSION@';
 /* 1 if gnome-bluetooth is available, 0 otherwise */
 const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
+/* 1 if networkmanager is available, 0 otherwise */
+const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
 /* gettext package */
 const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
 /* locale dir */
diff --git a/js/ui/panel.js b/js/ui/panel.js
index a545552..62614ca 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -812,7 +812,11 @@ const AggregateMenu = new Lang.Class({
         this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
         this.actor.add_child(this._indicators);
 
-        this._network = new imports.ui.status.network.NMApplet();
+        if (Config.HAVE_NETWORKMANAGER) {
+            this._network = new imports.ui.status.network.NMApplet();
+        } else {
+            this._network = null;
+        }
         if (Config.HAVE_BLUETOOTH) {
             this._bluetooth = new imports.ui.status.bluetooth.Indicator();
         } else {
@@ -829,7 +833,9 @@ const AggregateMenu = new Lang.Class({
 
         this._indicators.add_child(this._screencast.indicators);
         this._indicators.add_child(this._location.indicators);
-        this._indicators.add_child(this._network.indicators);
+        if (this._network) {
+            this._indicators.add_child(this._network.indicators);
+        }
         if (this._bluetooth) {
             this._indicators.add_child(this._bluetooth.indicators);
         }
@@ -841,7 +847,9 @@ const AggregateMenu = new Lang.Class({
         this.menu.addMenuItem(this._volume.menu);
         this.menu.addMenuItem(this._brightness.menu);
         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
-        this.menu.addMenuItem(this._network.menu);
+        if (this._network) {
+            this.menu.addMenuItem(this._network.menu);
+        }
         if (this._bluetooth) {
             this.menu.addMenuItem(this._bluetooth.menu);
         }
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
index 69715e4..599b51c 100644
--- a/js/ui/sessionMode.js
+++ b/js/ui/sessionMode.js
@@ -10,6 +10,8 @@ const FileUtils = imports.misc.fileUtils;
 const Main = imports.ui.main;
 const Params = imports.misc.params;
 
+const Config = imports.misc.config;
+
 const DEFAULT_MODE = 'restrictive';
 
 const _modes = {
@@ -92,8 +94,12 @@ const _modes = {
         isLocked: false,
         isPrimary: true,
         unlockDialog: imports.ui.unlockDialog.UnlockDialog,
-        components: ['networkAgent', 'polkitAgent', 'telepathyClient',
+        components: Config.HAVE_NETWORKMANAGER ?
+                    ['networkAgent', 'polkitAgent', 'telepathyClient',
+                     'keyring', 'autorunManager', 'automountManager'] :
+                    ['polkitAgent', 'telepathyClient',
                      'keyring', 'autorunManager', 'automountManager'],
+
         panel: {
             left: ['activities', 'appMenu'],
             center: ['dateMenu'],
diff --git a/src/Makefile.am b/src/Makefile.am
index 59c9d8f..f489a56 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -98,7 +98,6 @@ shell_public_headers_h =              \
        shell-invert-lightness-effect.h \
        shell-keybinding-modes.h        \
        shell-mount-operation.h         \
-       shell-network-agent.h           \
        shell-perf-log.h                \
        shell-screenshot.h              \
        shell-slicer.h                  \
@@ -110,6 +109,10 @@ shell_public_headers_h =           \
        shell-window-tracker.h          \
        shell-wm.h
 
+if HAVE_NETWORKMANAGER
+shell_public_headers_h +=  shell-network-agent.h
+endif
+
 libgnome_shell_menu_la_SOURCES =       \
        gtkactionmuxer.h                \
        gtkactionmuxer.c                \
@@ -136,7 +139,6 @@ libgnome_shell_base_la_SOURCES =    \
        shell-menu-tracker.c            \
        shell-menu-tracker.h            \
        shell-mount-operation.c         \
-       shell-network-agent.c           \
        shell-perf-log.c                \
        shell-polkit-authentication-agent.h     \
        shell-polkit-authentication-agent.c     \
@@ -147,6 +149,10 @@ libgnome_shell_base_la_SOURCES =   \
        shell-tp-client.c               \
        $(NULL)
 
+if HAVE_NETWORKMANAGER
+libgnome_shell_base_la_SOURCES +=  shell-network-agent.c
+endif
+
 libgnome_shell_sources =               \
        $(shell_public_headers_h)       \
        shell-app-private.h             \
@@ -343,7 +349,10 @@ 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 GMenu-3.0 
NetworkManager-1.0 NMClient-1.0
+Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0
+if HAVE_NETWORKMANAGER
+Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
+endif
 Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
 # Hack! we use PROGRAM instead of LIBS so that the soname is not included
 # in the typelib. This way the symbols will be resolved with the libgnome-shell


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