]> git.pld-linux.org Git - packages/postgresql.git/commitdiff
systemd units added auto/th/postgresql-9.3.3-2
authorJacek Konieczny <jajcus@jajcus.net>
Sun, 9 Mar 2014 15:18:50 +0000 (16:18 +0100)
committerJacek Konieczny <jajcus@jajcus.net>
Sun, 9 Mar 2014 15:18:50 +0000 (16:18 +0100)
Attempt to keep 'service postgresql stop/start/reload/restart' work
as it used to, but to have each postgresql instance individually managed
by systemd.

Release: 2

postgresql.service [new file with mode: 0644]
postgresql.spec
postgresql.sysconfig
postgresql.target [new file with mode: 0644]
postgresql@.service [new file with mode: 0644]

diff --git a/postgresql.service b/postgresql.service
new file mode 100644 (file)
index 0000000..61bb968
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+Description=PostgreSQL server
+Wants=postgresql.target
+After=postgresql.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/bin/systemctl is-active postgresql.target
+ExecReload=/bin/true
+
+[Install]
+WantedBy=multi-user.target
index 8d1404955f5925b983f4eb5dae9ad447340fc76c..79ddbb065872ed8ec3dc6bad5dbe633943f0113e 100644 (file)
@@ -33,7 +33,7 @@ Summary(uk.UTF-8):    PostgreSQL - система керування базами 
 Summary(zh_CN.UTF-8):  PostgreSQL 客户端程序和库文件
 Name:          postgresql
 Version:       %{mver}.3
-Release:       1
+Release:       2
 License:       BSD
 Group:         Applications/Databases
 Source0:       ftp://ftp.postgresql.org/pub/source/v%{version}/%{name}-%{version}.tar.bz2
@@ -42,8 +42,11 @@ Source1:     %{name}.init
 Source2:       pgsql-Database-HOWTO-html.tar.gz
 # Source2-md5: 5b656ddf1db41965761f85204a14398e
 Source3:       %{name}.sysconfig
-Source5:       %{name}.upstart
-Source6:       %{name}-instance.upstart
+Source4:       %{name}@.service
+Source5:       %{name}.service
+Source6:       %{name}.target
+Source7:       %{name}.upstart
+Source8:       %{name}-instance.upstart
 Patch0:                %{name}-conf.patch
 Patch1:                %{name}-absolute_dbpaths.patch
 Patch2:                %{name}-ecpg-includedir.patch
@@ -78,7 +81,7 @@ BuildRequires:        python-devel >= 1:2.3
 BuildRequires: python-modules >= 1:2.3
 %endif
 BuildRequires: readline-devel >= 4.2
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: rpmbuild(macros) >= 1.671
 %{?with_tcl:BuildRequires:     tcl-devel >= 8.4.3}
 %{?with_tests:BuildRequires:   tzdata}
 BuildRequires: zlib-devel
@@ -92,6 +95,7 @@ Requires(triggerpostun):      /usr/sbin/usermod
 Requires:      %{name}-clients = %{version}-%{release}
 Requires:      %{name}-libs = %{version}-%{release}
 Requires:      rc-scripts >= 0.4.3.0
+Requires:      systemd-units >= 38
 Requires:      tzdata
 Obsoletes:     postgresql-module-plpgsql
 Obsoletes:     postgresql-module-tsearch2
