From 703ac16ea2b508dc16d433b3fd597fcd496d05c1 Mon Sep 17 00:00:00 2001 From: Alexandre Rostovtsev Date: Mon, 29 Apr 2013 23:02:25 -0400 Subject: [PATCH] Avoid build-time dependency on NetworkManager Needed to prevent a dependency loop: nm -> libsoup -> glib-networking -> libproxy -> nm https://bugs.gentoo.org/467696 * asturm@gentoo.org: Rebased on top of 0.4.15 also revert 423801295921ab1ec0d98565fcbc2635088d45da * sam@gentoo.org: Rebased on top of 0.4.16 (same revert included) --- libproxy/cmake/modules.cmk | 6 ++--- .../cmake/modules/network_networkmanager.cmk | 5 +--- libproxy/modules/network_networkmanager.cpp | 23 ++++++++++++++----- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/libproxy/cmake/modules.cmk b/libproxy/cmake/modules.cmk index 11d2d43..cc2b58f 100644 --- a/libproxy/cmake/modules.cmk +++ b/libproxy/cmake/modules.cmk @@ -40,10 +40,10 @@ px_module(config_w32reg "${WIN32}" 1) px_module(ignore_domain 1 1) px_module(ignore_hostname 1 1) px_module(ignore_ip 1 1) -if(NM_FOUND OR NMold_FOUND) +if(NM_FOUND) set(NM_BUILD 1) -endif(NM_FOUND OR NMold_FOUND) -px_module(network_networkmanager "${NM_BUILD}" 0 ${NM_LIBRARIES}${NMold_LIBRARIES}) +endif(NM_FOUND) +px_module(network_networkmanager "${NM_BUILD}" 0 ${NM_LIBRARIES}) px_module(pacrunner_mozjs 0 ${BIPR} ${MOZJS_LIBRARIES}) px_module(pacrunner_natus "${NATUS_FOUND}" ${BIPR} ${NATUS_LIBRARIES}) px_module(pacrunner_webkit "${WEBKIT_FOUND}" ${BIPR} ${WEBKIT_LIBRARIES}) diff --git a/libproxy/cmake/modules/network_networkmanager.cmk b/libproxy/cmake/modules/network_networkmanager.cmk index 6ef6ead..2586bbd 100644 --- a/libproxy/cmake/modules/network_networkmanager.cmk +++ b/libproxy/cmake/modules/network_networkmanager.cmk @@ -1,6 +1,3 @@ if (NOT WIN32 AND NOT APPLE) - px_check_modules(NM libnm dbus-1) - if (NOT NM_FOUND) - px_check_modules(NMold NetworkManager dbus-1) - endif (NOT NM_FOUND) + px_check_modules(NM dbus-1) endif() diff --git a/libproxy/modules/network_networkmanager.cpp b/libproxy/modules/network_networkmanager.cpp index 546a8ee..317f1ab 100644 --- a/libproxy/modules/network_networkmanager.cpp +++ b/libproxy/modules/network_networkmanager.cpp @@ -23,13 +23,24 @@ using namespace libproxy; #include -#include -// Backwards compatibility: with the switch to libnm, NM_STATE_CONNECTED is no -// longer defined. NM_STATE_CONNECTED_GLOBAL appeared with NM 0.9 and was aliased -#ifndef NM_STATE_CONNECTED - #define NM_STATE_CONNECTED NM_STATE_CONNECTED_GLOBAL -#endif +/* + * copy-pasted from NetworkManager-1.26.0's NetworkManager.h to prevent + * a circular dependency; https://bugs.gentoo.org/467696 + */ +#define NM_DBUS_PATH "/org/freedesktop/NetworkManager" +#define NM_DBUS_INTERFACE "org.freedesktop.NetworkManager" +typedef enum { + NM_STATE_UNKNOWN = 0, + NM_STATE_ASLEEP = 10, + NM_STATE_DISCONNECTED = 20, + NM_STATE_DISCONNECTING = 30, + NM_STATE_CONNECTING = 40, + NM_STATE_CONNECTED_LOCAL = 50, + NM_STATE_CONNECTED_SITE = 60, + NM_STATE_CONNECTED_GLOBAL = 70, +} NMState; +#define NM_STATE_CONNECTED NM_STATE_CONNECTED_GLOBAL class networkmanager_network_extension : public network_extension { public: