ports/162776: [patch] databases/postgresql90-server: add profile support for multiple databases
Jason Helfman
jhelfman at experts-exchange.com
Wed Nov 23 01:50:01 UTC 2011
>Number: 162776
>Category: ports
>Synopsis: [patch] databases/postgresql90-server: add profile support for multiple databases
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Nov 23 01:50:00 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Jason Helfman
>Release: FreeBSD 8.2-RELEASE i386
>Organization:
Experts Exchange, LLC.
>Environment:
System: FreeBSD dormouse.experts-exchange.com 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011 root at mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
Add profile support for postgresql, bump (Jason Helfman, Phil Phillips)
relocate command_args for profile support, instead of re-defining.
>How-To-Repeat:
Example profile: (create data directory _before_ issuing initdb for service)
postgresql_enable="YES"
postgresql_profiles="jgh"
postgresql_jgh_data="/usr/local/pgsql-jgh/data"
>Fix:
Index: postgresql90-server/Makefile
===================================================================
RCS file: /home/jhelfman/ncvs/ports/databases/postgresql90-server/Makefile,v
retrieving revision 1.230
diff -u -r1.230 Makefile
--- postgresql90-server/Makefile 20 Oct 2011 21:07:28 -0000 1.230
+++ postgresql90-server/Makefile 23 Nov 2011 01:38:28 -0000
@@ -7,7 +7,7 @@
PORTNAME?= postgresql
DISTVERSION?= 9.0.5
-PORTREVISION?= 1
+PORTREVISION?= 2
CATEGORIES?= databases
MASTER_SITES= ${MASTER_SITE_PGSQL}
MASTER_SITE_SUBDIR= source/v${DISTVERSION}
Index: postgresql90-server/files/postgresql.in
===================================================================
RCS file: /home/jhelfman/ncvs/ports/databases/postgresql90-server/files/postgresql.in,v
retrieving revision 1.5
diff -u -r1.5 postgresql.in
--- postgresql90-server/files/postgresql.in 18 Apr 2011 23:34:27 -0000 1.5
+++ postgresql90-server/files/postgresql.in 23 Nov 2011 01:37:51 -0000
@@ -14,6 +14,7 @@
# postgresql_flags="-w -s -m fast"
# postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C"
# postgresql_class="default"
+# postgresql_profiles=""
#
# See %%PREFIX%%/share/doc/postgresql/README-server for more info
#
@@ -39,7 +40,6 @@
name=postgresql
rcvar=`set_rcvar`
-command_args="-D ${postgresql_data} ${postgresql_flags}"
extra_commands="reload initdb"
start_cmd="postgresql_command start"
@@ -50,6 +50,57 @@
initdb_cmd="postgresql_initdb"
+if [ -n "$2" ]; then
+ profile="$2"
+ if [ "x${postgresql_profiles}" != "x" ]; then
+ eval postgresql_data="\${postgresql_${profile}_data:-}"
+ if [ "x${postgresql_data}" = "x" ]; then
+ echo "You must define a data directory (postgresql_${profile}_data)"
+ exit 1
+ fi
+ eval postgresql_enable="\${postgresql_${profile}_enable:-${postgresql_enable}}
+ eval postgresql_data="\${postgresql_${profile}_data:-${postgresql_data}}
+ eval postgresql_flags="\${postgresql_${profile}_flags:-${postgresql_flags}}"
+ eval postgresql_initdb_flags="\${postgresql_${profile}_initdb_flags:-${postgresql_initdb_flags}}"
+ fi
+else
+ if [ "x${postgresql_profiles}" != "x" -a "x$1" != "x" ]; then
+ for profile in ${postgresql_profiles}; do
+ eval _enable="\${postgresql_${profile}_enable}"
+ case "x${_enable:-${postgresql_enable}}" in
+ x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
+ continue
+ ;;
+ x[Yy][Ee][Ss])
+ ;;
+ *)
+ if test -z "$_enable"; then
+ _var=postgresql_enable
+ else
+ _var=postgresql_"${profile}"_enable
+ fi
+ echo "Bad value" \
+ "'${_enable:-${postgresql_enable}}'" \
+ "for ${_var}. " \
+ "Profile ${profile} skipped."
+ continue
+ ;;
+ esac
+ echo "===> postgresql profile: ${profile}"
+ %%PREFIX%%/etc/rc.d/postgresql $1 ${profile}
+ retcode="$?"
+ if [ "0${retcode}" -ne 0 ]; then
+ failed="${profile} (${retcode}) ${failed:-}"
+ else
+ success="${profile} ${success:-}"
+ fi
+ done
+ exit 0
+ fi
+fi
+
+command_args="-D ${postgresql_data} ${postgresql_flags}"
+
postgresql_command()
{
su -l ${postgresql_user} -c "exec ${command} ${command_args} ${rc_arg}"
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list