]> git.pld-linux.org Git - packages/libteam.git/commitdiff
rel 2; Systemd support, usable for system boot
authorMariusz Mazur <mmazur@axeos.com>
Mon, 8 Aug 2016 16:02:59 +0000 (18:02 +0200)
committerMariusz Mazur <mmazur@axeos.com>
Mon, 8 Aug 2016 16:02:59 +0000 (18:02 +0200)
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
teamd-lvl1-service-generator [new file with mode: 0755]
teamd-lvl1.target [new file with mode: 0644]
teamd-lvl2-service-generator [new file with mode: 0755]
teamd-lvl2.target [new file with mode: 0644]
teamd.sysconfig [new file with mode: 0644]
teamd@.service [new file with mode: 0644]

index d125da39169dfc8bc66557150eb262225494e2f4..fbc6311a4c6890fe8884f80f405b5400a47b85cb 100644 (file)
@@ -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@.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@.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 (executable)
index 0000000..613a088
--- /dev/null
@@ -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@.service \
+                $destunitdir/teamd-lvl1.target.wants/teamd@$teamif.service
+done
diff --git a/teamd-lvl1.target b/teamd-lvl1.target
new file mode 100644 (file)
index 0000000..1623bca
--- /dev/null
@@ -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 (executable)
index 0000000..ce61ff0
--- /dev/null
@@ -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@.service \
+                $destunitdir/teamd-lvl2.target.wants/teamd@$teamif.service
+done
diff --git a/teamd-lvl2.target b/teamd-lvl2.target
new file mode 100644 (file)
index 0000000..63a5a28
--- /dev/null
@@ -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 (file)
index 0000000..29c391f
--- /dev/null
@@ -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@.service b/teamd@.service
new file mode 100644 (file)
index 0000000..0907a28
--- /dev/null
@@ -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
This page took 0.089695 seconds and 4 git commands to generate.