packages (upstart_native): postgresql/postgresql.init, postgresql/postgresq...

jajcus jajcus at pld-linux.org
Fri May 7 15:02:50 CEST 2010


Author: jajcus                       Date: Fri May  7 13:02:50 2010 GMT
Module: packages                      Tag: upstart_native
---- Log message:
- proof of concept native upstart job implementation: postgresql as an example
  of multi-instace service.

---- Files affected:
packages/postgresql:
   postgresql.init (1.78 -> 1.78.4.1) , postgresql.spec (1.442 -> 1.442.2.1) , postgresql-instance.upstart (NONE -> 1.1)  (NEW), postgresql.upstart (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/postgresql/postgresql.init
diff -u packages/postgresql/postgresql.init:1.78 packages/postgresql/postgresql.init:1.78.4.1
--- packages/postgresql/postgresql.init:1.78	Thu Oct 23 22:52:44 2008
+++ packages/postgresql/postgresql.init	Fri May  7 15:02:42 2010
@@ -167,6 +167,9 @@
 	pgsubsys
 }
 
+
+upstart_controlled --except status init
+
 RETVAL=0
 # See how we were called.
 # Every action is performed for all given (all configured by default)

================================================================
Index: packages/postgresql/postgresql.spec
diff -u packages/postgresql/postgresql.spec:1.442 packages/postgresql/postgresql.spec:1.442.2.1
--- packages/postgresql/postgresql.spec:1.442	Mon Apr 12 14:32:23 2010
+++ packages/postgresql/postgresql.spec	Fri May  7 15:02:42 2010
@@ -26,7 +26,7 @@
 Summary(zh_CN.UTF-8):	PostgreSQL 客户端程序和库文件
 Name:		postgresql
 Version:	%{mver}.3
-Release:	4
+Release:	4.1
 License:	BSD
 Group:		Applications/Databases
 Source0:	ftp://ftp.postgresql.org/pub/source/v%{version}/%{name}-%{version}.tar.bz2
@@ -37,6 +37,8 @@
 Source3:	%{name}.sysconfig
 Source4:	edb-debugger-20100404.tgz
 # Source4-md5:	a10daee9a2017db40c7550c40cb47e8d
+Source5:	%{name}.upstart
+Source6:	%{name}-instance.upstart
 Patch0:		%{name}-conf.patch
 Patch1:		%{name}-absolute_dbpaths.patch
 Patch2:		%{name}-ecpg-includedir.patch
@@ -92,6 +94,23 @@
 
 %define	contrib_modules	auto_explain adminpack btree_gin btree_gist chkpass citext cube dblink dict_int dict_xsyn earthdistance fuzzystrmatch hstore intagg intarray isn lo ltree oid2name pageinspect pgbench pg_buffercache pgcrypto pg_freespacemap pgrowlocks pg_standby pg_stat_statements pgstattuple pg_trgm pldebugger seg sslinfo tablefunc uuid-ossp vacuumlo xml2
 
+## to be moved to rpm-build-macros
+## TODO: handle RPM_SKIP_AUTO_RESTART
+
+# migrate from init script to upstart job
+%define	upstart_post() \
+	if [ -f /var/lock/subsys/"%1" ] ; then \
+		/sbin/service --no-upstart "%1" stop \
+		/sbin/service "%1" start \
+	fi
+
+# restart the job after upgrade or migrate to init script on removal
+%define	upstart_postun() \
+	if [ -x /sbin/initctl ] && /sbin/initctl status "%1" 2>/dev/null | grep -q 'running' ; then \
+		/sbin/initctl stop "%1" 2>/dev/null \
+		[ -f "/etc/rc.d/init.d/%1" -o -f "/etc/init/%1.conf" ] && /sbin/service "%1" start \
+	fi
+
 %description
 PostgreSQL Data Base Management System (formerly known as Postgres,
 then as Postgres95).
@@ -314,6 +333,20 @@
 PostgreSQL працює на Solaris, SunOS, HPUX, AIX, Linux, Irix, FreeBSD
 та більшості інших різновидів Unix.
 
