From 6a9f20ca9b46d63dd15edda31ccaa98ea91ec606 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Thu, 4 Sep 2014 15:13:57 -0400 Subject: Initial commit --- ur_optimize | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100755 ur_optimize diff --git a/ur_optimize b/ur_optimize new file mode 100755 index 0000000..2cf0339 --- /dev/null +++ b/ur_optimize @@ -0,0 +1,149 @@ +#!/bin/bash +if [ ! -z "${UR_DIR}" ]; then + echo "UREKA must not be active." + exit 1 +fi + +export build_temp=/tmp/ur_optimize_build + + +function init_optimize +{ + if [ -d "${PREFIX}" ]; then + echo "${PREFIX} exists. Abort." + exit 1 + fi + mkdir -p ${PREFIX} + if (( $? > 0 )); then + exit $? + fi + if [ -d "${build_temp}" ]; then + deinit_optimize + fi + mkdir -p "${build_temp}" + cd "${build_temp}" +} + +function deinit_optimize +{ + rm -rf "${build_temp}" +} + +function stage_ATLAS +{ + local url="http://sourceforge.net/projects/math-atlas/files/Stable/3.10.2/atlas3.10.2.tar.bz2" + local tarball="$(basename ${url})" + wget "${url}" + tar xf "${tarball}" +} + +function stage_LAPACK +{ + local url="http://www.netlib.org/lapack/lapack-3.5.0.tgz" + local tarball="$(basename ${url})" + wget "${url}" + #tar xf "${tarball}" +} + +function build_ATLAS +{ + local BUILDROOT=`pwd` + + stage_ATLAS + stage_LAPACK + + cd ATLAS + mkdir -p BUILD && cd BUILD + + ../configure --prefix=${PREFIX} \ + --with-netlib-lapack-tarfile=${BUILDROOT}/lapack-3.5.0.tgz \ + --shared \ + -b 64 \ + -Fa alg "-fPIC -Wl,-rpath=${PREFIX}/lib,--enable-new-dtags" \ + -Si latune 1 + + make + make shared + make ptshared + make install + + return $? +} + +function build_modules +{ + export ATLAS="${PREFIX}" + export BLAS="${PREFIX}" + export LAPACK="${PREFIX}" + + local packages=( numpy scipy ) + + + for package in "${packages[@]}" + do + yes | pip uninstall ${package} + done + + for package in "${packages[@]}" + do + yes | pip install --upgrade --force ${package} + done + + return $? +} + + +NO_ARGS=0 +E_OPTERROR=85 + +if [ $# -eq "$NO_ARGS" ]; then + echo "Usage: `basename $0` -p {ureka_installation_path}" + exit $E_OPTERROR +fi + +while getopts ":p:" opt +do + case $opt in + p) + export UREKA=${OPTARG} + ;; + :) + echo "-$OPTARG requires an argument (e.g. path to UREKA installation)" + ;; + esac +done + +shift $(($OPTIND - 1)) + + +# Begin main script + +set -x +export PREFIX="${UREKA}/ext" + +init_optimize + +build_ATLAS +if (( $? > 0 )); then + echo "ATLAS build failed. Abort." + exit 1 +fi + +# Initialize UREKA for building modules +eval `${UREKA}/bin/ur-setup-real -sh` + +# Configure build environment variables to avoid UREKA entirely +# - ABSOLUTELY REQUIRED - +export F77="gfortran" +export F2C="" +export CC="/usr/bin/gcc" +export CXX="/usr/bin/g++" +export CPP=${CXX} + +build_modules +if (( $? > 0 )); then + echo "Python module builds failed. Abort." + exit 1 +fi + +deinit_optimize -- cgit