Last active
December 19, 2015 00:29
-
-
Save doubleotoo/5869604 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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