[packagekit] [PATCH] Bug #12883, PackageKit has a hard dependency on libnm_glib

S.Çağlar Onur caglar at pardus.org.tr
Mon Oct 22 04:25:08 PDT 2007


Hi;

While trying/playing to integrate our package manager (PiSi) into PackageKit i realize it has strict dep. to NetworkManager which is not available for Pardus.
And according to [1]  it is not desired also so here is the quick patch to remove that dependency from PackageKit. 

diff --git a/configure.ac b/configure.ac
index 6af5641..c8a51fe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -89,10 +89,15 @@ PKG_CHECK_MODULES(DBUS, \
 AC_SUBST(DBUS_CFLAGS)
 AC_SUBST(DBUS_LIBS)
 
-PKG_CHECK_MODULES(LIBNM, \
- libnm_glib >= $LIBNM_REQUIRED)
-AC_SUBST(LIBNM_CFLAGS)
-AC_SUBST(LIBNM_LIBS)
+PKG_CHECK_MODULES(NM, dbus-glib-1, NM_SUPPORT="yes", NM_SUPPORT="no")
+AC_CHECK_HEADER(NetworkManager/NetworkManager.h, [ nm_header="yes" ] )
+if test "x$NM_SUPPORT" = "xyes" -a "x$nm_header" = "xyes"; then 
+    AC_DEFINE(NM_SUPPORT, 1, [network manager available])
+else
+    NM_SUPPORT=no
+fi
+
+AM_CONDITIONAL(NM_SUPPORT, test x$NM_SUPPORT = xyes)
 
 dnl ---------------------------------------------------------------------------
 dnl - Is docbook2man available?
diff --git a/libpackagekit/pk-network.c b/libpackagekit/pk-network.c
index cb12231..6779765 100644
--- a/libpackagekit/pk-network.c
+++ b/libpackagekit/pk-network.c
@@ -19,6 +19,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#ifdef NM_SUPPORT /* NetworkManager support */
+
 #include "config.h"
 
 #include <stdlib.h>
@@ -166,3 +168,4 @@ pk_network_new (void)
 	}
 	return PK_NETWORK (pk_network_object);
 }
+#endif /* NetworkManager support */
diff --git a/src/pk-backend.c b/src/pk-backend.c
index 171879e..92f1b2d 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -39,7 +39,9 @@
 #include <gmodule.h>
 #include <pk-package-id.h>
 #include <pk-enum.h>
+#ifdef NM_SUPPORT
 #include <pk-network.h>
+#endif 
 
 #include "pk-debug.h"
 #include "pk-backend-internal.h"
@@ -76,7 +78,9 @@ struct _PkBackendPrivate
 	gboolean		 during_initialize;
 	gboolean		 assigned;
 	gboolean		 set_error;
+#ifdef NM_SUPPORT
 	PkNetwork		*network;
+#endif
 	PkInhibit		*inhibit;
 	/* needed for gui coldplugging */
 	guint			 last_percentage;
@@ -1618,7 +1622,11 @@ pk_backend_get_runtime (PkBackend *backend)
 gboolean
 pk_backend_network_is_online (PkBackend *backend)
 {
+#ifdef NM_SUPPORT
 	return pk_network_is_online (backend->priv->network);
+#else
+	return TRUE;
+#endif
 }
 
 /**
@@ -1661,7 +1669,10 @@ pk_backend_finalize (GObject *object)
 	pk_inhibit_remove (backend->priv->inhibit, backend);
 	g_object_unref (backend->priv->inhibit);
 
+#ifdef NM_SUPPORT
 	g_object_unref (backend->priv->network);
+#endif
+
 	g_object_unref (backend->priv->thread_list);
 
 	G_OBJECT_CLASS (pk_backend_parent_class)->finalize (object);
@@ -1789,7 +1800,9 @@ pk_backend_init (PkBackend *backend)
 	backend->priv->status = PK_STATUS_ENUM_UNKNOWN;
 	backend->priv->exit = PK_EXIT_ENUM_SUCCESS;
 	backend->priv->inhibit = pk_inhibit_new ();
+#ifdef NM_SUPPORT
 	backend->priv->network = pk_network_new ();
+#endif
 	backend->priv->thread_list = pk_thread_list_new ();
 }
 
diff --git a/src/pk-engine.c b/src/pk-engine.c
index 540c89b..72fc664 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -41,7 +41,9 @@
 
 #include <pk-debug.h>
 #include <pk-common.h>
+#ifdef NM_SUPPORT
 #include <pk-network.h>
+#endif
 #include <pk-package-list.h>
 #include <pk-enum.h>
 
@@ -68,7 +70,9 @@ struct PkEnginePrivate
 	PkTransactionItem	*sync_item;
 	PkPackageList		*updates_cache;
 	PkInhibit		*inhibit;
+#ifdef NM_SUPPORT
 	PkNetwork		*network;
+#endif
 	PkSecurity		*security;
 	PkEnumList		*actions;
 	PkEnumList		*groups;
@@ -2468,8 +2472,10 @@ pk_engine_init (PkEngine *engine)
 	/* we save a cache of the latest update lists sowe can do cached responses */
 	engine->priv->updates_cache = NULL;
 
+#ifdef NM_SUPPORT
 	/* we dont need this, just don't keep creating and destroying it */
 	engine->priv->network = pk_network_new ();
+#endif
 
 	/* we need an auth framework */
 	engine->priv->security = pk_security_new ();
@@ -2513,7 +2519,9 @@ pk_engine_finalize (GObject *object)
 	g_object_unref (engine->priv->actions);
 	g_object_unref (engine->priv->groups);
 	g_object_unref (engine->priv->filters);
+#ifdef NM_SUPPORT
 	g_object_unref (engine->priv->network);
+#endif
 	g_object_unref (engine->priv->security);
 
 	if (engine->priv->updates_cache != NULL) {



[1] https://bugs.freedesktop.org/show_bug.cgi?id=12883
-- 
S.Çağlar Onur <caglar at pardus.org.tr>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!



More information about the PackageKit mailing list