[firebird/f16] Add support for systemd (rh #737281)
Philippe Makowski
makowski at fedoraproject.org
Thu Sep 22 15:56:49 UTC 2011
commit 9b4cf6cbd17b95811b93b5ca9f319bf05613be5b
Author: Philippe Makowski <makowski.firebird-fr.eu.org>
Date: Thu Sep 22 17:56:22 2011 +0200
Add support for systemd (rh #737281)
README.Fedora | 17 +++++--
firebird-classic.socket | 10 ++++
firebird-classic at .service | 10 ++++
firebird-superclassic.service | 15 ++++++
firebird-superserver.service | 15 ++++++
firebird.spec | 108 +++++++++++++++++++++++++++++------------
6 files changed, 139 insertions(+), 36 deletions(-)
---
diff --git a/README.Fedora b/README.Fedora
index efabbc2..c051fd3 100644
--- a/README.Fedora
+++ b/README.Fedora
@@ -10,11 +10,18 @@ Differences between upstream and the Fedora package
* According to Fedora packaging rules, firebird service is not started
automatically. You need to start it, as root :
for SuperServer :
- service firebird start
+ systemctl start firebird-superserver.service
+ for SuperClassic :
+ systemctl start firebird-superclassic.service
for Classic :
- chkconfig firebird on
- If you wanted to have firebird Superserver started at each boot, as root :
- chkconfig --level 345 firebird on
+ systemctl start firebird-classic.socket
+ If you want to have firebird started at each boot, as root :
+ for SuperServer :
+ systemctl enable firebird-superserver.service
+ for SuperClassic :
+ systemctl enable firebird-superclassic.service
+ for Classic :
+ systemctl enable firebird-classic.socket
* Fedora packages do not use, nor contain the pre-supplied sources for
libicu. Fedora packages are used instead.
@@ -24,7 +31,7 @@ Differences between upstream and the Fedora package
binary-comparable sequences (collations). These collations may be different
in different ICU versions.
- In Firebird 2.1 upstream always uses the bundled ICU library. Firebird packages
+ In Firebird 2.5 upstream always uses the bundled ICU library. Firebird packages
use the Firebird-packaged libicu*. Unfortunately, this may lead to
incompatibilities in the binary index representation (on disk) between
databases created by Fedora-packaged Firebird, and upstream.
diff --git a/firebird-classic.socket b/firebird-classic.socket
new file mode 100644
index 0000000..66d2c71
--- /dev/null
+++ b/firebird-classic.socket
@@ -0,0 +1,10 @@
+[Unit]
+Description=Firebird Classic Activation Socket
+
+[Socket]
+ListenStream=3050
+Accept=true
+
+[Install]
+WantedBy=sockets.target
+
diff --git a/firebird-classic at .service b/firebird-classic at .service
new file mode 100644
index 0000000..cd9543d
--- /dev/null
+++ b/firebird-classic at .service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Firebird Classic server
+After=local-fs.target
+
+[Service]
+User=firebird
+Group=firebird
+ExecStart=/usr/sbin/fb_inet_server
+StandardInput=socket
+StandardError=syslog
diff --git a/firebird-superclassic.service b/firebird-superclassic.service
new file mode 100644
index 0000000..abb49e4
--- /dev/null
+++ b/firebird-superclassic.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Firebird Database Server ( SuperClassic )
+After=syslog.target network.target
+
+[Service]
+User=firebird
+Group=firebird
+Type=forking
+PIDFile=/run/firebird/default.pid
+ExecStart=/usr/sbin/fbguard -pidfile /run/firebird/default.pid -daemon -forever
+StandardError=syslog
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/firebird-superserver.service b/firebird-superserver.service
new file mode 100644
index 0000000..3edc565
--- /dev/null
+++ b/firebird-superserver.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Firebird Database Server ( SuperServer )
+After=syslog.target network.target
+
+[Service]
+User=firebird
+Group=firebird
+Type=forking
+PIDFile=/run/firebird/default.pid
+ExecStart=/usr/sbin/fbguard -pidfile /run/firebird/default.pid -daemon -forever
+StandardError=syslog
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/firebird.spec b/firebird.spec
index 8ce6693..10d9746 100644
--- a/firebird.spec
+++ b/firebird.spec
@@ -6,7 +6,7 @@
Summary: SQL relational database management system
Name: firebird
Version: 2.5.0.26074.0
-Release: 8%{?dist}
+Release: 10%{?dist}
Group: Applications/Databases
License: Interbase
@@ -17,6 +17,10 @@ Source0: http://downloads.sourceforge.net/firebird/%{pkgname}.tar.bz2
Source1: firebird-logrotate
Source2: README.Fedora
Source3: firebird.conf
+Source4: firebird-classic at .service
+Source5: firebird-classic.socket
+Source6: firebird-superclassic.service
+Source7: firebird-superserver.service
# sync the utilities list with other arches (will be sent upstream)
Patch0: firebird-2.5.0.26074-s390x.patch
@@ -39,6 +43,7 @@ BuildRequires: libstdc++-static
%ifnarch %{ix86} x86_64
BuildRequires: libatomic_ops-devel
%endif
+BuildRequires: systemd-units
Requires: %{name}-arch = %{version}-%{release}
Requires: grep
@@ -91,17 +96,19 @@ Requires: %{name}-libfbembed = %{version}-%{release}
Development libraries for firebird.
%package classic
-Summary: Classic (xinetd) server for Firebird SQL RDBMS
+Summary: Classic server for Firebird SQL RDBMS
Group: Applications/Databases
Provides: %{name}-arch = %{version}-%{release}
-Requires: xinetd
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
Requires: %{name} = %{version}-%{release}
Conflicts: %{name}-superclassic
Requires: %{name}-libfbembed = %{version}-%{release}
Requires: %{name}-classic-common = %{version}-%{release}
%description classic
-This is the Classic (xinetd) server Firebird SQL RDBMS.
+This is the Classic server Firebird SQL RDBMS.
It can also be used as an embedded server, when paired with the
client-embedded package.
@@ -112,6 +119,9 @@ Provides: %{name}-arch = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Conflicts: %{name}-classic
Requires: %{name}-classic-common = %{version}-%{release}
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
%description superclassic
The "superclassic" architecture uses a new thread to handle each connection.
@@ -123,6 +133,9 @@ Group: Applications/Databases
Provides: %{name}-arch = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Conflicts: %{name}-classic-common
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
%description superserver
This is the Superserver (single process) Firebird SQL RDBMS.
@@ -290,9 +303,11 @@ cd %{buildroot}
echo 1 > %{buildroot}%{_localstatedir}/log/%{name}/%{name}.log
sed "s@%{name}.log@%{_localstatedir}/log/%{name}/%{name}.log at g" %{SOURCE1} > %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
-sed "s@= root@= %{name}@" %{_builddir}/%{pkgname}/gen/buildroot-classic%{fbroot}/misc/%{name}.xinetd > %{buildroot}%{_sysconfdir}/xinetd.d/%{name}
-sed "s at chkconfig: 345 80 20 at chkconfig: - 80 20@" %{_builddir}/%{pkgname}/gen/buildroot%{fbroot}/misc/%{name}.init.d.mandrake > %{buildroot}%{_initrddir}/%{name}-superserver
-sed "s at chkconfig: 345 80 20 at chkconfig: - 80 20@" %{_builddir}/%{pkgname}/gen/buildroot-classic%{fbroot}/misc/%{name}.init.d.mandrake > %{buildroot}%{_initrddir}/%{name}-superclassic
+install -p -m 644 -D %{SOURCE4} $RPM_BUILD_ROOT%{_unitdir}/%{name}-classic\@.service
+install -p -m 644 -D %{SOURCE5} $RPM_BUILD_ROOT%{_unitdir}/%{name}-classic.socket
+
+install -p -m 644 -D %{SOURCE6} $RPM_BUILD_ROOT%{_unitdir}/%{name}-superclassic.service
+install -p -m 644 -D %{SOURCE7} $RPM_BUILD_ROOT%{_unitdir}/%{name}-superserver.service
sed "s@%%{fbroot}@%{fbroot}@g" %{SOURCE2} > %{_builddir}/%{pkgname}/doc/README.Fedora
@@ -310,7 +325,7 @@ ln -s %{fbroot}/bin/isql .%{_bindir}/isql-fb
ln -s %{fbroot}/bin/nbackup .%{_bindir}/nbackup
ln -s %{fbroot}/bin/qli .%{_bindir}/qli
ln -s %{fbroot}/bin/fb_config .%{_bindir}/fb_config
-
+
%clean
rm -Rf %{buildroot}
@@ -329,15 +344,28 @@ if [ "$(readlink %{fbroot}/bin 2> /dev/null)" \!= "%{fbroot}/bin-classic" ]; the
fi
%post classic
-if /sbin/service xinetd status >& /dev/null; then
- /sbin/service xinetd reload &>/dev/null || :
+%if 0%{?fedora}>=16
+ [ -e %{_sysconfdir}/xinetd.d/%{name} ] && rm -f %{_sysconfdir}/xinetd.d/%{name}
+%endif
+if [ $1 -eq 1 ] ; then
+ # Initial installation
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
fi
+exit 0
%preun classic
if [ $1 -eq 0 ]; then
- if /sbin/service xinetd status >& /dev/null; then
- /sbin/service xinetd reload &>/dev/null || :
- fi
+ # Package removal, not upgrade
+ /bin/systemctl --no-reload disable firebird-classic.socket > /dev/null 2>&1 || :
+ /bin/systemctl stop firebird-classic.socket > /dev/null 2>&1 || :
+fi
+exit 0
+
+%postun classic
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+ # Package upgrade, not uninstall
+ /bin/systemctl try-restart firebird-classic.socket >/dev/null 2>&1 || :
fi
%preun classic-common
@@ -349,36 +377,51 @@ fi
%preun superclassic
if [ $1 -eq 0 ]; then
- if /sbin/service firebird-superclassic status >& /dev/null; then
- /sbin/service firebird-superclassic stop
- fi
- chkconfig --del firebird-superclassic
+ # Package removal, not upgrade
+ /bin/systemctl --no-reload disable firebird-superclassic.service > /dev/null 2>&1 || :
+ /bin/systemctl stop firebird-superclassic.service > /dev/null 2>&1 || :
fi
%post superclassic
-if [ $1 -eq 1 ]; then
- chkconfig firebird-superclassic off
+[ -e %{_initrddir}/%{name}-superclassic ] && /sbin/chkconfig --del firebird-superclassic >/dev/null 2>&1 || :
+if [ $1 -eq 1 ] ; then
+ # Initial installation
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
+
+%postun superclassic
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+ # Package upgrade, not uninstall
+ /bin/systemctl try-restart firebird-superclassic.service >/dev/null 2>&1 || :
fi
%post superserver
+[ -e %{_initrddir}/%{name}-superserver ] && /sbin/chkconfig --del firebird-superserver >/dev/null 2>&1 || :
if [ "$(readlink %{fbroot}/bin 2> /dev/null)" \!= "%{fbroot}/bin-superserver" ]; then
[ -e %{fbroot}/bin ] && rm -f %{fbroot}/bin
ln -s %{fbroot}/bin{-superserver,}
fi
-if [ $1 -eq 1 ]; then
- chkconfig firebird-superserver off
+if [ $1 -eq 1 ] ; then
+ # Initial installation
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
fi
+%postun superserver
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+ # Package upgrade, not uninstall
+ /bin/systemctl try-restart firebird-superserver.service >/dev/null 2>&1 || :
+fi
%preun superserver
if [ $1 -eq 0 ]; then
- if /sbin/service firebird-superserver status >& /dev/null; then
- /sbin/service firebird-superserver stop
- fi
- chkconfig --del firebird-superserver
- if [ "$(readlink %{fbroot}/bin 2> /dev/null)" = "%{fbroot}/bin-superserver" ]; then
- rm -f %{fbroot}/bin
- fi
+ # Package removal, not upgrade
+ /bin/systemctl --no-reload disable firebird-superserver.service > /dev/null 2>&1 || :
+ /bin/systemctl stop firebird-superserver.service > /dev/null 2>&1 || :
+ if [ "$(readlink %{fbroot}/bin 2> /dev/null)" = "%{fbroot}/bin-superserver" ]; then
+ rm -f %{fbroot}/bin
+ fi
fi
@@ -480,14 +523,14 @@ fi
%defattr(0644,root,root,0755)
%doc doc/license/IDPL.txt
%doc doc/license/README.license.usage.txt
-%config(noreplace) %{_sysconfdir}/xinetd.d/%{name}
+%{_unitdir}/%{name}-classic*
%files superclassic
%defattr(0644,root,root,0755)
%doc doc/license/IDPL.txt
%doc doc/license/README.license.usage.txt
%defattr(0755,root,root,0755)
-%{_initrddir}/%{name}-superclassic
+%{_unitdir}/%{name}-superclassic.service
%{_sbindir}/fb_smp_server
%files classic-common
@@ -507,13 +550,16 @@ fi
%dir %{fbroot}/bin-superserver
%dir %{fbroot}/plugins-superserver
%defattr(0755,root,root,0755)
-%{_initrddir}/%{name}-superserver
+%{_unitdir}/%{name}-superserver.service
%{fbroot}/bin-superserver/*
%{fbroot}/plugins-superserver/*.so
%{_sbindir}/fbserver
%changelog
+* Thu Sep 22 2011 Philippe Makowski <makowski at fedoraproject.org> 2.5.0.26074.0-10
+- Add support for systemd (rh #737281)
+
* Fri Apr 22 2011 Philippe Makowski <makowski at fedoraproject.org> 2.5.0.26074.0-8
- added patch from upstream to fix rh #697313
More information about the scm-commits
mailing list