#!/bin/sh # Awk out the version from source ver="?.?.?" ver=`cat src/main.c 2>&1 | grep "char" | awk '/egg_version/ {print $4}' | sed -e 's/\"//g' | sed -e 's/\;//g'` numver=`cat src/main.c 2>&1 | grep "int" | awk '/egg_numver =/ {print $4}' | sed -e 's/\;//g'` PACKNAME=`cat pack/pack.cfg | grep "PACKNAME" | grep -v "PACKNAME:" | awk '/PACKNAME/ {print $2}'` echo "*** wraith v${ver}/${numver} builder ***" usage() { echo "Usage: $0 [-d] [-c] type" echo " -c - Cleans up old binaries/files before compile (default: off)" echo " -d - Builds a debug package. (default: off)" echo " type - One of the following: all, leaf, hub. (default: all)" } debug=0 all=0 hub=0 leaf=0 clean=0 type= while getopts cdh opt ; do case "$opt" in # m) mode="$OPTARG" ;; c) clean=1 ;; d) debug=1 ;; h) usage; exit 0 ;; *) usage; exit 1 ;; esac done shift $(($OPTIND - 1)) if test -z "$1"; then usage exit 1 else if [ $1 = "all" ]; then all=1 elif [ $1 = "leaf" ]; then leaf=1 type="leaf" elif [ $1 = "hub" ]; then hub=1 type="hub" else all=1 # usage # exit 1 fi fi if [ $debug = "1" ]; then d="d" else d="" fi if [ $all = "1" ]; then type="all" leaf=1 hub=1 fi packname=${PACKNAME} ############# CHECK FOR pack/ FILES ################# # Figure what bins we're making case `uname` in Linux) os=Linux;; FreeBSD) case `uname -r` in 5*) os=FreeBSD5;; 4*) os=FreeBSD4;; 3*) os=FreeBSD3;; esac;; OpenBSD) os=OpenBSD;; esac if test -z $os then echo "[!] Automated packaging disabled, `uname` isn't recognized" fi echo "[*] Building ${PACKNAME}::${type} for $os" # Run ./configure, then verify it's ok echo "[*] Configuring..." umask 077 >/dev/null TCLDIR=`cat pack/conf.h 2>&1 | grep "//" | awk '/TCLDIR/ {print $2}' | sed -e 's/\"//g'` if test -z ${TCLDIR} then echo "[*] Searching for TCL in default dirs (edit $packname to change)" ./configure --silent --disable-tcl-threads else echo "[*] Searching for TCL in: $TCLDIR" ./configure --silent --disable-tcl-threads --with-tcllib=${TCLDIR}/lib/libtcl8.4.a --with-tclinc=${TCLDIR}/include/tcl.h fi # make clean, just in case if [ $clean = "1" ]; then echo "[*] Cleaning up old binaries/files..." make clean > /dev/null fi _leaf() { if [ $leaf = "1" ]; then # Build leaf and check echo "[*] Building ${d}leaf..." make ${d}leaf -s if ! test -f leaf then echo "[!] ${d}leaf build failed" exit 1 fi fi } _hub() { if [ $hub = "1" ]; then # Build hub and check echo "[*] Building ${d}hub..." make ${d}hub -s if ! test -f hub then echo "[!] ${d}hub build failed" exit 1 fi fi } if [ -f stamp.hub ]; then _hub _leaf else _leaf _hub fi # Wrap it nicely up into an archive echo "[*] Packaging..." packname=`basename $packname .cfg` if [ $all = "1" ]; then fls="leaf hub" elif [ $leaf = "1" ]; then fls="leaf" elif [ $hub = "1" ]; then fls="hub" fi if test -n "$d"; then d="-debug" fi for bin in $fls do mv -f $bin $bin.$os.$numver${d} done tar -zcf $packname.$os.$numver${d}.tgz *.$os.$numver${d} rm -f *.$os.$numver${d} echo "Binaries are now in '$packname.$os.$numver${d}.tgz'." exit 0