diff --git a/Makefile b/Makefile index 471bd46..3529bce 100644 --- a/Makefile +++ b/Makefile @@ -73,6 +73,25 @@ noble: dependencies-noble v9.7.1-noble jammy: dependencies-jammy v9.7.1-jammy +noble-dev: dependencies-noble + $(DOCKER_BUILD) \ + -t dealii/dealii:noble-dev-${ARCH} \ + -t dealii/dealii:latest-dev-${ARCH} \ + --build-arg IMG=noble \ + --build-arg VER=v9.7.1 \ + --build-arg NJOBS=12 \ + --build-arg DEV=ON \ + ./dealii + +jammy-dev: dependencies-jammy + $(DOCKER_BUILD) \ + -t dealii/dealii:jammy-dev-${ARCH} \ + --build-arg IMG=jammy \ + --build-arg VER=v9.7.1 \ + --build-arg NJOBS=12 \ + --build-arg DEV=ON \ + ./dealii + all: noble jammy .PHONY: all \ @@ -81,4 +100,8 @@ all: noble jammy dependencies-%-merge \ %-merge \ v9.7.1-jammy \ - v9.7.1-noble + v9.7.1-noble \ + noble \ + jammy \ + noble-dev \ + jammy-dev diff --git a/dealii/Dockerfile b/dealii/Dockerfile index 8dcb6da..dd2ea84 100644 --- a/dealii/Dockerfile +++ b/dealii/Dockerfile @@ -5,55 +5,69 @@ FROM dealii/dependencies:$IMG ARG NJOBS=0 # Jobs used for building. Default: Use all available jobs. ARG VER=master # deal.II branch that gets checked out. ARG FLAGS="" # Additional flags for the build. +ARG DEV=OFF # Development mode: keeps source and build for incremental compilation. USER root -RUN cd /usr/src && \ - git clone https://github.com/dealii/dealii dealii-$VER && \ - cd dealii-$VER && \ - git checkout $VER && \ - mkdir build && cd build && \ - cmake -GNinja \ - -DCMAKE_CXX_FLAGS="$FLAGS" \ - -DCMAKE_CXX_STANDARD=20 \ - -DCMAKE_PREFIX_PATH="/usr/lib/x86_64-linux-gnu/hdf5/openmpi;/usr/include/hdf5/openmpi" \ - -DDEAL_II_ALLOW_AUTODETECTION=OFF \ - -DDEAL_II_COMPONENT_PYTHON_BINDINGS=ON \ - -DDEAL_II_WITH_64BIT_INDICES=OFF \ - -DDEAL_II_WITH_ADOLC=ON \ - -DDEAL_II_WITH_ARBORX=OFF \ - -DDEAL_II_WITH_ARPACK=ON \ - -DDEAL_II_WITH_ASSIMP=ON \ - -DDEAL_II_WITH_BOOST=ON \ - -DDEAL_II_WITH_CGAL=ON \ - -DDEAL_II_WITH_COMPLEX_VALUES=ON \ - -DDEAL_II_WITH_GINKGO=OFF \ - -DDEAL_II_WITH_GMSH=ON \ - -DDEAL_II_WITH_GSL=ON \ - -DDEAL_II_WITH_HDF5=ON \ - -DDEAL_II_WITH_KOKKOS=ON \ - -DDEAL_II_WITH_LAPACK=ON \ - -DDEAL_II_WITH_MAGIC_ENUM=ON \ - -DDEAL_II_WITH_METIS=ON \ - -DDEAL_II_WITH_MPI=ON \ - -DDEAL_II_WITH_MUMPS=ON \ - -DDEAL_II_WITH_MUPARSER=ON \ - -DDEAL_II_WITH_OPENCASCADE=ON \ - -DDEAL_II_WITH_P4EST=ON \ - -DDEAL_II_WITH_PETSC=ON \ - -DDEAL_II_WITH_SCALAPACK=ON \ - -DDEAL_II_WITH_SLEPC=ON \ - -DDEAL_II_WITH_SUNDIALS=ON \ - -DDEAL_II_WITH_SYMENGINE=ON \ - -DDEAL_II_WITH_TASKFLOW=OFF \ - -DDEAL_II_WITH_TBB=ON \ - -DDEAL_II_WITH_TRILINOS=ON \ - -DDEAL_II_WITH_UMFPACK=ON \ - -DDEAL_II_WITH_VTK=ON \ - -DDEAL_II_WITH_ZLIB=ON \ - .. && \ - ninja -j $NJOBS install && \ - cd ../ && rm -rf .git build +RUN if [ "$DEV" = "ON" ]; then \ + BUILD_USER=$USER; \ + BUILD_DIR=/home/$USER/dealii-$VER; \ + INSTALL_DIR=/home/$USER/deal.II; \ + else \ + BUILD_USER=root; \ + BUILD_DIR=/usr/src/dealii-$VER; \ + INSTALL_DIR=/usr/local; \ + fi && \ + su - $BUILD_USER -c "\ + cd $(dirname $BUILD_DIR) && \ + git clone https://github.com/dealii/dealii $(basename $BUILD_DIR) && \ + cd $BUILD_DIR && \ + git checkout $VER && \ + mkdir build && cd build && \ + cmake -GNinja \ + -DCMAKE_CXX_FLAGS=\"$FLAGS\" \ + -DCMAKE_CXX_STANDARD=20 \ + -DCMAKE_PREFIX_PATH=\"/usr/lib/x86_64-linux-gnu/hdf5/openmpi;/usr/include/hdf5/openmpi\" \ + -DDEAL_II_ALLOW_AUTODETECTION=OFF \ + -DDEAL_II_COMPONENT_PYTHON_BINDINGS=ON \ + -DDEAL_II_WITH_64BIT_INDICES=OFF \ + -DDEAL_II_WITH_ADOLC=ON \ + -DDEAL_II_WITH_ARBORX=OFF \ + -DDEAL_II_WITH_ARPACK=ON \ + -DDEAL_II_WITH_ASSIMP=ON \ + -DDEAL_II_WITH_BOOST=ON \ + -DDEAL_II_WITH_CGAL=ON \ + -DDEAL_II_WITH_COMPLEX_VALUES=ON \ + -DDEAL_II_WITH_GINKGO=OFF \ + -DDEAL_II_WITH_GMSH=ON \ + -DDEAL_II_WITH_GSL=ON \ + -DDEAL_II_WITH_HDF5=ON \ + -DDEAL_II_WITH_KOKKOS=ON \ + -DDEAL_II_WITH_LAPACK=ON \ + -DDEAL_II_WITH_MAGIC_ENUM=ON \ + -DDEAL_II_WITH_METIS=ON \ + -DDEAL_II_WITH_MPI=ON \ + -DDEAL_II_WITH_MUMPS=ON \ + -DDEAL_II_WITH_MUPARSER=ON \ + -DDEAL_II_WITH_OPENCASCADE=ON \ + -DDEAL_II_WITH_P4EST=ON \ + -DDEAL_II_WITH_PETSC=ON \ + -DDEAL_II_WITH_SCALAPACK=ON \ + -DDEAL_II_WITH_SLEPC=ON \ + -DDEAL_II_WITH_SUNDIALS=ON \ + -DDEAL_II_WITH_SYMENGINE=ON \ + -DDEAL_II_WITH_TASKFLOW=OFF \ + -DDEAL_II_WITH_TBB=ON \ + -DDEAL_II_WITH_TRILINOS=ON \ + -DDEAL_II_WITH_UMFPACK=ON \ + -DDEAL_II_WITH_VTK=ON \ + -DDEAL_II_WITH_ZLIB=ON \ + -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \ + .. && \ + ninja -j $NJOBS install" && \ + if [ "$DEV" = "OFF" ]; then \ + cd $BUILD_DIR && rm -rf .git build; \ + fi USER $USER WORKDIR $HOME