diff mbox

[v2] postgresql: add systemd service file

Message ID 1400620611-7625-1-git-send-email-ps.report@gmx.net
State Accepted
Headers show

Commit Message

Peter Seiderer May 20, 2014, 9:16 p.m. UTC
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
Changes v1 -> v2:
  - add '-w' (wait) to pg_ctl start command (to ensure pid
    file generation)
---
 package/postgresql/postgresql.mk      |  8 ++++++++
 package/postgresql/postgresql.service | 24 ++++++++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 package/postgresql/postgresql.service

Comments

Thomas Petazzoni June 11, 2014, 8:33 p.m. UTC | #1
Eric,

As our systemd person, could you review this patch, and give your
comments and/or Acked-by/Reviewed-by as appropriate?

Thanks,

Thomas

On Tue, 20 May 2014 23:16:51 +0200, Peter Seiderer wrote:
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
> Changes v1 -> v2:
>   - add '-w' (wait) to pg_ctl start command (to ensure pid
>     file generation)
> ---
>  package/postgresql/postgresql.mk      |  8 ++++++++
>  package/postgresql/postgresql.service | 24 ++++++++++++++++++++++++
>  2 files changed, 32 insertions(+)
>  create mode 100644 package/postgresql/postgresql.service
> 
> diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
> index b331737..cf4700a 100644
> --- a/package/postgresql/postgresql.mk
> +++ b/package/postgresql/postgresql.mk
> @@ -58,4 +58,12 @@ define POSTGRESQL_INSTALL_INIT_SYSV
>  		$(TARGET_DIR)/etc/init.d/S50postgresql
>  endef
>  
> +define POSTGRESQL_INSTALL_INIT_SYSTEMD
> +        $(INSTALL) -D -m 644 package/postgresql/postgresql.service \
> +                $(TARGET_DIR)/etc/systemd/system/postgresql.service
> +        mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> +        ln -fs ../postgresql.service \
> +                $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/postgresql.service
> +endef
> +
>  $(eval $(autotools-package))
> diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service
> new file mode 100644
> index 0000000..4a96258
> --- /dev/null
> +++ b/package/postgresql/postgresql.service
> @@ -0,0 +1,24 @@
> +[Unit]
> +Description=PostgreSQL database server
> +After=network.target
> +
> +[Service]
> +Type=forking
> +
> +# start timeout disabled because initdb may run a little
> +# longer (eg. 5 minutes on RaspberryPi)
> +TimeoutStartSec=0
> +
> +User=postgres
> +Group=postgres
> +
> +SyslogIdentifier=postgres
> +PIDFile=/var/lib/pgsql/postmaster.pid
> +
> +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi"
> +ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql -w -l /var/lib/pgsql/logfile
> +ExecReload=/usr/bin/pg_ctl reload -D /var/lib/pgsql
> +ExecStop=/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast
> +
> +[Install]
> +WantedBy=multi-user.target
Thomas Petazzoni July 31, 2014, 10:13 p.m. UTC | #2
Eric,

Another ping about this patch :-)

Thanks,

Thomas

On Wed, 11 Jun 2014 22:33:42 +0200, Thomas Petazzoni wrote:
> Eric,
> 
> As our systemd person, could you review this patch, and give your
> comments and/or Acked-by/Reviewed-by as appropriate?
> 
> Thanks,
> 
> Thomas
> 
> On Tue, 20 May 2014 23:16:51 +0200, Peter Seiderer wrote:
> > Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> > ---
> > Changes v1 -> v2:
> >   - add '-w' (wait) to pg_ctl start command (to ensure pid
> >     file generation)
> > ---
> >  package/postgresql/postgresql.mk      |  8 ++++++++
> >  package/postgresql/postgresql.service | 24 ++++++++++++++++++++++++
> >  2 files changed, 32 insertions(+)
> >  create mode 100644 package/postgresql/postgresql.service
> > 
> > diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
> > index b331737..cf4700a 100644
> > --- a/package/postgresql/postgresql.mk
> > +++ b/package/postgresql/postgresql.mk
> > @@ -58,4 +58,12 @@ define POSTGRESQL_INSTALL_INIT_SYSV
> >  		$(TARGET_DIR)/etc/init.d/S50postgresql
> >  endef
> >  
> > +define POSTGRESQL_INSTALL_INIT_SYSTEMD
> > +        $(INSTALL) -D -m 644 package/postgresql/postgresql.service \
> > +                $(TARGET_DIR)/etc/systemd/system/postgresql.service
> > +        mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> > +        ln -fs ../postgresql.service \
> > +                $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/postgresql.service
> > +endef
> > +
> >  $(eval $(autotools-package))
> > diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service
> > new file mode 100644
> > index 0000000..4a96258
> > --- /dev/null
> > +++ b/package/postgresql/postgresql.service
> > @@ -0,0 +1,24 @@
> > +[Unit]
> > +Description=PostgreSQL database server
> > +After=network.target
> > +
> > +[Service]
> > +Type=forking
> > +
> > +# start timeout disabled because initdb may run a little
> > +# longer (eg. 5 minutes on RaspberryPi)
> > +TimeoutStartSec=0
> > +
> > +User=postgres
> > +Group=postgres
> > +
> > +SyslogIdentifier=postgres
> > +PIDFile=/var/lib/pgsql/postmaster.pid
> > +
> > +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi"
> > +ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql -w -l /var/lib/pgsql/logfile
> > +ExecReload=/usr/bin/pg_ctl reload -D /var/lib/pgsql
> > +ExecStop=/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast
> > +
> > +[Install]
> > +WantedBy=multi-user.target
> 
> 
>
Arnout Vandecappelle Oct. 12, 2014, 3:29 p.m. UTC | #3
On 20/05/14 23:16, Peter Seiderer wrote:
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>

Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

 Looks good. It has two things that aren't present in the sysvinit start script,
