summaryrefslogtreecommitdiffstats
path: root/system/postgresql/postgresql.SlackBuild
blob: 7d64d24e2fdc8782d902ee0e59c018e234fd6bc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#!/bin/sh

## Slackware build script for PostgreSQL
## $Revision: dbf620a11266 $
## $Date: 2013/09/19 10:35:00 $
##
## Copyright 2007-2013 Adis Nezirovic <adis _at_ linux.org.ba>
## Licensed under GNU GPL v2

# Modified by the SlackBuilds.org Project

PRGNAM=postgresql
VERSION=${VERSION:-9.3.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

PG_VERSION=${PG_VERSION:-9.3}
PG_PORT=${PG_PORT:-5432}
PG_UID=${PG_UID:-209}
PG_GID=${PG_GID:-209}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i486 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# Bail out if user or group isn't valid on your system
# For slackbuilds.org, assigned postgres uid/gid are 209/209
# See http://slackbuilds.org/uid_gid.txt
# Other popular choice is 26/26
if ! grep ^postgres: /etc/group 2>&1 > /dev/null; then
  echo "  You must have a postgres group to run this script."
  echo "    # groupadd -g $PG_GID postgres"
  exit 1
elif ! grep ^postgres: /etc/passwd 2>&1 > /dev/null; then
  echo "  You must have a postgres user to run this script."
  echo "    # useradd -u $PG_UID -g $PG_GID -d /var/lib/pgsql postgres"
  exit 1
fi

# Enable NLS builds using 'ENABLE_NLS=1 ./postgresql.SlackBuild'
if [ ! -z $ENABLE_NLS  ];then
  NLS=enable
else
  NLS=disable
fi

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686 -DLINUX_OOM_SCORE_ADJ=0"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686 -DLINUX_OOM_SCORE_ADJ=0"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC -DLINUX_OOM_SCORE_ADJ=0"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2 -DLINUX_OOM_SCORE_ADJ=0"
  LIBDIRSUFFIX=""
fi

set -e

rm -rf $TMP/$PRGNAM-$VERSION $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
 -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

CFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr/lib${LIBDIRSUFFIX}/$PRGNAM/$PG_VERSION \
  --sysconfdir=/etc/$PRGNAM/$PG_VERSION \
  --includedir=/usr/include \
  --datarootdir=/usr/share \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --with-openssl \
  --with-tcl \
  --with-perl \
  --with-python \
  --with-ldap \
  --with-libxml \
  --with-libxslt \
  --enable-thread-safety \
  --with-system-tzdata=/usr/share/zoneinfo \
  --$NLS-nls \
  --build=$ARCH-slackware-linux

make
make install-strip DESTDIR=$PKG
make install-docs DESTDIR=$PKG

# create symlinks to shared library for other programs to link against
( cd $PKG/usr/lib${LIBDIRSUFFIX}
  for i in $(ls $PRGNAM/$PG_VERSION/lib/libpq.so*) ; do ln -sf $i ; done
)

# Some interesting additional modules:
#   http://www.postgresql.org/docs/9.3/static/contrib.html
#
# adminpack - helper extension for pgAdmin
# pgcrypto - extension for some business applications
# hstore, ltree, xml2 - useful extensions for developers
# pg_archivecleanup, pg_standby - high availability helpers
# pg_upgrade, pg_upgrade_support - online upgrade between postgresql versions
# postgres_fdw - foreign-data wrapper for access to external PostgreSQL servers
# file_fdw - foreign-data wrapper for access to data files on filesystem

PG_EXTENSIONS=${PG_EXTENSIONS:-"adminpack pgcrypto hstore ltree xml2 pg_archivecleanup pg_standby pg_upgrade pg_upgrade_support postgres_fdw file_fdw"}

if [ "x$PG_EXTENSIONS" = "xALL" ];then
  cd $TMP/$PRGNAM-$VERSION/contrib
  make all
  make install-strip DESTDIR=$PKG
else
  for ext in $PG_EXTENSIONS; do
    cd $TMP/$PRGNAM-$VERSION/contrib/$ext
    make
    make install-strip DESTDIR=$PKG
  done
fi

cd $TMP/$PRGNAM-$VERSION

find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done

cp -a COPYRIGHT HISTORY README doc/KNOWN_BUGS doc/MISSING_FEATURES doc/TODO $PKG/usr/doc/$PRGNAM-$VERSION/
rm -rf $PKG/usr/doc/$PRGNAM-$VERSION/{man.tar.gz,man1,manl,man7,postgres.tar.gz}
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
cat $CWD/README.SBo > $PKG/usr/doc/$PRGNAM-$VERSION/README.SBo

# base database directory
# assumes you are using /var/lib/pgsql as a homedir for postgres user
mkdir -p $PKG/var/lib/pgsql/$PG_VERSION/data
chown -R postgres:postgres $PKG/var/lib/pgsql
chmod 700 $PKG/var/lib/pgsql
# permissions for DATADIR should be u=rwx (0700)
chmod 700 $PKG/var/lib/pgsql/$PG_VERSION/data

# Install init script
mkdir -p $PKG/etc/rc.d
sed -e "s%@PG_VERSION@%$PG_VERSION%" \
  -e "s%@PG_PORT@%$PG_PORT%" \
  -e "s%@LIBDIRSUFFIX@%$LIBDIRSUFFIX%" \
  $CWD/rc.$PRGNAM.new > $PKG/etc/rc.d/rc.$PRGNAM.new
chmod 0755 $PKG/etc/rc.d/rc.$PRGNAM.new

# Install logrotate script
mkdir -p $PKG/etc/logrotate.d
sed -e "s%@PG_VERSION@%$PG_VERSION%" \
  $CWD/$PRGNAM.logrotate > $PKG/etc/logrotate.d/$PRGNAM.new

mkdir -p $PKG/var/log/setup
sed -e "s%@UID@%$PG_UID%" \
  -e "s%@GID@%$PG_GID%" \
  -e "s%@PG_VERSION@%$PG_VERSION%" \
  $CWD/setup.$PRGNAM  > $PKG/var/log/setup/setup.$PRGNAM
chmod 755 $PKG/var/log/setup/setup.$PRGNAM

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
sed -e "s%@PG_VERSION@%$PG_VERSION%" \
  -e "s%@LIBDIRSUFFIX@%$LIBDIRSUFFIX%" \
  $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}