[packages/libteam] rel 2; Systemd support, usable for system boot

mmazur mmazur at pld-linux.org
Mon Aug 8 18:06:19 CEST 2016


commit ea034156cbf566949e1034b66f5f06499acd1dea
Author: Mariusz Mazur <mmazur at axeos.com>
Date:   Mon Aug 8 18:02:59 2016 +0200

    rel 2; Systemd support, usable for system boot
    
    teamd is still buggy af, so don't be surprised if your system hangs on
    reboot because teamd doesn't want to die

 libteam.spec                 | 36 +++++++++++++++++++++++++++++++++---
 teamd-lvl1-service-generator | 21 +++++++++++++++++++++
 teamd-lvl1.target            |  6 ++++++
 teamd-lvl2-service-generator | 21 +++++++++++++++++++++
 teamd-lvl2.target            |  7 +++++++
 teamd.sysconfig              |  5 +++++
 teamd at .service               |  9 +++++++++
 7 files changed, 102 insertions(+), 3 deletions(-)
---
diff --git a/libteam.spec b/libteam.spec
index d125da3..fbc6311 100644
--- a/libteam.spec
+++ b/libteam.spec
@@ -2,12 +2,18 @@ Summary:	Library for controlling team network device
 Summary(pl.UTF-8):	Biblioteka do sterowania grupowymi urządzeniami sieciowymi
 Name:		libteam
 Version:	1.25
-Release:	1
+Release:	2
 License:	LGPL v2.1+
 Group:		Libraries
 #Source0Download: http://libteam.org/
 Source0:	http://libteam.org/files/%{name}-%{version}.tar.gz
 # Source0-md5:	9e51c42b08ff8e80561e0b1cd5af266f
+Source1:    teamd.sysconfig
+Source2:    teamd-lvl1-service-generator
+Source3:    teamd-lvl2-service-generator
+Source4:    teamd at .service
+Source5:    teamd-lvl1.target
+Source6:    teamd-lvl2.target
 Patch0:		%{name}-link.patch
 URL:		http://libteam.org/
 BuildRequires:	autoconf >= 2.50
@@ -96,22 +102,45 @@ Statyczna biblioteka libteam.
 
 %install
 rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/etc/dbus-1/system.d \
+           $RPM_BUILD_ROOT/etc/sysconfig \
+           $RPM_BUILD_ROOT/lib/systemd/{system-generators,system}
 
 %{__make} install \
 	DESTDIR=$RPM_BUILD_ROOT
 
+install teamd/dbus/teamd.conf $RPM_BUILD_ROOT/etc/dbus-1/system.d
+install %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/teamd
+install %{SOURCE2} $RPM_BUILD_ROOT/lib/systemd/system-generators
+install %{SOURCE3} $RPM_BUILD_ROOT/lib/systemd/system-generators
+install %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}
+install %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}
+install %{SOURCE6} $RPM_BUILD_ROOT%{systemdunitdir}
+
 # obsoleted by pkg-config
 %{__rm} $RPM_BUILD_ROOT%{_libdir}/lib*.la
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-%post	-p /sbin/ldconfig
-%postun	-p /sbin/ldconfig
+%post
+/sbin/ldconfig
+%systemd_post teamd-lvl1.target teamd-lvl2.target
+
+%preun
+%systemd_preun teamd-lvl1.target teamd-lvl2.target
+
+%postun
+/sbin/ldconfig
+%systemd_reload
 
 %files
 %defattr(644,root,root,755)
 %doc README teamd/example_configs
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/teamd
+/etc/dbus-1/system.d/teamd.conf
+%{systemdunitdir}/teamd at .service
+%{systemdunitdir}/teamd-lvl?.target
 %attr(755,root,root) %{_bindir}/bond2team
 %attr(755,root,root) %{_bindir}/teamd
 %attr(755,root,root) %{_bindir}/teamdctl
@@ -120,6 +149,7 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %ghost %{_libdir}/libteam.so.5
 %attr(755,root,root) %{_libdir}/libteamdctl.so.*.*.*
 %attr(755,root,root) %ghost %{_libdir}/libteamdctl.so.0
