[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