diff options
Diffstat (limited to 'databases/postgresql18-server/files')
14 files changed, 452 insertions, 0 deletions
diff --git a/databases/postgresql18-server/files/502.pgsql.in b/databases/postgresql18-server/files/502.pgsql.in new file mode 100644 index 000000000000..604ad3dadab8 --- /dev/null +++ b/databases/postgresql18-server/files/502.pgsql.in @@ -0,0 +1,114 @@ +#!/bin/sh +# +# Maintenance shell script to vacuum and backup database +# Put this in /usr/local/etc/periodic/daily, and it will be run +# every night +# +# Written by Palle Girgensohn <girgen@pingpong.net> +# +# In public domain, do what you like with it, +# and use it at your own risk... :) +# + +# Define these variables in either /etc/periodic.conf or +# /etc/periodic.conf.local to override the default values. +# +# daily_pgsql_backup_enable="YES" # do backup of all databases +# daily_pgsql_backup_enable="foo bar db1 db2" # only do backup of a limited selection of databases +# daily_pgsql_vacuum_enable="YES" # do vacuum + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +: ${daily_pgsql_user:="%%PG_USER%%"} +: ${daily_pgsql_port:=5432} +: ${daily_pgsql_vacuum_args:="-U ${daily_pgsql_user} -p ${daily_pgsql_port} -qaz"} +: ${daily_pgsql_pgdump_args:="-U ${daily_pgsql_user} -p ${daily_pgsql_port} -bF c"} +: ${daily_pgsql_pgdumpall_globals_args:="-U ${daily_pgsql_user} -p ${daily_pgsql_port}"} +# backupdir is relative to ~pgsql home directory unless it begins with a slash: +: ${daily_pgsql_backupdir:="~${daily_pgsql_user}/backups"} +: ${daily_pgsql_savedays:="7"} + +# allow '~' in directory name +eval backupdir=${daily_pgsql_backupdir} + +rc=0 + +pgsql_backup() { + # daily_pgsql_backupdir must be writeable by user %%PG_USER%% + # ~%%PG_USER%% is just that under normal circumstances, + # but this might not be where you want the backups... + if [ ! -d ${backupdir} ] ; then + echo Creating ${backupdir} + mkdir -m 700 ${backupdir}; chown ${daily_pgsql_user} ${backupdir} + fi + + echo + echo "PostgreSQL backups" + + # Protect the data + umask 077 + rc=$? + now=`date "+%Y-%m-%dT%H:%M:%S"` + file=${daily_pgsql_backupdir}/pgglobals_${now} + su -l ${daily_pgsql_user} -c \ + "umask 077; pg_dumpall -g ${daily_pgsql_pgdumpall_globals_args} | gzip -9 > ${file}.gz" + + db=$1 + while shift; do + echo -n " $db" + file=${backupdir}/pgdump_${db}_${now} + su -l ${daily_pgsql_user} -c "umask 077; pg_dump ${daily_pgsql_pgdump_args} -f ${file} ${db}" + [ $? -gt 0 ] && rc=3 + db=$1 + done + + if [ $rc -gt 0 ]; then + echo + echo "Errors were reported during backup." + fi + + # cleaning up old data + find ${backupdir} \( -name 'pgdump_*' -o -name 'pgglobals_*' -o -name '*.dat.gz' -o -name 'toc.dat' \) \ + -a -mtime +${daily_pgsql_savedays} -delete + echo +} + +case "$daily_pgsql_backup_enable" in + [Yy][Ee][Ss]) + dbnames=`su -l ${daily_pgsql_user} -c "umask 077; psql -U ${daily_pgsql_user} -p ${daily_pgsql_port} -q -t -A -d template1 -c SELECT\ datname\ FROM\ pg_database\ WHERE\ datname!=\'template0\'"` + pgsql_backup $dbnames + ;; + + [Nn][Oo]) + ;; + + "") + ;; + + *) + pgsql_backup $daily_pgsql_backup_enable + ;; +esac + +case "$daily_pgsql_vacuum_enable" in + [Yy][Ee][Ss]) + + echo + echo "PostgreSQL vacuum" + su -l ${daily_pgsql_user} -c "vacuumdb ${daily_pgsql_vacuum_args}" + if [ $? -gt 0 ] + then + echo + echo "Errors were reported during vacuum." + rc=3 + fi + ;; +esac + +exit $rc diff --git a/databases/postgresql18-server/files/dot.cshrc.in b/databases/postgresql18-server/files/dot.cshrc.in new file mode 100644 index 000000000000..17c9ee69a7d0 --- /dev/null +++ b/databases/postgresql18-server/files/dot.cshrc.in @@ -0,0 +1,11 @@ +setenv PGLIB %%PREFIX%%/lib + +# note: PGDATA can be overridden by the -D startup option +setenv PGDATA $HOME/data96 + +#You might want to set some locale stuff here +#setenv PGDATESTYLE ISO +#setenv LC_ALL sv_SE.ISO_8859-1 + +# if you want to make regression tests use this TZ +#setenv TZ PST8PDT diff --git a/databases/postgresql18-server/files/dot.profile.in b/databases/postgresql18-server/files/dot.profile.in new file mode 100644 index 000000000000..5be3e6a36ca9 --- /dev/null +++ b/databases/postgresql18-server/files/dot.profile.in @@ -0,0 +1,22 @@ +PGLIB=%%PREFIX%%/lib + +# note: PGDATA can be overridden by the -D startup option +PGDATA=${HOME}/data96 + +export PATH PGLIB PGDATA + +# if you use the periodic script from share/postgresql/502.pgsql, you +# can set these +#PGDUMP_ARGS="-b -F c" +#PGBACKUPDIR=${HOME}/backups +#PGBACKUP_SAVE_DAYS=7 +#export PGBACKUPDIR PGDUMP_ARGS PGBACKUP_SAVE_DAYS + +#You might want to set some locale stuff here +#PGDATESTYLE=ISO +#LC_ALL=sv_SE.ISO_8859-1 +#export PGDATESTYLE LC_ALL + +# if you want to make regression tests use this TZ +#TZ=PST8PDT +#export TZ diff --git a/databases/postgresql18-server/files/patch-src-Makefile.shlib b/databases/postgresql18-server/files/patch-src-Makefile.shlib new file mode 100644 index 000000000000..2435ffe1d280 --- /dev/null +++ b/databases/postgresql18-server/files/patch-src-Makefile.shlib @@ -0,0 +1,11 @@ +--- src/Makefile.shlib.bak 2013-05-06 22:57:06.000000000 +0200 ++++ src/Makefile.shlib 2013-05-12 23:33:16.000000000 +0200 +@@ -87,7 +87,7 @@ + # Testing the soname variable is a reliable way to determine whether a + # linkable library is being built. + soname = $(shlib_major) +-pkgconfigdir = $(libdir)/pkgconfig ++pkgconfigdir = $(prefix)/libdata/pkgconfig + else + # Naming convention for dynamically loadable modules + shlib = $(NAME)$(DLSUFFIX) diff --git a/databases/postgresql18-server/files/patch-src-backend-Makefile b/databases/postgresql18-server/files/patch-src-backend-Makefile new file mode 100644 index 000000000000..ce8a8d558de1 --- /dev/null +++ b/databases/postgresql18-server/files/patch-src-backend-Makefile @@ -0,0 +1,11 @@ +--- src/backend/Makefile.orig 2009-07-07 15:58:33.000000000 +0200 ++++ src/backend/Makefile 2009-07-07 15:58:57.000000000 +0200 +@@ -107,6 +107,8 @@ + # Update the commonly used headers before building the subdirectories + $(SUBDIRS:%=%-recursive): $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/probes.h + ++symlinks: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/storage/lwlocknames.h ++ + + # The postgres.o target is needed by the rule in Makefile.global that + # creates the exports file when MAKE_EXPORTS = true. diff --git a/databases/postgresql18-server/files/patch-src_backend_utils_misc_postgresql.conf.sample b/databases/postgresql18-server/files/patch-src_backend_utils_misc_postgresql.conf.sample new file mode 100644 index 000000000000..9469421174a0 --- /dev/null +++ b/databases/postgresql18-server/files/patch-src_backend_utils_misc_postgresql.conf.sample @@ -0,0 +1,10 @@ +--- src/backend/utils/misc/postgresql.conf.sample.orig 2016-10-24 20:08:51 UTC ++++ src/backend/utils/misc/postgresql.conf.sample +@@ -330,6 +330,7 @@ + + # - Where to Log - + ++log_destination = 'syslog' + #log_destination = 'stderr' # Valid values are combinations of + # stderr, csvlog, syslog, and eventlog, + # depending on platform. csvlog diff --git a/databases/postgresql18-server/files/pkg-message-client.in b/databases/postgresql18-server/files/pkg-message-client.in new file mode 100644 index 000000000000..bb0ecefef696 --- /dev/null +++ b/databases/postgresql18-server/files/pkg-message-client.in @@ -0,0 +1,38 @@ +[ +{ type: install + message: <<EOM +The PostgreSQL port has a collection of "side orders": + +postgresql-docs + For all of the html documentation + +p5-Pg + A perl5 API for client access to PostgreSQL databases. + +postgresql-tcltk + If you want tcl/tk client support. + +postgresql-jdbc + For Java JDBC support. + +postgresql-odbc + For client access from unix applications using ODBC as access + method. Not needed to access unix PostgreSQL servers from Win32 + using ODBC. See below. + +ruby-postgres, py-psycopg + For client access to PostgreSQL databases using the ruby & python + languages. + +postgresql-plperl, postgresql-pltcl & postgresql-plruby + For using perl5, tcl & ruby as procedural languages. + +postgresql-contrib + Lots of contributed utilities, postgresql functions and + datatypes. There you find pg_standby, pgcrypto and many other cool + things. + +etc... +EOM +} +] diff --git a/databases/postgresql18-server/files/pkg-message-contrib.in b/databases/postgresql18-server/files/pkg-message-contrib.in new file mode 100644 index 000000000000..006f700a3ae1 --- /dev/null +++ b/databases/postgresql18-server/files/pkg-message-contrib.in @@ -0,0 +1,9 @@ +[ +{ type: install + message: <<EOM +The PostgreSQL contrib utilities have been installed. Please see +%%DOCSDIR%%/README-contrib +for more information. +EOM +} +] diff --git a/databases/postgresql18-server/files/pkg-message-plperl.in b/databases/postgresql18-server/files/pkg-message-plperl.in new file mode 100644 index 000000000000..dbda7daff5c2 --- /dev/null +++ b/databases/postgresql18-server/files/pkg-message-plperl.in @@ -0,0 +1,9 @@ +[ +{ type: install + message: <<EOM +PL/Perl has been installed. Check the createlang(l) manpage for more +info. You can install PL/Perl as trusted or untrusted, by using either +"createlang plperl" or "createlang plperlu". +EOM +} +] diff --git a/databases/postgresql18-server/files/pkg-message-plpython.in b/databases/postgresql18-server/files/pkg-message-plpython.in new file mode 100644 index 000000000000..3bd80d73d177 --- /dev/null +++ b/databases/postgresql18-server/files/pkg-message-plpython.in @@ -0,0 +1,9 @@ +[ +{ type: install + message: <<EOM +PL/Python has been installed. Check the createlang(l) manpage for more +info. You can install PL/Python by using "createlang plpythonu" (it +exists as an untrusted language only). +EOM +} +] diff --git a/databases/postgresql18-server/files/pkg-message-pltcl.in b/databases/postgresql18-server/files/pkg-message-pltcl.in new file mode 100644 index 000000000000..c1776f7d6fb3 --- /dev/null +++ b/databases/postgresql18-server/files/pkg-message-pltcl.in @@ -0,0 +1,9 @@ +[ +{ type: install + message: <<EOM +PL/Tcl has been installed. Check the createlang(l) manpage for more +info. You can install pltcl as trusted or untrusted, by using either +"createlang pltcl" or "createlang pltclu". +EOM +} +] diff --git a/databases/postgresql18-server/files/pkg-message-server.in b/databases/postgresql18-server/files/pkg-message-server.in new file mode 100644 index 000000000000..03eee1b31117 --- /dev/null +++ b/databases/postgresql18-server/files/pkg-message-server.in @@ -0,0 +1,70 @@ +[ +{ type: install + message: <<EOM +For procedural languages and postgresql functions, please note that +you might have to update them when updating the server. + +If you have many tables and many clients running, consider raising +kern.maxfiles using sysctl(8), or reconfigure your kernel +appropriately. + +The port is set up to use autovacuum for new databases, but you might +also want to vacuum and perhaps backup your database regularly. There +is a periodic script, %%PREFIX%%/etc/periodic/daily/502.pgsql, that +you may find useful. You can use it to backup and perform vacuum on all +databases nightly. Per default, it performs `vacuum analyze'. See the +script for instructions. For autovacuum settings, please review +~%%PG_USER%%/data/postgresql.conf. + +If you plan to access your PostgreSQL server using ODBC, please +consider running the SQL script %%PREFIX%%/share/postgresql/odbc.sql +to get the functions required for ODBC compliance. + +Please note that if you use the rc script, +%%PREFIX%%/etc/rc.d/postgresql, to initialize the database, unicode +(UTF-8) will be used to store character data by default. Set +postgresql_initdb_flags or use login.conf settings described below to +alter this behaviour. See the start rc script for more info. + +To set limits, environment stuff like locale and collation and other +things, you can set up a class in /etc/login.conf before initializing +the database. Add something similar to this to /etc/login.conf: +--- +%%PG_USER%%:\ + :lang=en_US.UTF-8:\ + :setenv=LC_COLLATE=C:\ + :tc=default: +--- +and run `cap_mkdb /etc/login.conf'. +Then add 'postgresql_login_class="%%PG_USER%%"' to /etc/rc.conf, or +set it as the %%PG_USER%% user's login class in /etc/passwd. + +====================================================================== + +To use PostgreSQL, enable it in rc.conf using + + sysrc postgresql_enable=yes + +To initialize the database, run + + service postgresql initdb + +You can then start PostgreSQL by running: + + service postgresql start + +For postmaster settings, see ~%%PG_USER%%/data/postgresql.conf + +NB. FreeBSD's PostgreSQL port logs to syslog by default + See ~%%PG_USER%%/data/postgresql.conf for more info + +NB. If you're not using a checksumming filesystem like ZFS, you might + wish to enable data checksumming. It can be enabled during + the initdb phase, by adding the "--data-checksums" flag to + the postgresql_initdb_flags rcvar. Otherwise you can enable it later by + using pg_checksums. Check the initdb(1) manpage for more info + and make sure you understand the performance implications. + +EOM +} +] diff --git a/databases/postgresql18-server/files/pkgIndex.tcl.in b/databases/postgresql18-server/files/pkgIndex.tcl.in new file mode 100644 index 000000000000..bd8329b15c69 --- /dev/null +++ b/databases/postgresql18-server/files/pkgIndex.tcl.in @@ -0,0 +1,4 @@ +# Package-index file for Pgtcl-package. Enables you to load PostgreSQL +# interface functions right into you TCL-interpreter as simply as +# package require Pgtcl +package ifneeded Pgtcl 1.3 "load %%PREFIX%%/lib/libpgtcl.so" diff --git a/databases/postgresql18-server/files/postgresql.in b/databases/postgresql18-server/files/postgresql.in new file mode 100644 index 000000000000..073d3a64c004 --- /dev/null +++ b/databases/postgresql18-server/files/postgresql.in @@ -0,0 +1,125 @@ +#!/bin/sh + +# PROVIDE: postgresql +# REQUIRE: DAEMON mountlate +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable PostgreSQL: +# +# postgresql_enable="YES" +# # optional +# postgresql_data="/var/db/%%PG_USER%%/data%%PG_VERSION%%" +# postgresql_flags="-w -s -m fast" +# postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C" +# # leave empty to use the login class set in in /etc/passwd: +# postgresql_login_class="my_custom_login_class" +# postgresql_profiles="" +# +# See %%PREFIX%%/share/doc/postgresql/README-server for more info +# +# This scripts takes one of the following commands: +# +# start stop restart reload status initdb +# +# For postmaster startup options, edit ${postgresql_data}/postgresql.conf + +command=%%PREFIX%%/bin/pg_ctl + +. /etc/rc.subr + +load_rc_config postgresql + +# set defaults +: ${postgresql_enable:="NO"} +: ${postgresql_flags:="-w -s -m fast"} +: ${postgresql_user:="%%PG_USER%%"} +eval _pgdir="~${postgresql_user}/data%%PG_VERSION%%" +: ${postgresql_data:="${_pgdir}"} +: ${postgresql_login_class:=""} +: ${postgresql_initdb_flags:="--encoding=utf-8 --lc-collate=C"} +: ${postgresql_svcj_options:="net_basic"} + +name=postgresql +rcvar=postgresql_enable +extra_commands="reload initdb" + +start_cmd="postgresql_command start" +stop_cmd="postgresql_command stop" +restart_cmd="postgresql_command restart" +reload_cmd="postgresql_command reload" +status_cmd="postgresql_command status" +promote_cmd="postgresql_command promote" + +initdb_cmd="postgresql_initdb" + +su_cmd="/usr/bin/su" + +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_login_class="\${postgresql_${profile}_login_class:-${postgresql_login_class}}" + 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="-l /dev/null -D ${postgresql_data} ${postgresql_flags}" + +postgresql_command() +{ + echo "${rc_arg} ${name}" + ${su_cmd} ${postgresql_login_class:+-c ${postgresql_login_class}} \ + -l ${postgresql_user} \ + -c "exec ${command} ${command_args} ${rc_arg}" +} + +postgresql_initdb() +{ + echo "${rc_arg} ${name}" + ${su_cmd} ${postgresql_login_class:+-c ${postgresql_login_class}} \ + -l ${postgresql_user} \ + -c "exec %%PREFIX%%/bin/initdb ${postgresql_initdb_flags} -D ${postgresql_data} -U ${postgresql_user}" +} + +run_rc_command "$1" |