diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 15213535538bd4508b9648d9b1d984eb688929f8..8e997436761f809b9c51fef4917143a39566b971 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -115,7 +115,6 @@ idg-integration-das: # Makes it easy to find the idg source location later on - export CURRENT_SOURCE=$PWD - source scripts/load_modules.sh - - module list - pip3 install --user --upgrade pip - pip3 install --user astropy scipy pytest pytest-lazy-fixture # pytest executable is installed in local/bin. Add to PATH @@ -124,14 +123,14 @@ idg-integration-das: - mkdir -p ~/opt/casacore && cd ~/opt/casacore && rm -rf * - git clone --branch v3.3.0 https://github.com/casacore/casacore src - mkdir build && cd build - - cmake -DCMAKE_INSTALL_PREFIX=.. -DCMAKE_PREFIX_PATH='/cm/shared/package/cfitsio/3430-gcc-6.3.0/;/cm/shared/package/wcslib/5.18-gcc-6.3.0/;/cm/shared/package/fftw/3.3.8-gcc-8.3.0/' -DBUILD_PYTHON=Off -DBUILD_PYTHON3=On -DUSE_FFTW3=On -DDATA_DIR=/cm/shared/package/casacore/v2.4.1-gcc-6.3.0/data/ ../src + - cmake -DCMAKE_INSTALL_PREFIX=.. -DCMAKE_PREFIX_PATH="${CFITSIO_ROOT_DIR};${WCSLIB_ROOT_DIR};${FFTW3_ROOT_DIR}" -DBUILD_PYTHON=Off -DBUILD_PYTHON3=On -DUSE_FFTW3=On -DDATA_DIR=/cm/shared/package/casacore/v2.4.1-gcc-6.3.0/data/ ../src - make install -j20 # Install everybeam --> replace with module load everybeam/[stable/latest] - mkdir -p ~/opt/everybeam && cd ~/opt/everybeam && rm -rf * - git clone https://git.astron.nl/RD/EveryBeam.git src - - cd src/ && git checkout 10a675097e2eaaeaa5cb2e1bf6770695fc0c4470 && cd .. + - cd src/ && git checkout v0.1.0 && cd .. - mkdir build && cd build - - cmake -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_PREFIX_PATH=/cm/shared/package/fftw -DCMAKE_INSTALL_PREFIX=.. ../src + - cmake -DCFITSIO_ROOT_DIR=${CFITSIO_ROOT_DIR} -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_PREFIX_PATH=${FFTW3_ROOT_DIR} -DCMAKE_INSTALL_PREFIX=.. ../src - make install -j4 # Install aoflagger3 --> replace with module load aoflagger3/[something] - mkdir -p ~/opt/aoflagger && cd ~/opt/aoflagger && rm -rf * @@ -141,7 +140,7 @@ idg-integration-das: - grep -v "pkg_check_modules(GTKMM gtkmm-3.0>=3.0.0)" CMakeLists.txt > temp && mv temp CMakeLists.txt - cd .. - mkdir build && cd build - - cmake -DCMAKE_LIBRARY_PATH=/usr/lib64:$CMAKE_LIBRARY_PATH -DFFTW3_LIB=/cm/shared/package/fftw/3.3.8-gcc-8.3.0/lib/libfftw3.so -DCFITSIO_ROOT_DIR=/cm/shared/package/cfitsio/3430-gcc-6.3.0 -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_INSTALL_PREFIX=.. ../src + - cmake -DCMAKE_LIBRARY_PATH=/usr/lib64:$CMAKE_LIBRARY_PATH -DFFTW3_LIB=${FFTW3_LIB}/libfftw3.so -DCFITSIO_ROOT_DIR=${CFITSIO_ROOT_DIR} -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_INSTALL_PREFIX=.. ../src - make install -j4 # Install idg - mkdir -p ~/opt/idg && cd ~/opt/idg && rm -rf * @@ -157,7 +156,7 @@ idg-integration-das: - git clone https://gitlab.com/aroffringa/wsclean.git src - cd src/ && git checkout development && cd .. - mkdir build && cd build - - cmake -DCFITSIO_ROOT_DIR=/cm/shared/package/cfitsio/3430-gcc-6.3.0 -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_PREFIX_PATH='~/opt/idg;~/opt/everybeam;/cm/shared/package/fftw/3.3.8-gcc-8.3.0/' -DCMAKE_INSTALL_PREFIX=.. ../src + - cmake -DCFITSIO_ROOT_DIR=${CFITSIO_ROOT_DIR} -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_PREFIX_PATH="~/opt/idg;~/opt/everybeam;${FFTW3_ROOT_DIR}" -DCMAKE_INSTALL_PREFIX=.. ../src - make install -j4 - export PATH=$PATH:~/opt/wsclean/bin # Install dp3 @@ -165,19 +164,17 @@ idg-integration-das: - git clone https://github.com/lofar-astron/DP3.git src - cd src/ && git checkout development && cd .. - mkdir build && cd build - - cmake -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_PREFIX_PATH='~/opt/aoflagger;~/opt/everybeam;~/opt/idg' -DCMAKE_INSTALL_PREFIX=.. ../src + - cmake -DCASACORE_ROOT_DIR=~/opt/casacore -DCMAKE_PREFIX_PATH="~/opt/aoflagger;~/opt/everybeam;~/opt/idg" -DCMAKE_INSTALL_PREFIX=.. ../src - make install -j4 - export PATH=$PATH:~/opt/dp3/bin # Extend the LD_LIBRARY_PATH - export LD_LIBRARY_PATH=~/opt/everybeam/lib/:~/opt/casacore/lib:~/opt/aoflagger/lib:~/opt/idg/lib:$LD_LIBRARY_PATH - - export LD_LIBRARY_PATH=/cm/shared/package/openblas/0.3.6-gcc-8.3.0/lib64:$LD_LIBRARY_PATH + - export LD_LIBRARY_PATH=${OPENBLAS_LIB}:$LD_LIBRARY_PATH script: - cd ~/opt/idg/build # Run unit tests (more precisely: the non-integration tests) - ctest -j8 --verbose -LE integration - echo "Finished unit tests" - # Capture coverage!? - # # Run integration tests - "python3 -m pip install --user --only-binary=:all: python-casacore" - ctest --verbose -L integration diff --git a/cmake/version.cmake b/cmake/version.cmake index fa5883904c4d93d1259c49f42311f79506da855d..210b68ae6d1fc51fb3ea96c335259558505c109c 100644 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -22,7 +22,8 @@ else() COMMAND bash -c "${GIT_COMMAND} diff --quiet --exit-code && echo +" OUTPUT_VARIABLE GIT_DIFF) execute_process( - COMMAND bash -c "${GIT_COMMAND} describe --exact-match --tags" + # No need to do an --exact-match, most recent tag should be OK + COMMAND bash -c "${GIT_COMMAND} describe --tags" OUTPUT_VARIABLE GIT_TAG ERROR_QUIET) execute_process( COMMAND bash -c "${GIT_COMMAND} rev-parse --abbrev-ref HEAD" @@ -33,6 +34,16 @@ else() string(STRIP "${GIT_DIFF}" GIT_DIFF) string(STRIP "${GIT_TAG}" GIT_TAG) string(STRIP "${GIT_BRANCH}" GIT_BRANCH) + + if(GIT_TAG MATCHES "^([0-9]+\\.[0-9]+\\.[0-9]+).*" OR GIT_TAG MATCHES "^([0-9]+\\.[0-9]+).*") + # Regexp GIT_TAG on major.minor.match or major.minor, strip any commit info + set(GIT_TAG "${CMAKE_MATCH_1}") + elseif("${GIT_TAG}" STREQUAL "") + message(WARNING "Could NOT find a matching (git) version tag. This is not an error, but only indicates that " + "applications link against IDG might have troubles in retrieving VERSION info from IDG") + else() + message(FATAL_ERROR "Unrecognized (git) version tag ${GIT_TAG}") + endif() endif() set(GIT_VERSION "const char* GIT_REV=\"${GIT_REV}${GIT_DIFF}\"; diff --git a/docker/ubuntu_20_04_integration b/docker/ubuntu_20_04_integration index c62420ac4c17a3fa03fcee228a4332740feb3515..913a6ecccd456f814279c9750c3015d4427ce64b 100644 --- a/docker/ubuntu_20_04_integration +++ b/docker/ubuntu_20_04_integration @@ -1,5 +1,8 @@ FROM ubuntu:20.04 +# Set the git tags at which dependencies are checked out +ENV EVERYBEAM_VERSION_TAG="v0.1.0" + RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && \ apt-get install -y \ g++ cmake libfftw3-dev liblapack-dev libblas-dev python3 python3-pip \ @@ -18,14 +21,13 @@ RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && \ && mkdir build && cd build \ && cmake -DCMAKE_INSTALL_PREFIX=/usr ../src && make install -j4 \ && cd / && rm -rf aoflagger \ -# Build everybeam, checked-out at master (date: 2020/09/11) +# Build everybeam, checked-out at tag given by $EVERYBEAM_VERSION_TAG && mkdir /everybeam && cd /everybeam && git clone https://git.astron.nl/RD/EveryBeam.git src \ - && cd src/ && git checkout 10a675097e2eaaeaa5cb2e1bf6770695fc0c4470 && cd .. \ + && cd src/ && git checkout ${EVERYBEAM_VERSION_TAG} && cd .. \ && mkdir build && cd build \ && cmake -DCMAKE_INSTALL_PREFIX=/usr ../src -DPYTHON_EXECUTABLE=/usr/bin/python3 \ && make install -j4 \ && cd / && rm -rf everybeam \ -# Build DP3, checked out at development (data: 2020/09/11) # Install WSRT Measures (extra casacore data, for integration tests) # Note: The file on the ftp site is updated daily. When warnings regarding leap # seconds appear, ignore them or regenerate the docker image. diff --git a/idg-api/CMakeLists.txt b/idg-api/CMakeLists.txt index 05a740988640efeff11d607d0c64bc9e56326855..1b7b7c29cb19ced437e55bb69ef64f875a235c2e 100644 --- a/idg-api/CMakeLists.txt +++ b/idg-api/CMakeLists.txt @@ -135,10 +135,15 @@ install(TARGETS ${PROJECT_NAME} install(EXPORT IDGAPITargets DESTINATION lib/cmake) +# Prepare config files configure_file( "${PROJECT_SOURCE_DIR}/cmake/config/idgapi-config.cmake.in" "${PROJECT_BINARY_DIR}/CMakeFiles/idgapi-config.cmake" @ONLY) +configure_file( + "${PROJECT_SOURCE_DIR}/cmake/config/idgapi-config-version.cmake.in" + "${PROJECT_BINARY_DIR}/CMakeFiles/idgapi-config-version.cmake" @ONLY) install(FILES "${PROJECT_BINARY_DIR}/CMakeFiles/idgapi-config.cmake" + "${PROJECT_BINARY_DIR}/CMakeFiles/idgapi-config-version.cmake" DESTINATION ${CMAKE_INSTALL_PREFIX}/share/idgapi/cmake) diff --git a/idg-api/cmake/config/idgapi-config-version.cmake.in b/idg-api/cmake/config/idgapi-config-version.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..25df621482f5aab3a1f3a692b67f229fac65367e --- /dev/null +++ b/idg-api/cmake/config/idgapi-config-version.cmake.in @@ -0,0 +1,11 @@ +set(PACKAGE_VERSION "@GIT_TAG@") + +# Check whether the requested PACKAGE_FIND_VERSION is compatible +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/scripts/load_modules.sh b/scripts/load_modules.sh index 7c0b47684d5b1a8c843992e9aa725ddb458385df..cda34b49a97af872ad4797aa702e5fc8740647ec 100755 --- a/scripts/load_modules.sh +++ b/scripts/load_modules.sh @@ -8,4 +8,7 @@ module load wcslib/5.18-gcc-6.3.0 module load lua/5.3.5 module load boost/1.73-gcc-8.3.0 module load pybind11/2.4.3 -module load cuda101/toolkit \ No newline at end of file +module load cuda101/toolkit + +# The openblas module sets BLAS_LIB to /cm/shared/package/openblas/0.3.6-gcc-8.3.0/lib (without the "64"), which does not exist. +export OPENBLAS_LIB="/cm/shared/package/openblas/0.3.6-gcc-8.3.0/lib64" \ No newline at end of file