Skip to content

Commit

Permalink
remove wget
Browse files Browse the repository at this point in the history
  • Loading branch information
ahnaf-tahmid-chowdhury committed Mar 1, 2024
1 parent ff7ed49 commit 986c7d2
Showing 1 changed file with 78 additions and 85 deletions.
163 changes: 78 additions & 85 deletions CI/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@

# Global ARGS set before the first build stage are accessable by all build stages
ARG UBUNTU_VERSION=22.04
ARG HDF5_VERSION=1.14.3
ARG HDF5_VERSION=hdf5_1_14_3
ARG MOAB_VERSION=5.5.1
# Setting GEANT4_VERSION=off will disable GEANT4 build
ARG GEANT4_VERSION=11.1.2
ARG GEANT4_VERSION=v11.1.2
# Setting DOUBLE_DOWN_VERSION=off will disable DOUBLE_DOWN build
ARG DOUBLE_DOWN_VERSION=v1.1.0
# Setting DOUBLE_DOWN_VERSION=off will disable EMBREE build
ARG EMBREE_VERSION=v4.0.1

ARG build_dir=/root/build_dir
ARG install_dir=/opt
ARG BUILD_DIR=/root/build
ARG INSTALL_DIR=/opt

ARG COMPILER=gcc
ARG CI_JOBS=4
ARG CI_JOBS=6

FROM ubuntu:${UBUNTU_VERSION} AS base

Expand All @@ -33,25 +33,23 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update --yes && \
apt-get install --yes --no-install-recommends \
git \
wget \
ca-certificates \
make \
autoconf \
clang \
make \
cmake \
g++ \
gcc \
clang \
gfortran \
python3 \
libpython3-dev \
libeigen3-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*;

ARG build_dir
ARG install_dir
ARG BUILD_DIR
ARG INSTALL_DIR

ENV build_dir=${build_dir}
ENV install_dir=${install_dir}
ENV BUILD_DIR=${BUILD_DIR}
ENV INSTALL_DIR=${INSTALL_DIR}

FROM base as compiler-gcc

Expand All @@ -66,51 +64,48 @@ ENV CXX=clang++
FROM compiler-${COMPILER} as external_deps

# accessing gloabl ARGs in build stage
ARG install_dir
ARG build_dir
ARG INSTALL_DIR
ARG BUILD_DIR
ARG CI_JOBS
ARG CXX
ARG CC
ARG DOUBLE_DOWN_VERSION
ARG EMBREE_VERSION
ARG GEANT4_VERSION

ENV embree_install_dir=${install_dir}/embree
ENV embree_build_dir=${build_dir}/embree
ENV EMBREE_INSTALL_DIR=${INSTALL_DIR}/Embree
ENV EMBREE_BUILD_DIR=${BUILD_DIR}/Embree

# Clone and install Embree
RUN if [ "${DOUBLE_DOWN_VERSION}" != "off" ]; then \
mkdir -p ${embree_build_dir}/build && \
cd ${embree_build_dir} && \
git clone -b ${EMBREE_VERSION} https://github.com/embree/embree && \
mkdir -p ${EMBREE_BUILD_DIR}/build && \
cd ${EMBREE_BUILD_DIR} && \
git clone -b ${EMBREE_VERSION} --depth 1 https://github.com/embree/embree.git && \
cd build && \
cmake ../embree \
-DCMAKE_INSTALL_PREFIX=${embree_install_dir} \
-DCMAKE_INSTALL_PREFIX=${EMBREE_INSTALL_DIR} \
-DEMBREE_TASKING_SYSTEM=INTERNAL \
-DEMBREE_ISPC_SUPPORT=OFF \
-DEMBREE_TUTORIALS=OFF \
-DEMBREE_TBB_ROOT=/usr && \
make -j${CI_JOBS} && \
make -j${CI_JOBS} install && \
cd && \
rm -rf ${embree_build_dir}; \
rm -rf ${EMBREE_BUILD_DIR}; \
fi


ENV geant4_basename=geant4-v${GEANT4_VERSION}
ENV geant4_tarball=${geant4_basename}.tar.gz
ENV geant4_build_dir=${build_dir}/geant4
ENV geant4_install_dir=${install_dir}/geant4
ENV GEANT4_BUILD_DIR=${BUILD_DIR}/geant4
ENV GEANT4_INSTALL_DIR=${INSTALL_DIR}/geant4

RUN if [ "${GEANT4_VERSION}" != "off" ]; then \
mkdir -p ${geant4_build_dir}/build && \
cd ${geant4_build_dir} && \
wget https://gitlab.cern.ch/geant4/geant4/-/archive/v${GEANT4_VERSION}/${geant4_tarball} --no-check-certificate && \
tar -xzf ${geant4_tarball} && \
mkdir -p ${GEANT4_BUILD_DIR}/build && \
cd ${GEANT4_BUILD_DIR} && \
git clone -b ${GEANT4_VERSION} --depth 1 https://gitlab.cern.ch/geant4/geant4.git && \
cd build && \
cmake ../${geant4_basename} \
-DCMAKE_INSTALL_RPATH=${geant4_install_dir}/lib \
-DCMAKE_INSTALL_PREFIX=${geant4_install_dir} \
cmake ../geant4 \
-DCMAKE_INSTALL_RPATH=${GEANT4_INSTALL_DIR}/lib \
-DCMAKE_INSTALL_PREFIX=${GEANT4_INSTALL_DIR} \
-DGEANT4_USE_SYSTEM_EXPAT=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER=${CXX} \
Expand All @@ -119,44 +114,42 @@ RUN if [ "${GEANT4_VERSION}" != "off" ]; then \
make -j${CI_JOBS} && \
make install && \
cd && \
rm -rf ${geant4_build_dir}; \
rm -rf ${GEANT4_BUILD_DIR}; \
fi


