diff --git a/.gitattributes b/.gitattributes index e2a508e2662643fb069ec508bdbee5452ab2f96e..d6a225875ddd0f943feafe5b15b6e0b97c19147a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2356,6 +2356,9 @@ CMake/variants/variants.node521 -text CMake/variants/variants.phi -text CMake/variants/variants.sharkbay -text Docker/docker-build-all.sh -text +Docker/dynspec/Dockerfile -text +Docker/dynspec/bashrc -text +Docker/dynspec/chuser.sh -text Docker/lofar-base/Dockerfile.tmpl -text Docker/lofar-base/bashrc -text Docker/lofar-base/bashrc.d/00-casacore -text diff --git a/Docker/CMakeLists.txt b/Docker/CMakeLists.txt index 3bb17c3f7baba97847fce8869cc9329871d40e54..2aab64bc7d23f4d08dd5f2203185f303f76552e8 100644 --- a/Docker/CMakeLists.txt +++ b/Docker/CMakeLists.txt @@ -57,6 +57,7 @@ endforeach() # Install everything else install(DIRECTORY + dynspec lofar-base lofar-pipeline lofar-outputproc diff --git a/Docker/docker-build-all.sh b/Docker/docker-build-all.sh index fbd69c3bb1eda7c9e2c25ba02f7aebb9bc246e24..2bcc65546c9ad8a2bc42c4f54a5014c3b344a6b3 100755 --- a/Docker/docker-build-all.sh +++ b/Docker/docker-build-all.sh @@ -12,5 +12,6 @@ cd ${LOFARROOT}/share/docker build lofar-base && \ build lofar-pipeline && \ build lofar-outputproc && \ -build lofar-tbb +build lofar-tbb && \ +build dynspec diff --git a/Docker/dynspec/Dockerfile b/Docker/dynspec/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..1f2c63f57e24cfcade4ff727591e14ab33be6c67 --- /dev/null +++ b/Docker/dynspec/Dockerfile @@ -0,0 +1,147 @@ +# +# base +# +FROM ubuntu:12.04 + +# +# common-environment +# +ENV USER=lofar +ENV INSTALLDIR=/opt + +# +# environment +# +ENV DEBIAN_FRONTEND=noninteractive \ + PYTHON_VERSION=2.7 + +# +# versions +# Requires boost 1.48 +# Remove casacore? +# +ENV CASACORE_VERSION=2.0.3 \ + CASAREST_VERSION=1.4.1 \ + PYTHON_CASACORE_VERSION=2.0.1 \ + BOOST_VERSION=1.48 + +# +# set-uid +# +ENV UID=1000 + +# +# set-build-options +# +ENV J=6 + +# +# Base and runtime dependencies +# +#RUN sed -i 's/archive.ubuntu.com/osmirror.rug.nl/' /etc/apt/sources.list +RUN apt-get update && apt-get upgrade -y +RUN apt-get install -y sudo +#python2.7 libpython2.7 +# apt-get install -y libblas3 liblapacke python-numpy libcfitsio3 libwcs4 libfftw3-bin libhdf5-7 libboost-python${BOOST_VERSION}.0 && \ +# apt-get install -y nano + + + +# +# setup-account +# +RUN echo 'ALL ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ + sed -i 's/requiretty/!requiretty/g' /etc/sudoers && \ + useradd -m -u ${UID} ${USER} && \ + chmod a+wr /etc/passwd /etc/group + +# +# setup install dir +# +RUN mkdir -p ${INSTALLDIR} && chown ${USER}.${USER} ${INSTALLDIR} + + +USER ${USER} + +# +# ******************* +# Lofar User Software +# ******************* +# +RUN sudo apt-get update && sudo apt-get upgrade -y && \ + sudo apt-get install -y g++ gfortran flex swig bison subversion \ + zlib1g-dev libatlas-base-dev liblapack-dev \ + libncurses5-dev libfreetype6-dev libpng12-dev \ + python-dev python-tk python-pyfits tk8.5-dev fftw3-dev \ + libbz2-dev libghc-readline-dev \ + git git git-core git-doc git-man git-svn \ + valgrind + +RUN sudo apt-get install -y libboost${BOOST_VERSION}-all-dev \ + wcslib-dev \ + cmake cmake-doc cmake-curses-gui make \ + libgsl0-dev \ + python-matplotlib \ + python-sphinx \ + libcfitsio3-dev \ + python-numpy \ + num-utils \ + python-scipy \ + libblas-dev \ + python-sip-dev \ + openmpi-bin openmpi-common \ + ipython + +RUN cd $INSTALLDIR && svn co http://usg.lofar.org/svn/code/trunk lofarsoft && \ + export LOFARSOFT=${INSTALLDIR}/lofarsoft && . $LOFARSOFT/devel_common/scripts/init.sh && \ + cd $LOFARSOFT && ./bootstrap && cd build && cmake -DCASACORE_FROM_LATEST_SVN_REVISION=ON . && make rebuild_cache && \ + rm -rf $LOFARSOFT/src/Pulsar + +ENV LOFARSOFT=${INSTALLDIR}/lofarsoft + +RUN sudo apt-get install -y libhdf5-serial-dev python-h5py + +RUN . $LOFARSOFT/devel_common/scripts/init.sh && cd $LOFARSOFT/build && make dal + +RUN cd /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/src/ICD3-ICD6-Rebin && \ + g++ -O3 -s -Wall -o DynspecPart *cpp -I /opt/lofarsoft/release//include -L /opt/lofarsoft/release//lib -llofardal -lhdf5 && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/Beam2Dynspec-Rebin /usr/local/bin/Beam2Dynspec-Rebin && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/src/ICD3-ICD6-Rebin/DynspecPart /usr/local/bin/DynspecPart && \ + cd /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/src/ICD3-ICD6-Quicklook && \ + g++ -O3 -s -Wall -o DynspecQuick *cpp -I /opt/lofarsoft/release//include -L /opt/lofarsoft/release//lib -llofardal -lhdf5 && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/Beam2Dynspec-Quick /usr/local/bin/Beam2Dynspec-Quick && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/src/ICD3-ICD6-Quicklook/DynspecQuick /usr/local/bin/DynspecQuick && \ + cd /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/src/ICD3-ICD6-Complete && \ + g++ -O3 -s -Wall -o DynspecAll *cpp -I /opt/lofarsoft/release//include -L /opt/lofarsoft/release//lib -llofardal -lhdf5 && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/Beam2Dynspec-Complete /usr/local/bin/Beam2Dynspec-Complete && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-CEP2/src/ICD3-ICD6-Complete/DynspecAll /usr/local/bin/DynspecAll && \ + cd /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/src/ICD6-Linear-Polar && \ + g++ -O3 -s -Wall -o Dynspec_Linear_Polar *cpp -I /opt/lofarsoft/release//include -L /opt/lofarsoft/release//lib -llofardal -lhdf5 && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/Dynspec-LinPol /usr/local/bin/Dynspec-LinPol && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/src/ICD6-Linear-Polar/Dynspec_Linear_Polar /usr/local/bin/Dynspec_Linear_Polar && \ + cd /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/src/ICD6-Rebin && \ + g++ -O3 -s -Wall -o Dyn2Dyn *cpp -I /opt/lofarsoft/release//include -L /opt/lofarsoft/release//lib -llofardal -lhdf5 && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/Dynspec-Rebin /usr/local/bin/Dynspec-Rebin && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/src/ICD6-Rebin/Dyn2Dyn /usr/local/bin/Dyn2Dyn && \ + cd /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/src/ICD6-Substraction && \ + g++ -O3 -s -Wall -o Dynspec_Substraction *cpp -I /opt/lofarsoft/release//include -L /opt/lofarsoft/release//lib -llofardal -lhdf5 && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/Dynspec-Substract /usr/local/bin/Dynspec-Substract && \ + sudo ln -s /opt/lofarsoft/src/Dynspec-Toolkit/Dynspec-Tool/src/ICD6-Substraction/Dynspec_Substraction /usr/local/bin/Dynspec_Substraction + + + + + +# +# config +# +COPY bashrc /opt/bashrc + +# +# entry +# +#COPY ["bashrc", "bashrc.d", "${INSTALLDIR}/"] + +COPY chuser.sh /usr/local/bin/chuser.sh +ENTRYPOINT ["/usr/local/bin/chuser.sh"] + diff --git a/Docker/dynspec/bashrc b/Docker/dynspec/bashrc new file mode 100644 index 0000000000000000000000000000000000000000..e0755976685f920e1be8d10947b541b996eafef6 --- /dev/null +++ b/Docker/dynspec/bashrc @@ -0,0 +1,15 @@ +#!/bin/bash + +# lofar +[ -r ${INSTALLDIR}/lofar/lofarinit.sh ] && source ${INSTALLDIR}/lofar/lofarinit.sh +export PATH PYTHONPATH LD_LIBRARY_PATH LOFARROOT + +# qpid +#source ${INSTALLDIR}/qpid/.profile + +# lofarsoft +echo "sourcing init" +source ${LOFARSOFT}/devel_common/scripts/init.sh + +export PYTHONPATH=$PYTHONPATH:${LOFARSOFT}/release/lib/python/dal +export LD_LIBRARY_PATH=LD_LIBRARY_PATH:${LOFARSOFT}/release/lib diff --git a/Docker/dynspec/chuser.sh b/Docker/dynspec/chuser.sh new file mode 100755 index 0000000000000000000000000000000000000000..9ac3603c1a072dffff02461e9e8e59b1833b7f4f --- /dev/null +++ b/Docker/dynspec/chuser.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Correct UID +export UID=`id -u` + +# Configure user +if [ -z "${USER}" ]; then + export USER=${UID} +fi + +# Create home directory +if [ -z "${HOME}" ]; then + export HOME=/home/${USER} + mkdir -p $HOME && cd $HOME +fi + +# Add user to system +fgrep -q ":x:${UID}:" /etc/passwd || echo "${USER}:x:${UID}:${UID}::${HOME}:/bin/bash" >> /etc/passwd +fgrep -q ":x:${UID}:" /etc/group || echo "${USER}:x:${UID}:" >> /etc/group + +# Set the environment +[ -e /opt/bashrc ] && source /opt/bashrc + +# Run the requested command +if [ -z "$*" ]; then + exec /bin/bash +else + exec "$@" +fi