Accepting request 545165 from server:database:postgresql

OBS-URL: https://build.opensuse.org/request/show/545165
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/postgresql?expand=0&rev=50
This commit is contained in:
Dominique Leuenberger 2017-11-26 09:33:18 +00:00 committed by Git OBS Bridge
commit fa29e408aa
9 changed files with 644 additions and 17 deletions

4
postgresql-firewall Normal file
View File

@ -0,0 +1,4 @@
## Name: PostgreSQL Server
## Description: Opens TCP port 5432 to allow remote connections to the PostgreSQL server.
TCP="5432"

198
postgresql-init Normal file
View File

@ -0,0 +1,198 @@
#!/bin/sh
# Copyright (c) 1995-2004 SUSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# System startup script for PostgreSQL
#
# LSB compatible service control script; see http://www.linuxbase.org/spec/
#
### BEGIN INIT INFO
# Provides: postgresql
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Default-Start: 3 5
# Default-Stop:
# Description: Start the PostgreSQL master daemon
### END INIT INFO
# Source SuSE config
PG_SYSCONFIG=/etc/sysconfig/postgresql
test -f $PG_SYSCONFIG && . $PG_SYSCONFIG
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status
eval DATADIR=${POSTGRES_DATADIR:-~postgres/data}
OPTIONS=${POSTGRES_OPTIONS}
PIDFILE=$DATADIR/postmaster.pid
# The echo return value for success (defined in /etc/rc.config).
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
#
if test -r $DATADIR/PG_VERSION ; then
DATA_VERSION=$(cat $DATADIR/PG_VERSION)
POSTGRES=/usr/lib/postgresql${DATA_VERSION/./}/bin/postgres
fi
if test -x /usr/bin/postgres; then
ACTIVE=$(readlink -q -f /usr/bin/postgres)
test -z "$POSTGRES" && POSTGRES="$ACTIVE"
fi
if test -z "$POSTGRESQL_QUIET"; then
export POSTGRESQL_QUIET=1
if test -n "$DATA_VERSION"; then
if test -z "$ACTIVE" -o "$ACTIVE" != "$POSTGRES"; then
echo " Your database files were created by PostgreSQL version $DATA_VERSION."
if test -x "$POSTGRES"; then
echo " Using the executables in $(dirname $POSTGRES)."
else
echo " Could not find executables for this version."
echo " Please install the PostgreSQL server package for version $DATA_VERSION."
fi
fi
elif test -z "$ACTIVE"; then
echo " Cannot find an active PostgreSQL server binary. Please install one of the PostgreSQL"
echo " server packages or activate an already installed version using update-alternatives."
fi
fi
if test ! -x "$POSTGRES"; then
test "$1" = "stop" && exit 0 || exit 5
fi
BINDIR=$(dirname $POSTGRES)
VERSION=$($POSTGRES --version|awk '{print $NF}')
LOGFILE=$DATADIR/postmaster.log
pg_ctl () {
CMD="$BINDIR/pg_ctl ${POSTGRES_TIMEOUT:+-t $POSTGRES_TIMEOUT} $@"
su - postgres -c "$CMD"
}
case "$1" in
start)
if [ ! -f $DATADIR/PG_VERSION ]; then
echo -n "Initializing PostgreSQL $VERSION at location ${DATADIR}"
LANG_SYSCONFIG=/etc/sysconfig/language
test -f "$LANG_SYSCONFIG" && . $LANG_SYSCONFIG
LANG=${POSTGRES_LANG:-$RC_LANG}
INITDB=/usr/bin/initdb
V=$(printf "%02d%02d" $(echo $VERSION|awk -F. '{print $1, $2}'))
AUTH="ident"; test $V -lt 0804 && AUTH="ident sameuser"
su - postgres -c \
"$INITDB --locale=$LANG --auth=\"$AUTH\" $DATADIR &> initlog" ||
rc_failed
rc_status -v
rc_status || {
echo "You can find a log of the initialisation in ~postgres/initlog ."
rc_exit
}
fi
echo -n "Starting PostgreSQL $VERSION "
if pg_ctl status -s -D $DATADIR >/dev/null
then
rc_failed 0
else
set -o pipefail
pg_ctl start -s -w -D $DATADIR -l $LOGFILE -o "\"$OPTIONS\""
fi
rc_status -v
;;
stop)
echo -n "Shutting down PostgreSQL $VERSION "
if pg_ctl status -s -D $DATADIR >/dev/null
then
pg_ctl stop -s -D $DATADIR -m fast &> /dev/null
else
rc_failed 0
fi
rc_status -v
;;
try-restart|condrestart)
## Do a restart only if the service was active before.
## Note: try-restart is now part of LSB (as of 1.9).
## RH has a similar command named condrestart.
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset # Not running is not a failure.
fi
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
rc_status
;;
force-reload | reload)
echo -n "Reloading configuration for PostgreSQL $VERSION "
pg_ctl reload -s -D $DATADIR
rc_status -v
;;
status)
echo -n "Checking for PostgreSQL $VERSION: "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values.
if ! pg_ctl status -s -D $DATADIR >/dev/null
then
if test -f $DATADIR/postmaster.pid; then
rc_failed 1
else
rc_failed 3
fi
fi
rc_status -v
;;
probe)
rc_failed 3
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
exit 1
;;
esac
# Inform the caller not only verbosely and set an exit status.
rc_exit