though:

- the -w option mentioned below;

- the Reload option (sysvinit just restarts).

 But both are a good idea.

 Regards,
 Arnout

> ---
> Changes v1 -> v2:
>   - add '-w' (wait) to pg_ctl start command (to ensure pid
>     file generation)
> ---
>  package/postgresql/postgresql.mk      |  8 ++++++++
>  package/postgresql/postgresql.service | 24 ++++++++++++++++++++++++
>  2 files changed, 32 insertions(+)
>  create mode 100644 package/postgresql/postgresql.service
> 
> diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
> index b331737..cf4700a 100644
> --- a/package/postgresql/postgresql.mk
> +++ b/package/postgresql/postgresql.mk
> @@ -58,4 +58,12 @@ define POSTGRESQL_INSTALL_INIT_SYSV
>  		$(TARGET_DIR)/etc/init.d/S50postgresql
>  endef
>  
> +define POSTGRESQL_INSTALL_INIT_SYSTEMD
> +        $(INSTALL) -D -m 644 package/postgresql/postgresql.service \
> +                $(TARGET_DIR)/etc/systemd/system/postgresql.service
> +        mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> +        ln -fs ../postgresql.service \
> +                $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/postgresql.service
> +endef
> +
>  $(eval $(autotools-package))
> diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service
> new file mode 100644
> index 0000000..4a96258
> --- /dev/null
> +++ b/package/postgresql/postgresql.service
> @@ -0,0 +1,24 @@
> +[Unit]
> +Description=PostgreSQL database server
> +After=network.target
> +
> +[Service]
> +Type=forking
> +
> +# start timeout disabled because initdb may run a little
> +# longer (eg. 5 minutes on RaspberryPi)
> +TimeoutStartSec=0
> +
> +User=postgres
> +Group=postgres
> +
> +SyslogIdentifier=postgres
> +PIDFile=/var/lib/pgsql/postmaster.pid
> +
> +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi"
> +ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql -w -l /var/lib/pgsql/logfile
> +ExecReload=/usr/bin/pg_ctl reload -D /var/lib/pgsql
> +ExecStop=/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast
> +
> +[Install]
> +WantedBy=multi-user.target
>
Thomas Petazzoni Jan. 10, 2015, 6:06 p.m. UTC | #4
Dear Peter Seiderer,

On Tue, 20 May 2014 23:16:51 +0200, Peter Seiderer wrote:

> +define POSTGRESQL_INSTALL_INIT_SYSTEMD
> +        $(INSTALL) -D -m 644 package/postgresql/postgresql.service \
> +                $(TARGET_DIR)/etc/systemd/system/postgresql.service
> +        mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> +        ln -fs ../postgresql.service \
> +                $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/postgresql.service
> +endef

Tabs should have been used instead of spaces for indentation. I've
fixed that up, and committed.

Thanks!

Thomas
diff mbox

Patch

diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
index b331737..cf4700a 100644
--- a/package/postgresql/postgresql.mk
+++ b/package/postgresql/postgresql.mk
@@ -58,4 +58,12 @@  define POSTGRESQL_INSTALL_INIT_SYSV
 		$(TARGET_DIR)/etc/init.d/S50postgresql
 endef
 
+define POSTGRESQL_INSTALL_INIT_SYSTEMD
+        $(INSTALL) -D -m 644 package/postgresql/postgresql.service \
+                $(TARGET_DIR)/etc/systemd/system/postgresql.service
+        mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+        ln -fs ../postgresql.service \
+                $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/postgresql.service
+endef
+
 $(eval $(autotools-package))
diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service
new file mode 100644
index 0000000..4a96258
--- /dev/null
+++ b/package/postgresql/postgresql.service
@@ -0,0 +1,24 @@ 
+[Unit]
+Description=PostgreSQL database server
+After=network.target
+
+[Service]
+Type=forking
+
+# start timeout disabled because initdb may run a little
+# longer (eg. 5 minutes on RaspberryPi)
+TimeoutStartSec=0
+
+User=postgres
+Group=postgres
+
+SyslogIdentifier=postgres
+PIDFile=/var/lib/pgsql/postmaster.pid
+
+ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi"
+ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql -w -l /var/lib/pgsql/logfile
+ExecReload=/usr/bin/pg_ctl reload -D /var/lib/pgsql
+ExecStop=/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast
+
+[Install]
+WantedBy=multi-user.target