+%package upstart
+Summary:	Upstart job description for PostgreSQL server
+Summary(pl.UTF-8):	Opis zadania Upstart dla serwera PostgreSQL
+Group:		Daemons
+Requires:	%{name} = %{version}-%{release}
+Requires:	upstart
+Requires:	rc-scripts > 0.4.2.8
+
+%description upstart
+Upstart job description for PostgreSQL.
+
+%description upstart -l pl.UTF-8
+Opis zadania Upstart dla PostgreSQL.
+
 %package devel
 Summary:	PostgreSQL development header files and libraries
 Summary(de.UTF-8):	PostgreSQL-Entwicklungs-Header-Dateien und Libraries
@@ -823,7 +856,7 @@
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{rc.d/init.d,sysconfig}} \
+install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{rc.d/init.d,sysconfig,init/%{name}}} \
 	$RPM_BUILD_ROOT{/var/{lib/pgsql,log},%{_pgsqldir}} \
 	$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
 	$RPM_BUILD_ROOT%{_mandir} \
@@ -849,6 +882,9 @@
 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 -d howto
 tar zxf %{SOURCE2} -C howto
 
@@ -939,6 +975,12 @@
 	/sbin/chkconfig --del postgresql
 fi
 
+%post upstart
+%upstart_post postgresql
+
+%postun upstart
+%upstart_postun postgresql
+
 %post	libs -p /sbin/ldconfig
 %postun	libs -p /sbin/ldconfig
 
@@ -987,6 +1029,12 @@
 %{_mandir}/man1/postgres.1*
 %{_mandir}/man1/postmaster.1*
 
+%files upstart
+%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) /etc/init/postgresql.conf
+%dir /etc/init/postgresql
+%config(noreplace) %verify(not md5 mtime size) /etc/init/postgresql/instance.conf
+
 %files doc
 %defattr(644,root,root,755)
 %doc doc/unpacked/* howto
@@ -1227,6 +1275,10 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.442.2.1  2010/05/07 13:02:42  jajcus
+- proof of concept native upstart job implementation: postgresql as an example
+  of multi-instace service.
+
 Revision 1.442  2010/04/12 12:32:23  baggins
 - rel 4
 

================================================================
Index: packages/postgresql/postgresql-instance.upstart
diff -u /dev/null packages/postgresql/postgresql-instance.upstart:1.1
--- /dev/null	Fri May  7 15:02:50 2010
+++ packages/postgresql/postgresql-instance.upstart	Fri May  7 15:02:42 2010
@@ -0,0 +1,18 @@
+
+stop on pld.shutdown-started
+stop on stopping postgresql
+
+instance $DATADIR
+
+env DATADIR=/var/lib/pgsql
+
+script
+	exec >>/var/log/pgsql 2>&1
+	exec /sbin/setuidgid -s postgres \
+		/usr/bin/postgres -D $DATADIR
+end script
+
+
+
+
+

================================================================
Index: packages/postgresql/postgresql.upstart
diff -u /dev/null packages/postgresql/postgresql.upstart:1.1
--- /dev/null	Fri May  7 15:02:50 2010
+++ packages/postgresql/postgresql.upstart	Fri May  7 15:02:42 2010
@@ -0,0 +1,18 @@
+description "Starts PostgreSQL instances for all configured clusters"
+
+start on started SERVICE=syslog
+
+env PG_DB_CLUSTERS=
+
+pre-start script
+	exec >/tmp/pre-start 2>&1
+	set -x
+	if [ -z "$PG_DB_CLUSTERS" ] ; then
+		# read PG_DB_CLUSTERS from /etc/sysconfig/postgresql
+		# for init script compatibility
+		. /etc/sysconfig/postgresql
+	fi
+	for DATADIR in $PG_DB_CLUSTERS ; do
+		start postgresql/instance DATADIR=$DATADIR
+	done
+end script
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/postgresql/postgresql.init?r1=1.78&r2=1.78.4.1&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/postgresql/postgresql.spec?r1=1.442&r2=1.442.2.1&f=u



More information about the pld-cvs-commit mailing list