#!/bin/bash # Purpose: Assist to install eman2 binary release. # Usage: eman2-installer # Date: 9/1/2004, by Liwei Peng # Date: 10/25/2007, modified by Grant Tang for EMAN2 # Date: 1/28/2009, modified by Grant Tang for EMAN2 Pythn2.6 # Date: 2/12/2009, change back to Python 2.5.4, Grant Tang # Date: 9/1/2009, --disable_cache, Grant Tang # Date: 6/30/2013, Significant updates by Ian Rees for new build system. # Date: 8/01/2013, changed disable_cache to disable_gui # Date: 1/23/2017, altered eman2.[bashrc/cshrc] files to include new matplotlibrc file in extlib usage() { echo "usage: `basename $0` [--disable_gui]" echo " --disable_gui: no GUI" exit 0 } setup_shell() { # Setup bashrc or cshrc MYSHELL=`basename ${SHELL}` RCFILE="" if test ${MYSHELL} = "tcsh" || test ${MYSHELL} = "csh"; then RCFILE=".cshrc" setup_csh ${EMAN2DIR}/eman2${RCFILE} elif test ${MYSHELL} = "bash" || test ${MYSHELL} = "sh"; then RCFILE=".bashrc" setup_bash ${EMAN2DIR}/eman2$RCFILE elif test ${MYSHELL} = "zsh"; then RCFILE=".zshrc" setup_bash ${EMAN2DIR}/eman2$RCFILE else echo "Unkown shell. You will need set up your enviroment variables manually." fi if test "X${RCFILE}" != "X"; then echo "" echo "If you experience any problems after installation, please see for tips:" echo "http:/eman2.org/Install/BinaryInstall" fi } setup_csh() { OUT=$1 echo "setenv EMAN2DIR ${EMAN2DIR}" > ${OUT} echo 'setenv PATH ${EMAN2DIR}/bin:${EMAN2DIR}/extlib/bin:${PATH}' >> ${OUT} echo 'if ($?PYTHONPATH == 0) then' >> ${OUT} echo ' setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin' >> ${OUT} echo 'else' >> ${OUT} echo ' setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}' >> ${OUT} echo 'endif' >> ${OUT} echo 'setenv MATPLOTLIBRC ${EMAN2DIR}/extlib' >> ${OUT} echo 'alias sparx sx.py' >> ${OUT} echo "setenv LC_CTYPE=en_US.utf8" echo "setenv LC_ALL=en_US.utf8" } setup_bash() { OUT=$1 echo "export EMAN2DIR=${EMAN2DIR}" > ${OUT} echo 'export PATH=${EMAN2DIR}/bin:${EMAN2DIR}/extlib/bin:$PATH' >> ${OUT} echo 'export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}' >> ${OUT} echo 'export MATPLOTLIBRC=${EMAN2DIR}/extlib' >> ${OUT} echo 'export LC_CTYPE=en_US.utf8' echo 'export LC_ALL=en_US.utf8' echo 'alias sphire=sxgui.py' >> ${OUT} echo 'alias sparx=sx.py' >> ${OUT} } setup_python() { EMAN2PYTHON=$1 # Update python interpreter find ${EMAN2DIR}/extlib/bin -name "ipython" \ -exec sed -i "s%^\#\!.*python.*$%\#\!$/opt/eman2/extlib/bin/python%" {} \; find ${EMAN2DIR}/test ${EMAN2DIR}/bin ${EMAN2DIR}/lib ${EMAN2DIR}/examples -name "*.py" \ -exec sed -i "s%^\#\!.*python.*$%\#\!$/opt/eman2/extlib/bin/python%" {} \; find ${EMAN2DIR}/test ${EMAN2DIR}/bin ${EMAN2DIR}/lib ${EMAN2DIR}/examples -name "*.py" \ -exec chmod a+x {} \; # ... and for SPARX # sed -i "s%^\#\!.*python.*$%\#\!${EMAN2PYTHON}%" ${EMAN2DIR}/bin/sparx } disable_cache() { cd ${EMAN2DIR}/lib echo "start substituting..." mv global_def.py global_def.py.bak sed -e 's/CACHE_DISABLE = False/CACHE_DISABLE = True/' global_def.py.bak > global_def.py rm -f global_def.py.bak cd ${EMAN2DIR}/bin mv sx_real.py sx_real.py.bak sed -e 's/GUIUSE = True/GUIUSE = False/' sx_real.py.bak > sx_real.py rm -f sx_real.py.bak cd ${EMAN2DIR} } main() { # Use the run directory as the EMAN2DIR. export EMAN2DIR=`pwd` export EMAN2PYTHON=${EMAN2DIR}/extlib/bin/python # Setup the Python interpreter if [ -f $EMAN2PYTHON ] then setup_python $EMAN2PYTHON fi # Setup bashrc or cshrc setup_shell # This is for Fedora Linux's SELinux limitation on shared libraries cd ${EMAN2DIR}/lib if [ -x /usr/bin/chcon ]; then chcon -t texrel_shlib_t *.so 2>/dev/null >/dev/null fi cd ${EMAN2DIR} # # This is for Pawel's cluster working local value1=$1 if [[ "${value1}" = "--disable_gui" ]]; then disable_cache fi #for mpi_eman compilation # cd ${EMAN2DIR}/mpi_eman # sed -i 's,/usr/include/python2.6,${EMAN2DIR}/Python/include/python2.7,g' Makefile.* } main $1 exit 0