From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 1FBB0138350 for ; Sun, 26 Apr 2020 08:09:38 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id DEB86E0966; Sun, 26 Apr 2020 08:09:36 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id B3C16E09C1 for ; Sun, 26 Apr 2020 08:09:36 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D21ED34F3A8 for ; Sun, 26 Apr 2020 08:09:34 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 78C371F1 for ; Sun, 26 Apr 2020 08:09:33 +0000 (UTC) From: "Mart Raudsepp" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mart Raudsepp" Message-ID: <1587888545.b509a4872188323ae2f0ee5f5bd5e580f48f3a53.leio@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: net-misc/networkmanager/, net-misc/networkmanager/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: net-misc/networkmanager/files/init.d.NetworkManager-r2 net-misc/networkmanager/networkmanager-1.18.6.ebuild net-misc/networkmanager/networkmanager-1.22.10-r10.ebuild net-misc/networkmanager/networkmanager-1.22.10-r11.ebuild X-VCS-Directories: net-misc/networkmanager/files/ net-misc/networkmanager/ X-VCS-Committer: leio X-VCS-Committer-Name: Mart Raudsepp X-VCS-Revision: b509a4872188323ae2f0ee5f5bd5e580f48f3a53 X-VCS-Branch: master Date: Sun, 26 Apr 2020 08:09:33 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 088d408e-9556-4617-bdf0-87bdfbf5940d X-Archives-Hash: 49998a99fc767596f6f8c21e8f90cffc commit: b509a4872188323ae2f0ee5f5bd5e580f48f3a53 Author: Mart Raudsepp gentoo org> AuthorDate: Sun Apr 26 07:51:21 2020 +0000 Commit: Mart Raudsepp gentoo org> CommitDate: Sun Apr 26 08:09:05 2020 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b509a487 net-misc/networkmanager: create /run/NetworkManager earlier NetworkManager itself creates /run/NetworkManager very early on in its main(), but the OpenRC init file also wants to put the start-stop-daemon pidfile in it. It seems to have been working well enough for most people regardless, but there is still a very real race condition and bug here, which appears to get triggered for more users with the p.masked networkmanager versions as well. Hopefully fix it by creating the directory in start_pre() like other packages making use of a subdirectory pidfile do, with the same permissions as NetworkManager itself will/would create it. Package-Manager: Portage-2.3.84, Repoman-2.3.20 Signed-off-by: Mart Raudsepp gentoo.org> .../networkmanager/files/init.d.NetworkManager-r2 | 62 ++++++++++++++++++++++ .../networkmanager/networkmanager-1.18.6.ebuild | 2 +- ...10.ebuild => networkmanager-1.22.10-r11.ebuild} | 2 +- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/net-misc/networkmanager/files/init.d.NetworkManager-r2 b/net-misc/networkmanager/files/init.d.NetworkManager-r2 new file mode 100644 index 00000000000..f7b95c047cd --- /dev/null +++ b/net-misc/networkmanager/files/init.d.NetworkManager-r2 @@ -0,0 +1,62 @@ +#!/sbin/openrc-run +# Copyright (c) 2008 Saleem Abdulrasool +# Copyright 2013-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +description="NetworkManager daemon. The service is marked as started only \ +when a network connection is established." + +depend() { + need dbus + use consolekit + provide net +} + +start_pre() { + checkpath -q -d -m 0755 /run/NetworkManager +} + +start() { + # If we are re-called by a dispatcher event, we want to mark the service + # as started without starting the daemon again + yesno "${IN_BACKGROUND}" && return 0 + + [ -z "${INACTIVE_TIMEOUT}" ] && INACTIVE_TIMEOUT="1" + + ebegin "Starting NetworkManager" + start-stop-daemon --start --quiet --pidfile /run/NetworkManager/NetworkManager.pid \ + --exec /usr/sbin/NetworkManager -- --pid-file /run/NetworkManager/NetworkManager.pid + local _retval=$? + eend "${_retval}" + if [ "x${_retval}" = 'x0' ] && ! nm-online -t "${INACTIVE_TIMEOUT}"; then + einfo "Marking NetworkManager as inactive. It will automatically be marked" + einfo "as started after a network connection has been established." + mark_service_inactive + fi + return "${_retval}" +} + +stop() { + # If we are re-called by a dispatcher event, we want to mark the service + # as inactive without stopping the daemon + if yesno "${IN_BACKGROUND}"; then + mark_service_inactive "${SVCNAME}" + return 0 + fi + + ebegin "Stopping NetworkManager" + local pidfile=/run/NetworkManager/NetworkManager.pid + if [ ! -e "${pidfile}" ] && [ -e /var/run/NetworkManager.pid ]; then + # Try stopping the pid file used by <0.9.7 + pidfile=/var/run/NetworkManager.pid + start-stop-daemon --stop --quiet --pidfile "${pidfile}" + ret=$? + [ ${ret} = 0 ] && [ -e "${pidfile}" ] && rm "${pidfile}" + eend ${ret} + else + start-stop-daemon --stop --quiet --pidfile "${pidfile}" + eend $? + fi +} + +# vim: set ft=gentoo-init-d ts=4 : diff --git a/net-misc/networkmanager/networkmanager-1.18.6.ebuild b/net-misc/networkmanager/networkmanager-1.18.6.ebuild index 9280f0f85f6..b410b2553ee 100644 --- a/net-misc/networkmanager/networkmanager-1.18.6.ebuild +++ b/net-misc/networkmanager/networkmanager-1.18.6.ebuild @@ -285,7 +285,7 @@ multilib_src_install_all() { einstalldocs ! use systemd && readme.gentoo_create_doc - newinitd "${FILESDIR}/init.d.NetworkManager-r1" NetworkManager + newinitd "${FILESDIR}/init.d.NetworkManager-r2" NetworkManager newconfd "${FILESDIR}/conf.d.NetworkManager" NetworkManager # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts diff --git a/net-misc/networkmanager/networkmanager-1.22.10-r10.ebuild b/net-misc/networkmanager/networkmanager-1.22.10-r11.ebuild similarity index 99% rename from net-misc/networkmanager/networkmanager-1.22.10-r10.ebuild rename to net-misc/networkmanager/networkmanager-1.22.10-r11.ebuild index a6ae13c86a5..b2cd3babde3 100644 --- a/net-misc/networkmanager/networkmanager-1.22.10-r10.ebuild +++ b/net-misc/networkmanager/networkmanager-1.22.10-r11.ebuild @@ -281,7 +281,7 @@ src_configure() { src_install() { meson_src_install - newinitd "${FILESDIR}/init.d.NetworkManager-r1" NetworkManager + newinitd "${FILESDIR}/init.d.NetworkManager-r2" NetworkManager newconfd "${FILESDIR}/conf.d.NetworkManager" NetworkManager # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts