diff options
-rw-r--r-- | nonsystemd/networkmanager/10-openrc-status | 35 | ||||
-rw-r--r-- | nonsystemd/networkmanager/NetworkManager.confd | 4 | ||||
-rw-r--r-- | nonsystemd/networkmanager/NetworkManager.initd | 58 | ||||
-rw-r--r-- | nonsystemd/networkmanager/PKGBUILD | 142 |
4 files changed, 239 insertions, 0 deletions
diff --git a/nonsystemd/networkmanager/10-openrc-status b/nonsystemd/networkmanager/10-openrc-status new file mode 100644 index 000000000..ba4a50f17 --- /dev/null +++ b/nonsystemd/networkmanager/10-openrc-status @@ -0,0 +1,35 @@ +#!/bin/sh +# Copyright (c) 2012 Alexandre Rostovtsev +# Released under the 2-clause BSD license. + +# Ensures that the NetworkManager OpenRC service is marked as started and +# providing net only when it has a successful connection. + +if [ ! -e "/run/openrc/softlevel" ]; then + # OpenRC is not running + exit 0 +fi + +# Ensure rc-service is in PATH +PATH="${PATH}:/usr/bin:/usr/bin" + +# Exit if the NetworkManager OpenRC service is not running +rc-service NetworkManager status 2>&1 | grep -Eq "status: (starting|started|inactive|stopping)" || exit 0 + +# Call rc-service in background mode so that the start/stop functions update +# NetworkManager service status to started or inactive instead of actually +# starting or stopping the daemon +export IN_BACKGROUND=YES + +case "$2" in + up) nm-online -t 0 -x || + ! rc-service NetworkManager status 2>&1 | grep -q started && + exec rc-service NetworkManager start ;; + down) nm-online -t 0 -x || + rc-service NetworkManager status 2>&1 | grep -q stopped || + exec rc-service NetworkManager stop ;; + pre-sleep) rc-service NetworkManager status 2>&1 | grep -q stopped || + exec rc-service NetworkManager stop ;; +esac +exit 0 +# vim: set ts=4: diff --git a/nonsystemd/networkmanager/NetworkManager.confd b/nonsystemd/networkmanager/NetworkManager.confd new file mode 100644 index 000000000..4a9922965 --- /dev/null +++ b/nonsystemd/networkmanager/NetworkManager.confd @@ -0,0 +1,4 @@ +# If NetworkManager does not establish a connection within $INACTIVE_TIMEOUT +# seconds after starting, the service will be marked as inactive, and it will +# continue to wait for a connection in background mode. +INACTIVE_TIMEOUT=1 diff --git a/nonsystemd/networkmanager/NetworkManager.initd b/nonsystemd/networkmanager/NetworkManager.initd new file mode 100644 index 000000000..3209644c5 --- /dev/null +++ b/nonsystemd/networkmanager/NetworkManager.initd @@ -0,0 +1,58 @@ +#!/sbin/openrc-run +# Copyright (c) 2008 Saleem Abdulrasool <compnerd@compnerd.org> +# Copyright 2013-2017 Gentoo Foundation +# 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() { + # 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/nonsystemd/networkmanager/PKGBUILD b/nonsystemd/networkmanager/PKGBUILD new file mode 100644 index 000000000..8f3b7c943 --- /dev/null +++ b/nonsystemd/networkmanager/PKGBUILD @@ -0,0 +1,142 @@ +# Maintainer: David P. <megver83@parabola.nu> +# Maintainer (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +# Maintainer (Arch): Jan de Groot <jgc@archlinxu.org> +# Contributor (Arch): Wael Nasreddine <gandalf@siemens-mobiles.org> +# Contributor (Arch): Tor Krill <tor@krill.nu> +# Contributor (Arch): Will Rea <sillywilly@gmail.com> +# Contributor (Arch): Valentine Sinitsyn <e_val@inbox.ru> + +pkgbase=networkmanager +pkgname=(networkmanager libnm) +pkgver=1.20.6 +pkgrel=1 +pkgrel+=.nonsystemd1 +pkgdesc="Network connection manager and user applications" +url="https://wiki.gnome.org/Projects/NetworkManager" +arch=(x86_64 i686 armv7h) +license=(GPL2 LGPL2.1) +_pppver=2.4.7 +makedepends=(intltool dhclient iptables gobject-introspection gtk-doc "ppp=$_pppver" modemmanager + iproute2 nss polkit wpa_supplicant curl elogind libmm-glib + libnewt libndp libteam vala perl-yaml python-gobject git vala jansson bluez-libs + glib2-docs dhcpcd iwd dnsmasq openresolv libpsl audit meson) +checkdepends=(libx11 python-dbus) +_commit=7910cdfe5a9ffe02cd0780d56fcc66500e292d09 # tags/1.20.6^0 +source=("git+https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git#commit=$_commit" + NetworkManager.{confd,initd} 10-openrc-status) +sha256sums=('SKIP' + '4594573f01fe5e04b6dde4525796acf909158591bdcefd662ec23fe0d1c3e1bd' + '861445d46e8863dca26a91018da3dd9fee6a64467a93e7512774dfd88914539d' + '1535237db113a76261d6f1ce0b24a55e956934b0c1c59e9fd624f621961327b6') + +pkgver() { + cd NetworkManager + git describe | sed 's/-dev/dev/;s/-rc/rc/;s/-/+/g' +} + +prepare() { + cd NetworkManager +} + +build() { + local meson_args=( + -D dbus_conf_dir=/usr/share/dbus-1/system.d + -D dist_version="$pkgver-$pkgrel" + -D session_tracking_consolekit=false + -D suspend_resume=elogind + -D modify_system=true + -D polkit_agent=true + -D selinux=false + -D iwd=true + -D pppd_plugin_dir=/usr/lib/pppd/$_pppver + -D teamdctl=true + -D bluez5_dun=true + -D ebpf=true + -D config_plugins_default=keyfile + -D vapi=true + -D docs=true + -D more_asserts=no + -D more_logging=false + -D qt=false + -D systemdsystemunitdir=no + -D session_tracking=elogind + -D systemd_journal=false + ) + + arch-meson NetworkManager build "${meson_args[@]}" + ninja -C build +} + +check() { + # iproute2 bug + # https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/be76d8b624fab99cbd76092ff511e6adc305279c + meson test -C build --print-errorlogs || : +} + +_pick() { + local p="$1" f d; shift + for f; do + d="$srcdir/$p/${f#$pkgdir/}" + mkdir -p "$(dirname "$d")" + mv "$f" "$d" + rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" + done +} + +package_networkmanager() { + depends=(libnm iproute2 polkit wpa_supplicant libmm-glib libnewt libndp libteam curl + bluez-libs libpsl audit elogind) + optdepends=('dnsmasq: connection sharing' + 'bluez: Bluetooth support' + 'ppp: dialup connection support' + 'modemmanager: cellular network support' + 'iwd: wpa_supplicant alternative') + provides=($pkgname-{elogind,openrc}) + replaces=($pkgname-{elogind,openrc}) + backup=(etc/NetworkManager/NetworkManager.conf) + groups=(gnome) + + DESTDIR="$pkgdir" meson install -C build + + # /etc/NetworkManager + install -d "$pkgdir"/etc/NetworkManager/{conf,dnsmasq}.d + install -dm700 "$pkgdir/etc/NetworkManager/system-connections" + install -m644 /dev/stdin "$pkgdir/etc/NetworkManager/NetworkManager.conf" <<END +# Configuration file for NetworkManager. +# See "man 5 NetworkManager.conf" for details. +END + + # packaged configuration + install -Dm644 /dev/stdin "$pkgdir/usr/lib/NetworkManager/conf.d/20-connectivity.conf" <<END +[connectivity] +uri=http://www.archlinux.org/check_network_status.txt +END + +### Split libnm + _pick libnm "$pkgdir"/usr/include/libnm + _pick libnm "$pkgdir"/usr/lib/girepository-1.0/NM-* + _pick libnm "$pkgdir"/usr/lib/libnm.* + _pick libnm "$pkgdir"/usr/lib/pkgconfig/libnm.pc + _pick libnm "$pkgdir"/usr/share/gir-1.0/NM-* + _pick libnm "$pkgdir"/usr/share/gtk-doc/html/libnm + _pick libnm "$pkgdir"/usr/share/vala/vapi/libnm.* + + # Init script + install -Dm755 ${srcdir}/NetworkManager.confd ${pkgdir}/etc/conf.d/NetworkManager + install -Dm755 ${srcdir}/NetworkManager.initd ${pkgdir}/etc/init.d/NetworkManager + install -Dm755 "${srcdir}/10-openrc-status" "${pkgdir}/etc/NetworkManager/dispatcher.d/10-openrc-status" + + sed -e 's|#!/sbin/openrc-run|#!/usr/bin/openrc-run|g' \ + -e 's|/var/run|/run|g' \ + -e 's|/usr/sbin|/usr/bin|g' \ + -e 's|use consolekit|use consolekit elogind|' \ + -i ${pkgdir}/etc/init.d/NetworkManager +} + +package_libnm() { + pkgdesc="NetworkManager client library" + depends=(glib2 nss libutil-linux jansson libelogind) + mv libnm/* "$pkgdir" +} + +# vim:set sw=2 et: |