gnu: network-manager: Update to 1.40.0, use gexps and remove input labels.

* gnu/packages/gnome.scm (network-manager): Update to 1.40.0.
[arguments]: Use gexps.
[native-inputs, propagated-inputs]: Remove labels.
* gnu/packages/patches/network-manager-plugin-path.patch: Rebase patch.
This commit is contained in:
Maxim Cournoyer 2022-08-22 17:21:52 -04:00
parent 3c5394ca7b
commit 9539408e91
No known key found for this signature in database
GPG key ID: 1260E46482E63562
2 changed files with 144 additions and 139 deletions

View file

@ -7908,7 +7908,7 @@ (define-public caribou
(define-public network-manager
(package
(name "network-manager")
(version "1.32.12")
(version "1.40.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/NetworkManager/"
@ -7918,138 +7918,135 @@ (define-public network-manager
"network-manager-meson.patch"))
(sha256
(base32
"0jzmz0zw64dgvdn2g7pppr7bkywpbxcbdb1viv6p7zh2lnh3dax8"))))
"00zwx7cvl8p8xv5h8yvlj2r5wycbvbqia7z4hjmmvjicpiby1rxf"))))
(build-system meson-build-system)
(outputs '("out"
"doc")) ; 8 MiB of gtk-doc HTML
(arguments
`(#:configure-flags
(let ((out (assoc-ref %outputs "out"))
(dhclient (search-input-file %build-inputs "/sbin/dhclient")))
(list
;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
;; component.
(string-append "-Dc_link_args=-Wl,-rpath="
out "/lib:"
out "/lib/NetworkManager/" ,version)
"-Dsystemd_journal=false"
"-Dsession_tracking=elogind"
"-Dsuspend_resume=elogind"
"-Dsystemdsystemunitdir=no"
"-Dsession_tracking_consolekit=false"
"-Ddhcpcd=no"
"-Ddhcpcanon=no"
"-Dcrypto=gnutls"
"-Diwd=true"
"-Dlibaudit=yes"
"-Dqt=false"
"-Ddocs=true"
"--sysconfdir=/etc"
"--localstatedir=/var"
(string-append "-Dudev_dir="
out "/lib/udev")
(string-append "-Ddbus_conf_dir="
out "/etc/dbus-1/system.d")
(list
#:configure-flags
#~(list
;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
;; component.
(string-append "-Dc_link_args=-Wl,-rpath="
#$output "/lib:"
#$output "/lib/NetworkManager/" #$version)
"-Dsystemd_journal=false"
"-Dsession_tracking=elogind"
"-Dsuspend_resume=elogind"
"-Dsystemdsystemunitdir=no"
"-Dsession_tracking_consolekit=false"
"-Ddhcpcd=no"
"-Ddhcpcanon=no"
"-Dcrypto=gnutls"
"-Diwd=true"
"-Dlibaudit=yes"
"-Dqt=false"
"-Ddocs=true"
"--sysconfdir=/etc"
"--localstatedir=/var"
(string-append "-Dudev_dir="
#$output "/lib/udev")
(string-append "-Ddbus_conf_dir="
#$output "/etc/dbus-1/system.d")
(string-append "-Ddhclient=" dhclient)))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-dlopen-call-to-libjansson.so
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/libnm-glib-aux/nm-json-aux.c"
(("(handle = dlopen\\()soname" _ head)
(string-append
head "\"" (search-input-file inputs
"lib/libjansson.so") "\"")))))
(add-before 'configure 'pre-configure
(lambda _
;; These tests try to test aspects of network-manager's
;; functionality within restricted containers, but they don't
;; cope with being already in the Guix build jail as that jail
;; lacks some features that they would like to proxy over (like
;; a /sys mount).
(substitute* "src/core/tests/meson.build"
((".*test-l3cfg.*") ""))
(substitute* "src/core/devices/tests/meson.build"
((".*test-acd.*") "")
((".*test-lldp.*") ""))
(substitute* "src/core/platform/tests/meson.build"
((".*test-address-linux.*") "")
((".*test-cleanup-linux.*") "")
((".*test-link-linux.*") "")
((".*test-lldp.*") "")
((".*test-route-linux.*") "")
((".*test-tc-linux.*") ""))))
(add-after 'unpack 'patch-docbook-xml
(lambda* (#:key inputs #:allow-other-keys)
(let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
"/xml/dtd/docbook")))
(substitute* (find-files "." ".*\\.(xsl|xml)")
(("http://.*/docbookx\\.dtd")
(string-append xmldoc "/docbookx.dtd"))))))
(add-before 'check 'pre-check
(lambda _
;; For the missing /etc/machine-id.
(setenv "DBUS_FATAL_WARNINGS" "0")))
(add-before 'install 'no-polkit-magic
;; Meson magically invokes pkexec, which fails (not setuid).
(lambda _
(setenv "PKEXEC_UID" "something")))
(add-after 'install 'move-doc
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc")))
(mkdir-p (string-append doc "/share"))
(for-each (lambda (directory)
(copy-recursively (string-append out directory)
(string-append doc directory))
(delete-file-recursively
(string-append out directory)))
'("/share/doc" "/share/gtk-doc"))))))))
(string-append "-Ddhclient=" (search-input-file %build-inputs
"/sbin/dhclient")))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-dlopen-call-to-libjansson.so
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/libnm-glib-aux/nm-json-aux.c"
(("(handle = dlopen\\()soname" _ head)
(string-append
head "\"" (search-input-file inputs
"lib/libjansson.so") "\"")))))
(add-before 'configure 'pre-configure
(lambda _
;; These tests try to test aspects of network-manager's
;; functionality within restricted containers, but they don't
;; cope with being already in the Guix build jail as that jail
;; lacks some features that they would like to proxy over (like
;; a /sys mount).
(substitute* "src/core/tests/meson.build"
((".*test-l3cfg.*") ""))
(substitute* "src/core/devices/tests/meson.build"
((".*test-acd.*") "")
((".*test-lldp.*") ""))
(substitute* "src/core/platform/tests/meson.build"
((".*test-address-linux.*") "")
((".*test-cleanup-linux.*") "")
((".*test-link-linux.*") "")
((".*test-lldp.*") "")
((".*test-route-linux.*") "")
((".*test-tc-linux.*") ""))))
(add-after 'unpack 'patch-docbook-xml
(lambda* (#:key inputs #:allow-other-keys)
(substitute* (find-files "." ".*\\.(xsl|xml)")
(("http://.*/docbookx\\.dtd")
(search-input-file inputs "xml/dtd/docbook/docbookx.dtd")))))
(add-before 'check 'pre-check
(lambda _
;; For the missing /etc/machine-id.
(setenv "DBUS_FATAL_WARNINGS" "0")))
(add-before 'install 'no-polkit-magic
;; Meson magically invokes pkexec, which fails (not setuid).
(lambda _
(setenv "PKEXEC_UID" "something")))
(add-after 'install 'move-doc
(lambda _
(mkdir-p (string-append #$output:doc "/share"))
(for-each (lambda (directory)
(copy-recursively (string-append #$output directory)
(string-append #$output:doc
directory))
(delete-file-recursively
(string-append #$output directory)))
'("/share/doc" "/share/gtk-doc")))))))
(propagated-inputs
(list glib))
(native-inputs
`(("glib:bin" ,glib "bin") ; for gdbus-codegen
("gtk-doc" ,gtk-doc/stable)
("gobject-introspection" ,gobject-introspection)
("docbook-xml" ,docbook-xml)
("docbook-xsl" ,docbook-xsl)
("intltool" ,intltool)
("libxslt" ,libxslt)
("libxml2" ,libxml2)
("pkg-config" ,pkg-config)
("vala" ,vala)
;; For testing.
("python" ,python-wrapper)
("python-dbus" ,python-dbus)
("python-pygobject" ,python-pygobject)))
(list `(,glib "bin") ; for gdbus-codegen
gtk-doc/stable
gobject-introspection
docbook-xml
docbook-xsl
intltool
libxslt
libxml2
pkg-config
vala
;; For testing.
python-wrapper
python-dbus
python-pygobject))
(inputs
`(("curl" ,curl)
("cyrus-sasl" ,cyrus-sasl)
("dbus-glib" ,dbus-glib)
("dnsmasq" ,dnsmasq)
("eudev" ,eudev)
("gnutls" ,gnutls)
("iptables" ,iptables)
("isc-dhcp" ,isc-dhcp)
("iwd" ,iwd) ; wpa_supplicant alternative
("jansson" ,jansson)
("libaudit" ,audit)
("libgcrypt" ,libgcrypt)
("libgudev" ,libgudev)
("libndp" ,libndp)
("libnl" ,libnl)
("libselinux" ,libselinux)
("libsoup" ,libsoup)
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
("modem-manager" ,modem-manager)
("newt" ,newt) ;for the 'nmtui' console interface
("openresolv" ,openresolv) ; alternative resolv.conf manager
("polkit" ,polkit)
("ppp" ,ppp)
("readline" ,readline)
("util-linux" ,util-linux)
("elogind" ,elogind)))
(list curl
cyrus-sasl
dbus-glib
dnsmasq
eudev
gnutls
iptables
isc-dhcp
iwd ; wpa_supplicant alternative
jansson
audit
libgcrypt
libgudev
libndp
libnl
libselinux
libsoup
mobile-broadband-provider-info
modem-manager
newt ;for the 'nmtui' console interface
openresolv ; alternative resolv.conf manager
polkit
ppp
readline
util-linux
elogind))
(synopsis "Network connection manager")
(home-page "https://wiki.gnome.org/Projects/NetworkManager")
(description

View file

@ -3,39 +3,47 @@ From: =?UTF-8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= <sleep_walker@gnu.org>
Date: Wed, 3 Jul 2019 13:31:54 +0200
Subject: [PATCH] respect NM_VPN_PLUGIN_DIR
--- a/src/core/vpn/nm-vpn-manager.c 2021-10-29 13:20:01.062917840 -0400
+++ b/src/core/vpn/nm-vpn-manager.c 2021-10-29 13:26:46.094397018 -0400
@@ -211,6 +211,7 @@
GSList * infos, *info;
const char * conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc();
const char * conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib();
+ const char * conf_dir_user = _nm_vpn_plugin_info_get_default_dir_user ();
Rebased by Maxim Cournoyer on 2022/08/23.
diff --git a/src/core/vpn/nm-vpn-manager.c b/src/core/vpn/nm-vpn-manager.c
index 6bf8edaee5..9bd960ba86 100644
--- a/src/core/vpn/nm-vpn-manager.c
+++ b/src/core/vpn/nm-vpn-manager.c
@@ -209,8 +209,9 @@ nm_vpn_manager_init(NMVpnManager *self)
NMVpnManagerPrivate *priv = NM_VPN_MANAGER_GET_PRIVATE(self);
GFile *file;
GSList *infos, *info;
- const char *conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc();
- const char *conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib();
+ const char *conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc();
+ const char *conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib();
+ const char *conf_dir_user = _nm_vpn_plugin_info_get_default_dir_user();
/* Watch the VPN directory for changes */
file = g_file_new_for_path(conf_dir_lib);
@@ -229,6 +230,14 @@
@@ -229,6 +230,14 @@ nm_vpn_manager_init(NMVpnManager *self)
g_signal_connect(priv->monitor_etc, "changed", G_CALLBACK(vpn_dir_changed), self);
}
+ file = g_file_new_for_path (conf_dir_user);
+ priv->monitor_etc = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL);
+ g_object_unref (file);
+ file = g_file_new_for_path(conf_dir_user);
+ priv->monitor_etc = g_file_monitor_directory(file, G_FILE_MONITOR_NONE, NULL, NULL);
+ g_object_unref(file);
+ if (priv->monitor_etc) {
+ priv->monitor_id_etc =
+ g_signal_connect (priv->monitor_etc, "changed", G_CALLBACK (vpn_dir_changed), self);
+ g_signal_connect(priv->monitor_etc, "changed", G_CALLBACK(vpn_dir_changed), self);
+ }
+
/* first read conf_dir_lib. The name files are not really user configuration, but
* plugin configuration. Hence we expect ~newer~ plugins to install their files
* in /usr/lib/NetworkManager. We want to prefer those files.
@@ -243,6 +252,11 @@
@@ -243,6 +252,11 @@ nm_vpn_manager_init(NMVpnManager *self)
try_add_plugin(self, info->data);
g_slist_free_full(infos, g_object_unref);
+ infos = _nm_vpn_plugin_info_list_load_dir(conf_dir_user, TRUE, 0, NULL, NULL);
+ for (info = infos; info; info = info->next)
+ try_add_plugin (self, info->data);
+ g_slist_free_full (infos, g_object_unref);
+ try_add_plugin(self, info->data);
+ g_slist_free_full(infos, g_object_unref);
+
priv->active_services = g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, NULL);
}