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