Skip to content
Snippets Groups Projects
Commit 88b1cb3b authored by Chris Cantwell's avatar Chris Cantwell
Browse files

Merge branch 'pkg/add-to-master' into 'master'

Add binary packaging to master

See merge request !1286
parents a63dd290 a65a3fc3
Branches
Tags v5.1.0
No related merge requests found
Showing
with 1171 additions and 24 deletions
# Files to ignore for export
.gitlab-ci.yml export-ignore
.gitlab-ci/ export-ignore
.gitignore export-ignore
.gitattributes export-ignore
.gitmodules export-ignore
......
......@@ -7,8 +7,12 @@ stages:
- package-build
- package-build-dev
- package-test
- package-deploy-dev
- package-deploy
include:
- local: .gitlab-ci/packaging.yml
.execution-conditions: &execution-conditions
only:
refs:
......@@ -561,17 +565,21 @@ dockerhub-test-nektar-dev:
# Deployment
dockerhub-deploy-nektar:
<<: *dockerhub_deploy_template
needs: [ "dockerhub-test-nektar" ]
variables:
image_name: nektar
dockerhub-deploy-nektar-env:
<<: *dockerhub_deploy_template
needs: [ "dockerhub-build-env" ]
variables:
image_name: nektar-env
dockerhub-deploy-nektar-dev:
<<: *dockerhub_deploy_template
needs: [ "dockerhub-test-nektar-dev" ]
variables:
image_name: nektar-dev
dockerhub-deploy-nektar-workbook:
<<: *dockerhub_deploy_template
needs: [ "dockerhub-build-workbook" ]
variables:
image_name: nektar-workbook
......@@ -20,6 +20,7 @@ elif [[ $BUILD_TYPE == "full" ]] || [[ $BUILD_TYPE == "full_py3" ]]; then
-DNEKTAR_USE_HDF5:BOOL=ON \
-DNEKTAR_USE_MESHGEN:BOOL=ON \
-DNEKTAR_USE_CCM:BOOL=ON \
-DNEKTAR_CCMIO_URL=https://www.nektar.info/ccmio/libccmio-2.6.1.tar.gz \
-DNEKTAR_USE_CWIPI:BOOL=ON \
-DNEKTAR_BUILD_PYTHON:BOOL=ON \
-DNEKTAR_TEST_USE_HOSTFILE=ON \
......
build*
docs/tutorial
docker
pkg
ThirdParty
nektar++*.tar.gz
This diff is collapsed.
......@@ -117,6 +117,12 @@ SET(NEKTAR_SHARE_DIR share/nektar++)
SET(NEKTAR_DOC_DIR share/doc/nektar++)
SET(NEKTAR_CMAKE_DIR ${LIB_DIR}/nektar++/cmake)
# Set ThirdParty locations for source files, building and collating outputs
SET(TPSRC ${CMAKE_SOURCE_DIR}/ThirdParty)
SET(TPBUILD ${CMAKE_BINARY_DIR}/ThirdParty)
SET(TPDIST ${CMAKE_BINARY_DIR}/ThirdParty/dist)
# INSTALLATION PATHS
# Allow for overriding final include header directory (for Fedora/CentOS
# packaging)
IF (DEFINED NEKTAR_INCLUDE_ROOT)
......@@ -124,13 +130,8 @@ IF (DEFINED NEKTAR_INCLUDE_ROOT)
ELSE()
SET(NEKTAR_INCLUDE_DIST_DIR ${CMAKE_INSTALL_PREFIX}/${NEKTAR_INCLUDE_DIR})
ENDIF()
# Set ThirdParty locations.
SET(TPSRC ${CMAKE_SOURCE_DIR}/ThirdParty)
SET(TPBUILD ${CMAKE_BINARY_DIR}/ThirdParty)
SET(TPDIST ${CMAKE_BINARY_DIR}/ThirdParty/dist)
SET(TPINC ${NEKTAR_INCLUDE_DIST_DIR}/ThirdParty)
SET(TPLIB ${CMAKE_INSTALL_PREFIX}/${NEKTAR_LIB_DIR}/nektar++/thirdparty)
SET(TP_INCLUDE_DIR ${NEKTAR_INCLUDE_DIR})
SET(TP_LIB_DIR ${CMAKE_INSTALL_PREFIX}/${NEKTAR_LIB_DIR}/nektar++)
# Create ThirdParty source directory if it doesn't exist already.
IF (NOT EXISTS ${TPSRC})
......@@ -142,14 +143,15 @@ SET(NEKTAR_LIBRARY_TYPE "SHARED")
# Set up RPATH
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_RPATH "${TPLIB}")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
SET(CMAKE_BUILD_RPATH "${TP_LIB_DIR}")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB_DIR}" "${TPLIB}/")
SET(CMAKE_INSTALL_RPATH
"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}" "${TP_LIB_DIR}/")
ELSE()
SET(CMAKE_INSTALL_RPATH "${TPLIB}")
SET(CMAKE_INSTALL_RPATH "${TP_LIB_DIR}")
ENDIF()
# Enable the use of @rpath in macOS install names so that we can use multiple
......@@ -344,26 +346,31 @@ INSTALL(FILES ${CMAKE_BINARY_DIR}/Nektar++Config.cmake
DESTINATION ${NEKTAR_CMAKE_DIR}
COMPONENT dev)
# THIRDPARTY SOFTWARE DISTRIBUTION
# Install shared libraries
INSTALL(CODE "FILE(GLOB tplibs ${TPDIST}/lib/*${CMAKE_SHARED_LIBRARY_SUFFIX}*)
IF (NOT tplibs STREQUAL \"\")
FILE(INSTALL \${tplibs} DESTINATION ${TPLIB})
FILE(INSTALL \${tplibs} DESTINATION ${TP_LIB_DIR})
ENDIF()
")
# Install cmake configuration files
IF (EXISTS ${TPDIST}/lib/cmake)
INSTALL(DIRECTORY ${TPDIST}/lib/cmake/
DESTINATION ${TP_LIB_DIR}/cmake
COMPONENT libutilities)
ENDIF()
INSTALL(CODE "FILE(GLOB tpcmake ${TPDIST}/lib/*/*.cmake)
IF (NOT tpcmake STREQUAL \"\")
FILE(INSTALL \${tpcmake} DESTINATION ${TP_LIB_DIR}/cmake)
ENDIF()
")
# Install ThirdParty headers to subdirectory of ${NEKTAR_INCLUDE_DIR}
INSTALL(DIRECTORY ${TPDIST}/include/
DESTINATION ${NEKTAR_INCLUDE_DIR}/ThirdParty
DESTINATION ${TP_INCLUDE_DIR}
COMPONENT dev
OPTIONAL
)
# Install ThirdParty libraries into ${NEKTAR_LIB_DIR}. These are shipped with
# the LibUtilities library.
IF (EXISTS ${TPDIST}/lib)
INSTALL(DIRECTORY ${TPDIST}/lib/
DESTINATION ${NEKTAR_LIB_DIR}
COMPONENT libutilities
)
ENDIF()
ADD_SUBDIRECTORY(docs)
......@@ -35,7 +35,7 @@ SET(NEKTAR++_LIBRARY_DIRS "${NEKTAR++_ROOT_DIR}/@NEKTAR_LIB_DIR@")
SET(NEKTAR++_DEFINITIONS @NEKTAR_DEFINITIONS@)
SET(NEKTAR++_LIBRARIES @NEKTAR++_LIBRARIES@)
SET(NEKTAR++_TP_INCLUDE_DIRS "@NEKTAR_INCLUDE_DIST_DIR@/ThirdParty")
SET(NEKTAR++_TP_INCLUDE_DIRS "@NEKTAR_INCLUDE_DIR@")
SET(NEKTAR++_TP_LIBRARIES "")
SET(NEKTAR++_TP_LIBRARY_DIRS "")
......
......@@ -33,11 +33,16 @@ IF (THIRDPARTY_BUILD_CCMIO)
ENDIF()
MARK_AS_ADVANCED(PATCH)
SET(CCMIO_URL "https://downloads.sourceforge.net/project/foam-extend/ThirdParty/libccmio-2.6.1.tar.gz")
IF (DEFINED NEKTAR_CCMIO_URL)
SET(CCMIO_URL ${NEKTAR_CCMIO_URL})
ENDIF()
INCLUDE(ExternalProject)
EXTERNALPROJECT_ADD(
libccmio-2.6.1
PREFIX ${TPSRC}
URL http://downloads.sourceforge.net/project/foam-extend/ThirdParty/libccmio-2.6.1.tar.gz
URL ${CCMIO_URL}
URL_MD5 f81fbdfb960b1a4f3bcc7feee491efe4
STAMP_DIR ${TPBUILD}/stamp
DOWNLOAD_DIR ${TPSRC}
......
FROM centos:7
# Set up to use EPEL release files.
RUN yum install -y epel-release
# Grab docker
COPY docker/packaging/texlive.profile pkg/redhat/nektar-centos-7.spec /root/
WORKDIR /root
# Install build dependencies from specfile.
RUN yum install -y yum-builddep ghostscript rpm-build wget perl-Digest-MD5 git && \
yum-builddep -y nektar-centos-7.spec && \
rm -f nektar-centos-7.spec
# Install a reduced version of TeXLive for user/developer guide.
RUN wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl.zip && \
unzip install-tl.zip && cd install-tl-* && \
./install-tl -profile ../texlive.profile && \
PATH=/usr/local/texlive/2019/bin/x86_64-linux:$PATH \
tlmgr install lm babel microtype amsmath amsfonts mathtools psnfss graphics \
import tools xcolor listings lstaddons pgf environ bclogo hyperref memoir ec \
xkeyval trimspaces mdframed l3packages etoolbox footmisc caption standalone \
currfile filehook filemod epstopdf zref multirow jknapltx rsfs
FROM centos:8
# Set up to use EPEL release files and PowerTools
RUN yum install -y epel-release dnf-plugins-core && \
yum config-manager --set-enabled powertools
# Grab docker
COPY docker/packaging/texlive.profile pkg/redhat/nektar-centos-8.spec /root/
WORKDIR /root
# Install build dependencies from specfile.
RUN yum install -y ghostscript rpm-build wget perl-Digest-MD5 git && \
dnf builddep -y nektar-centos-8.spec && \
rm -f nektar-centos-8.spec
# Install a reduced version of TeXLive for user/developer guide.
RUN wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl.zip && \
unzip install-tl.zip && cd install-tl-* && \
./install-tl -profile ../texlive.profile && \
PATH=/usr/local/texlive/2019/bin/x86_64-linux:$PATH \
tlmgr install lm babel microtype amsmath amsfonts mathtools psnfss graphics \
import tools xcolor listings lstaddons pgf environ bclogo hyperref memoir ec \
xkeyval trimspaces mdframed l3packages etoolbox footmisc caption standalone \
currfile filehook filemod epstopdf zref multirow jknapltx rsfs
# vim: syntax=dockerfile
FROM debian:bullseye-slim
LABEL maintainer="Nektar++ Development Team <nektar-users@imperial.ac.uk>"
WORKDIR /root
RUN DEBIAN_RELEASE=bullseye && \
echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE} non-free" > \
/etc/apt/sources.list.d/debian-non-free.list && \
apt-get update && \
apt-get install -y \
packaging-dev cmake git git-buildpackage vim \
libboost-thread-dev libboost-iostreams-dev libboost-filesystem-dev \
libboost-system-dev libboost-program-options-dev \
libboost-python-dev libboost-numpy-dev libboost-regex-dev \
libboost-timer-dev \
libarpack2-dev \
libfftw3-dev \
libhdf5-mpi-dev \
liblapack-dev \
libtinyxml-dev \
mpi-default-dev \
zlib1g-dev \
python3-dev python3-numpy \
libptscotch-dev \
liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev libgl-dev \
libtet1.5-dev libtriangle-dev \
texlive-base texlive-latex-extra texlive-science \
texlive-fonts-recommended texlive-pstricks \
doxygen graphviz imagemagick dvipng
RUN rm -f /usr/lib/x86_64-linux-gnu/openmpi/lib/*ucx* && \
rm /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi3/*ucx*
RUN groupadd nektar && useradd -m -g nektar nektar
# Force update to always run when building image
ARG INVALIDATE_CACHE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
USER nektar:nektar
WORKDIR /home/nektar
COPY docker/packaging/quiltrc .quiltrc
# vim: syntax=dockerfile
FROM debian:buster-slim
LABEL maintainer="Nektar++ Development Team <nektar-users@imperial.ac.uk>"
WORKDIR /root
RUN DEBIAN_RELEASE=buster && \
echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE} non-free" > \
/etc/apt/sources.list.d/debian-non-free.list && \
apt-get update && \
apt-get install -y \
packaging-dev cmake git git-buildpackage vim \
libboost-thread-dev libboost-iostreams-dev libboost-filesystem-dev \
libboost-system-dev libboost-program-options-dev \
libboost-python-dev libboost-numpy-dev libboost-regex-dev \
libboost-timer-dev \
libarpack2-dev \
libfftw3-dev \
libhdf5-mpi-dev \
liblapack-dev \
libtinyxml-dev \
mpi-default-dev \
zlib1g-dev \
python3-dev python3-numpy \
libptscotch-dev \
liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev libgl-dev \
libtet1.5-dev libtriangle-dev \
texlive-base texlive-latex-extra texlive-science \
texlive-fonts-recommended texlive-pstricks \
doxygen graphviz imagemagick dvipng
RUN groupadd nektar && useradd -m -g nektar nektar
# Force update to always run when building image
ARG INVALIDATE_CACHE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
USER nektar:nektar
WORKDIR /home/nektar
COPY docker/packaging/quiltrc .quiltrc
# vim: syntax=dockerfile
FROM debian:stretch-slim
LABEL maintainer="Nektar++ Development Team <nektar-users@imperial.ac.uk>"
WORKDIR /root
RUN DEBIAN_RELEASE=stretch && \
echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE} non-free" > \
/etc/apt/sources.list.d/debian-non-free.list && \
apt-get update && \
apt-get install -y \
packaging-dev cmake git git-buildpackage vim \
libboost-thread-dev libboost-iostreams-dev libboost-filesystem-dev \
libboost-system-dev libboost-program-options-dev \
libboost-python-dev libboost-regex-dev libboost-timer-dev \
libarpack2-dev \
libfftw3-dev \
libhdf5-mpi-dev \
liblapack-dev \
libtinyxml-dev \
mpi-default-dev \
zlib1g-dev \
python3-dev python3-numpy \
libptscotch-dev \
liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev libgl-dev \
libtet1.5-dev libtriangle-dev \
texlive-base texlive-latex-extra texlive-science \
texlive-fonts-recommended texlive-pstricks \
doxygen graphviz imagemagick dvipng
# Set Python3 to have higher priority than Python2.
RUN update-alternatives --install /usr/bin/python python /usr/bin/python2 1 &&\
update-alternatives --install /usr/bin/python python /usr/bin/python3 2
RUN groupadd nektar && useradd -m -g nektar nektar
# Force update to always run when building image
ARG INVALIDATE_CACHE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
USER nektar:nektar
WORKDIR /home/nektar
COPY docker/packaging/quiltrc .quiltrc
# vim: syntax=dockerfile
FROM debian:sid-slim
LABEL maintainer="Nektar++ Development Team <nektar-users@imperial.ac.uk>"
WORKDIR /root
RUN DEBIAN_RELEASE=sid && \
echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE} non-free" > \
/etc/apt/sources.list.d/debian-non-free.list && \
apt-get update && \
apt-get install -y \
packaging-dev cmake git git-buildpackage vim \
libboost-thread-dev libboost-iostreams-dev libboost-filesystem-dev \
libboost-system-dev libboost-program-options-dev \
libboost-python-dev libboost-numpy-dev libboost-regex-dev \
libboost-timer-dev \
libarpack2-dev \
libfftw3-dev \
libhdf5-mpi-dev \
liblapack-dev \
libtinyxml-dev \
mpi-default-dev \
zlib1g-dev \
python3-dev python3-numpy \
libptscotch-dev \
liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev libgl-dev \
libtet1.5-dev libtriangle-dev \
texlive-base texlive-latex-extra texlive-science \
texlive-fonts-recommended texlive-pstricks \
doxygen graphviz imagemagick dvipng
RUN rm -f /usr/lib/x86_64-linux-gnu/openmpi/lib/*ucx* && \
rm /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi3/*ucx*
RUN groupadd nektar && useradd -m -g nektar nektar
# Force update to always run when building image
ARG INVALIDATE_CACHE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
# Make sure python3-dev version matches latest installed interpreter
RUN PYTHON_MINOR=$(ls -1 /usr/bin/python3.* | sed -r 's/.*python3\.([0-9]*)/\1/ g' | sort -n | tail -n 1) && \
apt-get install -y libpython3.$PYTHON_MINOR-dev
USER nektar:nektar
WORKDIR /home/nektar
COPY docker/packaging/quiltrc .quiltrc
FROM fedora:33
# Install some basic build requirements.
RUN dnf install -y rpm-build dnf-plugins-core git
WORKDIR /root
COPY pkg/redhat/nektar-fedora-33.spec .
# Install build requirements from spec file.
RUN dnf builddep -y nektar-fedora-33.spec && rm -f nektar-fedora-33.spec
FROM fedora:34
# Install some basic build requirements.
RUN dnf install -y rpm-build dnf-plugins-core git
WORKDIR /root
COPY pkg/redhat/nektar-fedora-34.spec .
# Install build requirements from spec file.
RUN dnf builddep -y nektar-fedora-34.spec && rm -f nektar-fedora-34.spec
FROM fedora:35
# Install some basic build requirements.
RUN dnf install -y rpm-build dnf-plugins-core git
WORKDIR /root
COPY pkg/redhat/nektar-fedora-35.spec .
# Install build requirements from spec file.
RUN dnf builddep -y nektar-fedora-35.spec && rm -f nektar-fedora-35.spec
# vim: syntax=dockerfile
FROM debian:stable-slim
LABEL maintainer="Nektar++ Development Team <nektar-users@imperial.ac.uk>"
WORKDIR /root
RUN apt-get update && \
apt-get install -y git tar gzip bzip2 xz-utils
RUN groupadd nektar && useradd -m -g nektar nektar
# Force update to always run when building image
ARG INVALIDATE_CACHE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
USER nektar:nektar
WORKDIR /home/nektar
# vim: syntax=dockerfile
FROM debian:stable-slim
LABEL maintainer="Nektar++ Development Team <nektar-users@imperial.ac.uk>"
WORKDIR /root
RUN apt-get update && \
apt-get install -y \
build-essential cmake rsync flex \
liblapack-dev \
texlive-base texlive-latex-extra texlive-science \
texlive-fonts-recommended texlive-pstricks \
doxygen graphviz imagemagick dvipng
RUN groupadd nektar && useradd -m -g nektar nektar
# Force update to always run when building image
ARG INVALIDATE_CACHE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
# Patch security policy to allow PDF conversion by ImageMagick
RUN sed -i 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/g' /etc/ImageMagick-6/policy.xml
USER nektar:nektar
WORKDIR /home/nektar
# vim: syntax=dockerfile
FROM ubuntu:bionic
LABEL maintainer="Nektar++ Development Team <nektar-users@imperial.ac.uk>"
WORKDIR /root
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y \
packaging-dev cmake git git-buildpackage vim \
libboost-thread-dev libboost-iostreams-dev libboost-filesystem-dev \
libboost-system-dev libboost-program-options-dev \
libboost-python-dev libboost-numpy-dev libboost-regex-dev \
libboost-timer-dev \
libarpack2-dev \
libfftw3-dev \
libhdf5-mpi-dev \
liblapack-dev \
libtinyxml-dev \
mpi-default-dev \
zlib1g-dev \
python3-dev python3-numpy \
libptscotch-dev \
liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev libgl-dev \
libtet1.5-dev libtriangle-dev \
texlive-base texlive-latex-extra texlive-science \
texlive-fonts-recommended texlive-pstricks \
doxygen graphviz imagemagick dvipng
RUN groupadd nektar && useradd -m -g nektar nektar
# Force update to always run when building image
ARG INVALIDATE_CACHE
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y
USER nektar:nektar
WORKDIR /home/nektar
COPY docker/packaging/quiltrc .quiltrc
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment