[gnome-shell] make NetworkManager optional
- From: Ryan Lortie <desrt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] make NetworkManager optional
- Date: Wed, 12 Feb 2014 00:15:18 +0000 (UTC)
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]