Prev
Next
Index->
contents
reference
index
search
external
Up->
cppad_mixed
install_unix
example_install.sh
example_install.sh
@(@\newcommand{\R}[1]{ {\rm #1} }
\newcommand{\B}[1]{ {\bf #1} }
\newcommand{\W}[1]{ \; #1 \; }@)@An Example Installation
Syntax
run_test
replace
Source
Syntax
bin/example_install.sh run_test replace
run_test
is either true
or false
.
If it is true, this cppad_mixed tests will be run before installing.
If there is an error in the tests, the install will abort.
replace
is either true
or false
.
If an external is already installed and
replace
is true (false)
the external will (will not) be replaced.
Source
if [ $0 != 'bin/example_install.sh' ]
then
echo 'bin/example_install.sh: must be executed from its parent directory'
exit 1
fi
# -----------------------------------------------------------------------------
# bash function that echos and executes a command
echo_eval() {
echo $*
eval $*
}
# --------------------------------------------------------------------------
if [ "$1" != 'true' ] && [ "$1" != 'false' ]
then
echo 'bin/example_install.sh: run_test replace'
echo 'run_test is not true or false'
exit 1
fi
run_test = "$1"
if [ "$2" != 'true' ] && [ "$2" != 'false' ]
then
echo 'bin/example_install.sh: run_test replace'
echo 'replace is not true or false'
exit 1
fi
replace = "$2"
# ---------------------------------------------------------------------------
# set build_type to value in run_cmake.sh
cmd = `grep '^build_type=' bin/run_cmake. sh`
eval $cmd
echo "build_type=$build_type"
#
# set cmake_install_prefix to value in run_cmake.sh
cmd = `grep '^cmake_install_prefix=' bin/run_cmake. sh`
eval $cmd
echo "cmake_install_prefix=$cmake_install_prefix"
#
# ipopt_prefix
ipopt_prefix = "$cmake_install_prefix"
# --------------------------------------------------------------------------
# remove old version of example_install.log and example_install.err
for ext in log err
do
if [ -e "example_install.$ext" ]
then
echo_eval rm "example_install.$ext"
fi
done
# --------------------------------------------------------------------------
# set build link to build.debug or build.release depending on build_type
if echo "$cmake_install_prefix" | grep '/cppad_mixed$' > /dev/null
then
bin/build_type. sh example_install. sh $cmake_install_prefix $build_type
fi
# --------------------------------------------------------------------------
user = $(whoami)
if [ "$user" == 'root' ]
then
sudo = ''
else
sudo = 'sudo'
fi
# -----------------------------------------------------------------------------
# set system_type, system_install example_install.tmp
if which apt-get >& /dev/null
then
system_type = 'debian'
system_install = "$sudo apt-get install -y"
dpkg-query -l | sed -e 's| *| |g' -e 's|^ii ||' > example_install. tmp
elif which dnf >& /dev/null
then
system_type = 'red_hat'
system_install = "$sudo dnf install -y"
dnf list installed | sed -e 's| *| |g' > example_install. tmp
elif which yum >& /dev/null
then
system_type = 'red_hat'
system_install = "$sudo yum install -y"
yum list installed | sed -e 's| *| |g' > example_install. tmp
elif which port >& /dev/null
then
system_type = 'mac_port'
system_install = "$sudo port install"
port installed | sed -e 's|^ *||g' > example_install. tmp
elif which brew >& /dev/null
then
system_type = 'mac_brew'
system_install = 'brew install'
brew list | sed -e 's| *| \n |g' > example_install. tmp
elif which setup-x86_64 >& /dev/null
then
system_tpye = 'cygwin'
system_install = 'setup-x86_64.exe -q -P'
cygcheck -c -d | sed -e 's| *|-|' > example_install. tmp
else
echo 'Cannot find the system pakcage manager'
exit 1
fi
# --------------------------------------------------------------------------
# system external installs for normal system requirements
if [ "$system_type" == 'debian' ]
then
list = '
cmake
git
wget
libblas-dev
liblapack-dev
libsuitesparse-dev
pkg-config
g++
gfortran
libgsl-dev
'
elif [ "$system_type" == 'red_hat' ]
then
list = '
cmake
git
wget
blas-devel
lapack-devel
suitesparse-devel
pkgconf
gcc-c++
gcc-gfortran
gsl-devel
java
'
elif [ "$system_type" == 'mac_port' ]
then
list = '
cmake
wget
SuiteSparse
pkgconfig
gsl
openjdk
'
elif [ "$system_type" == 'mac_brew' ]
then
list = '
cmake
wget
suite-sparse
pkg-config
gsl
openjdk
'
# make sure Ipopt configure sees brew version of javac (not /usr/bin/javac)
PATH = "/usr/local/opt/openjdk/bin:$PATH"
elif [ "$system_tpye" == 'cygwin' ]
then
list = '
gsl
cmake
git
wget
liblapack-devel
pkgconf
gcc-core
gcc-g++
gcc-fortran
libgsl-devel
patch
libcholmod-devel
'
else
echo 'example_install.sh: script error'
exit 1
fi
for package in $list
do
if grep "^$package[^a-zA-Z_]" example_install. tmp > /dev/null
then
version = `grep "^$package[^a-zA-Z_]" example_install. tmp | head -1 `
echo "using installed $version"
elif grep "^$package \$ " example_install. tmp > /dev/null
then
# brew list case
echo "using installed $package"
else
echo_eval $system_install $package
fi
done
rm example_install. tmp
# ----------------------------------------------------------------------------
# local external installs for special requirements
for pkg in eigen ipopt cppad
do
# eval below converts $HOME in $prefix to its value for current user
case $pkg in
eigen)
eval file = "$cmake_install_prefix/eigen/include/Eigen/Core"
;;
ipopt)
eval file = "$ipopt_prefix/include/coin-or/IpIpoptApplication.hpp"
;;
cppad)
eval file = "$cmake_install_prefix/include/cppad/cppad.hpp"
;;
*)
echo 'bin/example_install.sh: program error'
exit 1
;;
esac
#
install = 'true'
if [ -e "$file" ]
then
if [ "$replace" == 'false' ]
then
echo "Skipping bin/install_$pkg.sh"
echo "Using previously installed version in $cmake_install_prefix"
install = 'false'
fi
fi
if [ "$install" == 'true' ]
then
name = 'example_install'
echo "bin/install_$pkg.sh $system_type 1>> $name.log 2>> $name.err"
if ! bin/install_$pkg . sh $system_type 1 >> $name . log 2 >> $name . err
then
echo "install_$pkg Error: Look at messages in"
echo "tail $name.err"
echo "tail $name.log"
exit 1
fi
fi
done
# ----------------------------------------------------------------------------
# cppad_mixed
# ----------------------------------------------------------------------------
# bin/run_cmake.sh
echo "bin/run_cmake.sh 1>> example_install.log 2>> example_install.err"
if ! bin/run_cmake. sh 1 >> example_install. log 2 >> example_install. err
then
tail example_install. err
exit 1
fi
#
# change into build directory
echo_eval cd build
#
if which nproc >& /dev/null
then
n_job = $(nproc)
else
n_job = $( sysctl -n hw. ncpu)
fi
#
# make
if [ "$run_test" == 'true' ]
then
cmd_list = 'check speed install'
else
cmd_list = 'install'
fi
for cmd in $cmd_list
do
echo "make -j $n_job $cmd 1>> example_install.log 2>> example_install.err"
if ! make -j $n_job $cmd \
1 >> .. /example_install. log 2 >> .. /example_install. err
then
echo "Try running the following command in $(pwd)"
echo " make -j $n_job $cmd"
echo 'To see why the check of cppad_mixed failed.'
exit 1
fi
done
cd ..
# ----------------------------------------------------------------------------
echo 'example_install.sh: OK'
exit 0
Input File: bin/example_install.sh