diff mbox

postgresql: new package

Message ID 1396249169-14126-1-git-send-email-ps.report@gmx.net
State Superseded
Headers show

Commit Message

Peter Seiderer March 31, 2014, 6:59 a.m. UTC
Based on suggested new package by Marco Trapanese ([1]).

[1] http://lists.busybox.net/pipermail/buildroot/2014-February/090661.html

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
Changes v2 -> v3:
  - change data dir from /srv/pqsql/data to /var/lib/pgsql
    (as suggested by Thomas Petazzoni)
  - fix POSTGRESQL_SITE url (removed cut and paste error)
    (as suggested by Thomas Petazzoni)
  - remove superfluous POSTGRESQL_CONF_OPT prefix option
    (as suggested by Thomas Petazzoni)
  - fix POSTGRESQL_USERS (remove superfluous own group)
    (as suggested by Yann E. MORIN)
  - fix data dir install command (remove superfluous -v option)
    (as suggested by Yann E. MORIN)
  - make readline an zlib optional (add hint in the help text
    instead)
    (as suggested by Thomas Petazzoni)

Changes v1 -> v2:
  - add postgresql user
  - add postgresql data directory
  - add sysv initialize and startup script
---
 package/Config.in                |  1 +
 package/postgresql/Config.in     | 20 +++++++++++++++
 package/postgresql/S50postgresql | 44 ++++++++++++++++++++++++++++++++
 package/postgresql/postgresql.mk | 54 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 119 insertions(+)
 create mode 100644 package/postgresql/Config.in
 create mode 100644 package/postgresql/S50postgresql
 create mode 100644 package/postgresql/postgresql.mk

Comments

Thomas Petazzoni April 3, 2014, 8:39 p.m. UTC | #1
Dear Peter Seiderer,

On Mon, 31 Mar 2014 08:59:29 +0200, Peter Seiderer wrote:

> diff --git a/package/postgresql/Config.in b/package/postgresql/Config.in
> new file mode 100644
> index 0000000..bc0305b
> --- /dev/null
> +++ b/package/postgresql/Config.in
> @@ -0,0 +1,20 @@
> +config BR2_PACKAGE_POSTGRESQL
> +	bool "PostgreSQL"

lower case, please.

> +	depends on BR2_INET_IPV6

Since it currently doesn't build with uClibc, can you make this package
depends on !BR2_TOOLCHAIN_USES_UCLIBC ?


> +if [ ! -f /srv/pgsql/data/PG_VERSION ]; then

I thought we changed to /var/lib/pgsql ?

Maybe you should create a variable that contains /var/lib/pgsql to
avoid this duplication.


> +ifeq ($(BR2_PACKAGE_ZLIB),y)
> +	POSTGRESQL_DEPENDENCIES += zlib
> +else
> +	POSTGRESQL_CONF_OPT += --wihtout-zlib

Typo.

> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> +	POSTGRESQL_DEPENDENCIES += openssl
> +	POSTGRESQL_CONF_OPT += --with-openssl

else
	POSTGRESQL_CONF_OPT += --without-openssl

Other than that, looks good.

Thomas
Jerzy Grzegorek April 3, 2014, 9:55 p.m. UTC | #2
Hi Peter,

> Based on suggested new package by Marco Trapanese ([1]).
>
> [1] http://lists.busybox.net/pipermail/buildroot/2014-February/090661.html
>
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
> Changes v2 -> v3:
>    - change data dir from /srv/pqsql/data to /var/lib/pgsql
>      (as suggested by Thomas Petazzoni)
>    - fix POSTGRESQL_SITE url (removed cut and paste error)
>      (as suggested by Thomas Petazzoni)
>    - remove superfluous POSTGRESQL_CONF_OPT prefix option
>      (as suggested by Thomas Petazzoni)
>    - fix POSTGRESQL_USERS (remove superfluous own group)
>      (as suggested by Yann E. MORIN)
>    - fix data dir install command (remove superfluous -v option)
>      (as suggested by Yann E. MORIN)
>    - make readline an zlib optional (add hint in the help text
>      instead)
>      (as suggested by Thomas Petazzoni)
>
> Changes v1 -> v2:
>    - add postgresql user
>    - add postgresql data directory
>    - add sysv initialize and startup script
> ---
>   package/Config.in                |  1 +
>   package/postgresql/Config.in     | 20 +++++++++++++++
>   package/postgresql/S50postgresql | 44 ++++++++++++++++++++++++++++++++
>   package/postgresql/postgresql.mk | 54 ++++++++++++++++++++++++++++++++++++++++
>   4 files changed, 119 insertions(+)
>   create mode 100644 package/postgresql/Config.in
>   create mode 100644 package/postgresql/S50postgresql
>   create mode 100644 package/postgresql/postgresql.mk

[...]

> diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
> new file mode 100644
> index 0000000..fee4aed
> --- /dev/null
> +++ b/package/postgresql/postgresql.mk
> @@ -0,0 +1,54 @@
> +################################################################################
> +#
> +# postgresql
> +#
> +################################################################################
> +
> +POSTGRESQL_VERSION = 9.3.3
> +POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2
> +POSTGRESQL_SITE = http://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION)
> +POSTGRESQL_LICENSE = PostgreSQL
> +POSTGRESQ_LICENSE_FILES = COPYRIGHT

typo
POSTGRESQL_LICENSE_FILES = COPYRIGHT


Regards,
Jerzy

> +
> +ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
> +	POSTGRESQL_CONF_OPT += --disable-thread-safety
> +endif
> +
> +ifeq ($(BR2_PACKAGE_READLINE),y)
> +	POSTGRESQL_DEPENDENCIES += readline
> +else
> +	POSTGRESQL_CONF_OPT += --wihtout-readline
> +endif
> +
> +ifeq ($(BR2_PACKAGE_ZLIB),y)
> +	POSTGRESQL_DEPENDENCIES += zlib
> +else
> +	POSTGRESQL_CONF_OPT += --wihtout-zlib
> +endif
> +
> +ifeq ($(BR2_PACKAGE_TZDATA),y)
> +	POSTGRESQL_DEPENDENCIES += tzdata
> +	POSTGRESQL_CONF_OPT += --with-system-tzdata=/usr/share/zoneinfo
> +endif
> +
> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> +	POSTGRESQL_DEPENDENCIES += openssl
> +	POSTGRESQL_CONF_OPT += --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
> +endef
> +
> +POSTGRESQL_POST_INSTALL_TARGET_HOOKS += POSTGRESQL_INSTALL_TARGET_FIXUP
> +
> +define POSTGRESQL_INSTALL_INIT_SYSV
> +	$(INSTALL) -m 0755 -D package/postgresql/S50postgresql \
> +		$(TARGET_DIR)/etc/init.d/S50postgresql
> +endef
> +
> +$(eval $(autotools-package))
Arnout Vandecappelle April 4, 2014, 6:04 a.m. UTC | #3
On 03/04/14 22:39, Thomas Petazzoni wrote:
> Dear Peter Seiderer,
> 
> On Mon, 31 Mar 2014 08:59:29 +0200, Peter Seiderer wrote:
> 

