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 (define-public network-manager
(package (package
(name "network-manager") (name "network-manager")
(version "1.32.12") (version "1.40.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/NetworkManager/" (uri (string-append "mirror://gnome/sources/NetworkManager/"
@ -7918,138 +7918,135 @@ (define-public network-manager
"network-manager-meson.patch")) "network-manager-meson.patch"))
(sha256 (sha256
(base32 (base32
"0jzmz0zw64dgvdn2g7pppr7bkywpbxcbdb1viv6p7zh2lnh3dax8")))) "00zwx7cvl8p8xv5h8yvlj2r5wycbvbqia7z4hjmmvjicpiby1rxf"))))
(build-system meson-build-system) (build-system meson-build-system)
(outputs '("out" (outputs '("out"
"doc")) ; 8 MiB of gtk-doc HTML "doc")) ; 8 MiB of gtk-doc HTML
(arguments (arguments
`(#:configure-flags (list
(let ((out (assoc-ref %outputs "out")) #:configure-flags
(dhclient (search-input-file %build-inputs "/sbin/dhclient"))) #~(list
(list ;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path ;; component.
;; component. (string-append "-Dc_link_args=-Wl,-rpath="
(string-append "-Dc_link_args=-Wl,-rpath=" #$output "/lib:"
out "/lib:" #$output "/lib/NetworkManager/" #$version)
out "/lib/NetworkManager/" ,version) "-Dsystemd_journal=false"
"-Dsystemd_journal=false" "-Dsession_tracking=elogind"
"-Dsession_tracking=elogind" "-Dsuspend_resume=elogind"
"-Dsuspend_resume=elogind" "-Dsystemdsystemunitdir=no"
"-Dsystemdsystemunitdir=no" "-Dsession_tracking_consolekit=false"
"-Dsession_tracking_consolekit=false" "-Ddhcpcd=no"
"-Ddhcpcd=no" "-Ddhcpcanon=no"
"-Ddhcpcanon=no" "-Dcrypto=gnutls"
"-Dcrypto=gnutls" "-Diwd=true"
"-Diwd=true" "-Dlibaudit=yes"
"-Dlibaudit=yes" "-Dqt=false"
"-Dqt=false" "-Ddocs=true"
"-Ddocs=true" "--sysconfdir=/etc"
"--sysconfdir=/etc" "--localstatedir=/var"
"--localstatedir=/var" (string-append "-Dudev_dir="
(string-append "-Dudev_dir=" #$output "/lib/udev")
out "/lib/udev") (string-append "-Ddbus_conf_dir="
(string-append "-Ddbus_conf_dir=" #$output "/etc/dbus-1/system.d")
out "/etc/dbus-1/system.d")
(string-append "-Ddhclient=" dhclient))) (string-append "-Ddhclient=" (search-input-file %build-inputs
#:phases "/sbin/dhclient")))
(modify-phases %standard-phases #:phases
(add-after 'unpack 'patch-dlopen-call-to-libjansson.so #~(modify-phases %standard-phases
(lambda* (#:key inputs #:allow-other-keys) (add-after 'unpack 'patch-dlopen-call-to-libjansson.so
(substitute* "src/libnm-glib-aux/nm-json-aux.c" (lambda* (#:key inputs #:allow-other-keys)
(("(handle = dlopen\\()soname" _ head) (substitute* "src/libnm-glib-aux/nm-json-aux.c"
(string-append (("(handle = dlopen\\()soname" _ head)
head "\"" (search-input-file inputs (string-append
"lib/libjansson.so") "\""))))) head "\"" (search-input-file inputs
(add-before 'configure 'pre-configure "lib/libjansson.so") "\"")))))
(lambda _ (add-before 'configure 'pre-configure
;; These tests try to test aspects of network-manager's (lambda _
;; functionality within restricted containers, but they don't ;; These tests try to test aspects of network-manager's
;; cope with being already in the Guix build jail as that jail ;; functionality within restricted containers, but they don't
;; lacks some features that they would like to proxy over (like ;; cope with being already in the Guix build jail as that jail
;; a /sys mount). ;; lacks some features that they would like to proxy over (like
(substitute* "src/core/tests/meson.build" ;; a /sys mount).
((".*test-l3cfg.*") "")) (substitute* "src/core/tests/meson.build"
(substitute* "src/core/devices/tests/meson.build" ((".*test-l3cfg.*") ""))
((".*test-acd.*") "") (substitute* "src/core/devices/tests/meson.build"
((".*test-lldp.*") "")) ((".*test-acd.*") "")
(substitute* "src/core/platform/tests/meson.build" ((".*test-lldp.*") ""))
((".*test-address-linux.*") "") (substitute* "src/core/platform/tests/meson.build"
((".*test-cleanup-linux.*") "") ((".*test-address-linux.*") "")
((".*test-link-linux.*") "") ((".*test-cleanup-linux.*") "")
((".*test-lldp.*") "") ((".*test-link-linux.*") "")
((".*test-route-linux.*") "") ((".*test-lldp.*") "")
((".*test-tc-linux.*") "")))) ((".*test-route-linux.*") "")
(add-after 'unpack 'patch-docbook-xml ((".*test-tc-linux.*") ""))))
(lambda* (#:key inputs #:allow-other-keys) (add-after 'unpack 'patch-docbook-xml
(let ((xmldoc (string-append (assoc-ref inputs "docbook-xml") (lambda* (#:key inputs #:allow-other-keys)
"/xml/dtd/docbook"))) (substitute* (find-files "." ".*\\.(xsl|xml)")
(substitute* (find-files "." ".*\\.(xsl|xml)") (("http://.*/docbookx\\.dtd")
(("http://.*/docbookx\\.dtd") (search-input-file inputs "xml/dtd/docbook/docbookx.dtd")))))
(string-append xmldoc "/docbookx.dtd")))))) (add-before 'check 'pre-check
(add-before 'check 'pre-check (lambda _
(lambda _ ;; For the missing /etc/machine-id.
;; For the missing /etc/machine-id. (setenv "DBUS_FATAL_WARNINGS" "0")))
(setenv "DBUS_FATAL_WARNINGS" "0"))) (add-before 'install 'no-polkit-magic
(add-before 'install 'no-polkit-magic ;; Meson magically invokes pkexec, which fails (not setuid).
;; Meson magically invokes pkexec, which fails (not setuid). (lambda _
(lambda _ (setenv "PKEXEC_UID" "something")))
(setenv "PKEXEC_UID" "something"))) (add-after 'install 'move-doc
(add-after 'install 'move-doc (lambda _
(lambda* (#:key outputs #:allow-other-keys) (mkdir-p (string-append #$output:doc "/share"))
(let ((out (assoc-ref outputs "out")) (for-each (lambda (directory)
(doc (assoc-ref outputs "doc"))) (copy-recursively (string-append #$output directory)
(mkdir-p (string-append doc "/share")) (string-append #$output:doc
(for-each (lambda (directory) directory))
(copy-recursively (string-append out directory) (delete-file-recursively
(string-append doc directory)) (string-append #$output directory)))
(delete-file-recursively '("/share/doc" "/share/gtk-doc")))))))
(string-append out directory)))
'("/share/doc" "/share/gtk-doc"))))))))
(propagated-inputs (propagated-inputs
(list glib)) (list glib))
(native-inputs (native-inputs
`(("glib:bin" ,glib "bin") ; for gdbus-codegen (list `(,glib "bin") ; for gdbus-codegen
("gtk-doc" ,gtk-doc/stable) gtk-doc/stable
("gobject-introspection" ,gobject-introspection) gobject-introspection
("docbook-xml" ,docbook-xml) docbook-xml
("docbook-xsl" ,docbook-xsl) docbook-xsl
("intltool" ,intltool) intltool
("libxslt" ,libxslt) libxslt
("libxml2" ,libxml2) libxml2
("pkg-config" ,pkg-config) pkg-config
("vala" ,vala) vala
;; For testing. ;; For testing.
("python" ,python-wrapper) python-wrapper
("python-dbus" ,python-dbus) python-dbus
("python-pygobject" ,python-pygobject))) python-pygobject))
(inputs (inputs
`(("curl" ,curl) (list curl
("cyrus-sasl" ,cyrus-sasl) cyrus-sasl
("dbus-glib" ,dbus-glib) dbus-glib
("dnsmasq" ,dnsmasq) dnsmasq
("eudev" ,eudev) eudev
("gnutls" ,gnutls) gnutls
("iptables" ,iptables) iptables
("isc-dhcp" ,isc-dhcp) isc-dhcp
("iwd" ,iwd) ; wpa_supplicant alternative iwd ; wpa_supplicant alternative
("jansson" ,jansson) jansson
("libaudit" ,audit) audit
("libgcrypt" ,libgcrypt) libgcrypt
("libgudev" ,libgudev) libgudev
("libndp" ,libndp) libndp
("libnl" ,libnl) libnl
("libselinux" ,libselinux) libselinux
("libsoup" ,libsoup) libsoup
("mobile-broadband-provider-info" ,mobile-broadband-provider-info) mobile-broadband-provider-info
("modem-manager" ,modem-manager) modem-manager
("newt" ,newt) ;for the 'nmtui' console interface newt ;for the 'nmtui' console interface
("openresolv" ,openresolv) ; alternative resolv.conf manager openresolv ; alternative resolv.conf manager
("polkit" ,polkit) polkit
("ppp" ,ppp) ppp
("readline" ,readline) readline
("util-linux" ,util-linux) util-linux
("elogind" ,elogind))) elogind))
(synopsis "Network connection manager") (synopsis "Network connection manager")
(home-page "https://wiki.gnome.org/Projects/NetworkManager") (home-page "https://wiki.gnome.org/Projects/NetworkManager")
(description (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 Date: Wed, 3 Jul 2019 13:31:54 +0200
Subject: [PATCH] respect NM_VPN_PLUGIN_DIR Subject: [PATCH] respect NM_VPN_PLUGIN_DIR
--- a/src/core/vpn/nm-vpn-manager.c 2021-10-29 13:20:01.062917840 -0400 Rebased by Maxim Cournoyer on 2022/08/23.
+++ b/src/core/vpn/nm-vpn-manager.c 2021-10-29 13:26:46.094397018 -0400
@@ -211,6 +211,7 @@ diff --git a/src/core/vpn/nm-vpn-manager.c b/src/core/vpn/nm-vpn-manager.c
GSList * infos, *info; index 6bf8edaee5..9bd960ba86 100644
const char * conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc(); --- a/src/core/vpn/nm-vpn-manager.c
const char * conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib(); +++ b/src/core/vpn/nm-vpn-manager.c
+ const char * conf_dir_user = _nm_vpn_plugin_info_get_default_dir_user (); @@ -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 */ /* Watch the VPN directory for changes */
file = g_file_new_for_path(conf_dir_lib); 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); g_signal_connect(priv->monitor_etc, "changed", G_CALLBACK(vpn_dir_changed), self);
} }
+ file = g_file_new_for_path (conf_dir_user); + file = g_file_new_for_path(conf_dir_user);
+ priv->monitor_etc = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL); + priv->monitor_etc = g_file_monitor_directory(file, G_FILE_MONITOR_NONE, NULL, NULL);
+ g_object_unref (file); + g_object_unref(file);
+ if (priv->monitor_etc) { + if (priv->monitor_etc) {
+ priv->monitor_id_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 /* 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 * plugin configuration. Hence we expect ~newer~ plugins to install their files
* in /usr/lib/NetworkManager. We want to prefer those 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); try_add_plugin(self, info->data);
g_slist_free_full(infos, g_object_unref); g_slist_free_full(infos, g_object_unref);
+ infos = _nm_vpn_plugin_info_list_load_dir(conf_dir_user, TRUE, 0, NULL, NULL); + infos = _nm_vpn_plugin_info_list_load_dir(conf_dir_user, TRUE, 0, NULL, NULL);
+ for (info = infos; info; info = info->next) + for (info = infos; info; info = info->next)
+ try_add_plugin (self, info->data); + try_add_plugin(self, info->data);
+ g_slist_free_full (infos, g_object_unref); + 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); priv->active_services = g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, NULL);
} }