aboutsummaryrefslogtreecommitdiff
path: root/dev/python/mod_python/mod_python.build
blob: 0f5d3a672548c028db2334964b7eb9b9c3c1bd85 (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
#!/bin/bash
#
# build script for mod_python
# by rhatto at riseup.net
# build it with slacktrack, example:
#
#   slacktrack -jefkzp "mod_python-2.7.11-x86_64-1rha.tgz" "./mod_python.build"
# 

CWD="`pwd`"

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

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

# default settings
PACKAGE="mod_python"
VERSION=${VERSION:=2.7.11}
ARCH="${ARCH:=x86_64}"
BUILD=${BUILD:=6rha}
SRC_DIR=${SRC:=$CWD}
TMP=${TMP:=/tmp}

# -------  error codes for createpkg  --------------
ERROR_WGET=31;      ERROR_MAKE=32;      ERROR_INSTALL=33
ERROR_MD5=34;       ERROR_CONF=35;      ERROR_HELP=36
ERROR_TAR=37;       ERROR_MKPKG=38;     ERROR_GPG=39
ERROR_PATCH=40

if [ "$ARCH" == "x86_64" ]; then
  export CFLAGS="-fPIC"
  export LDFLAGS="-L/lib64 -L/usr/lib64 -fPIC"
  LIBDIR=/usr/lib64
else
  LIBDIR=/usr/lib
fi

RTOOL="wget"
PACKAGE_EXT="tgz"
SRC="$PACKAGE-$VERSION.$PACKAGE_EXT"
URL="http://ftp.unicamp.br/pub/apache/httpd/modpython/$SRC"

SRC_DIR="$SRC_DIR/$PACKAGE"

if [ ! -d "$SRC_DIR" ]; then
  mkdir -p $SRC_DIR
fi

if [ "$RTOOL" == "wget" ] && [ ! -f "$SRC_DIR/$SRC" ]; then
  wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
fi

TMP="$TMP/$PACKAGE"

if [ ! -d "$TMP" ]; then
  mkdir -p $TMP
fi

cd $TMP

tar xvf $SRC_DIR/$SRC || exit $ERROR_TAR
cd $PACKAGE-$VERSION

if [ -f "$CWD/$PACKAGE-$VERSION.diff" ]; then
  patch -p1 < $CWD/$PACKAGE-$VERSION.diff || exit $ERROR_PATCH
fi

if [ -f "$CWD/$PACKAGE-$VERSION-$ARCH.diff" ]; then
  patch -p1 < $CWD/$PACKAGE-$VERSION-$ARCH.diff || exit $ERROR_PATCH
fi

./configure || exit $ERROR_CONF

# coxa, favor corrigir!
if [ "$ARCH" == "x86_64" ]; then
  sed -e 's/^OPT=$/OPT=-fPIC -DEAPI/' src/Makefile > src/Makefile.new
  sed -e 's/^PY_STD_LIB=\/usr\/lib/PY_STD_LIB=\/usr\/lib64/' src/Makefile.new > src/Makefile
  # mv src/Makefile.new src/Makefile
  mv lib lib64
else
  sed -e 's/^OPT=$/OPT=-DEAPI/' src/Makefile > src/Makefile.new
  mv src/Makefile.new src/Makefile
fi

make || exit $ERROR_MAKE
make install || exit $ERROR_INSTALL

# strip
strip --strip-unneeded /usr/libexec/apache/mod_python.so

CWD="`pwd`"

mkdir /install

cat << EOF > /install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in.  You must
# make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':'.

          |-----handy-ruler-----------------------------------------------------|
mod_python: mod_python (Apache/Python Integration)
mod_python:
mod_python: Mod_python is an Apache module that embeds the Python interpreter
mod_python: within the server. With mod_python you can write web-based
mod_python: applications in Python that will run many times faster than
mod_python: traditional CGI and will have access to advanced features such as
mod_python: ability to retain database connections and other data between hits
mod_python: and access to Apache internals
mod_python:
mod_python:
mod_python:
EOF

# docs
mkdir -p /usr/doc/$PACKAGE-$VERSION

for file in COPYRIGHT CREDITS NEWS README; do
  cp $CWD/$file* /usr/doc/$PACKAGE-$VERSION/
done

# install script
echo '( echo Now dont forget to edit your main config and add )' > /install/doinst.sh
echo '( echo   LoadModule python_module /usr/libexec/apache/mod_python.so )' >> /install/doinst.sh
echo '( echo If your configuration uses ClearModuleList, then also add )' >> /install/doinst.sh
echo '( echo   AddModule mod_python.c )' >> /install/doinst.sh