FROM external_deps AS hdf5

# accessing gloabl ARGs in build stage
ARG install_dir
ARG build_dir
ARG INSTALL_DIR
ARG BUILD_DIR
ARG CI_JOBS
ARG CXX
ARG CC
ARG HDF5_VERSION

ENV hdf5_build_dir=${build_dir}/hdf5
ENV hdf5_install_dir=${install_dir}/hdf5
ENV HDF5_BUILD_DIR=${BUILD_DIR}/hdf5
ENV HDF5_INSTALL_DIR=${INSTALL_DIR}/hdf5

RUN mkdir -p ${hdf5_build_dir}/build && \
cd ${hdf5_build_dir} && \
export HDF5_VERSION_major=$(echo "$HDF5_VERSION" | cut -d. -f1-2) && \
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${HDF5_VERSION_major}/hdf5-${HDF5_VERSION}/src/hdf5-${HDF5_VERSION}.tar.gz && \
tar -xzf hdf5-${HDF5_VERSION}.tar.gz && \
RUN mkdir -p ${HDF5_BUILD_DIR}/build && \
cd ${HDF5_BUILD_DIR} && \
git clone -b ${HDF5_VERSION} --depth 1 https://github.com/HDFGroup/hdf5.git && \
cd build && \
../hdf5-${HDF5_VERSION}/configure --enable-shared \
--prefix=${hdf5_install_dir} \
../hdf5/configure --enable-shared \
--prefix=${HDF5_INSTALL_DIR} \
CXX=${CXX} \
CC=${CC} && \
make -j${CI_JOBS} && \
make install && \
cd && \
rm -rf ${hdf5_build_dir}
rm -rf ${HDF5_BUILD_DIR}


FROM hdf5 AS moab

# accessing gloabl ARGs in build stage
ARG install_dir
ARG build_dir
ARG INSTALL_DIR
ARG BUILD_DIR
ARG CI_JOBS
ARG CXX
ARG CC
Expand All @@ -165,18 +158,19 @@ ARG DOUBLE_DOWN_VERSION


# Set MOAB env variable
ENV moab_build_dir=${build_dir}/moab
ENV moab_install_dir=${install_dir}/moab
ENV MOAB_BUILD_DIR=${BUILD_DIR}/moab
ENV MOAB_INSTALL_DIR=${INSTALL_DIR}/moab

RUN mkdir -p ${moab_build_dir}/build && \
cd ${moab_build_dir} && \
git clone -b ${MOAB_VERSION} --depth 1 https://bitbucket.org/fathomteam/moab && \
RUN mkdir -p ${MOAB_BUILD_DIR}/build && \
cd ${MOAB_BUILD_DIR} && \
git clone -b ${MOAB_VERSION} --depth 1 https://bitbucket.org/fathomteam/moab.git && \
cd build && \
cmake ../moab \
-DCMAKE_INSTALL_RPATH=${hdf5_install_dir}/lib:${moab_install_dir}/lib \
-DCMAKE_INSTALL_RPATH=${HDF5_INSTALL_DIR}/lib:${MOAB_INSTALL_DIR}/lib \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_HDF5=ON -DHDF5_ROOT=${hdf5_install_dir} \
-DCMAKE_INSTALL_PREFIX=${moab_install_dir} \
-DENABLE_HDF5=ON \
-DHDF5_ROOT=${HDF5_INSTALL_DIR} \
-DCMAKE_INSTALL_PREFIX=${MOAB_INSTALL_DIR} \
-DCMAKE_CXX_COMPILER=${CXX} \
-DCMAKE_C_COMPILER=${CC} \
-DENABLE_BLASLAPACK=OFF \
Expand All @@ -186,55 +180,54 @@ RUN mkdir -p ${moab_build_dir}/build && \
make -j${CI_JOBS} && \
make install && \
cd && \
rm -rf ${moab_build_dir}
rm -rf ${MOAB_BUILD_DIR}


ENV double_down_build_dir=${build_dir}/double-down
ENV double_down_install_dir=${install_dir}/double-down
ENV DOUBLE_DOWN_BUILD_DIR=${BUILD_DIR}/double-down
ENV DOUBLE_DOWN_INSTALL_DIR=${INSTALL_DIR}/double-down

