diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 81d0b861bad6a32bb6c665907892ac6ac8034061..bc25f8ca825d479bc8803377fb72769372cfda0e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ stages: - prepare - build + - package - oskar-comparison - deploy @@ -50,7 +51,7 @@ test-and-coverage: - gcovr -r .. -e '.*/external/.*' -e '.*/CompilerIdCXX/.*' -e '.*/test/.*' -e '.*/demo/.*' --xml > coverage.xml # Check whether pyeverybeam modules can be found from home directory after setting the PYTHONPATH - PYVERSION=`python3 --version | grep -P -o ".*\s\K\d\.\d(?=\.\d)"` - - export PYTHONPATH=${WORKDIR}/lib/python${PYVERSION}/site-packages + - export PYTHONPATH=${WORKDIR}/lib/python${PYVERSION}/dist-packages - cd && python3 -c "import everybeam" artifacts: reports: @@ -79,6 +80,24 @@ build-doc: paths: - build/doc/html +# Deploy package should be ran when +# when: manual +# only: +# - master +build-package: + stage: package + needs: ["build-everybeam"] + image: everybeam:${CI_COMMIT_SHORT_SHA} + script: + - mkdir everybeam_package + - export SRC=$(pwd) + - cd /opt/everybeam/build + - make package + - mv $(ls -p | grep *\.deb) $SRC/everybeam_package + artifacts: + paths: + - everybeam_package/ + build-compare-oskar: stage: oskar-comparison image: everybeam:${CI_COMMIT_SHORT_SHA} diff --git a/CMakeLists.txt b/CMakeLists.txt index 227349d50848536a705f4d1df781627aa34af0b2..3cc8ba32ad37109aa93468cfa2de5334991f2fba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ endif() project(EveryBeam VERSION ${EVERYBEAM_VERSION}) option (BUILD_WITH_PYTHON "Build python bindings" OFF) +option (BUILD_APT_PACKAGES "Build apt package" OFF) string(TOLOWER ${CMAKE_PROJECT_NAME} projectname ) @@ -167,3 +168,11 @@ add_custom_target(doc elseif(DOXYGEN_FOUND) endif(DOXYGEN_FOUND) +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Allow packaging with "make package" +if(BUILD_APT_PACKAGES) + add_subdirectory(package) +endif() +#------------------------------------------------------------------------------ \ No newline at end of file diff --git a/docker/Dockerfile-everybeam b/docker/Dockerfile-everybeam index d763a60b7669bb4c5ddbec3b28adb8155285b867..70c62e64c0e2d5aa86e5130b580c4c9982c262dc 100644 --- a/docker/Dockerfile-everybeam +++ b/docker/Dockerfile-everybeam @@ -8,5 +8,5 @@ ENV EVERYBEAMDIR /opt/everybeam ADD . ${EVERYBEAMDIR}/EveryBeam RUN mkdir -p ${EVERYBEAMDIR}/build && cd ${EVERYBEAMDIR}/build \ - && cmake -DBUILD_WITH_PYTHON=ON -DCMAKE_INSTALL_PREFIX=.. ../EveryBeam \ + && cmake -DBUILD_WITH_PYTHON=ON -DBUILD_APT_PACKAGES=ON -DCMAKE_INSTALL_PREFIX=.. ../EveryBeam \ && make -j8 && make install -j8 diff --git a/package/CMakeLists.txt b/package/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..8d956fdc21c7c0b37495b09558ad59a931bc3803 --- /dev/null +++ b/package/CMakeLists.txt @@ -0,0 +1,17 @@ +# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy) +# SPDX-License-Identifier: GPL-3.0-or-later + +set(CPACK_PACKAGE_NAME "EveryBeam") +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") +set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) +set(CPACK_GENERATOR "DEB") +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Astron") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") +set(CPACK_PACKAGE_VERSION_MAJOR "${EVERYBEAM_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${EVERYBEAM_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${EVERYBEAM_VERSION_PATCH}") +set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "casacore-dev, libcfitsio-dev, wcslib-dev, libhdf5-serial-dev, libfftw3-dev, libpython3-dev") + +include(CPack) \ No newline at end of file diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index b1cd9d43536be89b07343104c593198d342cef8b..38c9a4bc29d0d2e87d6e6289bdd7771e9fcd4bb6 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -30,7 +30,13 @@ add_subdirectory(lobes) # If the PYTHON_LIBRARY_DIR is not specified, install in lib dir if(NOT DEFINED ${PYTHON_LIBRARY_DIR}) - set(PYTHON_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages) + execute_process (COMMAND ${PYTHON_EXECUTABLE} -c "import site; print(site.getsitepackages()[0])" OUTPUT_VARIABLE PYTHON_DIST_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(PYTHON_DIST_PATH MATCHES "\\/(python${PYTHON_VERSION_MAJOR}\\.${PYTHON_VERSION_MINOR}\\/.*)") + set(PYTHON_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_MATCH_1}) + else() + message(FATAL_ERROR "Failed to parse PYTHON_DIST_PATH='${PYTHON_DIST_PATH}'") + endif() endif() # Install pyeverybeam in site-packages directory