From: Chong Lu <Chong.Lu@windriver.com>
To: <openembedded-devel@lists.openembedded.org>
Subject: Re: [PATCH 1/2] postgresql: move initdb to postgresql-setup
Date: Tue, 16 Sep 2014 17:41:53 +0800 [thread overview]
Message-ID: <541805E1.8060902@windriver.com> (raw)
In-Reply-To: <1410860196-30191-1-git-send-email-Chong.Lu@windriver.com>
For meta-oe layer. Thanks
//Chong
On 09/16/2014 05:36 PM, Chong Lu wrote:
> We shouldn't use sysvinit init script to initialize database when use systemd
> as the init manager, so split initdb function to postgresql-setup.
> Before starting postgresql server, we can use "postgresql-setup initdb" to
> initialize the database cluster.
>
> Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
> ---
> .../postgresql/files/postgresql-setup | 73 ++++++++++++++++++++++
> .../postgresql/files/postgresql.init | 52 +--------------
> meta-oe/recipes-support/postgresql/postgresql.inc | 2 +
> 3 files changed, 77 insertions(+), 50 deletions(-)
> create mode 100644 meta-oe/recipes-support/postgresql/files/postgresql-setup
>
> diff --git a/meta-oe/recipes-support/postgresql/files/postgresql-setup b/meta-oe/recipes-support/postgresql/files/postgresql-setup
> new file mode 100644
> index 0000000..75bb01e
> --- /dev/null
> +++ b/meta-oe/recipes-support/postgresql/files/postgresql-setup
> @@ -0,0 +1,73 @@
> +#!/bin/sh
> +#
> +# postgresql-setup Initialization operation for PostgreSQL
> +
> +# For SELinux we need to use 'runuser' not 'su'
> +if [ -x /sbin/runuser ]
> +then
> + SU=runuser
> +else
> + SU=su
> +fi
> +
> +PGENGINE=/usr/bin
> +PGDATA=/var/lib/postgresql/data
> +PGLOG=/var/lib/postgresql/pgstartup.log
> +script_result=0
> +
> +initdb(){
> + if [ -f "$PGDATA/PG_VERSION" ]
> + then
> + echo -n "Data directory is not empty!"
> + echo -n " [FAILED] "
> + echo
> + script_result=1
> + else
> + echo -n "Initializing database: "
> + if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
> + then
> + mkdir -p "$PGDATA" || exit 1
> + chown postgres:postgres "$PGDATA"
> + chmod go-rwx "$PGDATA"
> + fi
> + # Clean up SELinux tagging for PGDATA
> + [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
> +
> + # Make sure the startup-time log file is OK, too
> + if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
> + then
> + touch "$PGLOG" || exit 1
> + chown postgres:postgres "$PGLOG"
> + chmod go-rwx "$PGLOG"
> + [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
> + fi
> +
> + # Initialize the database
> + $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
> +
> + # Create directory for postmaster log
> + mkdir "$PGDATA/pg_log"
> + chown postgres:postgres "$PGDATA/pg_log"
> + chmod go-rwx "$PGDATA/pg_log"
> +
> + if [ -f "$PGDATA/PG_VERSION" ]
> + then
> + echo -n " [ OK ] "
> + else
> + echo -n " [FAILED] "
> + script_result=1
> + fi
> + echo
> + fi
> +}
> +
> +case "$1" in
> + initdb)
> + initdb
> + ;;
> + *)
> + echo "Usage: $0 initdb"
> + exit 2
> +esac
> +
> +exit $script_result
> diff --git a/meta-oe/recipes-support/postgresql/files/postgresql.init b/meta-oe/recipes-support/postgresql/files/postgresql.init
> index ab46477..4a4f0cd 100644
> --- a/meta-oe/recipes-support/postgresql/files/postgresql.init
> +++ b/meta-oe/recipes-support/postgresql/files/postgresql.init
> @@ -101,7 +101,7 @@ start(){
> else
> # No existing PGDATA! Warn the user to initdb it.
> echo
> - echo "$PGDATA is missing. Use \"service postgresql initdb\" to initialize the cluster first."
> + echo "$PGDATA is missing. Use \"postgresql-setup initdb\" to initialize the cluster first."
> echo -n " [FAILED] "
> echo
> exit 1
> @@ -160,51 +160,6 @@ reload(){
> $SU -l postgres -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
> }
>
> -initdb(){
> - if [ -f "$PGDATA/PG_VERSION" ]
> - then
> - echo -n "Data directory is not empty!"
> - echo -n " [FAILED] "
> - echo
> - script_result=1
> - else
> - echo -n $"Initializing database: "
> - if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
> - then
> - mkdir -p "$PGDATA" || exit 1
> - chown postgres:postgres "$PGDATA"
> - chmod go-rwx "$PGDATA"
> - fi
> - # Clean up SELinux tagging for PGDATA
> - [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
> -
> - # Make sure the startup-time log file is OK, too
> - if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
> - then
> - touch "$PGLOG" || exit 1
> - chown postgres:postgres "$PGLOG"
> - chmod go-rwx "$PGLOG"
> - [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
> - fi
> -
> - # Initialize the database
> - $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
> -
> - # Create directory for postmaster log
> - mkdir "$PGDATA/pg_log"
> - chown postgres:postgres "$PGDATA/pg_log"
> - chmod go-rwx "$PGDATA/pg_log"
> -
> - if [ -f "$PGDATA/PG_VERSION" ]
> - then
> - echo -n " [ OK ] "
> - else
> - echo -n " [FAILED] "
> - script_result=1
> - fi
> - echo
> - fi
> -}
>
> # See how we were called.
> case "$1" in
> @@ -230,11 +185,8 @@ case "$1" in
> force-reload)
> restart
> ;;
> - initdb)
> - initdb
> - ;;
> *)
> - echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb}"
> + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
> exit 2
> esac
>
> diff --git a/meta-oe/recipes-support/postgresql/postgresql.inc b/meta-oe/recipes-support/postgresql/postgresql.inc
> index a9b4a01..774c8fd 100644
> --- a/meta-oe/recipes-support/postgresql/postgresql.inc
> +++ b/meta-oe/recipes-support/postgresql/postgresql.inc
> @@ -29,6 +29,7 @@ SRC_URI = "http://ftp.postgresql.org/pub/source/v${PV}/${BP}.tar.bz2 \
> file://postgresql-bashprofile \
> file://postgresql.pam \
> file://0001-Use-pkg-config-for-libxml2-detection.patch \
> + file://postgresql-setup \
> "
>
> LEAD_SONAME = "libpq.so"
> @@ -171,6 +172,7 @@ do_install_append() {
> install -d ${D}${sysconfdir}/init.d
> install -m 0755 ${WORKDIR}/${BPN}.init ${D}${sysconfdir}/init.d/${BPN}-server
> sed -i -e "s/^PGVERSION=.*$/PGVERSION=${PV}/g" ${D}${sysconfdir}/init.d/${BPN}-server
> + install -m 0755 ${WORKDIR}/${BPN}-setup ${D}${bindir}/${BPN}-setup
> install -d -m 700 ${D}${localstatedir}/lib/${BPN}/data
> install -d -m 700 ${D}${localstatedir}/lib/${BPN}/backups
> install -m 644 ${WORKDIR}/${BPN}-bashprofile ${D}${localstatedir}/lib/${BPN}/.bash_profile
prev parent reply other threads:[~2014-09-16 9:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-16 9:36 [PATCH 1/2] postgresql: move initdb to postgresql-setup Chong Lu
2014-09-16 9:36 ` [PATCH 2/2] postgresql: add systemd unit file Chong Lu
2014-09-16 9:42 ` Chong Lu
2014-09-16 9:41 ` Chong Lu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=541805E1.8060902@windriver.com \
--to=chong.lu@windriver.com \
--cc=openembedded-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.