[Buildroot] [RFC 10/11] postgresql: new init infrastructure
Alex Suykov
alex.suykov at gmail.com
Sat Mar 21 18:34:48 UTC 2015
One of the most complicated entries. Users, files, and pre-start
initialization that must be done with a specific user id.
---
package/postgresql/S50postgresql | 44 -----------------------------------
package/postgresql/postgresql.files | 1 +
package/postgresql/postgresql.mk | 17 --------------
package/postgresql/postgresql.run | 6 +++++
package/postgresql/postgresql.service | 24 -------------------
package/postgresql/postgresql.users | 1 +
6 files changed, 8 insertions(+), 85 deletions(-)
delete mode 100644 package/postgresql/S50postgresql
create mode 100644 package/postgresql/postgresql.files
create mode 100644 package/postgresql/postgresql.run
delete mode 100644 package/postgresql/postgresql.service
create mode 100644 package/postgresql/postgresql.users
diff --git a/package/postgresql/S50postgresql b/package/postgresql/S50postgresql
deleted file mode 100644
index 86a8d83..0000000
--- a/package/postgresql/S50postgresql
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-#
-# start postgresql
-#
-
-umask 077
-
-if [ ! -f /var/lib/pgsql/PG_VERSION ]; then
- echo "Initializing postgresql data base..."
- su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql'
- echo "done"
-fi
-
-start() {
- echo -n "Starting postgresql: "
- su - postgres -c '/usr/bin/pg_ctl start -D /var/lib/pgsql -l logfile'
- echo "OK"
-}
-stop() {
- echo -n "Stopping postgresql: "
- su - postgres -c '/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast'
- echo "OK"
-}
-restart() {
- stop
- start
-}
-
-case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart|reload)
- restart
- ;;
- *)
- echo "Usage: $0 {start|stop|restart}"
- exit 1
-esac
-
-exit $?
diff --git a/package/postgresql/postgresql.files b/package/postgresql/postgresql.files
new file mode 100644
index 0000000..81a3a25
--- /dev/null
+++ b/package/postgresql/postgresql.files
@@ -0,0 +1 @@
+/var/lib/pgsql d 0700 postgresql postgresql - - - - -
diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
index bc382ce..1fbe1cf 100644
--- a/package/postgresql/postgresql.mk
+++ b/package/postgresql/postgresql.mk
@@ -60,10 +60,6 @@ ifeq ($(BR2_PACKAGE_OPENSSL),y)
POSTGRESQL_CONF_OPTS += --with-openssl
endif
-define POSTGRESQL_USERS
- postgres -1 postgres -1 * /var/lib/pgsql /bin/sh - PostgreSQL Server
-endef
-
define POSTGRESQL_INSTALL_TARGET_FIXUP
$(INSTALL) -dm 0700 $(TARGET_DIR)/var/lib/pgsql
$(RM) -rf $(TARGET_DIR)/usr/lib/postgresql/pgxs
@@ -78,17 +74,4 @@ endef
POSTGRESQL_POST_INSTALL_STAGING_HOOKS += POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG
-define POSTGRESQL_INSTALL_INIT_SYSV
- $(INSTALL) -m 0755 -D package/postgresql/S50postgresql \
- $(TARGET_DIR)/etc/init.d/S50postgresql
-endef
-
-define POSTGRESQL_INSTALL_INIT_SYSTEMD
- $(INSTALL) -D -m 644 package/postgresql/postgresql.service \
- $(TARGET_DIR)/usr/lib/systemd/system/postgresql.service
- mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
- ln -fs ../../../../usr/lib/systemd/system/postgresql.service \
- $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/postgresql.service
-endef
-
$(eval $(autotools-package))
diff --git a/package/postgresql/postgresql.run b/package/postgresql/postgresql.run
new file mode 100644
index 0000000..c7fcf36
--- /dev/null
+++ b/package/postgresql/postgresql.run
@@ -0,0 +1,6 @@
+## PostgreSQL database server
+user postgres
+group postgres
+
+test -f /var/lib/pgsql/PG_VERSION || /usr/bin/initdb -D /var/lib/pgsql
+exec /usr/bin/postmaster -D /var/lib/pgsql
diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service
deleted file mode 100644
index 4a96258..0000000
--- a/package/postgresql/postgresql.service
+++ /dev/null
@@ -1,24 +0,0 @@
-[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
diff --git a/package/postgresql/postgresql.users b/package/postgresql/postgresql.users
new file mode 100644
index 0000000..9724144
--- /dev/null
+++ b/package/postgresql/postgresql.users
@@ -0,0 +1 @@
+postgres -1 postgres -1 * /var/lib/pgsql /bin/sh - PostgreSQL Server
--
2.0.3
More information about the buildroot
mailing list