View File

@ -0,0 +1,36 @@
#!/bin/bash
shopt -s nullglob
if test "$#" -ne 1; then
echo "usage: $0 pgversion" 1>&2
exit 1
fi
PRIO=$1
case "$PRIO" in
postgresql*)
PRIO="${PRIO##postgresql}"
;;
esac
PGBASEDIR=/usr/lib/postgresql$PRIO
if [ $PRIO -lt 80 ] ; then
PRIO="${PRIO}0"
fi
PGBINDIR=$PGBASEDIR/bin
for FILE in $PGBINDIR/*; do
NAME=$(basename $FILE)
DIR=/usr/bin
SLAVES="$SLAVES --slave $DIR/$NAME $NAME $FILE"
done
if test -n "$SLAVES"; then
update-alternatives --quiet --install \
/usr/lib/postgresql postgresql $PGBASEDIR $PRIO \
$SLAVES
else
update-alternatives --remove postgresql $PGBASEDIR
fi

72
postgresql-script Normal file
View File

@ -0,0 +1,72 @@
#!/bin/sh
PG_SYSCONFIG=/etc/sysconfig/postgresql
test -f $PG_SYSCONFIG && . $PG_SYSCONFIG
eval DATADIR=${POSTGRES_DATADIR:-~postgres/data}
OPTIONS=${POSTGRES_OPTIONS}
PIDFILE=$DATADIR/postmaster.pid
#
if test -r $DATADIR/PG_VERSION ; then
DATA_VERSION=$(cat $DATADIR/PG_VERSION)
POSTGRES=/usr/lib/postgresql${DATA_VERSION/./}/bin/postgres
fi
if test -x /usr/bin/postgres; then
ACTIVE=$(readlink -q -f /usr/bin/postgres)
test -z "$POSTGRES" && POSTGRES="$ACTIVE"
fi
if test -n "$DATA_VERSION"; then
if test -z "$ACTIVE" -o "$ACTIVE" != "$POSTGRES"; then
echo " Your database files were created by PostgreSQL version $DATA_VERSION."
if test -x "$POSTGRES"; then
echo " Using the executables in $(dirname $POSTGRES)."
else
echo " Could not find executables for this version."
echo " Please install the PostgreSQL server package for version $DATA_VERSION."
fi
fi
elif test -z "$ACTIVE"; then
echo " Cannot find an active PostgreSQL server binary. Please install one of the PostgreSQL"
echo " server packages or activate an already installed version using update-alternatives."
fi
if test ! -x "$POSTGRES"; then
exit 1
fi
BINDIR=$(dirname $POSTGRES)
VERSION=$($POSTGRES --version|awk '{print $NF}')
pg_ctl () {
$BINDIR/pg_ctl -s -D $DATADIR ${POSTGRES_TIMEOUT:+-t $POSTGRES_TIMEOUT} "$@"
}
cd ~
case "$1" in
start)
if [ ! -f $DATADIR/PG_VERSION ]; then
LANG_SYSCONFIG=/etc/sysconfig/language
test -f "$LANG_SYSCONFIG" && . $LANG_SYSCONFIG
LANG=${POSTGRES_LANG:-$RC_LANG}
V=$(printf "%02d%02d" $(echo $VERSION|awk -F. '{print $1, $2}'))
install -d -m 700 ${DATADIR} &&
echo "Initializing PostgreSQL $VERSION at location ${DATADIR}"
/usr/bin/initdb --locale=$LANG --auth=ident $DATADIR &> initlog || {
echo "Initialisation failed. See $PWD/initlog ."
exit 1
}
fi
pg_ctl start -w ${OPTIONS:+-o "$OPTIONS"}
;;
stop)
pg_ctl stop -m fast
;;
reload)
pg_ctl reload
;;
*)
echo "Usage: $0 {start|stop|reload}"
exit 1
;;
esac

51
postgresql-sysconfig Normal file
View File

@ -0,0 +1,51 @@
## Path: Applications/PostgreSQL
## Description: The PostgreSQL Database System
## Type: string()
## Default: "~postgres/data"
## ServiceRestart: postgresql
#
# In which directory should the PostgreSQL database reside?
#
POSTGRES_DATADIR="~postgres/data"
## Path: Applications/PostgreSQL
## Description: The PostgreSQL Database System
## Type: string()
## Default: ""
## ServiceRestart: postgresql
#
# The options that are given to the PostgreSQL master daemon on startup.
# See the manual pages for postmaster and postgres for valid options.
#
# Don't put "-D datadir" here since it is set by the startup script
# based on the variable POSTGRES_DATADIR above.
#
POSTGRES_OPTIONS=""
## Path: Applications/PostgreSQL
## Description: The PostgreSQL Database System
## Type: string()
## Default: "600"
## ServiceRestart: postgresql
#
# This value controls how many seconds the pg_ctl helper program waits
# for the startup or shutdown of the PostgreSQL server to complete.
#
POSTGRES_TIMEOUT="600"
## Path: Applications/PostgreSQL
## Description: The PostgreSQL Database System
## Type: string()
## Default: "C"
## ServiceRestart: ""
#
# Specifies the locale under which the PostgreSQL database location
# should be initialized and run. If needed, it has to be changed
# before PostgreSQL is started for the first time. To change the
# locale of an existsing PostgreSQL database location, it must be
# dumped, removed and initialized from scratch using the new locale.
#
# If unset or empty $RC_LANG from /etc/sysconfig/language is used.
#
POSTGRES_LANG=""

2
postgresql-tmpfiles.conf Normal file
View File

@ -0,0 +1,2 @@
# For the PostgreSQL server's unix domain socket
d /var/run/postgresql 1777 root root -

View File

@ -1,7 +1,74 @@
-------------------------------------------------------------------
Fri Nov 24 11:24:09 UTC 2017 - mrueckert@suse.de
- instead of hardcoding version 10, just check if the prio is
smaller than 80.
-------------------------------------------------------------------
Thu Nov 23 17:05:21 UTC 2017 - mrueckert@suse.de
- simplify the postgresql-install-alternatives to only require the
pg version and go from there.
supported calls of the script are:
/usr/share/postgresql/install-alternatives postgresqlXY
/usr/share/postgresql/install-alternatives XY
where XY can currently be: 92 93 94 95 96 10
-------------------------------------------------------------------
Wed Nov 22 13:03:42 UTC 2017 - max@suse.com
- CVE-2017-14798, bsc#1062722: Fix LPE via postgres init script.
This only affected SysV-init based systems (i.e. SLE11).
-------------------------------------------------------------------
Tue Nov 14 08:52:46 UTC 2017 - max@suse.com
- postgresql-test was missing a %files section.
-------------------------------------------------------------------
Fri Nov 3 12:55:14 UTC 2017 - max@suse.com
- Move the start/stop script to /usr/share/postgresql
- Add a script for handling update-alternatives as subpackages
get installed/uninstalled, so that the implementation packages
don't have to repeat the logic (postgresql-install-alternatives).
- Add the postgresql-test subpackage.
- Fix some dependencies.
- Save the enabled and running state when upgrading from the
obsolete postgresql-init package.
-------------------------------------------------------------------
Fri Oct 6 14:33:54 UTC 2017 - mrueckert@suse.de
- properly guard the systemd macro in %pre server so it wont be
used on sle11
- add Requires(pre) so we have groupadd/useradd available
-------------------------------------------------------------------
Thu Sep 21 07:59:26 UTC 2017 - max@suse.com
- Refine the dependencies between the "dummy" packages and the
actual implementation of PostgreSQL. The dummy packages now
require an arbitrary implementation and recommend the default
version.
- Move the contents of postgresql-init to the server package.
-------------------------------------------------------------------
Thu Aug 3 23:06:39 UTC 2017 - mrueckert@suse.de
- bump to 10
-------------------------------------------------------------------
Wed Jun 28 09:35:46 UTC 2017 - max@suse.com
- Bump version and defaultpackage to 9.6 in SLE12 (bsc#1046324).
------------------------------------------------------------------- -------------------------------------------------------------------
Sun Oct 30 06:17:24 UTC 2016 - 13ilya@gmail.com Sun Oct 30 06:17:24 UTC 2016 - 13ilya@gmail.com
- Bump version and defaultpackage to 9.6. - Bump version and defaultpackage to 9.6 in Factory.
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Sep 28 15:04:31 UTC 2015 - max@suse.com Mon Sep 28 15:04:31 UTC 2015 - max@suse.com
@ -9,10 +76,15 @@ Mon Sep 28 15:04:31 UTC 2015 - max@suse.com
- Move ~postgres/.bash_profile to postgresql-server to avoid a - Move ~postgres/.bash_profile to postgresql-server to avoid a
file conflict between the versioned server packages. file conflict between the versioned server packages.
-------------------------------------------------------------------
Mon Aug 17 00:25:13 CEST 2015 - ro@suse.de
- Bump version and defaultpackage to 9.4. in SLE (bnc#941886)
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Feb 18 15:28:45 UTC 2015 - max@suse.com Wed Feb 18 15:28:45 UTC 2015 - max@suse.com
- Bump version and defaultpackage to 9.4. - Bump version and defaultpackage to 9.4 in Factory.
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Sep 17 11:44:19 UTC 2013 - max@suse.com Tue Sep 17 11:44:19 UTC 2013 - max@suse.com

19
postgresql.service Normal file
View File

@ -0,0 +1,19 @@
[Unit]
Description=PostgreSQL database server
After=syslog.target
After=network.target
[Service]
Type=forking
User=postgres
EnvironmentFile=-/etc/sysconfig/postgresql
ExecStart=/usr/share/postgresql/postgresql-script start
ExecStop=/usr/share/postgresql/postgresql-script stop
ExecReload=/usr/share/postgresql/postgresql-script reload
# The server might be slow to stop, and that's fine. Don't kill it
SendSIGKILL=no
[Install]
WantedBy=multi-user.target

View File

@ -15,20 +15,42 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/ # Please submit bugfixes or comments via http://bugs.opensuse.org/
# #
%define defaultpackage postgresql96 %define defaultpackage postgresql10
%if 0%{?suse_version} >= 1300
%bcond_without systemd
%else
%bcond_with systemd
%endif
Name: postgresql Name: postgresql
Summary: Basic Clients and Utilities for PostgreSQL Summary: Basic Clients and Utilities for PostgreSQL
License: PostgreSQL License: PostgreSQL
Group: Productivity/Databases/Tools Group: Productivity/Databases/Tools
Version: 9.6 Version: 10
Release: 0 Release: 0
Url: https://www.postgresql.org/ Url: https://www.postgresql.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: %defaultpackage Provides: postgresql-noarch = %version-%release
Requires: postgresql-implementation
Recommends: %defaultpackage
BuildArch: noarch BuildArch: noarch
Source0: postgresql-bashprofile Source0: postgresql-init
Source1: postgresql-sysconfig
Source2: postgresql-firewall
Source3: postgresql-tmpfiles.conf
Source4: postgresql.service
Source5: postgresql-bashprofile
Source6: postgresql-script
Source7: postgresql-install-alternatives
%if 0%{?suse_version} > 1100
%define fwdir /etc/sysconfig/SuSEfirewall2.d/services
%define fwname postgresql
%else
%define fwdir /etc/sysconfig/scripts
%define fwname SuSEfirewall2-postgresql
%endif
%description %description
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -45,7 +67,24 @@ package.
%package server %package server
Summary: The Programs Needed to Create and Run a PostgreSQL Server Summary: The Programs Needed to Create and Run a PostgreSQL Server
Group: Productivity/Databases/Servers Group: Productivity/Databases/Servers
Requires: %defaultpackage-server Provides: postgresql-server-noarch = %version-%release
Requires: postgresql-server-implementation
Requires: postgresql = %version-%release
Recommends: %defaultpackage-server
%if 0%{?suse_version} >= 1315
Requires(pre): shadow
%else
Requires(pre): pwdutils
%endif
Provides: postgresql-init = %version.0-%release
Obsoletes: postgresql-init < %version.0-%release
%if %{with systemd}
BuildRequires: pkgconfig(systemd)
%{?systemd_requires}
%else
Requires(postun): %insserv_prereq
%endif
%description server %description server
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -57,10 +96,24 @@ This package includes the programs needed to create and run a
PostgreSQL server, which will in turn allow you to create and maintain PostgreSQL server, which will in turn allow you to create and maintain
PostgreSQL databases. PostgreSQL databases.
%package test
Summary: The test suite for PostgreSQL
Group: Productivity/Databases/Servers
Provides: postgresql-test-noarch = %version-%release
Requires: postgresql-test-implementation
Recommends: %defaultpackage-implementation
%description test
This package contains the sources and pre-built binaries of various
tests for the PostgreSQL database management system, including
regression tests and benchmarks.
%package docs %package docs
Summary: HTML Documentation for PostgreSQL Summary: HTML Documentation for PostgreSQL
Group: Productivity/Databases/Tools Group: Productivity/Databases/Tools
Requires: %defaultpackage-docs Provides: postgresql-docs-noarch = %version-%release
Requires: postgresql-docs-implementation
Recommends: %defaultpackage-docs
%description docs %description docs
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -76,7 +129,9 @@ postgresql package.
%package contrib %package contrib
Summary: Contributed Extensions and Additions to PostgreSQL Summary: Contributed Extensions and Additions to PostgreSQL
Group: Productivity/Databases/Tools Group: Productivity/Databases/Tools
Requires: %defaultpackage-contrib Provides: postgresql-contrib-noarch = %version-%release
Requires: postgresql-contrib-implementation
Recommends: %defaultpackage-contrib
%description contrib %description contrib
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -93,8 +148,10 @@ Documentation for the modules contained in this package can be found in
%package devel %package devel
Summary: PostgreSQL development header files and libraries Summary: PostgreSQL development header files and libraries
Group: Productivity/Databases/Tools Group: Development/Libraries/C and C++
Requires: %defaultpackage-devel Provides: postgresql-devel-noarch = %version-%release
Requires: postgresql-devel-implementation
Recommends: %defaultpackage-devel
%description devel %description devel
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -111,7 +168,9 @@ which will interact with a PostgreSQL server.
%package plperl %package plperl
Summary: The PL/Tcl, PL/Perl, and PL/Python procedural languages for PostgreSQL Summary: The PL/Tcl, PL/Perl, and PL/Python procedural languages for PostgreSQL
Group: Productivity/Databases/Servers Group: Productivity/Databases/Servers
Requires: %defaultpackage-plperl Provides: postgresql-plperl-noarch = %version-%release
Requires: postgresql-plperl-implementation
Recommends: %defaultpackage-plperl
%description plperl %description plperl
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -126,7 +185,9 @@ functions, and triggers.
%package plpython %package plpython
Summary: The PL/Python Procedural Languages for PostgreSQL Summary: The PL/Python Procedural Languages for PostgreSQL
Group: Productivity/Databases/Servers Group: Productivity/Databases/Servers
Requires: %defaultpackage-plpython Provides: postgresql-plpython-noarch = %version-%release
Requires: postgresql-plpython-implementation
Recommends: %defaultpackage-plpython
%description plpython %description plpython
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -141,7 +202,9 @@ functions, and triggers.
%package pltcl %package pltcl
Summary: PL/Tcl Procedural Language for PostgreSQL Summary: PL/Tcl Procedural Language for PostgreSQL
Group: Productivity/Databases/Tools Group: Productivity/Databases/Tools
Requires: %defaultpackage-pltcl Provides: postgresql-pltcl-noarch = %version-%release
Requires: postgresql-pltcl-implementation
Recommends: %defaultpackage-pltcl
%description pltcl %description pltcl
PostgreSQL is an advanced object-relational database management system PostgreSQL is an advanced object-relational database management system
@ -153,17 +216,109 @@ This package contains the PL/Tcl procedural language for PostgreSQL.
With thie module one can use Tcl to write stored procedures, functions, With thie module one can use Tcl to write stored procedures, functions,
and triggers. and triggers.
%prep
%build %build
echo "This is a dummy package to provide a dependency on the default PostgreSQL version." > README echo "This is a dummy package to provide a dependency on the default PostgreSQL version." > README
%install %install
mkdir -p %buildroot/var/lib/pgsql/ mkdir -p %buildroot/var/lib/pgsql/
sed 's,@LIBDIR@,%_libdir,g' %{SOURCE0} > \ install -m640 %{SOURCE5} %buildroot/var/lib/pgsql/.bash_profile
%buildroot/var/lib/pgsql/.bash_profile
install -m755 -d %buildroot/var/adm/fillup-templates
install -m644 %{S:1} %buildroot/var/adm/fillup-templates/sysconfig.postgresql
install -m755 -d %buildroot%fwdir
install -m644 %{S:2} %buildroot%fwdir/%fwname
install -m755 -d %buildroot/usr/sbin
install -m755 -d %buildroot/usr/share/postgresql
install -m755 %{S:7} %buildroot/usr/share/postgresql/install-alternatives
%if %{with systemd}
install -m755 -d %buildroot/%_tmpfilesdir
install -m644 %{S:3} %buildroot%_tmpfilesdir/postgresql.conf
install -m755 %{S:6} %buildroot/usr/share/postgresql
install -m755 -d %buildroot%_unitdir
install -m444 %{S:4} %buildroot%_unitdir
ln -sf service %buildroot/usr/sbin/rcpostgresql
%else
install -m755 -d %buildroot/etc/init.d
install -m755 %{S:0} %buildroot/etc/init.d/postgresql
ln -sf /etc/init.d/postgresql %buildroot/usr/sbin/rcpostgresql
%endif
%define eflag /run/postgresql-was-enabled
%define aflag /run/postgresql-was-running
%pre server
getent group postgres > /dev/null ||
groupadd -g 26 -o -r postgres
getent passwd postgres > /dev/null ||
useradd -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
-c "PostgreSQL Server" -u 26 postgres
%if %{with systemd}
%service_add_pre postgresql.service
# Save the "enabled" and "active" state across the transition of
# ownership of postgresql.service from postgresql-init to
# postgresql-server.
if [ "$FIRST_ARG" -ge 1 ]; then \
if [ x$(systemctl is-enabled postgresql.service 2>/dev/null ||:) = "xenabled" ]; then
touch %eflag
fi
systemctl is-active postgresql.service &>/dev/null && touch %aflag ||:
fi
%endif
%post server
%fillup_only -n postgresql
%if %{with systemd}
%tmpfiles_create %_tmpfilesdir/postgresql.conf
%service_add_post postgresql.service
%endif
%preun server
%if %{with systemd}
# Cannot use systemd macros here, because they're doing too much
/usr/bin/systemctl --no-reload disable postgresql.service || :
%else
%stop_on_removal postgresql
%endif
%postun server
%if %{with systemd}
# Cannot use systemd macros here, because they're doing too much
rm -f "/var/lib/systemd/migrated/postgresql"
/usr/bin/systemctl daemon-reload || :
%else
%insserv_cleanup
%endif
%if %{with systemd}
%posttrans server
# Save the "enabled" and "active" state across the transition of
# ownership of postgresql.service from postgresql-init to
# postgresql-server.
if test -f %eflag; then
rm -f %eflag
systemctl enable postgresql.service
fi
if test -f %aflag; then
rm -f %aflag
systemctl start postgresql.service
fi
%endif
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc README %doc README
%dir /usr/share/postgresql
/usr/share/postgresql/install-alternatives
%files server %files server
%defattr(-,root,root,-) %defattr(-,root,root,-)
@ -171,6 +326,24 @@ sed 's,@LIBDIR@,%_libdir,g' %{SOURCE0} > \
%attr(750,postgres,postgres) %dir /var/lib/pgsql %attr(750,postgres,postgres) %dir /var/lib/pgsql
%attr(640,postgres,postgres) %config(noreplace) /var/lib/pgsql/.bash_profile %attr(640,postgres,postgres) %config(noreplace) /var/lib/pgsql/.bash_profile
%if 0%{?suse_version} > 1110
%dir %fwdir
%endif
%config %fwdir/%fwname
/var/adm/fillup-templates/sysconfig.postgresql
/usr/sbin/rcpostgresql
%if %{with systemd}
%_tmpfilesdir/postgresql.conf
%_unitdir/
/usr/share/postgresql/postgresql-script
%else
%config /etc/init.d/postgresql
%endif
%files test
%defattr(-,root,root,-)
%doc README
%files docs %files docs
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc README %doc README