# Clone and install Double-Down
# Performed after moab and embree install as double-down requires moab and embree
RUN if [ "${DOUBLE_DOWN_VERSION}" != "off" ]; then \
mkdir -p ${double_down_build_dir}/build && \
cd ${double_down_build_dir} && \
mkdir -p ${DOUBLE_DOWN_BUILD_DIR}/build && \
cd ${DOUBLE_DOWN_BUILD_DIR} && \
git clone -b ${DOUBLE_DOWN_VERSION} --depth 1 https://github.com/pshriwise/double-down.git && \
cd build && \
cmake ../double-down \
-DMOAB_DIR=${moab_install_dir} \
-DCMAKE_INSTALL_PREFIX=${double_down_install_dir} \
-DEMBREE_DIR=${embree_install_dir} && \
-DMOAB_DIR=${MOAB_INSTALL_DIR} \
-DCMAKE_INSTALL_PREFIX=${DOUBLE_DOWN_INSTALL_DIR} \
-DEMBREE_DIR=${EMBREE_INSTALL_DIR} && \
make -j${CI_JOBS} && \
make -j${CI_JOBS} install && \
cd && \
rm -rf ${double_down_build_dir}; \
rm -rf ${DOUBLE_DOWN_BUILD_DIR}; \
fi


FROM moab as dagmc

# accessing gloabl ARGs in build stage
ARG install_dir
ARG build_dir
ARG INSTALL_DIR
ARG BUILD_DIR
ARG CXX
ARG CC
ARG GEANT4_VERSION
ARG DOUBLE_DOWN_VERSION

ENV dagmc_build_dir=${build_dir}/dagmc
ENV dagmc_install_dir=${install_dir}/dagmc
ENV DAGMC_BUILD_DIR=${BUILD_DIR}/dagmc
ENV DAGMC_INSTALL_DIR=${INSTALL_DIR}/dagmc

# copies the enitre git repo into the dockerfile to ensure the submodules can also be found
RUN mkdir -p ${dagmc_build_dir}/build
COPY . ${dagmc_build_dir}
RUN cd ${dagmc_build_dir} && git submodule update --init
COPY . ${DAGMC_BUILD_DIR}

RUN mkdir -p ${dagmc_build_dir}/build && \
cd ${dagmc_build_dir} && \
RUN mkdir -p ${DAGMC_BUILD_DIR}/build && \
cd ${DAGMC_BUILD_DIR} && \
git submodule update --init && \
cd build && \
cmake ../ \
-DMOAB_DIR=${moab_install_dir} \
-DMOAB_DIR=${MOAB_INSTALL_DIR} \
-DBUILD_GEANT4=$([ "${GEANT4_VERSION}" != "off" ] && echo "ON" || echo "OFF") \
-DGEANT4_DIR=${geant4_install_dir} \
-DGEANT4_DIR=${GEANT4_INSTALL_DIR} \
-DBUILD_CI_TESTS=ON \
# reg tests disabled see issue https://github.com/svalinn/DAGMC/issues/858
-DBUILD_MW_REG_TESTS=OFF \
Expand All @@ -243,28 +236,28 @@ RUN mkdir -p ${dagmc_build_dir}/build && \
-DCMAKE_C_COMPILER=${CC} \
-DCMAKE_CXX_COMPILER=${CXX} \
-DCMAKE_Fortran_COMPILER=gfortran \
-DCMAKE_INSTALL_PREFIX=${dagmc_install_dir} \
-DCMAKE_INSTALL_PREFIX=${DAGMC_INSTALL_DIR} \
-DDOUBLE_DOWN=$([ "${DOUBLE_DOWN_VERSION}" != "off" ] && echo "ON" || echo "OFF") \
-Ddd_ROOT=${double_down_install_dir} && \
-Ddd_ROOT=${DOUBLE_DOWN_INSTALL_DIR} && \
make -j${CI_JOBS} && \
make install


FROM dagmc as dagmc_test

ENV dagmc_build_dir=${build_dir}/dagmc
ENV dagmc_install_dir=${install_dir}/dagmc
ENV DAGMC_BUILD_DIR=${BUILD_DIR}/dagmc
ENV DAGMC_INSTALL_DIR=${INSTALL_DIR}/dagmc

# Test DAGMC executables
RUN cd ${dagmc_build_dir}/build && \
PATH=${dagmc_install_dir}/bin:$PATH CTEST_OUTPUT_ON_FAILURE=1 make test
RUN cd ${DAGMC_BUILD_DIR}/build && \
PATH=${DAGMC_INSTALL_DIR}/bin:$PATH CTEST_OUTPUT_ON_FAILURE=1 make test

# clean out config test directory for next build
RUN cd ${dagmc_build_dir} && \
RUN cd ${DAGMC_BUILD_DIR} && \
git clean -dxf .

# Test DAGMC CMake configuration file
RUN cd ${dagmc_build_dir}/cmake/test_config && \
cmake . -DDAGMC_ROOT=${dagmc_install_dir} && \
RUN cd ${DAGMC_BUILD_DIR}/cmake/test_config && \
cmake . -DDAGMC_ROOT=${DAGMC_INSTALL_DIR} && \
CTEST_OUTPUT_ON_FAILURE=1 make all test

0 comments on commit 986c7d2

Please sign in to comment.