Package: gnome-control-center
Version: 1:3.8.3-4
Severity: important
Tags: patch
I'm preparing to switch the NM vpn plugins to use multi-arch paths.
Unfortunately, both nm-applet and gnome-control-center reconstruct the
paths to the VPN properties plugin.
E.g. after switching network-manager-openvpn, the
/etc/NetworkManager/VPN/nm-openvpn-service.name file will contain
properties=/usr/lib/x86_64-linux-gnu/NetworkManager/libnm-openvpn-properties
This points to the path of the .so containing the UI bits for setting up
a OpenVPN connection.
Both nm-applet and gnome-control-center rewrite that path: They strip
the path and use their own
$LIBDIR/NetworkManager/libnm-openvpn-properties
Since gnome-control-center doesn't use multi-arch paths, this means it
will fail to load the properties plugin.
In nm-applet I fixed that in [0]
The code in gnome-control-center is basically a copy, so the same patch
should apply. I've attached a diff for gnome 3.8
Please apply the patch for 3.8 and 3.12 in experimental
[0]
http://anonscm.debian.org/gitweb/?p=pkg-utopia/network-manager-applet.git;a=commitdiff;h=5fe022e1d087d2dba88578829eab6f8923a4a9ce
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable'), (200, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.13-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages gnome-control-center depends on:
ii accountsservice 0.6.34-2
ii apg 2.2.3.dfsg.1-2
ii colord 1.0.6-1
ii desktop-file-utils 0.22-1
ii gnome-control-center-data 1:3.8.3-4
ii gnome-desktop3-data 3.8.4-2
ii gnome-icon-theme 3.12.0-1
ii gnome-icon-theme-symbolic 3.12.0-1
ii gnome-menus 3.8.0-2
ii gnome-settings-daemon 3.8.5-2
ii gsettings-desktop-schemas 3.8.2-2
ii libaccountsservice0 0.6.34-2
ii libatk1.0-0 2.10.0-2
ii libc6 2.18-4
ii libcairo2 1.12.16-2
ii libcanberra-gtk3-0 0.30-2
ii libcanberra0 0.30-2
ii libcheese-gtk23 3.10.1-1sid1+b1
ii libcheese7 3.10.1-1sid1+b1
ii libclutter-gtk-1.0-0 1.4.4-3+b1
ii libcolord-gtk1 0.1.25-1.1
ii libcolord1 1.0.6-1
ii libcups2 1.7.1-12
ii libdbus-glib-1-2 0.102-1
ii libfontconfig1 2.11.0-5
ii libgdk-pixbuf2.0-0 2.30.6-1
ii libgl1-mesa-glx [libgl1] 10.1.0-5
ii libglib2.0-0 2.38.2-5
ii libgnome-bluetooth11 3.8.1-2
ii libgnome-desktop-3-7 3.8.4-2
ii libgoa-1.0-0 3.8.3-2
ii libgtk-3-0 3.10.7-1
ii libgtop2-7 2.28.5-2
ii libibus-1.0-5 1.5.5-1
ii libkrb5-3 1.12.1+dfsg-1
ii libnm-glib-vpn1 0.9.8.8-4
ii libnm-glib4 0.9.8.8-4
ii libnm-gtk0 0.9.8.8-4
ii libnm-util2 0.9.8.8-4
ii libpango-1.0-0 1.36.3-1
ii libpangocairo-1.0-0 1.36.3-1
ii libpolkit-gobject-1-0 0.105-4
ii libpulse-mainloop-glib0 5.0-1
ii libpulse0 5.0-1
ii libpwquality1 1.2.3-1
ii libsmbclient 2:4.1.6+dfsg-1
ii libsocialweb-client2 0.25.20-6
ii libupower-glib1 0.9.23-2+b2
ii libwacom2 0.8-1
ii libx11-6 2:1.6.2-1
ii libxi6 2:1.7.2-1
ii libxml2 2.9.1+dfsg1-3
Versions of packages gnome-control-center recommends:
ii cups-pk-helper 0.2.5-2
ii gkbd-capplet 3.6.0-1
ii gnome-online-accounts 3.8.3-2
ii gnome-user-guide 3.8.2-1
ii gnome-user-share 3.8.3-1
ii iso-codes 3.51-1
ii mesa-utils 8.1.0-2+b1
ii mousetweaks 3.12.0-1
ii network-manager-gnome 0.9.8.8-4
ii ntp 1:4.2.6.p5+dfsg-3
ii policykit-1-gnome 0.105-2
pn rygel | rygel-tracker <none>
pn system-config-printer <none>
Versions of packages gnome-control-center suggests:
ii gnome-screensaver 3.6.1-1
ii gstreamer1.0-pulseaudio 1.2.3-1
ii libcanberra-gtk-module 0.30-2
ii libcanberra-gtk3-module 0.30-2
ii x11-xserver-utils 7.7+2
-- no debconf information
diff --git a/panels/network/connection-editor/vpn-helpers.c b/panels/network/connection-editor/vpn-helpers.c
index 48beae5..c1b2e8b 100644
--- a/panels/network/connection-editor/vpn-helpers.c
+++ b/panels/network/connection-editor/vpn-helpers.c
@@ -75,7 +75,7 @@ vpn_get_plugins (GError **error)
char *path = NULL, *service = NULL;
char *so_path = NULL, *so_name = NULL;
GKeyFile *keyfile = NULL;
- GModule *module;
+ GModule *module = NULL;
NMVpnPluginUiFactory factory = NULL;
if (!g_str_has_suffix (f, ".name"))
@@ -95,19 +95,26 @@ vpn_get_plugins (GError **error)
if (!so_path)
goto next;
- /* Remove any path and extension components, then reconstruct path
- * to the SO in LIBDIR
- */
- so_name = g_path_get_basename (so_path);
- g_free (so_path);
- so_path = g_build_filename (NM_VPN_MODULE_DIR, so_name, NULL);
- g_free (so_name);
- module = g_module_open (so_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+ if (g_path_is_absolute (so_path))
+ module = g_module_open (so_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+
+
if (!module) {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Cannot load the VPN plugin which provides the "
- "service '%s'.", service);
- goto next;
+ /* Remove any path and extension components, then reconstruct path
+ * to the SO in LIBDIR
+ */
+ so_name = g_path_get_basename (so_path);
+ g_free (so_path);
+ so_path = g_build_filename (NM_VPN_MODULE_DIR, so_name, NULL);
+ g_free (so_name);
+
+ module = g_module_open (so_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+ if (!module) {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Cannot load the VPN plugin which provides the "
+ "service '%s'.", service);
+ goto next;
+ }
}
if (g_module_symbol (module, "nm_vpn_plugin_ui_factory", (gpointer) &factory)) {