diff options
Diffstat (limited to 'databases/postgresql13-server/files')
16 files changed, 506 insertions, 0 deletions
diff --git a/databases/postgresql13-server/files/502.pgsql.in b/databases/postgresql13-server/files/502.pgsql.in new file mode 100644 index 000000000000..06026b1d831f --- /dev/null +++ b/databases/postgresql13-server/files/502.pgsql.in @@ -0,0 +1,116 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# 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 dir 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/postgresql13-server/files/dot.cshrc.in b/databases/postgresql13-server/files/dot.cshrc.in new file mode 100644 index 000000000000..17c9ee69a7d0 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/dot.profile.in b/databases/postgresql13-server/files/dot.profile.in new file mode 100644 index 000000000000..5be3e6a36ca9 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/patch-doc-Makefile b/databases/postgresql13-server/files/patch-doc-Makefile new file mode 100644 index 000000000000..d5176bfb64b5 --- /dev/null +++ b/databases/postgresql13-server/files/patch-doc-Makefile @@ -0,0 +1,9 @@ +--- doc/Makefile.orig 2015-10-08 21:45:57.360084007 +0200 ++++ doc/Makefile 2015-10-08 21:46:04.353084097 +0200 +@@ -12,5 +12,5 @@ + top_builddir = .. + include $(top_builddir)/src/Makefile.global + +-all distprep html man install installdirs uninstall clean distclean maintainer-clean: ++all distprep man install installdirs uninstall clean distclean maintainer-clean: + $(MAKE) -C src $@ diff --git a/databases/postgresql13-server/files/patch-doc-src-sgml-Makefile b/databases/postgresql13-server/files/patch-doc-src-sgml-Makefile new file mode 100644 index 000000000000..36f5d2a8224c --- /dev/null +++ b/databases/postgresql13-server/files/patch-doc-src-sgml-Makefile @@ -0,0 +1,41 @@ +--- doc/src/sgml/Makefile.orig 2018-10-15 23:12:02.000000000 +0200 ++++ doc/src/sgml/Makefile 2018-10-18 22:34:13.656029000 +0200 +@@ -15,7 +15,7 @@ + + # Make "html" the default target, since that is what most people tend + # to want to use. +-html: ++man: + + # We don't need the tree-wide headers or install support here. + NO_GENERATED_HEADERS=yes +@@ -26,7 +26,7 @@ + include $(top_builddir)/src/Makefile.global + + +-all: html man ++all: man + + distprep: html distprep-man + +@@ -62,7 +62,6 @@ + ## Man pages + ## + +-man distprep-man: man-stamp + + man-stamp: stylesheet-man.xsl postgres.sgml $(ALLSGML) + $(XMLLINT) $(XMLINCLUDE) --noout --valid $(word 2,$^) +@@ -212,10 +211,10 @@ + ## Install + ## + +-install: install-html install-man ++install: install-man + + installdirs: +- $(MKDIR_P) '$(DESTDIR)$(htmldir)'/html $(addprefix '$(DESTDIR)$(mandir)'/man, 1 3 $(sqlmansectnum)) ++ $(MKDIR_P) $(addprefix '$(DESTDIR)$(mandir)'/man, 1 3 $(sqlmansectnum)) + + # If the install used a man directory shared with other applications, this will remove all files. + uninstall: diff --git a/databases/postgresql13-server/files/patch-src-Makefile.shlib b/databases/postgresql13-server/files/patch-src-Makefile.shlib new file mode 100644 index 000000000000..2435ffe1d280 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/patch-src-backend-Makefile b/databases/postgresql13-server/files/patch-src-backend-Makefile new file mode 100644 index 000000000000..ce8a8d558de1 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/patch-src_backend_utils_misc_postgresql.conf.sample b/databases/postgresql13-server/files/patch-src_backend_utils_misc_postgresql.conf.sample new file mode 100644 index 000000000000..a82826b3b5f1 --- /dev/null +++ b/databases/postgresql13-server/files/patch-src_backend_utils_misc_postgresql.conf.sample @@ -0,0 +1,21 @@ +--- 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 +@@ -464,7 +465,9 @@ + + #cluster_name = '' # added to process titles if nonempty + # (change requires restart) +-#update_process_title = on ++ ++# On FreeBSD, this is a performance hog, so keep it off if you need speed ++update_process_title = off + + + #------------------------------------------------------------------------------ diff --git a/databases/postgresql13-server/files/pkg-message-client.in b/databases/postgresql13-server/files/pkg-message-client.in new file mode 100644 index 000000000000..404124204b7d --- /dev/null +++ b/databases/postgresql13-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-psycopg2 + 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/postgresql13-server/files/pkg-message-contrib.in b/databases/postgresql13-server/files/pkg-message-contrib.in new file mode 100644 index 000000000000..2d9f3d86e71c --- /dev/null +++ b/databases/postgresql13-server/files/pkg-message-contrib.in @@ -0,0 +1,9 @@ +[ +{ type: install + message: <<EOM +The PostgreSQL contrib utilities have been installed. Please see +%%PREFIX%%/share/doc/postgresql/contrib/README +for more information. +EOM +} +] diff --git a/databases/postgresql13-server/files/pkg-message-plperl.in b/databases/postgresql13-server/files/pkg-message-plperl.in new file mode 100644 index 000000000000..dbda7daff5c2 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/pkg-message-plpython.in b/databases/postgresql13-server/files/pkg-message-plpython.in new file mode 100644 index 000000000000..3bd80d73d177 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/pkg-message-pltcl.in b/databases/postgresql13-server/files/pkg-message-pltcl.in new file mode 100644 index 000000000000..c1776f7d6fb3 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/pkg-message-server.in b/databases/postgresql13-server/files/pkg-message-server.in new file mode 100644 index 000000000000..84a13f7cb47c --- /dev/null +++ b/databases/postgresql13-server/files/pkg-message-server.in @@ -0,0 +1,69 @@ +[ +{ 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 +~pgsql/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: +--- +postgres:\ + :lang=en_US.UTF-8:\ + :setenv=LC_COLLATE=C:\ + :tc=default: +--- +and run `cap_mkdb /etc/login.conf'. +Then add 'postgresql_class="postgres"' to /etc/rc.conf. + +====================================================================== + +To initialize the database, run + + %%PREFIX%%/etc/rc.d/postgresql initdb + +You can then start PostgreSQL by running: + + %%PREFIX%%/etc/rc.d/postgresql start + +For postmaster settings, see ~pgsql/data/postgresql.conf + +NB. FreeBSD's PostgreSQL port logs to syslog by default + See ~pgsql/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 only be enabled during + the initdb phase, by adding the "--data-checksums" flag to + the postgres_initdb_flags rcvar. Check the initdb(1) manpage + for more info and make sure you understand the performance + implications. + +====================================================================== + +To run PostgreSQL at startup, add +'postgresql_enable="YES"' to /etc/rc.conf +EOM +} +] diff --git a/databases/postgresql13-server/files/pkgIndex.tcl.in b/databases/postgresql13-server/files/pkgIndex.tcl.in new file mode 100644 index 000000000000..bd8329b15c69 --- /dev/null +++ b/databases/postgresql13-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/postgresql13-server/files/postgresql.in b/databases/postgresql13-server/files/postgresql.in new file mode 100644 index 000000000000..edbdf29eea47 --- /dev/null +++ b/databases/postgresql13-server/files/postgresql.in @@ -0,0 +1,117 @@ +#!/bin/sh + +# $FreeBSD$ +# +# PROVIDE: postgresql +# REQUIRE: sshd +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable PostgreSQL: +# +# postgresql_enable="YES" +# # optional +# postgresql_data="/var/db/%%PG_USER%%/data11" +# 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 +# +# 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=${postgresql_enable:-"NO"} +postgresql_flags=${postgresql_flags:-"-w -s -m fast"} +postgresql_user=${postgresql_user:-"%%PG_USER%%"} +eval postgresql_data=${postgresql_data:-"~${postgresql_user}/data12"} +postgresql_class=${postgresql_class:-"default"} +postgresql_initdb_flags=${postgresql_initdb_flags:-"--encoding=utf-8 --lc-collate=C"} + +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_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_cmd} -l ${postgresql_user} -c "exec ${command} ${command_args} ${rc_arg}" +} + +postgresql_initdb() +{ + ${su_cmd} -l -c ${postgresql_class} ${postgresql_user} -c "exec %%PREFIX%%/bin/initdb ${postgresql_initdb_flags} -D ${postgresql_data} -U ${postgresql_user}" +} + +run_rc_command "$1" |