+%attr(755,root,root) /lib/systemd/system-generators/teamd-lvl?-service-generator
 %{_mandir}/man1/bond2team.1*
 %{_mandir}/man5/teamd.conf.5*
 %{_mandir}/man8/teamd.8*
diff --git a/teamd-lvl1-service-generator b/teamd-lvl1-service-generator
new file mode 100755
index 0000000..613a088
--- /dev/null
+++ b/teamd-lvl1-service-generator
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+destunitdir=${1:-/tmp}
+
+# Do nothing if target is disabled
+[ -e /etc/systemd/system/multi-user.target.wants/teamd-lvl1.target ] || exit 0
+
+[ -f /etc/sysconfig/teamd ] && . /etc/sysconfig/teamd
+
+if [ -d $destunitdir/teamd-lvl1.target.wants ]; then
+        rm -f $destunitdir/teamd-lvl1.target.wants/teamd@*.service
+else
+        mkdir -p $destunitdir/teamd-lvl1.target.wants
+fi
+
+for teamif in $LVL1TEAMIFS; do
+        [ -L $destunitdir/teamd-lvl1.target.wants/teamd@$teamif.service ] && \
+                continue
+        ln -s /lib/systemd/system/teamd at .service \
+                $destunitdir/teamd-lvl1.target.wants/teamd@$teamif.service
+done
diff --git a/teamd-lvl1.target b/teamd-lvl1.target
new file mode 100644
index 0000000..1623bca
--- /dev/null
+++ b/teamd-lvl1.target
@@ -0,0 +1,6 @@
+[Unit]
+Description=Create team interfaces (lvl 1)
+Before=network.service
+
+[Install]
+WantedBy=multi-user.target
diff --git a/teamd-lvl2-service-generator b/teamd-lvl2-service-generator
new file mode 100755
index 0000000..ce61ff0
--- /dev/null
+++ b/teamd-lvl2-service-generator
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+destunitdir=${1:-/tmp}
+
+# Do nothing if target is disabled
+[ -e /etc/systemd/system/multi-user.target.wants/teamd-lvl2.target ] || exit 0
+
+[ -f /etc/sysconfig/teamd ] && . /etc/sysconfig/teamd
+
+if [ -d $destunitdir/teamd-lvl2.target.wants ]; then
+        rm -f $destunitdir/teamd-lvl2.target.wants/teamd@*.service
+else
+        mkdir -p $destunitdir/teamd-lvl2.target.wants
+fi
+
+for teamif in $LVL2TEAMIFS; do
+        [ -L $destunitdir/teamd-lvl2.target.wants/teamd@$teamif.service ] && \
+                continue
+        ln -s /lib/systemd/system/teamd at .service \
+                $destunitdir/teamd-lvl2.target.wants/teamd@$teamif.service
+done
diff --git a/teamd-lvl2.target b/teamd-lvl2.target
new file mode 100644
index 0000000..63a5a28
--- /dev/null
+++ b/teamd-lvl2.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=Create team interfaces (lvl 2)
+Before=network.service
+After=teamd-lvl1.target
+
+[Install]
+WantedBy=multi-user.target
diff --git a/teamd.sysconfig b/teamd.sysconfig
new file mode 100644
index 0000000..29c391f
--- /dev/null
+++ b/teamd.sysconfig
@@ -0,0 +1,5 @@
+# Which team interfaces should be set up on system boot
+# as defined in /etc/sysconfig/interfaces/team-$IFNAME
+# LVL1 interfaces start before LVL2; it's for stacking
+#LVL1TEAMIFS="team0 team1"
+#LVL2TEAMIFS="team2"
diff --git a/teamd at .service b/teamd at .service
new file mode 100644
index 0000000..0907a28
--- /dev/null
+++ b/teamd at .service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Team Daemon for device %I
+Before=network.target
+
+[Service]
+BusName=org.libteam.teamd.%i
+ExecStart=/usr/bin/teamd -U -D -o -t %i -f /etc/sysconfig/interfaces/team-%i
+Restart=on-failure
+RestartPreventExitStatus=1
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/libteam.git/commitdiff/ea034156cbf566949e1034b66f5f06499acd1dea



More information about the pld-cvs-commit mailing list