[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