#! /bin/sh # Filename: ctools-setup(.in) # Description: Writes an initialization script for ctools software # which is custom fit to the user and the particular # software installation. Note that this script is # designed to be invoked by ctools-init.csh/ctools-init.sh, # and should not normally be invoked directly by user. # Author/Date: Juergen Knoedlseder, IRAP, July 16, 2011 #------------------------------------------------------------------------------- # # Set fixed parameters # ==================== this_script=`echo $0 | sed 's:.*/::'` ctools_info="$this_script:" ctools_error="$ctools_info ERROR --" # # Extract argument # ================ flavor=$1 if [ "x$flavor" != xcsh -a "x$flavor" != xsh ]; then echo "$ctools_info usage $this_script csh|sh" >&2 exit 3 fi # # Set parameters # ============== prefix="@prefix@" exec_prefix="@exec_prefix@" ctools_bin="@bindir@" ctools_lib="@libdir@" uname_system=`uname` python_dir="@pythondir@" python_exec_dir="@pyexecdir@" pkgconfig_dir="@libdir@/pkgconfig" man_dir="@datadir@/doc/ctools/man" caldb_dir="@datadir@/caldb" # # Make pfiles available (this is needed for an installation where the # ctools reside in a directory different from GammaLib, as the # system does not know in this case where the syspfiles directory is # =================================================================== if [ -d $prefix/syspfiles/. ]; then # make sure local parameter file directory exists if [ ! -w $HOME/pfiles/. ]; then mkdir $HOME/pfiles if [ $? -ne 0 ]; then echo "$ctools_error cannot create local pfiles directory $HOME/pfiles" >&2 exit 3 fi fi # use PFILES (if set) to set initial values for locpfiles and syspfiles if [ "x$PFILES" != x ]; then syspfiles=`echo $PFILES | sed "s%.*;%%"` locpfiles=`echo $PFILES | sed "s%;*$syspfiles$%%"` fi # move $HOME/pfiles to front of locpfiles and weed out redundancies if [ "x$locpfiles" = x ]; then locpfiles="$HOME/pfiles" else locpfiles=`echo ":$locpfiles:" | \ sed "s%:$HOME/pfiles:%:%g" | sed "s%::*$%%"` locpfiles="$HOME/pfiles$locpfiles" fi # move $prefix/syspfiles to front of syspfiles and weed out redundancies if [ "x$syspfiles" = x ]; then syspfiles="$prefix/syspfiles" else syspfiles=`echo ":$syspfiles:" | \ sed "s%:$prefix/syspfiles:%:%g" | sed "s%::*$%%"` syspfiles="$prefix/syspfiles$syspfiles" fi # updates any existing PFILES if syspfiles are newer for filename in $HOME/pfiles/*.par do parfile=`basename $filename` sys_parfile=$prefix/syspfiles/$parfile if [ -e "$sys_parfile" ]; then if test "$sys_parfile" -nt "$filename" then cp -f "$sys_parfile" "$filename" fi fi done # Set PFILES and PFCLOBBER environment variable PFILES="$locpfiles;$syspfiles" PFCLOBBER=1 fi # # Set LD_LIBRARY_PATH # =================== if [ "x$LD_LIBRARY_PATH" = x ]; then LD_LIBRARY_PATH="$ctools_lib" else LD_LIBRARY_PATH=`echo ":$LD_LIBRARY_PATH:" | \ sed "s%:$ctools_lib:%:%g" | sed "s%::*$%%"` LD_LIBRARY_PATH="$ctools_lib$LD_LIBRARY_PATH" fi # # Set DYLD_LIBRARY_PATH if required # ================================= case $uname_system in Darwin*) if [ "x$DYLD_LIBRARY_PATH" = x ]; then DYLD_LIBRARY_PATH="$ctools_lib" else DYLD_LIBRARY_PATH=`echo ":$DYLD_LIBRARY_PATH:" | \ sed "s%:$ctools_lib:%:%g" | sed "s%::*$%%"` DYLD_LIBRARY_PATH="$ctools_lib$DYLD_LIBRARY_PATH" fi ;; CYGWIN*) if [ "x$PATH" = x ]; then PATH="$ctools_lib" else PATH=`echo ":$PATH:" | sed "s%:$ctools_lib:%:%g" | sed "s%::*$%%"` PATH="$ctools_lib$PATH" fi ;; esac # # Set PYTHONPATH # ============== if [ "x$PYTHONPATH" = x ]; then PYTHONPATH="$python_dir" else PYTHONPATH=`echo ":$PYTHONPATH:" | \ sed "s%:$python_dir:%:%g" | sed "s%::*$%%"` PYTHONPATH="$python_dir$PYTHONPATH" fi if [ "x$PYTHONPATH" = x ]; then PYTHONPATH="$python_exec_dir" else PYTHONPATH=`echo ":$PYTHONPATH:" | \ sed "s%:$python_exec_dir:%:%g" | sed "s%::*$%%"` PYTHONPATH="$python_exec_dir$PYTHONPATH" fi # # Set PKG_CONFIG_PATH # =================== if [ "x$PKG_CONFIG_PATH" = x ]; then PKG_CONFIG_PATH="$pkgconfig_dir" else PKG_CONFIG_PATH=`echo ":$PKG_CONFIG_PATH:" | \ sed "s%:$pkgconfig_dir:%:%g" | sed "s%::*$%%"` PKG_CONFIG_PATH="$pkgconfig_dir$PKG_CONFIG_PATH" fi # # Set PATH # ======== if [ "x$PATH" = x ]; then PATH="$ctools_bin" else PATH=`echo ":$PATH:" | \ sed "s%:$ctools_bin:%:%g" | sed "s%::*$%%"` PATH="$ctools_bin$PATH" fi # # Set MANPATH # ============== if [ "x$MANPATH" = x ]; then manpath=${manpath:-} MANPATH="$man_dir:${manpath}" else MANPATH=`echo ":$MANPATH:" | \ sed "s%:$man_dir:%:%g" | sed "s%::*$%%"` MANPATH="$man_dir$MANPATH" fi # # Set CALDB (if not yet set) # ========================== if [ "x$CALDB" = x ]; then CALDB="$caldb_dir" fi # # List of variables needed in initialization script # ================================================= varlist="LD_LIBRARY_PATH DYLD_LIBRARY_PATH PATH" varlist="$varlist PYTHONPATH PKG_CONFIG_PATH MANPATH" varlist="$varlist PFILES PFCLOBBER CALDB" # # Save values in output initialization shell scripts # ================================================== # Name of temporary config script HOST_NAME=`hostname` ctools_config="$HOME/ctools-config-$HOST_NAME" # Bourne Shell version, write only for sh flavor initialization if [ $flavor = sh ]; then rm -f $ctools_config$$.sh touch $ctools_config$$.sh for var in $varlist; do eval "if [ \"x\$$var\" != x ]; then echo \"\$var=\\\"\$$var\\\"; export \$var\" >> $ctools_config$$.sh; fi" done echo "$ctools_config$$.sh" # C Shell version, write only for csh flavor initialization elif [ $flavor = csh ]; then rm -f $ctools_config$$.csh touch $ctools_config$$.csh for var in $varlist; do eval "if [ \"x\$$var\" != x ]; then echo setenv \$var \\\"\$$var\\\" >> $ctools_config$$.csh; fi" done echo "$ctools_config$$.csh" fi