[snip[

>> +if [ ! -f /srv/pgsql/data/PG_VERSION ]; then
> 
> I thought we changed to /var/lib/pgsql ?
> 
> Maybe you should create a variable that contains /var/lib/pgsql to
> avoid this duplication.

 I'm opposed to such variables, I don't see how they give an advantage:

- they make the code less readable (you have to look up what
POSTGRESQL_DATABASE_PATH expands to);

- they make the code longer (extra line for the assignment, and
POSTGRESQL_DATABASE_PATH is not significantly shorter than /var/lib/pgsql);

- changing the path is quite trivial as long as it stays in the same file
(I admit that I assume that you vi-users know how to escape a /).


 Regards,
 Arnout

[snip]
Peter Seiderer April 4, 2014, 7:15 p.m. UTC | #4
Hello Thomas,

> Gesendet: Donnerstag, 03. April 2014 um 22:39 Uhr
> Von: "Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>
> An: "Peter Seiderer" <ps.report@gmx.net>
> Cc: buildroot@busybox.net, "Yann E. MORIN" <yann.morin.1998@free.fr>
> Betreff: Re: [Buildroot] [PATCH] postgresql: new package
>
> Dear Peter Seiderer,
> 
> On Mon, 31 Mar 2014 08:59:29 +0200, Peter Seiderer wrote:
> 
> > diff --git a/package/postgresql/Config.in b/package/postgresql/Config.in
> > new file mode 100644
> > index 0000000..bc0305b
> > --- /dev/null
> > +++ b/package/postgresql/Config.in
> > @@ -0,0 +1,20 @@
> > +config BR2_PACKAGE_POSTGRESQL
> > +	bool "PostgreSQL"
> 
> lower case, please.

o.k.

> 
> > +	depends on BR2_INET_IPV6
> 
> Since it currently doesn't build with uClibc, can you make this package
> depends on !BR2_TOOLCHAIN_USES_UCLIBC ?
> 

o.k. postgresql compiles with uClibc without locale/i18n, will add appropriate dependency...

> 
> > +if [ ! -f /srv/pgsql/data/PG_VERSION ]; then
> 
> I thought we changed to /var/lib/pgsql ?
> 

sorry, missed that one, will fix...

> Maybe you should create a variable that contains /var/lib/pgsql to
> avoid this duplication.
> 
> 
> > +ifeq ($(BR2_PACKAGE_ZLIB),y)
> > +	POSTGRESQL_DEPENDENCIES += zlib
> > +else
> > +	POSTGRESQL_CONF_OPT += --wihtout-zlib
> 
> Typo.

o.k, fixed...

> 
> > +ifeq ($(BR2_PACKAGE_OPENSSL),y)
> > +	POSTGRESQL_DEPENDENCIES += openssl
> > +	POSTGRESQL_CONF_OPT += --with-openssl
> 
> else
> 	POSTGRESQL_CONF_OPT += --without-openssl

no need for the else branch, because no autodetection of openssl
package (without openssl is the default already), but I can add
a comment to make this clear?

Peter

> 
> Other than that, looks good.
> 
> Thomas
> -- 
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
>
Peter Seiderer April 4, 2014, 7:18 p.m. UTC | #5
Hello Jerzy,


> Gesendet: Donnerstag, 03. April 2014 um 23:55 Uhr
> Von: "Jerzy Grzegorek" <jerzy.grzegorek@trzebnica.net>
> An: "Peter Seiderer" <ps.report@gmx.net>, buildroot@busybox.net
> Betreff: Re: [Buildroot] [PATCH] postgresql: new package
>
[...]
> 
> > diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
> > new file mode 100644
> > index 0000000..fee4aed
> > --- /dev/null
> > +++ b/package/postgresql/postgresql.mk
> > @@ -0,0 +1,54 @@
> > +################################################################################
> > +#
> > +# postgresql
> > +#
> > +################################################################################
> > +
> > +POSTGRESQL_VERSION = 9.3.3
> > +POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2
> > +POSTGRESQL_SITE = http://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION)
> > +POSTGRESQL_LICENSE = PostgreSQL
> > +POSTGRESQ_LICENSE_FILES = COPYRIGHT
> 
> typo
> POSTGRESQL_LICENSE_FILES = COPYRIGHT
> 
> 
> Regards,
> Jerzy
> 

Thank you for the review, will fix this on for the next version...
Regards,
Peter
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index e816603..5805342 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -544,6 +544,7 @@  source "package/berkeleydb/Config.in"
 source "package/cppdb/Config.in"
 source "package/gdbm/Config.in"
 source "package/mysql/Config.in"
+source "package/postgresql/Config.in"
 source "package/redis/Config.in"
 source "package/sqlcipher/Config.in"
 source "package/sqlite/Config.in"
diff --git a/package/postgresql/Config.in b/package/postgresql/Config.in
new file mode 100644
index 0000000..bc0305b
--- /dev/null
+++ b/package/postgresql/Config.in
@@ -0,0 +1,20 @@ 
+config BR2_PACKAGE_POSTGRESQL
+	bool "PostgreSQL"
+	depends on BR2_INET_IPV6
+	select BR2_PACKAGE_READLINE
+	select BR2_PACKAGE_ZLIB
+	help
+	  PostgreSQL is a powerful, open source object-relational
+	  database system.
+
+	  Enable the readline package to gain readline support in
+	  pgsql (the command line interpreter), which offers
+	  command history and edit functions.
+
+	  Enable the zlib package to gain builtin compression for
+	  archives with pg_dump and pg_restore.
+
+	  http://www.postgresql.org
+
+comment "PostgreSQL needs a toolchain w/ IPv6"
+	depends on !BR2_INET_IPV6
diff --git a/package/postgresql/S50postgresql b/package/postgresql/S50postgresql
new file mode 100644
index 0000000..54f2119
--- /dev/null
+++ b/package/postgresql/S50postgresql
@@ -0,0 +1,44 @@ 
+#!/bin/sh
+#
+# start postgresql
+#
+
+umask 077
+
+if [ ! -f /srv/pgsql/data/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.mk b/package/postgresql/postgresql.mk
new file mode 100644
index 0000000..fee4aed
--- /dev/null
+++ b/package/postgresql/postgresql.mk
@@ -0,0 +1,54 @@ 
+################################################################################
+#
+# postgresql
+#
+################################################################################
+
+POSTGRESQL_VERSION = 9.3.3
+POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2
+POSTGRESQL_SITE = http://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION)
+POSTGRESQL_LICENSE = PostgreSQL
+POSTGRESQ_LICENSE_FILES = COPYRIGHT
+
+ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
+	POSTGRESQL_CONF_OPT += --disable-thread-safety
+endif
+
+ifeq ($(BR2_PACKAGE_READLINE),y)
+	POSTGRESQL_DEPENDENCIES += readline
+else
+	POSTGRESQL_CONF_OPT += --wihtout-readline
+endif
+
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+	POSTGRESQL_DEPENDENCIES += zlib
+else
+	POSTGRESQL_CONF_OPT += --wihtout-zlib
+endif
+
+ifeq ($(BR2_PACKAGE_TZDATA),y)
+	POSTGRESQL_DEPENDENCIES += tzdata
+	POSTGRESQL_CONF_OPT += --with-system-tzdata=/usr/share/zoneinfo
+endif
+
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+	POSTGRESQL_DEPENDENCIES += openssl
+	POSTGRESQL_CONF_OPT += --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
+endef
+
+POSTGRESQL_POST_INSTALL_TARGET_HOOKS += POSTGRESQL_INSTALL_TARGET_FIXUP
+
+define POSTGRESQL_INSTALL_INIT_SYSV
+	$(INSTALL) -m 0755 -D package/postgresql/S50postgresql \
+		$(TARGET_DIR)/etc/init.d/S50postgresql
+endef
+
+$(eval $(autotools-package))