Skip to content
Snippets Groups Projects
Commit 8a3ba000 authored by Orgis, Dr. Thomas's avatar Orgis, Dr. Thomas
Browse files

until pyBDSF …

parent 0652fc93
No related branches found
No related tags found
No related merge requests found
#!/bin/bash
# General environment settings. # General environment settings.
. /sw/profile/init.sh . /sw/profile/init.sh
module switch env env/2019Q4-cuda-gcc-openmpi module switch env env/2019Q4-cuda-gcc-openmpi
export LDFLAGS="$(rrz-build-linkpath -R) $LDFLAGS" # ThOr: This provides python and python-config pointing
# to current python3 and python3-config.
module load pythonversion/3
echo "TODO: Ensure conistent use of one openblas variant (the one cblas and numpy use)"
# ThOr: Maybe not even necessary, at least with cmake builds.
#export LDFLAGS="$(rrz-build-linkpath -R) $LDFLAGS"
export J=64 export J=64
export INSTALLDIR=$HOME/opt/lofar_200318 # ThOr: Use command line argument for the prefix to ease testing.
export PYTHON_VERSION=3.6 # Not all variables shall be exported to children!
export PYTHON_VERSION_NODOT=36 scriptdir=$(cd $(dirname $0) && pwd)
export cmake=`which cmake` INSTALLDIR=${1:-$HOME/opt/lofar_200318}
export make=`which make` # ThOr: I hate to hardcode things that can be fetched automatically.
# This takes whatever python is linked to python3.
PYTHON_VERSION=$(python3 --version | cut -f 2 -d ' ' | cut -f 1,2 -d .)
PYTHON_VERSION_NODOT=$(echo $PYTHON_VERSION|tr -d .)
cmake=`which cmake`
make=`which make`
export CC=`which gcc` export CC=`which gcc`
export CXX=`which g++` export CXX=`which g++`
export CFLAGS="-D_GLIB_USE_CXX_ABI=1 -DBOOST_NO_CXX11_SCOPED_ENUMS -march=native -O3 -fno-math-errno -ftree-vectorize" # ThOr: Fortran is at least checked for by some builds.
export FC=`which gfortran`
# ThOr: removed C++-specific defines from CFLAGS
export CFLAGS="-march=native -O3 -fno-math-errno -ftree-vectorize"
export FCFLAGS="$CFLAGS"
export CXXFLAGS="-D_GLIB_USE_CXX_ABI=1 -DBOOST_NO_CXX11_SCOPED_ENUMS -march=native -O3 -fno-math-errno -ftree-vectorize" export CXXFLAGS="-D_GLIB_USE_CXX_ABI=1 -DBOOST_NO_CXX11_SCOPED_ENUMS -march=native -O3 -fno-math-errno -ftree-vectorize"
export LDFLAGS="-lgsl -lcblas" # ThOr: Those should not be global, should they? Let's add -Wl,--as-needed,
export CMAKE_RPATH="-DCMAKE_BUILD_RPATH=$LD_RUN_PATH -DCMAKE_INSTALL_RPATH=$LD_RUN_PATH" # so that unnecessary libraries are dropped from the build.
# Trying to ensure openblas_openmp here, but that needs to be fixed
# in the packages, recognizing that a dependency is already using
# openblas and then not trying to use a different one:-/
export LDFLAGS="-lgsl -lcblas -lopenblas_openmp -Wl,--as-needed"
# Ensure that we know what include search path variable is really used.
# Only leave CPATH set.
unset INCLUDE
unset C_INCLUDE_PATH
# Path to where the patch for python-casacore's setup is stored. # Path to where the patch for python-casacore's setup is stored.
#export PYTHON_CASACORE_PATCH=$HOME/opt/src/patch_python-casacore.patch #export PYTHON_CASACORE_PATCH=$HOME/opt/src/patch_python-casacore.patch
#export PATCH_AOFLAGGER=/net/lofar1/data1/sweijen/software/LOFAR/aoflagger.patch #export PATCH_AOFLAGGER=/net/lofar1/data1/sweijen/software/LOFAR/aoflagger.patch
# Settings relevant to the installed software. # Settings relevant to the installed software.
# ThOr: I recommend settling on with or without v and add the v on git
# command instead.
export AOFLAGGER_VERSION=v2.14.0 export AOFLAGGER_VERSION=v2.14.0
export BOOST_DOT_VERSION=1.67.0 export BOOST_DOT_VERSION=1.67.0
export BOOST_VERSION=1_67_0 export BOOST_VERSION=1_67_0
...@@ -34,316 +63,435 @@ export PYTHON_CASACORE_VERSION=3.1.1 ...@@ -34,316 +63,435 @@ export PYTHON_CASACORE_VERSION=3.1.1
export WSCLEAN_VERSION=latest export WSCLEAN_VERSION=latest
export WCSLIB_VERSION=latest export WCSLIB_VERSION=latest
mkdir -p $INSTALLDIR # ThOr: These functions emulare what proper environment modules would do.
####################################### # Add all given paths to LD_RUN_PATH, staring from
# Build all external libraries first. # # the vanilla environment setting.
####################################### # Also sync LIBRARY_PATH, as some seem to pick that up.
use_prefix()
{
if test -z "$env_run_path"; then
env_run_path=$LD_RUN_PATH
env_path=$PATH
env_cpath=$CPATH
#env_ldflags=$LDFLAGS
fi
LD_RUN_PATH=$env_run_path
PATH=$env_path
CPATH=$env_cpath
#LDFLAGS=$end_ldflags
for d in "$@"
do
LD_RUN_PATH="$d/lib:$LD_RUN_PATH"
PATH="$d/bin:$PATH"
CPATH="$d/include:$CPATH"
#LDFLAGS="-L$d/lib $LDFLAGS"
done
}
#if [ ! -d $INSTALLDIR/fftw ]; then # ThOr: Run cmake, with standard arguments.
# # run_cmake()
# # Install FFTW {
# # cmake \
# echo Installing FFTW... -DCMAKE_C_COMPILER="$CC" \
# mkdir -p ${INSTALLDIR}/fftw -DCMAKE_CXX_COMPILER="$CXX" \
# cd ${INSTALLDIR}/fftw && wget http://www.fftw.org/fftw-${FFTW_VERSION}.tar.gz -DCMAKE_Fortran_COMPILER="$FC" \
# cd ${INSTALLDIR}/fftw && tar xzf fftw*.tar.gz -DCMAKE_C_FLAGS="$CFLAGS" \
# cd ${INSTALLDIR}/fftw/fftw*/ && ./configure --prefix=${INSTALLDIR}/fftw --enable-threads --enable-shared -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
# cd ${INSTALLDIR}/fftw/fftw*/ && $make -j $J -DCMAKE_Fortran_FLAGS="$FCFLAGS" \
# cd ${INSTALLDIR}/fftw/fftw*/ && $make install -DCMAKE_SKIP_RPATH=ON \
# cd ${INSTALLDIR}/fftw/fftw*/ && ./configure --prefix=${INSTALLDIR}/fftw --enable-threads --enable-shared --enable-float "$@"
# cd ${INSTALLDIR}/fftw/fftw*/ && $make -j $J }
# cd ${INSTALLDIR}/fftw/fftw*/ && $make install
# echo Installed FFTW. # ThOr: Locate a libray with provided linker
#else # Arguments: name to grep for (libpng), then compiler/linker arguments.
# echo FFTW already installed. # Example: find_libfile libpng $(pkg-config --libs libpng) to return
#fi # /some/prefix/lib/libpng16.so.16
# find_libfile()
#if [ ! -d $INSTALLDIR/hdf5 ]; then {
# # local libname=$1; shift # Grep ldd output for that.
# # Install HDF5 wrk=$(mktemp -d) &&
# # (
# echo Installing HDF5... cd $wrk &&
# mkdir -p ${INSTALLDIR}/hdf5 echo 'int main(){ return 0; }' > test.c &&
# cd ${INSTALLDIR}/hdf5 && wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${HDF5_VERSION%.*}/hdf5-${HDF5_VERSION}/src/hdf5-${HDF5_VERSION}.tar.gz g++ "$@" -o test.bin test.c &&
# cd ${INSTALLDIR}/hdf5 && tar xzf hdf5*.tar.gz ldd test.bin | grep "$libname" | cut -f 3 -d ' '
# cd ${INSTALLDIR}/hdf5/hdf5*/ && ./configure --prefix=${INSTALLDIR}/hdf5 --enable-fortran --enable-cxx )
# cd ${INSTALLDIR}/hdf5/hdf5*/ && $make -j $J rm -rf "$wrk"
# cd ${INSTALLDIR}/hdf5/hdf5*/ && $make install }
# echo Installed HDF5.
#else mkdir -p $INSTALLDIR
# echo HDF5 already installed.
#fi # ThOr: We got the external libs covered vi pkgsrc.
# # Only need to care for the LOFAR code.
#export CMAKE_PREFIX_PATH=${INSTALLDIR}/hdf5
#
#if [ ! -d $INSTALLDIR/boost ]; then
# #
# # Install Boost.Python
# #
# echo Installing Boost.Python...
# echo "using python : ${PYTHON_VERSION} : /usr/bin/python3 : /usr/include/python${PYTHON_VERSION} : /usr/lib ;" > $HOME/user-config.jam
# mkdir -p $INSTALLDIR/boost/src
# cd $INSTALLDIR/boost/ && wget https://dl.bintray.com/boostorg/release/${BOOST_DOT_VERSION}/source/boost_${BOOST_VERSION}.tar.gz && tar xzf boost_${BOOST_VERSION}.tar.gz
# cd $INSTALLDIR/boost/boost_*/ && ./bootstrap.sh --prefix=$INSTALLDIR/boost --with-python-version=${PYTHON_VERSION} && ./b2 headers && ./b2 install toolset=gcc cxxflags=-std=c++11 --prefix=$INSTALLDIR/boost --with-atomic --with-chrono --with-date_time --with-filesystem --with-program_options --with-python --with-signals --with-test --with-thread -j $J
# # CHECK THE PYTHON VERSION HERE
# cd $INSTALLDIR/boost/lib/
# ln -s libboost_python${PYTHON_VERSION_NODOT}.a libboost_python.a
# ln -s libboost_python${PYTHON_VERSION_NODOT}.so libboost_python.so
# ln -s libboost_python${PYTHON_VERSION_NODOT}.so.1.67.0 libboost_python.so.1.67.0
# ln -s libboost_python${PYTHON_VERSION_NODOT}.a libboost_python3.a
# ln -s libboost_python${PYTHON_VERSION_NODOT}.so libboost_python3.so
# ln -s libboost_python${PYTHON_VERSION_NODOT}.so.1.67.0 libboost_python3.so.1.67.0
# ln -s libboost_numpy${PYTHON_VERSION_NODOT}.a libboost_numpy.a
# ln -s libboost_numpy${PYTHON_VERSION_NODOT}.so libboost_numpy.so
# ln -s libboost_numpy${PYTHON_VERSION_NODOT}.so.1.67.0 libboost_numpy.so.1.67.0
# ln -s libboost_numpy${PYTHON_VERSION_NODOT}.a libboost_numpy3.a
# ln -s libboost_numpy${PYTHON_VERSION_NODOT}.so libboost_numpy3.so
# ln -s libboost_numpy${PYTHON_VERSION_NODOT}.so.1.67.0 libboost_numpy3.so.1.67.0
# echo Installed Boost.Python.
#else
# echo Boost.Python already installed.
#fi
#
#if [ ! -d $INSTALLDIR/openblas ]; then
# #
# # Install OpenBLAS
# #
# echo Installing OpenBLAS...
# mkdir -p $INSTALLDIR/openblas/
# cd $INSTALLDIR/openblas/ && git clone https://github.com/xianyi/OpenBLAS.git src && cd src && git checkout $OPENBLAS_VERSION
# cd $INSTALLDIR/openblas/src && $make -j $J
# cd $INSTALLDIR/openblas/src && $make install PREFIX=$INSTALLDIR/openblas
# echo Installed OpenBLAS.
#else
# echo OpenBlas already installed.
#fi
#
#export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:${INSTALLDIR}/openblas
#
#if [ ! -d $INSTALLDIR/superlu ]; then
# #
# # Install SuperLU
# #
# echo Installing SuperLU...
# mkdir -p $INSTALLDIR/superlu/build
# cd $INSTALLDIR/superlu/ && git clone https://github.com/xiaoyeli/superlu.git src && cd src && git checkout $SUPERLU_VERSION
# cd $INSTALLDIR/superlu/build && $cmake -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=1 -DCMAKE_INSTALL_PREFIX=$INSTALLDIR/superlu -DUSE_XSDK_DEFAULTS=TRUE -Denable_blaslib=OFF -DBLAS_LIBRARY=$INSTALLDIR/openblas/lib/libopenblas.so ../src
# cd $INSTALLDIR/superlu/build && $make -j $J
# cd $INSTALLDIR/superlu/build && $make install
# echo Installed SuperLU.
#else
# echo SuperLu already installed.
#fi
#
#if [ ! -d $INSTALLDIR/armadillo ]; then
# #
# # Install Armadillo
# #
# echo Installing Armadillo...
# # check if superlu lib is .../lib or .../lib64
# mkdir -p $INSTALLDIR/armadillo/
# cd $INSTALLDIR/armadillo && wget http://sourceforge.net/projects/arma/files/armadillo-$ARMADILLO_VERSION.tar.xz
# cd $INSTALLDIR/armadillo && tar xf armadillo-$ARMADILLO_VERSION.tar.xz
# cd $INSTALLDIR/armadillo/armadillo*/ && ./configure && $cmake -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=1 -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLDIR/armadillo -Dopenblas_LIBRARY:FILEPATH=$INSTALLDIR/openblas/lib/libopenblas.so -DSuperLU_INCLUDE_DIR:PATH=$INSTALLDIR/superlu/include -DSuperLU_LIBRARY:FILEPATH=$INSTALLDIR/superlu/lib/libsuperlu.so
# cd $INSTALLDIR/armadillo/armadillo*/ && $make -j $J
# cd $INSTALLDIR/armadillo/armadillo*/ && $make install
# echo Installed Armadillo.
#else
# echo Armadillo already installed.
#fi
#
#if [ ! -d $INSTALLDIR/cfitsio ]; then
# #
# # Install-cfitsio
# #
# echo Installing CFITSIO...
# mkdir -p ${INSTALLDIR}/cfitsio/build
# cd ${INSTALLDIR}/cfitsio && wget http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio-${CFITSIO_VERSION}.tar.gz
# cd ${INSTALLDIR}/cfitsio && tar xf cfitsio-${CFITSIO_VERSION}.tar.gz
# cd ${INSTALLDIR}/cfitsio/build && $cmake -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=1 -DCMAKE_INSTALL_PREFIX=${INSTALLDIR}/cfitsio/ ../cfitsio-${CFITSIO_VERSION}
# cd ${INSTALLDIR}/cfitsio/build && $make -j $J
# cd ${INSTALLDIR}/cfitsio/build && $make install
# echo Installed CFITSIO.
#else
# echo CFITSIO already installed.
#fi
#
#if [ ! -d $INSTALLDIR/wcslib ]; then
# #
# # Install-wcslib
# #
# echo Installing WCSLIB...
# mkdir ${INSTALLDIR}/wcslib
# if [ "${WCSLIB_VERSION}" = "latest" ]; then cd ${INSTALLDIR}/wcslib && wget --retry-connrefused ftp://anonymous@ftp.atnf.csiro.au/pub/software/wcslib/wcslib.tar.bz2 -O wcslib-latest.tar.bz2; fi
# if [ "${WCSLIB_VERSION}" != "latest" ]; then cd ${INSTALLDIR}/wcslib && wget --retry-connrefused ftp://anonymous@ftp.atnf.csiro.au/pub/software/wcslib/wcslib-${WCSLIB_VERSION}.tar.bz2; fi
# cd ${INSTALLDIR}/wcslib && tar xf wcslib-*.tar.bz2
# #cd ${INSTALLDIR} && mkdir wcslib && cd wcslib && svn checkout https://github.com/astropy/astropy/trunk/cextern/wcslib
# cd ${INSTALLDIR}/wcslib/wcslib* && ./configure --prefix=${INSTALLDIR}/wcslib --with-cfitsiolib=${INSTALLDIR}/cfitsio/lib/ --with-cfitsioinc=${INSTALLDIR}/cfitsio/include/ --without-pgplot
# cd ${INSTALLDIR}/wcslib/wcslib* && $make -j $J
# cd ${INSTALLDIR}/wcslib/wcslib* && $make install -j $J
# echo Installed WCSLIB.
#else
# echo WCSLIB already installed.
#fi
#
#
## Make library and header directories easily available for future CMakes.
#export CMAKE_INCLUDE=$INSTALLDIR/cfitsio/include:$INSTALLDIR/wcslib/include
#export CMAKE_LIBRARY=$INSTALLDIR/cfitsio/lib:$INSTALLDIR/wcslib/lib
#export CMAKE_PREFIX_PATH=$INSTALLDIR/casacore:$INSTALLDIR/cfitsio:$INSTALLDIR/dysco:$INSTALLDIR/idg:$INSTALLDIR/wcslib:/usr/lib64
#export CPATH=$INSTALLDIR/cfitsio/lib:$INSTALLDIR/wcslib/lib
######################################### #########################################
# Install main LOFAR software packages. # # Install main LOFAR software packages. #
######################################### #########################################
if [ ! -d $INSTALLDIR/casacore ]; then if [ ! -e $INSTALLDIR/casacore/.done ]; then
# #
# Install CASAcore # Install CASAcore
# #
echo Installing CASAcore... echo Installing CASAcore... &&
mkdir -p ${INSTALLDIR}/casacore/build mkdir -p $INSTALLDIR/casacore &&
mkdir -p ${INSTALLDIR}/casacore/data cd $INSTALLDIR/casacore &&
cd $INSTALLDIR/casacore && git clone https://github.com/casacore/casacore.git src rm -rf bin lib &&
if [ "${CASACORE_VERSION}" != "latest" ]; then cd ${INSTALLDIR}/casacore/src && git checkout tags/${CASACORE_VERSION}; fi if test -e src && test -e data; then
cd ${INSTALLDIR}/casacore/data && wget --retry-connrefused ftp://anonymous@ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar echo "Re-using existing sources."
cd ${INSTALLDIR}/casacore/data && tar xf WSRT_Measures.ztar
cd ${INSTALLDIR}/casacore/build && $cmake $CMAKE_RPATH -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${INSTALLDIR}/casacore/ -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DDATA_DIR:PATH=${INSTALLDIR}/casacore/data -DBoost_LIBRARY_DIR_RELEASE:PATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib -DBoost_PYTHON_LIBRARY_RELEASE:FILEPATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/libboost_python36.so -DBOOST_PYTHON3_LIBRARY_NAME:STRING=python -DENABLE_TABLELOCKING=OFF -DUSE_OPENMP=True -DUSE_FFTW3=True -DUSE_HDF5=True -DBUILD_PYTHON:BOOL=False -DBUILD_PYTHON3:BOOL=True ../src/
cd ${INSTALLDIR}/casacore/build && $make -j ${J}
cd ${INSTALLDIR}/casacore/build && $make install
ln -s ${INSTALLDIR}/casacore/lib/libcasa_python3.so ${INSTALLDIR}/casacore/lib/libcasa_python.so
echo Installed CASAcore.
else else
echo CASAcore already installed. rm -rf src build data &&
mkdir -p build data &&
git clone https://github.com/casacore/casacore.git src &&
if [ "${CASACORE_VERSION}" != "latest" ]; then
( cd src &&
git checkout tags/${CASACORE_VERSION} )
fi fi
( cd data &&
wget --retry-connrefused \
ftp://anonymous@ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar &&
tar xf WSRT_Measures.ztar )
fi &&
cd build &&
use_prefix $INSTALLDIR/casacore
run_cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${INSTALLDIR}/casacore \
-DDATA_DIR:PATH=${INSTALLDIR}/casacore/data \
-DENABLE_TABLELOCKING=OFF \
-DUSE_OPENMP=ON \
-DUSE_FFTW3=ON \
-DUSE_HDF5=ON \
-DBUILD_PYTHON=OFF \
-DBUILD_PYTHON3=ON \
../src/ &&
make -j $J &&
make install &&
# ThOr: Let's see if that is really needed ...
#ln -s ${INSTALLDIR}/casacore/lib/libcasa_python3.so \
# ${INSTALLDIR}/casacore/lib/libcasa_python.so &&
echo Installed CASAcore. &&
touch $INSTALLDIR/casacore/.done
else
echo CASAcore already installed.
fi || exit 1
prefix=$INSTALLDIR/python-casacore
pycasacorelib=$prefix/lib/python$PYTHON_VERSION/site-packages
# ThOr: Subsequent builds might need that, so export it always here.
export PYTHONPATH=$pycasacorelib:$PYTHONPATH
if [ ! -d $INSTALLDIR/python-casacore ]; then if [ ! -e $prefix/.done ]; then
# #
# Install-python-casacore # Install-python-casacore
# #
# Finding libraries is broken, patch the setup to include the previously installed boost and casacore libraries. # Finding libraries is broken, patch the setup to include the previously installed boost and casacore libraries.
# note the the python executable needs to be the right one # note the the python executable needs to be the right one
mkdir ${INSTALLDIR}/python-casacore mkdir -p $prefix &&
mkdir -p ${INSTALLDIR}/python-casacore/lib/python${PYTHON_VERSION}/site-packages/ cd $prefix &&
export PYTHONPATH=$INSTALLDIR/python-casacore/lib/python${PYTHON_VERSION}/site-packages/:$PYTHONPATH rm -rf lib bin src &&
if test -e src.tar.gz; then
cd ${INSTALLDIR}/python-casacore && git clone https://github.com/casacore/python-casacore # ThOr: Dunno how to clean, but we can extract archive to avoid re-dowload.
if [ "$PYTHON_CASACORE_VERSION" != "latest" ]; then cd ${INSTALLDIR}/python-casacore/python-casacore && git checkout tags/${PYTHON_CASACORE_VERSION}; fi echo "Using archived sources."
cd ${INSTALLDIR}/python-casacore/python-casacore && ./setup.py build_ext --swig-opts=-c++ -I/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/include/python3.6:${INSTALLDIR}/casacore/include/ -L/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/:${INSTALLDIR}/casacore/lib/ install --prefix ${INSTALLDIR}/python-casacore/ tar -xf src.tar.gz
echo Installed Python CASAcore. else
echo "Fresh download."
git clone https://github.com/casacore/python-casacore src &&
if [ "$PYTHON_CASACORE_VERSION" != "latest" ]; then
( cd src && git checkout tags/v$PYTHON_CASACORE_VERSION )
fi &&
tar -czf src.tar.gz src
fi &&
# ThOr: Note that ${VAR} serves no other purpose than to delimit
# the name VAR itself. It does not imply any quoting. "$VAR" is careful,
# ${VAR} is't. "${VAR}" would be. You should either do use the braces
# where required only (${VAR}_suffix) or apply them alwas as a matter
# of style. I myself don't like them where not needed.
mkdir -p $pycasacorelib &&
cd src &&
# ThOr: with the pythonversion/3 module, the plain python does the correct
# thing. But an alternative would be to call python3 setup.py instead of
# ./setup.py .
use_prefix $INSTALLDIR/casacore $prefix &&
# This magically picks up some RPATH, not sure how, but does neither
# include confgured casacore path or its own install prefix. But it seems
# to honour LDFLAGS.
LDFLAGS="$(rrz-build-linkpath -R) $LDFLAGS" \
./setup.py build_ext --swig-opts=-c++ \
-I$INSTALLDIR/casacore/include -L$INSTALLDIR/casacore/lib \
install --prefix $prefix &&
echo Installed Python CASAcore. &&
touch $prefix/.done
else else
echo Python-CASAcore already installed. echo Python-CASAcore already installed.
fi fi || exit 1
if [ ! -d $INSTALLDIR/dysco ]; then prefix=$INSTALLDIR/dysco
if [ ! -e $prefix/.done ]; then
# #
# Install Dysco # Install Dysco
# #
echo Installing Dysco... echo Installing Dysco...
mkdir -p $INSTALLDIR/dysco/build mkdir -p $prefix &&
cd $INSTALLDIR/dysco && git clone https://github.com/aroffringa/dysco.git src cd $prefix &&
cd $INSTALLDIR/dysco/build && $cmake $CMAKE_RPATH -DCMAKE_CXX_FLAGS="-D_GLIB_USE_CXX_ABI=1 -march=native -O2 -fno-math-errno -ftree-vectorize" -DCMAKE_INSTALL_PREFIX=$INSTALLDIR/dysco -DCASACORE_ROOT_DIR=$INSTALLDIR/casacore ../src rm -rf lib bin build &&
cd $INSTALLDIR/dysco/build && $make -j $J if [ -e src ]; then
cd $INSTALLDIR/dysco/build && $make install echo "Using existing source."
echo Installed Dysco. else
git clone https://github.com/aroffringa/dysco.git src
fi &&
mkdir build &&
cd build &&
use_prefix $INSTALLDIR/casacore $prefix &&
run_cmake \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DCASACORE_ROOT_DIR=$INSTALLDIR/casacore \
../src &&
make -j $J &&
make install &&
echo Installed Dysco. &&
touch $prefix/.done
else else
echo Dysco already installed. echo Dysco already installed.
fi fi || exit 1
if [ ! -d $INSTALLDIR/aoflagger ]; then prefix=$INSTALLDIR/aoflagger
if [ ! -e $prefix/.done ]; then
echo "Installing aoflagger..."
# #
# Install-aoflagger # Install-aoflagger
# #
# might have to comment these in CMakeLists.txt mkdir -p $prefix &&
# > pkg_check_modules(GTKMM gtkmm-3.0>=3.0.0) cd $prefix &&
# > pkg_check_modules(SIGCXX sigc++-2.0) rm -rf build bin lib presrc&&
mkdir -p ${INSTALLDIR}/aoflagger/build if [ -e src ]; then
cd ${INSTALLDIR}/aoflagger && git clone git://git.code.sf.net/p/aoflagger/code aoflagger echo "Using existing sources."
if [ "${AOFLAGGER_VERSION}" != "latest" ]; then cd ${INSTALLDIR}/aoflagger/aoflagger && git checkout tags/${AOFLAGGER_VERSION}; fi
cd ${INSTALLDIR}/aoflagger/build && $cmake $CMAKE_RPATH -DCASACORE_ROOT_DIR=$INSTALLDIR/casacore -DCMAKE_CXX_FLAGS="-D_GLIB_USE_CXX_ABI=1 -march=native -O2 -fno-math-errno -ftree-vectorize" -DBoost_PYTHON_LIBRARY_RELEASE:FILEPATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/libboost_python36.so -DPNG_LIBRARY_RELEASE:FILEPATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/libpng16.so -DCMAKE_INSTALL_PREFIX=${INSTALLDIR}/aoflagger/ -DBUILD_SHARED_LIBS=ON -DPORTABLE=True ../aoflagger
cd ${INSTALLDIR}/aoflagger/build && make -j $J
cd ${INSTALLDIR}/aoflagger/build && make install
else else
echo AOFlagger already installed. git clone git://git.code.sf.net/p/aoflagger/code presrc
if [ "${AOFLAGGER_VERSION}" != "latest" ]; then
( cd presrc && git checkout tags/${AOFLAGGER_VERSION} )
fi fi
if ! [ grep -q Boost::python presrc/src/CMakeLists.txt ]; then
echo "Patching aoflagger, mainly for Boost::python"
(cd presrc && patch -Np1 < "$scriptdir/aoflagger-buildfix.patch" )
fi &&
mv presrc src
fi &&
mkdir build &&
cd build &&
# ThOr: aoflagger build finds system's libpng, but dependencies use
# libpng16 from pkgsrc. So that semi-hardcoded fix stays here.
# But the Boost+Python stuff got fixed via the patch above.
use_prefix $INSTALLDIR/casacore $prefix &&
run_cmake \
-DCASACORE_ROOT_DIR=$INSTALLDIR/casacore \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DPNG_LIBRARY_RELEASE:FILEPATH="$(find_libfile libpng $(pkg-config --libs libpng))" \
-DBUILD_SHARED_LIBS=ON -DPORTABLE=ON \
../src &&
make -j $J &&
make install &&
echo "Done with aoflagger." &&
touch $prefix/.done
else
echo AOFlagger already installed.
fi || exit 1
prefix=$INSTALLDIR/LOFARBeam
if [ ! -d $INSTALLDIR/LOFARBeam ]; then if [ ! -e $prefix/.done ]; then
# #
# Install the standalone StationResponse libraries. # Install the standalone StationResponse libraries.
# #
echo Installing LOFARBeam... echo Installing LOFARBeam...
mkdir -p $INSTALLDIR/LOFARBeam/build mkdir -p $prefix &&
cd $INSTALLDIR/LOFARBeam && git clone https://github.com/lofar-astron/LOFARBeam.git src cd $prefix &&
cd $INSTALLDIR/LOFARBeam/build && $cmake $CMAKE_RPATH -DCASACORE_ROOT_DIR=$INSTALLDIR/casacore -DBoost_PYTHON3_LIBRARY_RELEASE:FILEPATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/libboost_python36.so -DBoost_NUMPY3_LIBRARY_RELEASE:FILEPATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/libboost_numpy36.so -DDPYTHON_EXECUTABLE=~/opt/bin/python -DCMAKE_INSTALL_PREFIX=$INSTALLDIR/LOFARBeam ../src rm -rf build bin lib presrc &&
cd $INSTALLDIR/LOFARBeam/build && $make -j $J if [ -e src ]; then
cd $INSTALLDIR/LOFARBeam/build && $make install echo "Using existing sources."
fi else
git clone https://github.com/lofar-astron/LOFARBeam.git presrc
if ! [ grep -q Boost:: presrc/CMakeLists.txt ]; then
echo "Patching LOFARBeam, mainly for Boost::python"
(cd presrc && patch -Np1 < "$scriptdir/LOFARBeam-buildfix.patch" )
fi &&
mv presrc src
fi &&
mkdir build &&
cd build &&
use_prefix $INSTALLDIR/casacore $prefix &&
run_cmake \
-DCASACORE_ROOT_DIR=$INSTALLDIR/casacore \
-DCMAKE_INSTALL_PREFIX=$prefix \
../src &&
make -j $J &&
make install &&
echo Done with LOFARBeam. &&
touch $prefix/.done
fi || exit 1
if [ ! -d $INSTALLDIR/idg ]; then prefix=$INSTALLDIR/idg
if [ ! -e $prefix/.done ]; then
# #
# Install the Image Domain Gridder (IDG). # Install the Image Domain Gridder (IDG).
# #
echo Installing IDG. echo Installing IDG.
mkdir -p $INSTALLDIR/idg/build mkdir -p $prefix &&
cd $INSTALLDIR/idg && git clone https://gitlab.com/astron-idg/idg.git src cd $prefix &&
cd $INSTALLDIR/idg/build && $cmake $CMAKE_RPATH -DCMAKE_INSTALL_PREFIX=$INSTALLDIR/idg -DBUILD_WITH_MKL=ON -DBUILD_LIB_CPU=ON -DBUILD_LIB_CUDA=ON -DMKL_INCLUDE_DIRS:PATH=/home/fdg/node31/opt/intel/mkl/include ../src rm -rf bin lib presrc build &&
cd $INSTALLDIR/idg/build && $make -j $J if test -d src; then
cd $INSTALLDIR/idg/build && $make install echo "Using existing source."
else
git clone https://gitlab.com/astron-idg/idg.git presrc &&
mv presrc src
fi &&
mkdir build &&
cd build &&
use_prefix $prefix &&
# ThOr: The FindMKL included (two copies!) tries to locate libmkl_rt and
# sets paths from that one. Uses MKL_LIB as environment hint.
module load mkl/2020.0.166 &&
MKL_LIB=$LD_RUN_PATH run_cmake \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DBUILD_WITH_MKL=ON \
-DBUILD_LIB_CPU=ON \
-DBUILD_LIB_CUDA=ON \
-DCUDA_INCLUDE_DIR=$CUDA_HOME/include \
-DCUDA_FFT_LIBRARY=$(find_libfile libcufft.so -lcufft) \
-DCUDA_NVTX_LIBRARY=$(find_libfile libnvToolsExt.so -lnvToolsExt) \
../src &&
make -j $J &&
make install &&
module unload mkl &&
echo "Done with IDG." &&
touch $prefix/.done
else else
echo IDG already installed. echo IDG already installed.
fi fi || exit 1
if [ ! -d $INSTALLDIR/DP3 ]; then prefix=$INSTALLDIR/DP3
if [ ! -e $prefix/.done ]; then
echo Installing DP3...
# #
# Install DP3. # Install DP3.
# #
echo Installing DP3... mkdir -p $prefix
mkdir -p $INSTALLDIR/DP3/build cd $prefix
git clone https://github.com/lofar-astron/DP3.git $INSTALLDIR/DP3/src rm -rf build bin lib presrc &&
cd $INSTALLDIR/DP3/build && $cmake $CMAKE_RPATH -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLDIR/DP3 -DCASACORE_ROOT_DIR=$INSTALLDIR/casacore -DBoost_PYTHON3_LIBRARY_RELEASE:FILEPATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/libboost_python36.so -DIDGAPI_INCLUDE_DIRS:PATH=$INSTALLDIR/idg/include -DIDGAPI_LIBRARIES:PATH=$INSTALLDIR/idg/lib/libidg-api.so -DLOFAR_STATION_RESPONSE_DIR:PATH=$INSTALLDIR/LOFARBeam/include -DLOFAR_STATION_RESPONSE_LIB:FILEPATH=$INSTALLDIR/LOFARBeam/lib/libstationresponse.so -DAOFLAGGER_INCLUDE_DIR:PATH=$INSTALLDIR/aoflagger/include -DAOFLAGGER_LIB:FILEPATH=$INSTALLDIR/aoflagger/lib/libaoflagger.so -DPYTHON_INCLUDE_DIR:PATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/include/python3.6 -DPYTHON_LIBRARY:FILEPATH=/sw/env/cuda-10.2.89_gcc-8.3.0_openmpi-4.0.2/pkgsrc/2019Q4/lib/libpython3.6.so ../src if test -e src; then
cd $INSTALLDIR/DP3/build && $make -j $J echo "Using existing sources."
cd $INSTALLDIR/DP3/build && $make install else
echo Installed DP3. git clone https://github.com/lofar-astron/DP3.git presrc &&
if ! [ grep -q Boost::python presrc/src/CMakeLists.txt ]; then
echo "Patching build, mainly for Boost::python"
(cd presrc && patch -Np1 < "$scriptdir/DP3-buildfix.patch" )
fi &&
mv presrc src
fi &&
mkdir build &&
cd build &&
use_prefix \
$INSTALLDIR/casacore \
$INSTALLDIR/idg \
$INSTALLDIR/LOFARBeam \
$INSTALLDIR/aoflagger \
$prefix &&
# ThOr: It's braindead that I still have to provide things like
# AOFLAGGER_INCLUDE_DIR and AOFLAGGER_LIB! You should consider
# just locating the library via LD_RUN_PATH or LIBRARY_PATH, set
# by use_prefix. Or install an aoflagger-config script, like NetCDF.
# Or a pkg-config file. Anything standard!
# Really … having to specify the full path to the .so file?! Why do
# you love hurting yourself (or your fellow astrophysicists) that much?
run_cmake \
-DCMAKE_INSTALL_PREFIX:PATH=$prefix \
-DCASACORE_ROOT_DIR=$INSTALLDIR/casacore \
-DIDGAPI_INCLUDE_DIRS:PATH=$INSTALLDIR/idg/include \
-DIDGAPI_LIBRARIES:PATH=$INSTALLDIR/idg/lib/libidg-api.so \
-DLOFAR_STATION_RESPONSE_DIR:PATH=$INSTALLDIR/LOFARBeam/include \
-DAOFLAGGER_INCLUDE_DIR=$INSTALLDIR/aoflagger/include \
-DAOFLAGGER_LIB=$INSTALLDIR/aoflagger/lib/libaoflagger.so \
../src &&
make -j $J &&
make install &&
echo Installed DP3. &&
touch $prefix/.done
else else
echo DP3 already installed. echo DP3 already installed.
fi fi
prefix=$INSTALLDIR/wsclean
if [ ! -d $INSTALLDIR/wsclean ]; then if [ ! -e $prefix/.done ]; then
# #
# Install WSClean # Install WSClean
# #
# Sometimes there are FFT to update by hand in CMakeCache.txt # Sometimes there are FFT to update by hand in CMakeCache.txt
# ThOr: Please no! ;-)
echo Installing WSClean. echo Installing WSClean.
mkdir -p $INSTALLDIR/wsclean/build mkdir -p $prefix &&
if [ "$WSCLEAN_VERSION" != "latest" ]; then cd ${INSTALLDIR}/wsclean && wget http://downloads.sourceforge.net/project/wsclean/wsclean-${WSCLEAN_VERSION}/wsclean-${WSCLEAN_VERSION}.tar.bz2 && tar -xjf wsclean-${WSCLEAN_VERSION}.tar.bz2 && cd wsclean-${WSCLEAN_VERSION}; fi cd $prefix &&
if [ "$WSCLEAN_VERSION" = "latest" ]; then cd ${INSTALLDIR}/wsclean && git clone git://git.code.sf.net/p/wsclean/code src && cd src/wsclean; fi rm -rf build bin lib presrc &&
cd $INSTALLDIR/wsclean/build && $cmake $CMAKE_RPATH -DCMAKE_CXX_FLAGS=${CXX_FLAGS} -DCMAKE_INSTALL_PREFIX=$INSTALLDIR/wsclean -DCASACORE_ROOT_DIR=$INSTALLDIR/casacore -DIDGAPI_INCLUDE_DIRS:PATH=$INSTALLDIR/idg/include -DIDGAPI_LIBRARIES:PATH=$INSTALLDIR/idg/lib/libidg-api.so -DLOFAR_STATION_RESPONSE_INCLUDE_DIR:PATH=$INSTALLDIR/LOFARBeam/include -DLOFAR_STATION_RESPONSE_LIB:FILEPATH=$INSTALLDIR/LOFARBeam/lib/libstationresponse.so ../src/wsclean if test -e src; then
cd $INSTALLDIR/wsclean/build && $make -j $J echo "Using existing sources."
cd $INSTALLDIR/wsclean/build && $make install else
if [ "$WSCLEAN_VERSION" != "latest" ]; then
# ThOr: Untested ...
wget http://downloads.sourceforge.net/project/wsclean/wsclean-${WSCLEAN_VERSION}/wsclean-${WSCLEAN_VERSION}.tar.bz2 &&
tar -xf wsclean-${WSCLEAN_VERSION}.tar.bz2 &&
mkdir presrc &&
mv wsclean-${WSCLEAN_VERSION} presrc/wsclean
else
git clone git://git.code.sf.net/p/wsclean/code presrc &&
mv presrc src
fi
fi &&
mkdir build &&
cd build &&
use_prefix $INSTALLDIR/casacore $INSTALLDIR/LOFARBeam $INSTALLDIR/idg &&
LDFLAGS="$(rrz-build-linkpath -R) $LDFLAGS" cmake \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DCASACORE_ROOT_DIR=$INSTALLDIR/casacore \
-DIDGAPI_INCLUDE_DIRS=$INSTALLDIR/idg/include \
-DIDGAPI_LIBRARIES=$INSTALLDIR/idg/lib/libidg-api.so \
-DLOFAR_STATION_RESPONSE_INCLUDE_DIR=$INSTALLDIR/LOFARBeam/include \
-DLOFAR_STATION_RESPONSE_LIB=$INSTALLDIR/LOFARBeam/lib/libstationresponse.so \
../src/wsclean &&
make -j $J &&
make install &&
echo "Done with WSClean." &&
touch $prefix/.done
else else
echo WSClean already installed. echo WSClean already installed.
fi fi
prefix=$INSTALLDIR/pyBDSF &&
if [ ! -d $INSTALLDIR/pyBDSF ]; then pybdsflib=$prefix/lib/python$PYTHON_VERSION/site-packages
export PYTHONPATH=$pybdsflib:$PYTHONPATH &&
if [ ! -e $prefix/.done ]; then
echo Installing pyBDSF. echo Installing pyBDSF.
# #
# Install pyBDSF. # Install pyBDSF.
# #
mkdir -p $INSTALLDIR/pyBDSF/lib/python$PYTHON_VERSION/site-packages mkdir -p $prefix &&
export PYTHONPATH=$INSTALLDIR/pyBDSF/lib/python$PYTHON_VERSION/site-packages:$PYTHONPATH cd $prefix &&
export export LIBRARY_PATH=$LD_LIBRARY_PATH rm -rf build bin lib presrc &&
cd $INSTALLDIR/pyBDSF && git clone https://github.com/lofar-astron/PyBDSF pyBDSF if test -e src; then
cd $INSTALLDIR/pyBDSF/pyBDSF && python setup.py install --prefix=$INSTALLDIR/pyBDSF echo "Using existing sources."
else
git clone https://github.com/lofar-astron/PyBDSF presrc &&
mv presrc src
fi &&
mkdir -p $pybdsflib &&
cd src &&
LDFLAGS="$(rrz-build-linkpath -R) $LDFLAGS" \
NPY_DISTUTILS_APPEND_FLAGS=1 \
python setup.py install --prefix=$prefix &&
echo "Done with pyBDSF." &&
touch $prefix/.done
else else
echo pyBDSF already installed. echo pyBDSF already installed.
fi fi
exit
if [ ! -d $INSTALLDIR/lsmtool ]; then if [ ! -d $INSTALLDIR/lsmtool ]; then
echo Installing LSMTool. echo Installing LSMTool.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment