#!/bin/bash INSTALLPREFIX="/usr/local/freetdm" VERSION="" NODOCS="NO" for i in $* do case $i in --version=*) VERSION=`echo $i | sed 's/[-a-zA-Z0-9]*=//'` ;; --prefix=*) INSTALLPREFIX=`echo $i | sed 's/[-a-zA-Z0-9]*=//'` ;; --nodocs) NODOCS="YES" ;; *) # unknown option echo "Unknown option $i" exit ;; esac done if [ "x$VERSION" = "x" ] then echo "Provide a version number with --version=" exit 1 fi arch=$(uname -m) # defs LIBSNG_ISDN_URL=ftp://ftp.sangoma.com/linux/libsng_isdn LIBSNG_ISDN_NAME=libsng_isdn-7-current LIBSNG_SS7_URL=ftp://ftp.sangoma.com/linux/libsng_ss7 LIBSNG_SS7_NAME=libsng_ss7-3-current LIBSNG_ISDN_DIR="$LIBSNG_ISDN_NAME.$arch" LIBSNG_SS7_DIR="$LIBSNG_SS7_NAME.$arch" # download and decompress a tarball # $1 = prefix_url, such as ftp://ftp.sangoma.com/foo/bar # $2 = package name, such as libsng_isdn-7.0.0.x86_64 function download() { wget $1/$2.tgz if [ $? = 0 ] then tardir=$(tar -tf $2.tgz | head -n1 | sed 's,\/,,g') tar -xvzf $2.tgz || echo "FAILED to decompress $2.tgz" if [ "$tardir" != "$2" ] then mv $tardir $2 || echo "FAILED to move $tardir to $2" fi echo "SUCCESSFULLY downloaded $2" else echo "FAILED to download $1/$2.tgz" fi } # download and build libsng-ss7 fullname="$LIBSNG_ISDN_NAME.$arch" if [ -d $fullname ] then echo "skipping isdn download since $fullname directory already exists ... remove if you want this step to be performed" else download $LIBSNG_ISDN_URL $fullname fi cd $LIBSNG_ISDN_DIR make DESTDIR=$INSTALLPREFIX install || echo "Failed to build libsng-isdn" cd .. # download and build libsng-ss7 fullname="$LIBSNG_SS7_NAME.$arch" if [ -d $fullname ] then echo "skipping ss7 download since $fullname directory already exists ... remove if you want this step to be performed" else download $LIBSNG_SS7_URL $fullname fi cd $LIBSNG_SS7_DIR make DESTDIR=$INSTALLPREFIX install || echo "Failed to build libsng-ss7" cd .. if [ ! -d $INSTALLPREFIX ] then mkdir -p $INSTALLPREFIX || exit 1 fi if [ ! -d $INSTALLPREFIX/bin-releases ] then mkdir -p $INSTALLPREFIX/bin-releases || exit 1 fi # attempt to compile freetdm echo "Build freetdm and mod_freetdm now..." make all mod_freetdm || exit 1 echo "freetdm built OK" major=$(echo "$VERSION" | cut -d. -f1) minor=$(echo "$VERSION" | cut -d. -f2) micro=$(echo "$VERSION" | cut -d. -f3) release="freetdm-$VERSION" # ABI compatibility check if [ -x /usr/local/bin/ftdm_abi_check.py ]; then /usr/local/bin/ftdm_abi_check.py --release_path=$(pwd) --archive_path=$INSTALLPREFIX/bin-releases --version=$VERSION if [ $? -ne 0 ]; then echo "ABI compabitility test failed, not creating release. Either increment the major version number or fix the interface." exit 1 fi else echo -ne "\n\nWARNING: /usr/local/bin/ftdm_abi_check.py not found, skipping ABI compatibility test\n\n" fi if [ $NODOCS = "NO" ] then make dox || exit 1 fi echo "Creating $release ($major.$minor.$micro) at $INSTALLPREFIX/$release (directory will be removed if exists already) ... " mkdir -p $INSTALLPREFIX/$release $INSTALLPREFIX/bin-releases/$major/$release cp -r ./* $INSTALLPREFIX/$release # copy ABI compatibility reports to release if [ -d compat_reports ]; then cp -r ./compat_reports $INSTALLPREFIX/$release rm -rf ./compat_reports fi cp -r ./* $INSTALLPREFIX/bin-releases/$major/$release cp -r ./.libs $INSTALLPREFIX/bin-releases/$major/$release find $INSTALLPREFIX/$release -name .libs -exec rm -rf {} \; find $INSTALLPREFIX/$release -name .deps -exec rm -rf {} \; find $INSTALLPREFIX/$release -name *.so -exec rm -rf {} \; find $INSTALLPREFIX/$release -name *.lo -exec rm -rf {} \; rm -rf $INSTALLPREFIX/$release/{$LIBSNG_ISDN_DIR,$LIBSNG_SS7_DIR,*.tgz} # clean the source tree rm -rf $LIBSNG_ISDN_DIR $LIBSNG_SS7_DIR make clean make mod_freetdm-clean tar -C $INSTALLPREFIX -czf $INSTALLPREFIX/$release.tar.gz $release/