summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/tools/build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/tools/build.sh')
-rwxr-xr-xcrypto/heimdal/tools/build.sh212
1 files changed, 212 insertions, 0 deletions
diff --git a/crypto/heimdal/tools/build.sh b/crypto/heimdal/tools/build.sh
new file mode 100755
index 0000000..fad8608
--- /dev/null
+++ b/crypto/heimdal/tools/build.sh
@@ -0,0 +1,212 @@
+#!/bin/sh
+#
+# Build many combinations of kth-krb/heimdal/openssl
+#
+# $Id: build.sh,v 1.8 2003/04/17 12:55:02 lha Exp $
+
+opt_n= #:
+make_f= #-j
+
+heimdal_versions="0.5.2 0.6pre4"
+krb4_versions="1.2.2"
+openssl_versions="0.9.6i 0.9.7a 0.9.7b"
+
+make_check_version=".*heimdal-0.6.*"
+
+# 0.5 dont eat 0.9.7
+dont_build="openssl-0.9.7.*heimdal-0.5.*"
+# 1.2 dont eat 0.9.7
+dont_build="openssl-0.9.7.*krb4-1.2.* ${dont_build}"
+#yacc problems
+dont_build="openssl-0.9.6.*heimdal-0.5.*osf4.* ${dont_build}"
+#local openssl 09.7 and broken kuser/Makefile.am
+dont_build="openssl-0.9.6.*heimdal-0.5.*freebsd4.8.* ${dont_build}"
+failed=
+
+# Allow override
+for a in $HOME . /etc ; do
+ [ -f $a/.heimdal-build ] && . $a/.heimdal-build
+done
+
+targetdir=${targetdir:-/scratch/heimdal-test}
+logfile="${targetdir}/buildlog"
+
+distdirs="${distdirs} /afs/su.se/home/l/h/lha/Public/openssl"
+distdirs="${distdirs} /afs/pdc.kth.se/public/ftp/pub/heimdal/src"
+distdirs="${distdirs} /afs/pdc.kth.se/public/ftp/pub/heimdal/src/snapshots"
+distdirs="${distdirs} /afs/pdc.kth.se/public/ftp/pub/krb/src"
+
+
+logprint () {
+ d=`date '+%Y-%m-%d %H:%M:%S'`
+ echo "${d}: $*"
+ echo "${d}: --- $*" >> ${logfile}
+}
+
+logerror () {
+ echo "$*"
+ exit 1
+}
+
+find_unzip_prog () {
+ unzip_prog=
+ oldIFS="$IFS"
+ IFS=:
+ set -- $PATH
+ IFS="$oldIFS"
+ for a in $* ; do
+ if [ -x $a/gzip ] ; then
+ unzip_prog="$a/gzip -dc"
+ break
+ elif [ -x $a/gunzip ] ; then
+ unzip_prog="$a/gunzip -c"
+ break
+ fi
+ done
+ [ "$unzip_prog" = "" ] && logerror failed to find unzip program
+}
+
+find_canon_name () {
+ canon_name=
+ for a in ${distdirs} ; do
+ if [ -f $a/config.guess ] ; then
+ canon_name=`$a/config.guess`
+ fi
+ if [ "${canon_name}" != "" ] ; then
+ break
+ fi
+ done
+ [ "${canon_name}" = "" ] && logerror "cant find config.guess"
+}
+
+do_check_p () {
+ eval check_var=\$"$1"
+ for a in ${check_var} ; do
+ expr "$2${canon_name}" : "${a}" > /dev/null 2>&1 && return 1
+ done
+ return 0
+}
+
+unpack_tar () {
+ for a in ${distdirs} ; do
+ if [ -f $a/$1 ] ; then
+ ${opt_n} ${unzip_prog} ${a}/$1 | ${opt_n} tar xf -
+ return 0
+ fi
+ done
+ logerror "did not find $1"
+}
+
+build () {
+ real_ver=$1
+ prog=$2
+ ver=$3
+ confprog=$4
+ checks=$5
+ pv=${prog}-${ver}
+ mkdir tmp || logerror "failed to build tmpdir"
+ cd tmp || logerror "failed to change dir to tmpdir"
+ do_check_p dont_build ${real_ver} || \
+ { cd .. ; rmdir tmp ; logprint "not building $1" && return 0 ; }
+ cd .. || logerror "failed to change back from tmpdir"
+ rmdir tmp || logerror "failed to remove tmpdir"
+ logprint "preparing for ${pv}"
+ ${opt_n} rm -rf ${targetdir}/${prog}-${ver}
+ ${opt_n} rm -rf ${prog}-${ver}
+ unpack_tar ${pv}.tar.gz
+ ${opt_n} cd ${pv} || logerror directory ${pv} not there
+ logprint "configure ${prog} ${ver} (${confprog})"
+ ${opt_n} ./${confprog} \
+ --prefix=${targetdir}/${pv} >> ${logfile} 2>&1 || \
+ { logprint failed to configure ${pv} ; return 1 ; }
+ logprint "make ${prog} ${ver}"
+ ${opt_n} make ${make_f} >> ${logfile} 2>&1 || \
+ { logprint failed to make ${pv} ; return 1 ; }
+ ${opt_n} make install >> ${logfile} 2>&1 || \
+ { logprint failed to install ${pv} ; return 1 ; }
+ do_check_p make_check_version ${real_ver} || \
+ { ${opt_n} make check >> ${logfile} 2>&1 || return 1 ; }
+ ${opt_n} cd ..
+ [ "${checks}" != "" ] && ${opt_n} ${checks} >> ${logfile} 2>&1
+ return 0
+}
+
+find_canon_name
+
+logprint using host `hostname`
+logprint `uname -a`
+logprint canonical name ${canon_name}
+
+logprint clearing logfile
+> ${logfile}
+
+find_unzip_prog
+
+logprint using target dir ${targetdir}
+mkdir -p ${targetdir}/src
+cd ${targetdir}/src || exit 1
+rm -rf heimdal* openssl* krb4*
+
+logprint === building openssl versions
+for vo in ${openssl_versions} ; do
+ build openssl-${vo} openssl $vo config
+done
+
+wssl="--with-openssl=${targetdir}/openssl"
+wssli="--with-openssl-include=${targetdir}/openssl" #this is a hack for broken heimdal 0.5.x autoconf test
+wossl="--without-openssl"
+wk4c="--with-krb4-config=${targetdir}/krb4"
+bk4c="/bin/krb4-config"
+wok4="--without-krb4"
+
+logprint === building heimdal w/o krb4 versions
+for vo in ${openssl_versions} ; do
+ for vh in ${heimdal_versions} ; do
+ v="openssl-${vo}-heimdal-${vh}"
+ build "${v}" \
+ heimdal ${vh} \
+ "configure ${wok4} ${wssl}-${vo} ${wssli}-${vo}/include" \
+ "${targetdir}/heimdal-${vh}/bin/krb5-config --libs | grep lcrypto" \ || \
+ { failed="${failed} ${v}" ; logprint ${v} failed ; }
+ done
+done
+
+logprint === building krb4
+for vo in ${openssl_versions} ; do
+ for vk in ${krb4_versions} ; do
+ v="openssl-${vo}-krb4-${vk}"
+ build "${v}" \
+ krb4 ${vk} \
+ "configure ${wssl}-${vo}" \
+ "${targetdir}/krb4-${vk}/bin/krb4-config --libs | grep lcrypto"|| \
+ { failed="${failed} ${v}" ; logprint ${v} failed ; }
+ done
+done
+
+logprint === building heimdal with krb4 versions
+for vo in ${openssl_versions} ; do
+ for vk in ${krb4_versions} ; do
+ for vh in ${heimdal_versions} ; do
+ v="openssl-${vo}-krb4-${vk}-heimdal-${vh}"
+ build "${v}" \
+ heimdal ${vh} \
+ "configure ${wk4c}-${vk}${bk4c} ${wssl}-${vo} ${wssli}-${vo}/include" \
+ "${targetdir}/heimdal-${vh}/bin/krb5-config --libs | grep lcrypto && ${targetdir}/heimdal-${vh}/bin/krb5-config --libs | grep krb4" \
+ || \
+ { failed="${failed} ${v}" ; logprint ${v} failed ; }
+ done
+ done
+done
+
+logprint === building heimdal without krb4 and openssl versions
+for vh in ${heimdal_versions} ; do
+ v="des-heimdal-${vh}"
+ build "${v}" \
+ heimdal ${vh} \
+ "configure ${wok4} ${wossl}" || \
+ { failed="${failed} ${v}" ; logprint ${v} failed ; }
+done
+
+logprint all done
+[ "${failed}" != "" ] && logprint "failed: ${failed}"
+exit 0
OpenPOWER on IntegriCloud