aboutsummaryrefslogtreecommitdiff
path: root/patches/apache/apache.SlackBuild
blob: 81eea9673e153819fca67b84fc103d7a478fb614 (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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#!/bin/bash
#
# Build and package an EAPI-enabled Apache on Slackware.
# (libmm is also installed with this package)
# by:  David Cantrell <david@slackware.com>
# Maintained by:  Patrick Volkerding <volkerdi@slackware.com>
# Small changes by rhatto
#

CWD="`pwd`"

if [ -f "/etc/slackbuildrc" ]; then
  source /etc/slackbuildrc
fi

if [ -f "/root/.slackbuildrc" ]; then
  source /root/.slackbuildrc
fi

APACHE_VER=${APACHE_VER:=1.3.37}
MM_VER=${MM_VER:=1.3.1}
MODSSL_VER=${MODSSL_VER:=2.8.28-1.3.37}

PACKAGE="apache"
ARCH=${ARCH:=i486}
BUILD=${BUILD:=1rha}
TMP=${TMP:=/tmp}
SRC_DIR=${SRC:=$CWD}
REPOS=${REPOS:=$TMP}

if [ "$ARCH" == "x86_64" ]; then
  LIBDIR=/usr/lib64
else
  LIBDIR=/usr/lib
fi

RTOOL="wget"
PACKAGE_EXT="gz"
SRC="$PACKAGE"_"$APACHE_VER.tar.$PACKAGE_EXT"
URL="http://ftp.unicamp.br/pub/apache/httpd/$SRC"
MM="mm-$MM_VER.tar.gz"
MM_URL="ftp://ftp.ossp.org/pkg/lib/mm/$MM"
MODSSL="mod_ssl-$MODSSL_VER.tar.gz"
MODSSL_URL="http://www.modssl.org/source/$MODSSL"

if [ "$PACKAGE_EXT" == "bz2" ]; then
  tarflag="j"
else
  tarflag="z"
fi

SRC_DIR="$SRC_DIR/$PACKAGE"
mkdir -p $SRC_DIR

if [ "$RTOOL" == "wget" ]; then

  if [ ! -f "$SRC_DIR/$SRC" ]; then
    wget "$URL" -O "$SRC_DIR/$SRC"
  fi

  if [ ! -f "$SRC_DIR/$MM" ]; then
    wget "$MM_URL" -O "$SRC_DIR/$MM"
  fi

  if [ ! -f "$SRC_DIR/$MODSSL" ]; then
    wget "$MODSSL_URL" -O "$SRC_DIR/$MODSSL"
  fi

fi

TMP="$TMP/$PACKAGE"
rm -rf $TMP
mkdir -p $TMP
cd $TMP

PKG=$TMP/package-$PACKAGE
mkdir -p $PKG
( cd $PKG ; explodepkg $CWD/_apache.tar.gz )

cd $TMP
rm -rf mm-$MM_VER apache_$APACHE_VER mod_ssl-$MODSSL_VER
tar xvzf $SRC_DIR/$MM
tar xvzf $SRC_DIR/$SRC
tar xvzf $SRC_DIR/$MODSSL

# build libmm
cd $TMP/mm-$MM_VER
chown -R root.root .
./configure \
  --prefix=/usr \
  --enable-static \
  --libdir=$LIBDIR \
  --enable-shared
make -j3

# EAPI is not part of Apache by default, it comes from mod_ssl.  It
# allows us to build and package mod_ssl seperately.  We pull out the
# EAPI patch and apply it to Apache so that our build will have that
# support enabled.  We also apply a few other patches from mod_ssl.
( cd $TMP/apache_$APACHE_VER
  cat $TMP/mod_ssl-$MODSSL_VER/pkg.eapi/eapi.patch | patch -p0
  cat $TMP/mod_ssl-$MODSSL_VER/pkg.addon/addon.patch | patch -p0 )
( cd $TMP/mod_ssl-$MODSSL_VER/pkg.eapi
  cp -a *.h $TMP/apache_$APACHE_VER/src/include
  cp -a *.c $TMP/apache_$APACHE_VER/src/ap )
( cd $TMP/mod_ssl-$MODSSL_VER/pkg.addon
  cp -a *.c $TMP/apache_$APACHE_VER/src/modules/extra
  cp -a *.html $TMP/apache_$APACHE_VER/htdocs/manual/mod )

# build apache
cd $TMP/apache_$APACHE_VER
# Stop using old obsolete DB1.
zcat $CWD/apache.dbm.diff.gz | patch -p1 --verbose || exit 1

if [ "$APACHE_VER" == "1.3.35" ]; then
  # Clearly 1.3.35 got minimal testing...
  zcat $CWD/apache_1.3.35.stupid.include.bug.diff.gz | patch -p1 --verbose || exit 1
fi

chown -R root.root .
cat $CWD/config.layout.slack >> config.layout
EAPI=SYSTEM \
./configure \
  --with-layout=Slackware \
  --enable-module=most \
  --enable-shared=max \
  --manualdir=/var/www/htdocs/manual \
  --enable-rule=eapi
make -j3

# install libmm
cd $TMP/mm-$MM_VER
make DESTDIR=$PKG install
chmod 755 $PKG/usr/lib/libmm.so.*
mkdir -p $PKG/usr/doc/mm-$MM_VER
cp -a \
  ChangeLog INSTALL LICENSE PORTING README THANKS \
  $PKG/usr/doc/mm-$MM_VER

# install apahe
cd $TMP/apache_$APACHE_VER
make install root=$PKG
mkdir -p $PKG/usr/doc/apache-$APACHE_VER
cp -a \
  ABOUT_APACHE Announcement INSTALL KEYS LICENSE README README.configure \
  $PKG/usr/doc/apache-$APACHE_VER
cp -a \
  $TMP/mod_ssl-$MODSSL_VER/pkg.eapi/README.EAPI \
  $PKG/usr/doc/apache-$APACHE_VER

# we do not want these in the package, if they don't exist on the system
# then we copy the default one in place as the real file
( cd $PKG/etc/apache
  rm -rf access.conf httpd.conf magic mime.types srm.conf )

# we add a block to the end of httpd.conf and touch zero length files
# for the SSL and PHP module packages
cat << EOF >> $PKG/etc/apache/httpd.conf.default

# By default, all external Apache modules are disabled.  To enable a particular
# module for Apache, make sure the necessary packages are installed.  Then
# uncomment the appropriate Include line below, save the file, and restart
# Apache.  Note that some modules may need additional configuration steps.  For
# example, mod_ssl requires a site certificate which you may need to generate.
#
# Lastly, if you remove a module package, be sure to edit this file and comment
# out the appropriate Include line.

# ==> mod_php configuration settings <==
#
# PACKAGES REQUIRED:  openssl-solibs (A series) and/or openssl (N series),
#                     mysql (AP series), gmp (L series), mhash (L series),
#                     and apache (N series)
#
#Include /etc/apache/mod_php.conf

# ==> mod_ssl configuration settings <==
#
# PACKAGES REQUIRED:  apache (N series) and openssl (N series)
#
#Include /etc/apache/mod_ssl.conf

EOF

# some housekeeping
( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
gzip -9 $PKG/usr/man/*/*
chown -R root.bin $PKG/usr/bin
chown -R root.bin $PKG/usr/sbin

# This is a point of overlap with the mod_ssl package, so we'll make it
# a symlink so that it's less of a trap for the unsuspecting admin:
( cd $PKG/usr/sbin
  mv apachectl apachectl-standard
  # Better to use some custom code in doinst.sh.
  #ln -sf apachectl-standard apachectl
)

# Add slack-desc:
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

# make the package
cd $PKG
makepkg -l y -c n $REPOS/apache-$APACHE_VER-$ARCH-$BUILD.tgz

if [ "$CLEANUP" == "yes" ]; then
  rm -rf $TMP
fi