#!/bin/bash
# Script to make a python .tce extension from source
# Requires the compiletc.tce, bash-3.2.tce extensions to build.
# License: Python license.  www.python.org/psf/license/

# -03 is the Python default
CFLAGS="-march=i486 -mtune=i686 -03 -pipe"
CXXFLAGS="-march=i486 -mtune=i686 -03 -pipe"

NAME=python
VERSION=2.5.2
DOWNLOAD=http://www.python.org/ftp/python/2.5.2
SOURCE=Python-"$VERSION".tar.bz2
MD5SUM=afb5451049eda91fbde10bd5a4b7fadc
TMPDIR=/usr/local/"$NAME"21654
PKG="$TMPDIR"/pkg
DEV="$TMPDIR"/dev
MIN="$TMPDIR"/min
LIST="$TMPDIR"/"$NAME".list
LIST1="$TMPDIR"/"$NAME1".list
LIST2="$TMPDIR"/"$NAME2".list
SRCDIR=/tmp
DIALOG=dialog

download() {
cd "$SRCDIR"
if [ -e "$SOURCE" ]; then
if [ $(md5sum "$SOURCE" | cut -c1-32) != "$MD5SUM" ]; then
rm "$SOURCE"
fi
fi
if [ ! -e "$SOURCE" ]; then
wget "$DOWNLOAD"/"$SOURCE"
fi
if [ $(md5sum "$SOURCE" | cut -c1-32) = "$MD5SUM" ]; then
echo "md5sum passed."
else
echo "Download failed. aborting"
exit 1;
fi
}



build_source() {
tar xjvf "$SRCDIR"/"$SOURCE" -C "$TMPDIR"
cd "$TMPDIR"/Python-"$VERSION"
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig
./configure --prefix=/usr/local --enable-shared --with-ncurses --with-threads
make
make DESTDIR="$PKG" install

cd "$PKG"
find . | xargs file | grep "executable" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip -g 2> /dev/null
rm -r "$PKG"/usr/local/share
}

split_package() {
cd "$PKG"
mkdir -p "$MIN"/usr/local/lib
cp "$PKG"/usr/local/lib/libpython* "$MIN"/usr/local/lib/
mkdir -p "$MIN"/usr/local/bin
cp "$PKG"/usr/local/bin/{python,python2.5} "$MIN"/usr/local/bin/
mkdir -p "$MIN"/usr/local/lib/python2.5
cp "$PKG"/usr/local/lib/python2.5/{BaseHTTPServer.py,mimetools.py,rfc822.py,cgi.py,urllib.py,urlparse.py,zipfile.py,ConfigParser.py,SocketServer.py,StringIO.py,UserDict.py,__future__.py,compileall.py,copy.py,copy_reg.py,dis.py,fnmatch.py,getopt.py,glob.py,hashlib.py,inspect.py,linecache.py,md5.py,opcode.py,optparse.py,os.py,pickle.py,platform.py,popen2.py,posixpath.py,py_compile.py,random.py,re.py,repr.py,sha.py,site.py,socket.py,sre.py,sre_compile.py,sre_constants.py,sre_parse.py,stat.py,string.py,struct.py,subprocess.py,tempfile.py,textwrap.py,token.py,tokenize.py,traceback.py,types.py,warnings.py} "$MIN"/usr/local/lib/python2.5/
mkdir -p "$MIN"/usr/local/lib/python2.5/lib-dynload
cp "$PKG"/usr/local/lib/python2.5/lib-dynload/{_md5.so,_sha.so,_sha256.so,_sha512.so,_random.so,_socket.so,_struct.so,array.so,binascii.so,cStringIO.so,fcntl.so,grp.so,itertools.so,math.so,operator.so,select.so,strop.so,syslog.so,time.so,zlib.so} "$MIN"/usr/local/lib/python2.5/lib-dynload/
mkdir -p "$MIN"/usr/local/lib/python2.5/site-packages
cp "$PKG"/usr/local/lib/python2.5/site-packages/README "$MIN"/usr/local/lib/python2.5/site-packages/README1
mkdir -p "$DEV"/usr/local/bin
mv "$PKG"/usr/local/bin/{idle,python-config,python2.5-config,smtpd.py} "$DEV"/usr/local/bin/
mv "$PKG"/usr/local/include "$DEV"/usr/local/
mkdir -p "$DEV"/usr/local/lib/python2.5
mv "$PKG"/usr/local/lib/python2.5/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/
mv "$PKG"/usr/local/lib/python2.5/config "$DEV"/usr/local/lib/python2.5/
mkdir -p "$DEV"/usr/local/lib/python2.5/bsddb
mv "$PKG"/usr/local/lib/python2.5/bsddb/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/bsddb/
mkdir -p "$DEV"/usr/local/lib/python2.5/bsddb/test
mv "$PKG"/usr/local/lib/python2.5/bsddb/test/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/bsddb/test/
mkdir -p "$DEV"/usr/local/lib/python2.5/compiler
mv "$PKG"/usr/local/lib/python2.5/compiler/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/compiler/
mkdir -p "$DEV"/usr/local/lib/python2.5/ctypes
mv "$PKG"/usr/local/lib/python2.5/ctypes/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/ctypes/
mv "$PKG"/usr/local/lib/python2.5/ctypes/test "$DEV"/usr/local/lib/python2.5/ctypes/
mkdir -p "$DEV"/usr/local/lib/python2.5/ctypes/macholib
mv "$PKG"/usr/local/lib/python2.5/ctypes/macholib/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/ctypes/macholib
mkdir -p "$DEV"/usr/local/lib/python2.5/curses
mv "$PKG"/usr/local/lib/python2.5/curses/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/curses/
mkdir -p "$DEV"/usr/local/lib/python2.5/distutils
mv "$PKG"/usr/local/lib/python2.5/distutils/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/distutils/
mkdir -p "$DEV"/usr/local/lib/python2.5/distutils/tests
mv "$PKG"/usr/local/lib/python2.5/distutils/tests/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/distutils/tests/
mkdir -p "$DEV"/usr/local/lib/python2.5/distutils/command
mv "$PKG"/usr/local/lib/python2.5/distutils/command/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/distutils/command/
mkdir -p "$DEV"/usr/local/lib/python2.5/email
mv "$PKG"/usr/local/lib/python2.5/email/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/email/
mkdir -p "$DEV"/usr/local/lib/python2.5/email/test
mv "$PKG"/usr/local/lib/python2.5/email/test/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/email/test/
mkdir -p "$DEV"/usr/local/lib/python2.5/email/mime
mv "$PKG"/usr/local/lib/python2.5/email/mime/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/email/mime/
mkdir -p "$DEV"/usr/local/lib/python2.5/encodings
mv "$PKG"/usr/local/lib/python2.5/encodings/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/encodings/
mkdir -p "$DEV"/usr/local/lib/python2.5/hotshot
mv "$PKG"/usr/local/lib/python2.5/hotshot/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/hotshot/
mkdir -p "$DEV"/usr/local/lib/python2.5/idlelib
mv "$PKG"/usr/local/lib/python2.5/idlelib/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/idlelib/
mkdir -p "$DEV"/usr/local/lib/python2.5/lib-tk
mv "$PKG"/usr/local/lib/python2.5/lib-tk/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/lib-tk/
mkdir -p "$DEV"/usr/local/lib/python2.5/logging
mv "$PKG"/usr/local/lib/python2.5/logging/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/logging/
mkdir -p "$DEV"/usr/local/lib/python2.5/plat-linux2
mv "$PKG"/usr/local/lib/python2.5/plat-linux2/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/plat-linux2/
mkdir -p "$DEV"/usr/local/lib/python2.5/sqlite3
mv "$PKG"/usr/local/lib/python2.5/sqlite3/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/sqlite3/
mkdir -p "$DEV"/usr/local/lib/python2.5/sqlite3/test
mv "$PKG"/usr/local/lib/python2.5/sqlite3/test/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/sqlite3/test/
mkdir -p "$DEV"/usr/local/lib/python2.5/test
mv "$PKG"/usr/local/lib/python2.5/test/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/test/
mkdir -p "$DEV"/usr/local/lib/python2.5/wsgiref
mv "$PKG"/usr/local/lib/python2.5/wsgiref/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/wsgiref/
mkdir -p "$DEV"/usr/local/lib/python2.5/xml
mv "$PKG"/usr/local/lib/python2.5/xml/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/xml/
mkdir -p "$DEV"/usr/local/lib/python2.5/xml/dom
mv "$PKG"/usr/local/lib/python2.5/xml/dom/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/xml/dom/
mkdir -p "$DEV"/usr/local/lib/python2.5/xml/etree
mv "$PKG"/usr/local/lib/python2.5/xml/etree/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/xml/etree/
mkdir -p "$DEV"/usr/local/lib/python2.5/xml/parsers
mv "$PKG"/usr/local/lib/python2.5/xml/parsers/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/xml/parsers/
mkdir -p "$DEV"/usr/local/lib/python2.5/xml/sax
mv "$PKG"/usr/local/lib/python2.5/xml/sax/{*.pyc,*.pyo} "$DEV"/usr/local/lib/python2.5/xml/sax/

}

make_extension() {
cd "$PKG"
find . -not -type d > "$LIST"
tar -T "$LIST" -czvf /home/tc/"$NAME".tcel
cd "$DEV"
find . -not -type d > "$LIST1"
tar -T "$LIST1" -czvf /home/tc/"$NAME"-devs.tcel
cd "$MIN"
find . -not -type d > "$LIST2"
tar -T "$LIST2" -czvf /home/tc/"$NAME"-minimal.tcel
}

if [ -e "$TMPDIR" ]; then
rm -rf "$TMPDIR" 
fi
mkdir -p "$PKG" || exit 1
mkdir -p "$DEV" || exit 1
mkdir -p "$MIN" || exit 1
download || exit 1
build_source || exit 1
split_package || exit 1
make_extension || exit 1
echo ""$NAME"-"$VERSION".tcel, "$NAME"-"$VERSION"-minimal.tcel, and "$NAME"-"$VERSION"-devs.tcel is now in your home directory."
