Skip to content

Instantly share code, notes, and snippets.

@doubleotoo
Last active December 19, 2015 00:29
Show Gist options
  • Save doubleotoo/5869604 to your computer and use it in GitHub Desktop.
Save doubleotoo/5869604 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Usage:
#
# $ source rose_environment.sh
cat <<-EOF
--------------------------------------------------------------------------------
ROSE development environment
--------------------------------------------------------------------------------
EOF
#-------------------------------------------------------------------------------
# help()
#-------------------------------------------------------------------------------
function help {
cat <<-EOF
Usage:
bash-\$ [env_var ...] source rose_environment.sh
Environment Variables Available Versions [default_version]
BOOST_VERSION $(ls "$__BOOST_HOME" | grep --invert "install" | xargs |
sed 's/\('${BOOST_VERSION_DEFAULT}'\)/['${BOOST_VERSION_DEFAULT}']/')
GCC_VERSION $(ls "$__GCC_HOME" | grep --invert "install" | xargs |
sed 's/\('${GCC_VERSION_DEFAULT}'\)/['${GCC_VERSION_DEFAULT}']/')
GIT_VERSION $(ls "$__GIT_HOME" | grep --invert "install" | xargs |
sed 's/\('${GIT_VERSION_DEFAULT}'\)/['${GIT_VERSION_DEFAULT}']/')
JAVA_VERSION $(ls "$__JAVA_HOME" | grep --invert "install" | xargs |
sed 's/\('${JAVA_VERSION_DEFAULT}'\)/['${JAVA_VERSION_DEFAULT}']/')
LIBTOOL_VERSION $(ls "$__LIBTOOL_HOME" | grep --invert "install" | xargs |
sed 's/\('${LIBTOOL_VERSION_DEFAULT}'\)/['${LIBTOOL_VERSION_DEFAULT}']/')
AUTOCONF_VERSION $(ls "$__AUTOCONF_HOME" | grep --invert "install" | xargs |
sed 's/\('${AUTOCONF_VERSION_DEFAULT}'\)/['${AUTOCONF_VERSION_DEFAULT}']/')
AUTOMAKE_VERSION $(ls "$__AUTOMAKE_HOME" | grep --invert "install" | xargs |
sed 's/\('${AUTOMAKE_VERSION_DEFAULT}'\)/['${AUTOMAKE_VERSION_DEFAULT}']/')
LLVM_CLANG_VERSION $(ls "$__LLVM_CLANG_HOME" | grep --invert "install" | xargs |
sed 's/\('${LLVM_CLANG_VERSION_DEFAULT}'\)/['${LLVM_CLANG_VERSION_DEFAULT}']/')
CCACHE_VERSION $(ls "$__CCACHE_HOME" | grep --invert "install" | xargs |
sed 's/\('${CCACHE_VERSION_DEFAULT}'\)/['${CCACHE_VERSION_DEFAULT}']/')
GHOSTSCRIPT_VERSION $(ls "$__GHOSTSCRIPT_HOME" | grep --invert "install" | xargs |
sed 's/\('${GHOSTSCRIPT_VERSION_DEFAULT}'\)/['${GHOSTSCRIPT_VERSION_DEFAULT}']/')
GRAPHVIZ_VERSION $(ls "$__GRAPHVIZ_HOME" | grep --invert "install" | xargs |
sed 's/\('${GRAPHVIZ_VERSION_DEFAULT}'\)/['${GRAPHVIZ_VERSION_DEFAULT}']/')
EOF
}
#-------------------------------------------------------------------------------
# Set Defaults
#-------------------------------------------------------------------------------
BOOST_VERSION_DEFAULT=1_45_0
GCC_VERSION_DEFAULT=4.4.5
GIT_VERSION_DEFAULT=latest
JAVA_VERSION_DEFAULT=latest
LIBTOOL_VERSION_DEFAULT=2.4
AUTOCONF_VERSION_DEFAULT=2.69
AUTOMAKE_VERSION_DEFAULT=1.14
LLVM_CLANG_VERSION_DEFAULT=3.0
CCACHE_VERSION_DEFAULT=latest
GHOSTSCRIPT_VERSION_DEFAULT=latest
GRAPHVIZ_VERSION_DEFAULT=latest
: ${BOOST_VERSION:=$BOOST_VERSION_DEFAULT}
: ${GCC_VERSION:=$GCC_VERSION_DEFAULT}
: ${GIT_VERSION:=$GIT_VERSION_DEFAULT}
: ${JAVA_VERSION:=$JAVA_VERSION_DEFAULT}
: ${LIBTOOL_VERSION:=$LIBTOOL_VERSION_DEFAULT}
: ${AUTOCONF_VERSION:=$AUTOCONF_VERSION_DEFAULT}
: ${AUTOMAKE_VERSION:=$AUTOMAKE_VERSION_DEFAULT}
: ${LLVM_CLANG_VERSION:=$LLVM_CLANG_VERSION_DEFAULT}
: ${CCACHE_VERSION:=$CCACHE_VERSION_DEFAULT}
: ${GHOSTSCRIPT_VERSION:=$GHOSTSCRIPT_VERSION_DEFAULT}
: ${GRAPHVIZ_VERSION:=$GRAPHVIZ_VERSION_DEFAULT}
BOOST_VERSION="$(echo "$BOOST_VERSION" | sed 's/\./_/g')"
#-------------------------------------------------------------------------------
# Set Toolchain Paths
#-------------------------------------------------------------------------------
__GIT_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/git"
__BOOST_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/boost"
__GCC_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/gcc"
__JAVA_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/java/jdk"
__LIBTOOL_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/libtool"
__AUTOCONF_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/autoconf"
__AUTOMAKE_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/automake"
__LLVM_CLANG_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/llvm/clang"
__CCACHE_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/ccache"
__GHOSTSCRIPT_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/ghostscript"
__GRAPHVIZ_HOME="/nfs/casc/overture/ROSE/opt/rhel5/x86_64/graphviz"
GIT_VERSION_HOME="${__GIT_HOME}/${GIT_VERSION}"
BOOST_VERSION_HOME="${__BOOST_HOME}/${BOOST_VERSION}/gcc/${GCC_VERSION}"
GCC_VERSION_HOME="${__GCC_HOME}/${GCC_VERSION}"
JAVA_VERSION_HOME="${__JAVA_HOME}/${JAVA_VERSION}"
LIBTOOL_VERSION_HOME="${__LIBTOOL_HOME}/${LIBTOOL_VERSION}/gcc/${GCC_VERSION}/automake/${AUTOMAKE_VERSION}/autoconf/${AUTOCONF_VERSION}"
AUTOCONF_VERSION_HOME="${__AUTOCONF_HOME}/${AUTOCONF_VERSION}/gcc/${GCC_VERSION}"
AUTOMAKE_VERSION_HOME="${__AUTOMAKE_HOME}/${AUTOMAKE_VERSION}/gcc/${GCC_VERSION}/autoconf/${AUTOCONF_VERSION}"
LLVM_CLANG_VERSION_HOME="${__LLVM_CLANG_HOME}/${LLVM_CLANG_VERSION}/gcc/${GCC_VERSION}"
CCACHE_VERSION_HOME="${__CCACHE_HOME}/${CCACHE_VERSION}"
GHOSTSCRIPT_VERSION_HOME="${__GHOSTSCRIPT_HOME}/${GHOSTSCRIPT_VERSION}"
GRAPHVIZ_VERSION_HOME="${__GRAPHVIZ_HOME}/${GRAPHVIZ_VERSION}/gcc/latest"
#-------------------------------------------------------------------------------
# --help
#-------------------------------------------------------------------------------
if [ "$1" = "-h" -o "$1" = "--help" ]; then
help
return 0
fi
#-------------------------------------------------------------------------------
# Normalize Environment
#-------------------------------------------------------------------------------
export OLD_PATH="$PATH"
export OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
function reset_environment {
echo "[INFO] Reverting back to your original environment:"
export PATH="$OLD_PATH"
export LD_LIBRARY_PATH="${OLD_LD_LIBRARY_PATH}"
echo "[INFO] export PATH=\"$PATH\""
echo "[INFO] export LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\""
}
#-------------------------------------------------------------------------------
# fail()
#-------------------------------------------------------------------------------
function fail {
echo "-------------------------------------------------------------------------------"
if [ -z '$*' ]; then
echo "[FATAL] Terminating bootstrapping of your ROSE development environment"
else
echo "[FATAL] $*"
fi
echo "-------------------------------------------------------------------------------"
reset_environment
echo "-------------------------------------------------------------------------------"
help
echo "-------------------------------------------------------------------------------"
false
}
#-------------------------------------------------------------------------------
# normalize_environment()
#-------------------------------------------------------------------------------
function normalize_environment {
echo "[INFO] Normalizing your environment:"
export PATH="/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/bin"
export LD_LIBRARY_PATH=""
echo "[INFO]"
echo "[INFO] export PATH=\"$PATH\""
echo "[INFO] export LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\""
echo "[INFO]"
}
normalize_environment
#-------------------------------------------------------------------------------
# source_tool()
#-------------------------------------------------------------------------------
# Usage: source_tool <human_readable_name> </path/to/tools/home>
function source_tool {
local TOOL_NAME="$(echo "$1" | tr '[:lower:]' '[:upper:]')"
local TOOL_HOME="$2"
if [ -z "${TOOL_NAME}" -o -z "${TOOL_HOME}" ]; then
fail "Usage: source_tool <TOOL_NAME> <TOOL_HOME>" || return 1
else
if [ -e "${TOOL_HOME}" ]; then
if [ -e "${TOOL_HOME}/setup.sh" ]; then
source "${TOOL_HOME}/setup.sh"
else
fail "${TOOL_NAME}_HOME/setup.sh file does not exist: '${TOOL_HOME}'" || return 1
fi
else
fail "'${TOOL_NAME}_HOME' path does not exist: '${TOOL_HOME}'" || return 1
fi
fi
}
#-------------------------------------------------------------------------------
# Source the toolchain
#-------------------------------------------------------------------------------
source_tool "Git" "$GIT_VERSION_HOME" || return 1
source_tool "Boost" "$BOOST_VERSION_HOME" || return 1
source_tool "GCC" "$GCC_VERSION_HOME" || return 1
source_tool "Java" "$JAVA_VERSION_HOME" || return 1
source_tool "Libtool" "$LIBTOOL_VERSION_HOME" || return 1
source_tool "Automake" "$AUTOMAKE_VERSION_HOME" || return 1
source_tool "Autoconf" "$AUTOCONF_VERSION_HOME" || return 1
source_tool "LLVM-Clang" "$LLVM_CLANG_VERSION_HOME" || return 1
source_tool "Libtool" "$LIBTOOL_VERSION_HOME" || return 1
source_tool "ccache" "$CCACHE_VERSION_HOME" || return 1
source_tool "Ghostscript" "$GHOSTSCRIPT_VERSION_HOME" || return 1
source_tool "Graphviz" "$GRAPHVIZ_VERSION_HOME" || return 1
#-------------------------------------------------------------------------------
# Output Summary
#-------------------------------------------------------------------------------
cat <<-EOF
--------------------------------------------------------------------------------
Your environment is now bootstrapped for ROSE development:
[GCC] '${GCC_VERSION}'
'${GCC_VERSION_HOME}'
[BOOST] '${BOOST_VERSION}'
'${BOOST_VERSION_HOME}'
[JAVA] '${JAVA_VERSION}'
'${JAVA_VERSION_HOME}'
[GIT] '${GIT_VERSION}'
'${GIT_VERSION_HOME}'
[AUTOMAKE] '${AUTOMAKE_VERSION}'
'${AUTOMAKE_VERSION_HOME}'
[AUTOCONF] '${AUTOCONF_VERSION}'
'${AUTOCONF_VERSION_HOME}'
[LLVM-CLANG] '${LLVM_CLANG_VERSION}'
'${LLVM_CLANG_VERSION_HOME}'
[LIBTOOL] '${LIBTOOL_VERSION}'
'${LIBTOOL_VERSION_HOME}'
[CCACHE] '${CCACHE_VERSION}'
'${CCACHE_VERSION_HOME}'
[GHOSTSCRIPT] '${GHOSTSCRIPT_VERSION}'
'${GHOSTSCRIPT_VERSION_HOME}'
[GRAPHVIZ] '${GRAPHVIZ_VERSION}'
'${GRAPHVIZ_VERSION_HOME}'
--------------------------------------------------------------------------------
PATH="$PATH"
LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
--------------------------------------------------------------------------------
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment