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)) {