summaryrefslogtreecommitdiffstats
path: root/network/mailman/mailman.SlackBuild
blob: aceae689c8eade68f55b3f3baa0626e455670905 (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
#!/bin/bash

# Slackware build script for mailman
# Written by Eugene Suter (easuter@gmail.com)

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=mailman
VERSION=${VERSION:-2.1.23}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

# This might not matter depending on your smtp server, but it may need
# to be changed to e.g. postfix's gid if you use postfix
MAIL_GID=${MAIL_GID:-25}

# Slackware's group name for apache. For some reason other distros
# will use www or www-data (and mailman assumes this by default)
CGI_GID=${CGI_GID:-apache}

MAILMAN_UID=${MAILMAN_UID:-204}
MAILMAN_GID=${MAILMAN_GID:-204}

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

# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# Bail if user or group isn't valid on your system
if ! grep -q ^mailman: /etc/passwd 2>/dev/null; then
  printf "\n\tYou must have a \"mailman\" user and group to run this script:\n"
  printf "\t# groupadd -g $MAILMAN_GID mailman\n"
  printf "\t# useradd -u $MAILMAN_UID -d /dev/null -s /bin/false -g mailman mailman\n\n"
  exit 1
fi

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

# By default mailman will be installed to /opt, but
# the lists archives and databases directory can be
# changed to /var/mailman:
PREFIX=/opt/mailman
VAR_PREFIX=${VAR_PREFIX:-/opt/mailman/var/mailman}

# Make directories with permissions that the configure script demands,
# but make them in $PKG instead of /
mkdir -p $PKG
install -d $PKG/$PREFIX -g mailman -o root -m 2775
install -d $PKG/$VAR_PREFIX -g mailman -o root -m 2775

set -e 

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tgz
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 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/opt/mailman \
  --exec-prefix=/opt/mailman \
  --with-var-prefix=$VAR_PREFIX \
  --localstatedir=/var \
  --build=$ARCH-slackware-linux \
  --with-mail-gid=$MAIL_GID \
  --with-cgi-gid=$CGI_GID \
  --without-permcheck # Don't bomb out if dirs are missing in /

make
make install DESTDIR=$PKG

find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

mkdir -p $PKG/etc/profile.d
cat $CWD/profile.d/mailman.sh > $PKG/etc/profile.d/mailman.sh
cat $CWD/profile.d/mailman.csh > $PKG/etc/profile.d/mailman.csh
chmod 0755 $PKG/etc/profile.d/*

mkdir $PKG/etc/rc.d
cat $CWD/rc.mailman > $PKG/etc/rc.d/rc.mailman.new
chmod 0755 $PKG/etc/rc.d/rc.mailman.new

mv $PKG/opt/mailman/Mailman/mm_cfg.py $PKG/opt/mailman/Mailman/mm_cfg.py.new

mkdir -p $PKG/$PREFIX/doc/$PRGNAM-$VERSION
mkdir -p $PKG/usr/doc
cp -a ACKNOWLEDGMENTS BUGS FAQ NEWS README* STYLEGUIDE.txt TODO \
  $PKG/$PREFIX/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/$PREFIX/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
( cd $PKG/usr/doc ; ln -s $PREFIX/doc/$PRGNAM-$VERSION )

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

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