@@ -831,6 +835,7 @@ install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{rc.d/init.d,sysconfig,init/%{nam
        $RPM_BUILD_ROOT{/var/{lib/pgsql,log},%{_pgsqldir}} \
        $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
        $RPM_BUILD_ROOT%{_mandir} \
+       $RPM_BUILD_ROOT{%{systemdunitdir},/etc/systemd/system/%{name}.target.requires} \
        $RPM_BUILD_ROOT/home/services/postgres
 
 install src/tutorial/*.sql $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
@@ -855,8 +860,12 @@ touch $RPM_BUILD_ROOT/var/log/pgsql
 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql
 install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/postgresql
 
-install %{SOURCE5} $RPM_BUILD_ROOT/etc/init/%{name}.conf
-install %{SOURCE6} $RPM_BUILD_ROOT/etc/init/%{name}/instance.conf
+install %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}@.service
+install %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.service
+install %{SOURCE6} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.target
+
+install %{SOURCE7} $RPM_BUILD_ROOT/etc/init/%{name}.conf
+install %{SOURCE8} $RPM_BUILD_ROOT/etc/init/%{name}/instance.conf
 
 install -d howto
 tar zxf %{SOURCE2} -C howto
@@ -948,12 +957,43 @@ fi
 %post
 /sbin/chkconfig --add postgresql
 %service postgresql restart "postgresql server"
+if [ "$1" -eq "1" ]; then
+       PG_DB_CLUSTERS=""
+       [ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql
+       export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
+       for pgdir in $PG_DB_CLUSTERS; do
+               instance="$(echo "$pgdir" | sed -e 's/^\///;s/-/\\x2d/g;s/@/\\x40/g;s/\//-/g')"
+               /bin/systemctl --quiet enable "postgresql@$instance.service" || :
+       done
+fi
+%systemd_post postgresql.service
 
 %preun
 if [ "$1" = "0" ]; then
        %service postgresql stop
        /sbin/chkconfig --del postgresql
+
+       PG_DB_CLUSTERS=""
+       [ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql
+       export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
+       for pgdir in $PG_DB_CLUSTERS; do
+               instance="$(echo "$pgdir" | sed -e 's/^\///;s/-/\\x2d/g;s/@/\\x40/g;s/\//-/g')"
+               /bin/systemctl --quiet disable "postgresql@$instance.service" || :
+       done
 fi
+%systemd_preun postgresql.service
+
+%postun
+%systemd_reload
+
+%triggerpostun -- %{name} < 9.3.3-2
+PG_DB_CLUSTERS=""
+[ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql
+for pgdir in $PG_DB_CLUSTERS; do
+       instance="$(echo "$pgdir" | sed -e 's/^\///;s/-/\\x2d/g;s/@/\\x40/g;s/\//-/g')"
+       /bin/systemctl --quiet enable "postgresql@$instance.service" || :
+done
+%systemd_trigger postgresql.service
 
 %post upstart
 %upstart_post postgresql
@@ -972,6 +1012,10 @@ fi
 %doc COPYRIGHT README HISTORY doc/{bug.template,KNOWN_BUGS,MISSING_FEATURES,TODO}
 %attr(754,root,root) /etc/rc.d/init.d/postgresql
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/postgresql
+%{systemdunitdir}/%{name}.service
+%{systemdunitdir}/%{name}@.service
+%{systemdunitdir}/%{name}.target
+%dir /etc/systemd/system/%{name}.target.requires
 
 %attr(755,root,root) %{_bindir}/initdb
 %attr(755,root,root) %{_bindir}/pg_basebackup
index 1e38c0337450997b04ff01ef2d0c05f7daf44c26..f3f4735ab87c5c9bf3127ad8c1bdf74368d4282f 100644 (file)
@@ -5,6 +5,10 @@
 # PostgreSQL. If you want to start more than one PostgreSQL instance,
 # you should change TCP/IP port, at least.
 #
+# Under systemd each cluster is started under a different postgresql@.service
+# instance, the default being postgresql@var-lib-pgsql.service
+#
+# To enable a new one use;  /bin/systemctl enable postgresql@${instance}.service
 
 # locale used at service postgresql init
 # PG_INIT_LOCALE=C
diff --git a/postgresql.target b/postgresql.target
new file mode 100644 (file)
index 0000000..e8c6d17
--- /dev/null
@@ -0,0 +1,2 @@
+[Unit]
+Description=PostgreSQL server instances
diff --git a/postgresql@.service b/postgresql@.service
new file mode 100644 (file)
index 0000000..4eb4761
--- /dev/null
@@ -0,0 +1,15 @@
+[Unit]
+Description=PostgreSQL database server at %f
+PartOf=postgresql.target postgresql.service
+ReloadPropagatedFrom=postgresql.service
+
+[Service]
+Type=forking
+User=postgres
+ExecStart=/usr/bin/pg_ctl -D %f start -w -s
+ExecStop=/usr/bin/pg_ctl -D %f stop -w -s -m fast
+ExecReload=/usr/bin/pg_ctl -D %f reload -w -s
+PIDFile=%f/postmaster.pid
+
+[Install]
+RequiredBy=postgresql.target
This page took 0.049257 seconds and 4 git commands to generate.