Gentoo Archives: gentoo-commits

From: Mart Raudsepp <leio@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: net-misc/networkmanager/, net-misc/networkmanager/files/
Date: Sun, 26 Apr 2020 08:09:38
Message-Id: 1587888545.b509a4872188323ae2f0ee5f5bd5e580f48f3a53.leio@gentoo
1 commit: b509a4872188323ae2f0ee5f5bd5e580f48f3a53
2 Author: Mart Raudsepp <leio <AT> gentoo <DOT> org>
3 AuthorDate: Sun Apr 26 07:51:21 2020 +0000
4 Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org>
5 CommitDate: Sun Apr 26 08:09:05 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b509a487
7
8 net-misc/networkmanager: create /run/NetworkManager earlier
9
10 NetworkManager itself creates /run/NetworkManager very early on in
11 its main(), but the OpenRC init file also wants to put the
12 start-stop-daemon pidfile in it.
13 It seems to have been working well enough for most people
14 regardless, but there is still a very real race condition and
15 bug here, which appears to get triggered for more users with
16 the p.masked networkmanager versions as well.
17 Hopefully fix it by creating the directory in start_pre() like other
18 packages making use of a subdirectory pidfile do, with the same
19 permissions as NetworkManager itself will/would create it.
20
21 Package-Manager: Portage-2.3.84, Repoman-2.3.20
22 Signed-off-by: Mart Raudsepp <leio <AT> gentoo.org>
23
24 .../networkmanager/files/init.d.NetworkManager-r2 | 62 ++++++++++++++++++++++
25 .../networkmanager/networkmanager-1.18.6.ebuild | 2 +-
26 ...10.ebuild => networkmanager-1.22.10-r11.ebuild} | 2 +-
27 3 files changed, 64 insertions(+), 2 deletions(-)
28
29 diff --git a/net-misc/networkmanager/files/init.d.NetworkManager-r2 b/net-misc/networkmanager/files/init.d.NetworkManager-r2
30 new file mode 100644
31 index 00000000000..f7b95c047cd
32 --- /dev/null
33 +++ b/net-misc/networkmanager/files/init.d.NetworkManager-r2
34 @@ -0,0 +1,62 @@
35 +#!/sbin/openrc-run
36 +# Copyright (c) 2008 Saleem Abdulrasool <compnerd@××××××××.org>
37 +# Copyright 2013-2020 Gentoo Authors
38 +# Distributed under the terms of the GNU General Public License v2
39 +
40 +description="NetworkManager daemon. The service is marked as started only \
41 +when a network connection is established."
42 +
43 +depend() {
44 + need dbus
45 + use consolekit
46 + provide net
47 +}
48 +
49 +start_pre() {
50 + checkpath -q -d -m 0755 /run/NetworkManager
51 +}
52 +
53 +start() {
54 + # If we are re-called by a dispatcher event, we want to mark the service
55 + # as started without starting the daemon again
56 + yesno "${IN_BACKGROUND}" && return 0
57 +
58 + [ -z "${INACTIVE_TIMEOUT}" ] && INACTIVE_TIMEOUT="1"
59 +
60 + ebegin "Starting NetworkManager"
61 + start-stop-daemon --start --quiet --pidfile /run/NetworkManager/NetworkManager.pid \
62 + --exec /usr/sbin/NetworkManager -- --pid-file /run/NetworkManager/NetworkManager.pid
63 + local _retval=$?
64 + eend "${_retval}"
65 + if [ "x${_retval}" = 'x0' ] && ! nm-online -t "${INACTIVE_TIMEOUT}"; then
66 + einfo "Marking NetworkManager as inactive. It will automatically be marked"
67 + einfo "as started after a network connection has been established."
68 + mark_service_inactive
69 + fi
70 + return "${_retval}"
71 +}
72 +
73 +stop() {
74 + # If we are re-called by a dispatcher event, we want to mark the service
75 + # as inactive without stopping the daemon
76 + if yesno "${IN_BACKGROUND}"; then
77 + mark_service_inactive "${SVCNAME}"
78 + return 0
79 + fi
80 +
81 + ebegin "Stopping NetworkManager"
82 + local pidfile=/run/NetworkManager/NetworkManager.pid
83 + if [ ! -e "${pidfile}" ] && [ -e /var/run/NetworkManager.pid ]; then
84 + # Try stopping the pid file used by <0.9.7
85 + pidfile=/var/run/NetworkManager.pid
86 + start-stop-daemon --stop --quiet --pidfile "${pidfile}"
87 + ret=$?
88 + [ ${ret} = 0 ] && [ -e "${pidfile}" ] && rm "${pidfile}"
89 + eend ${ret}
90 + else
91 + start-stop-daemon --stop --quiet --pidfile "${pidfile}"
92 + eend $?
93 + fi
94 +}
95 +
96 +# vim: set ft=gentoo-init-d ts=4 :
97
98 diff --git a/net-misc/networkmanager/networkmanager-1.18.6.ebuild b/net-misc/networkmanager/networkmanager-1.18.6.ebuild
99 index 9280f0f85f6..b410b2553ee 100644
100 --- a/net-misc/networkmanager/networkmanager-1.18.6.ebuild
101 +++ b/net-misc/networkmanager/networkmanager-1.18.6.ebuild
102 @@ -285,7 +285,7 @@ multilib_src_install_all() {
103 einstalldocs
104 ! use systemd && readme.gentoo_create_doc
105
106 - newinitd "${FILESDIR}/init.d.NetworkManager-r1" NetworkManager
107 + newinitd "${FILESDIR}/init.d.NetworkManager-r2" NetworkManager
108 newconfd "${FILESDIR}/conf.d.NetworkManager" NetworkManager
109
110 # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts
111
112 diff --git a/net-misc/networkmanager/networkmanager-1.22.10-r10.ebuild b/net-misc/networkmanager/networkmanager-1.22.10-r11.ebuild
113 similarity index 99%
114 rename from net-misc/networkmanager/networkmanager-1.22.10-r10.ebuild
115 rename to net-misc/networkmanager/networkmanager-1.22.10-r11.ebuild
116 index a6ae13c86a5..b2cd3babde3 100644
117 --- a/net-misc/networkmanager/networkmanager-1.22.10-r10.ebuild
118 +++ b/net-misc/networkmanager/networkmanager-1.22.10-r11.ebuild
119 @@ -281,7 +281,7 @@ src_configure() {
120 src_install() {
121 meson_src_install
122
123 - newinitd "${FILESDIR}/init.d.NetworkManager-r1" NetworkManager
124 + newinitd "${FILESDIR}/init.d.NetworkManager-r2" NetworkManager
125 newconfd "${FILESDIR}/conf.d.NetworkManager" NetworkManager
126
127 # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts