#!/bin/sh
#
# Create a super distribution of TclHttpd, Tcl, Tcllib, and Thread

WELCH=/panfs/panwest/home/welch

HTTPD_VERSION=3.5.1
HTTPD_TAG=tclhttpd-3-5-rel-1
HTTPD_TAG=HEAD
WIN_VERSION=351
DISTDIR=${WELCH}/dist
SUPER_DIR=${DISTDIR}/tclhttpd${HTTPD_VERSION}-dist

TCL_VERSION=8.4.5
TCL_DIST=${DISTDIR}/tcl${TCL_VERSION}-src.tar.gz

TCLLIB_VERSION=1.6
TCLLIB_DIST=${DISTDIR}/tcllib-${TCLLIB_VERSION}.tar.gz

# There is a configure error in CVS right now
#THREAD_VERSION=2.6
#THREAD_WIN_VERSION=26
#THREAD_TAG=thread-2-6
#THREAD_TAG=HEAD

THREAD_VERSION=2.5.2
THREAD_WIN_VERSION=252
THREAD_DIST=${DISTDIR}/thread-${THREAD_VERSION}.tar.gz
#THREAD_TAG=thread-2-6
#THREAD_TAG=HEAD

SCRATCH=${WELCH}/scratch
mkdir -p ${SCRATCH}
cd ${SCRATCH}

echo "*** Checkout tclhttpd ${HTTPD_VERSION} ***"

rm -rf ${SCRATCH}/tclhttpd${HTTPD_VERSION}
cvs -d welch@cvs.sourceforge.net:/cvsroot/tclhttpd checkout -r ${HTTPD_TAG} tclhttpd 
#(cd tclhttpd ; cvs -d welch@cvs.sourceforge.net:/cvsroot/tclpro checkout config)
mv tclhttpd tclhttpd${HTTPD_VERSION}
chmod -R a+r tclhttpd${HTTPD_VERSION}
chmod a+x tclhttpd${HTTPD_VERSION}/bin/httpd.tcl
chmod a-x tclhttpd${HTTPD_VERSION}/bin/httpdthread.tcl
chmod a+x tclhttpd${HTTPD_VERSION}/htdocs/cgi-bin/junk*
chmod a+x tclhttpd${HTTPD_VERSION}/htdocs/cgi-bin/env
find tclhttpd${HTTPD_VERSION}/htdocs -name "*.cgi" -exec chmod a+x {} \;
cp tclhttpd${HTTPD_VERSION}/license.terms tclhttpd${HTTPD_VERSION}/htdocs
mkdir tclhttpd${HTTPD_VERSION}/htdocs/links
cp tclhttpd${HTTPD_VERSION}/README tclhttpd${HTTPD_VERSION}/htdocs/links/README.txt
cp tclhttpd${HTTPD_VERSION}/certs/README.ssl tclhttpd${HTTPD_VERSION}/htdocs/links/README.ssl.txt
cp tclhttpd${HTTPD_VERSION}/WHATSNEW tclhttpd${HTTPD_VERSION}/htdocs/links/WHATSNEW.txt
cp tclhttpd${HTTPD_VERSION}/INSTALL tclhttpd${HTTPD_VERSION}/htdocs/links/INSTALL.txt

echo "*** Autoconf tclhttpd ${TCLHTTPD_VERSION} ***"

cd tclhttpd${HTTPD_VERSION}
autoconf
cd ..

#echo "*** Checkout thread ${THREAD_VERSION} ***"

#rm -rf ${SCRATCH}/thread${THREAD_VERSION}
#cvs -d welch@cvs.sourceforge.net:/cvsroot/tcl checkout -r ${THREAD_TAG} thread
###(cd thread ; cvs -d welch@cvs.sourceforge.net:/cvsroot/tclpro checkout config)
#mv thread thread${THREAD_VERSION}
#chmod -R a+r thread${THREAD_VERSION}

echo "*** Untar thread ${THREAD_VERSION} ***"
rm -rf ${SCRATCH}/thread${THREAD_VERSION}
gunzip < ${THREAD_DIST} | (cd ${SCRATCH} ; tar xf -)

#echo "*** Autoconf thread ${THREAD_VERSION} ***"

#cd thread-${THREAD_VERSION}
#autoconf
#cd ..

cd tclhttpd${HTTPD_VERSION}/DIST_build

#sh ../configure --enable-gcc --with-tcl=/home/welch/cvs/tcl8.3/unix/solaris \
#	--prefix=/usr/local 

SRCDIR=..

echo "*** Copy bundle into ${SUPER_DIR} ***"

rm -rf ${SUPER_DIR}
mkdir ${SUPER_DIR}
mkdir ${SUPER_DIR}/tclhttpd${HTTPD_VERSION}

echo "*** Copy tclhttpd${HTTPD_VERSION} into ${SUPER_DIR} ***"
tclsh ${SRCDIR}/bin/CopyDist ${SRCDIR} ${SUPER_DIR}/tclhttpd${HTTPD_VERSION}

echo "*** Copy thread-${THREAD_VERSION} into ${SUPER_DIR} ***"
mkdir ${SUPER_DIR}/thread-${THREAD_VERSION}
tclsh ${SRCDIR}/bin/CopyDist ${SRCDIR}/../thread-${THREAD_VERSION} ${SUPER_DIR}/thread-${THREAD_VERSION}

echo "*** Gunzip ${TCL_DIST} into ${SUPER_DIR} ***"
gunzip < ${TCL_DIST} | (cd ${SUPER_DIR} ; tar xf -)
echo "*** Gunzip ${TCLLIB_DIST} into ${SUPER_DIR} ***"
gunzip < ${TCLLIB_DIST} | (cd ${SUPER_DIR} ; tar xf -)

mkdir ${SUPER_DIR}/build
########cp CONFIG MAKE ${SUPER_DIR}/build

cp README ${SUPER_DIR}
sed -e s/@HTTPD_VERSION@/$HTTPD_VERSION/ \
    -e s/@TCL_VERSION@/$TCL_VERSION/ \
    -e s/@TCLLIB_VERSION@/$TCLLIB_VERSION/ \
    -e s/@THREAD_VERSION@/$THREAD_VERSION/ \
        < Makefile.boot > ${SUPER_DIR}/Makefile

# Copy select tcllib man pages into the htdocs tree

TCLLIB_MODULES="./base64 ./cmdline ./counter ./doctools ./fileutil ./html ./md5 ./md5crypt ./ncgi ./mime ./textutil ./uri"
for f in ${TCLLIB_MODULES}; do
  cp ${SUPER_DIR}/tcllib-${TCLLIB_VERSION}/modules/$f/*.man \
        ${SUPER_DIR}/tclhttpd${HTTPD_VERSION}/htdocs/man
done

# Unbundled packages

echo "*** Creating ${DISTDIR}/tclhttpd${HTTPD_VERSION}.tar.gz ***"
(cd ${SUPER_DIR} ; tar cf - ./tclhttpd${HTTPD_VERSION} | gzip > ${DISTDIR}/tclhttpd${HTTPD_VERSION}.tar.gz)
echo "*** Creating ${DISTDIR}/tclhttpd${WIN_VERSION}.zip ***"
(cd ${SUPER_DIR} ; zip -9 -r -o  ${DISTDIR}/tclhttpd${WIN_VERSION}.zip  tclhttpd${HTTPD_VERSION})

#echo "*** Creating ${DISTDIR}/thread-${THREAD_VERSION}.tar.gz ***"
#(cd ${SUPER_DIR} ;tar cf - ./thread-${THREAD_VERSION} | gzip > ${DISTDIR}/thread-${THREAD_VERSION}.tar.gz)
#echo "*** Creating ${DISTDIR}/thread-${THREAD_WIN_VERSION}.zip ***"
#(cd ${SUPER_DIR} ;zip -9 -r -o  ${DISTDIR}/thread-${THREAD_WIN_VERSION}.zip thread-${THREAD_VERSION})

# Bundled packages

echo "*** Creating ${DISTDIR}/tclhttpd${HTTPD_VERSION}-dist.tar.gz ***"
(cd ${DISTDIR}; tar cf - ./tclhttpd${HTTPD_VERSION}-dist | gzip > tclhttpd${HTTPD_VERSION}-dist.tar.gz)
echo "*** Creating ${DISTDIR}/tclhttpd${WIN_VERSION}.zip ***"
(cd ${DISTDIR} ; zip -9 -r -o  tclhttpd${WIN_VERSION}dist.zip  tclhttpd${HTTPD_VERSION}-dist)

# Starkit

echo "*** Creating ${DISTDIR}/tclhttpd${HTTPD_VERSION}.kit ***"
VFS_DIR=${DISTDIR}/tclhttpd${HTTPD_VERSION}.vfs
mkdir ${VFS_DIR}
mkdir ${VFS_DIR}/lib
mkdir ${VFS_DIR}/lib/tclhttpd${HTTPD_VERSION}
mkdir ${VFS_DIR}/lib/tcllib

cd ${SUPER_DIR}/tclhttpd${HTTPD_VERSION}
tar cf - ./bin ./custom ./htdocs | (cd ${VFS_DIR} ; tar xf -)
if [ -e ${VFS_DIR}/htdocs/java ]; then
  # Save space
  rm -rf ${VFS_DIR}/htdocs/java
fi

cd ${SUPER_DIR}/tclhttpd${HTTPD_VERSION}/lib
tar cf - . | (cd ${VFS_DIR}/lib/tclhttpd${HTTPD_VERSION} ; tar xf -)

cd ${SUPER_DIR}/tcllib-${TCLLIB_VERSION}/modules
tar cf - ${TCLLIB_MODULES} | \
        (cd ${VFS_DIR}/lib ; tar xf -)

cat > ${VFS_DIR}/main.tcl << EOF
package require starkit
starkit::startup
source [file join \$starkit::topdir bin/httpd.tcl]
EOF

cd ${DISTDIR}
tclkit ~welch/bin/sdx wrap tclhttpd${HTTPD_VERSION}.kit
