Skip to content
Snippets Groups Projects
Commit 07b5664d authored by Franck Pérignon's avatar Franck Pérignon
Browse files

[docker-build] Rebuild docker images. Plm tests

parent 10924c5b
No related branches found
No related tags found
1 merge request!51Merge devel (sandbox) branch into public (master) branch
Pipeline #185911 failed
......@@ -68,6 +68,7 @@ stages:
.docker-rules:
rules:
- if: $CI_COMMIT_MESSAGE =~ /\[docker-build\]/ # if commit message contains "[docker-build]"
#- if: $CI_COMMIT_MESSAGE =~ /\[$CI_JOB_NAME\]/ # does not work ... CI can't read var in ci_commit_msg
- if: $CI_COMMIT_TAG
.docker-manual-rules:
......
##
## Copyright (C) HySoP 2011-2022
## Copyright (C) HySoP 2011-2024
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
......@@ -18,8 +18,6 @@
# https://docs.docker.com/build/building/multi-stage/
#
FROM ubuntu:jammy AS hysop-start
LABEL authors="Jean-Baptiste.Keck@imag.fr, Nicolas.Grima@univ-pau.fr, Franck.Perignon@univ-grenoble-alpes.fr"
# parallel builds
ARG NTHREADS
ENV MAKEFLAGS "-j${NTHREADS}"
......@@ -70,43 +68,46 @@ RUN apt-get update && \
libmpc-dev \
libclfft-dev \
clpeak \
graphviz \
doxygen && \
apt autoclean -y && apt autoremove -y&& rm -rf /var/lib/apt/lists/*
&& apt autoclean -y && apt autoremove -y&& rm -rf /var/lib/apt/lists/*
RUN useradd -ms /bin/bash hysop-user
# Create hysop-user
ENV HYSOP_HOME /home/hysop-user
RUN useradd -ms /bin/bash -m -d $HYSOP_HOME -u 1001 -g 0 hysop-user
FROM hysop-start as hysop-base
USER hysop-user
WORKDIR /home/hysop-user
WORKDIR $HYSOP_HOME
ENV MPICC "mpicc"
ENV VIRTUAL_ENV=/home/hysop-user/hysopenv
ENV VIRTUAL_ENV=$HYSOP_HOME/hysopenv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN pip install -U --no-cache-dir pip
########
# HPTT #
########
FROM hysop-base AS hptt
ENV HPTT_ROOT $VIRTUAL_ENV
WORKDIR $HYSOP_HOME
RUN git clone https://gitlab.com/keckj/hptt.git && \
cd hptt && \
sed -i "s#-mavx##g" CMakeLists.txt && \
sed -i "s#-march=native##g" CMakeLists.txt && \
sed -i "s#-mtune=native##g" CMakeLists.txt && \
cmake -S $HOME/hptt -B $HOME/build-hptt -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$VIRTUAL_ENV && \
cmake --build $HOME/build-hptt -j `nproc --all` &&\
cmake --install $HOME/build-hptt && \
cd $HOME/hptt/pythonAPI && \
cmake -S $HYSOP_HOME/hptt -B $HYSOP_HOME/build-hptt -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$VIRTUAL_ENV && \
cmake --build $HYSOP_HOME/build-hptt -j `nproc --all`
ENV HPTT_ROOT $VIRTUAL_ENV
RUN cmake --install $HYSOP_HOME/build-hptt && \
cd $HYSOP_HOME/hptt/pythonAPI && \
pip install --no-cache-dir . && \
rm -rf $HOME/hptt && rm -rf $HOME/build-hptt
rm -rf $HYSOP_HOME/hptt && rm -rf $HYSOP_HOME/build-hptt
#########
# FLINT #
#########
FROM hysop-base AS flint
WORKDIR $HYSOP_HOME
#
# python flint (FLINT2 + ARB + python-flint)
#
......@@ -116,16 +117,16 @@ FROM hysop-base AS flint
RUN cd && wget -q https://github.com/flintlib/flint/archive/refs/tags/v3.0.1.tar.gz && \
tar -xzf v*.tar.gz && \
rm -f v*.tar.gz && \
cmake -S $HOME/flint* -B $HOME/build-flint -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$VIRTUAL_ENV && \
cmake --build $HOME/build-flint -j `nproc --all` && \
cmake install $HOME/build-flint && \
rm -rf $HOME/flint* && rm -rf $HOME/build-flint
cmake -S $HYSOP_HOME/flint* -B $HYSOP_HOME/build-flint -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$VIRTUAL_ENV && \
cmake --build $HYSOP_HOME/build-flint -j `nproc --all` && \
cmake install $HYSOP_HOME/build-flint && \
rm -rf $HYSOP_HOME/flint* && rm -rf $HYSOP_HOME/build-flint
#############
# MainStage #
#############
FROM hysop-base AS main-stage
WORKDIR $HYSOP_HOME
# NG setuptools upgrade 69 20 nov 2023 = deprecations and removals
# NG https://stackoverflow.com/questions/77523055/missingdynamic-license-defined-outside-of-pyproject-toml-is-ignored
COPY ci/requirements_full.txt requirements.txt
......@@ -146,7 +147,7 @@ RUN wget -q https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.14/hdf5-1.14.3
cd && rm -rf hdf5-* && \
CC="${MPICC}" HDF5_MPI="ON" HDF5_VERSION="1.14.3" \
HDF5_DIR=$VIRTUAL_ENV H5PY_SETUP_REQUIRES=0 \
pip install -U --no-binary=h5py --no-deps --no-build-isolation --no-cache-dir h5py==3.10.0
pip install --no-binary=h5py --no-deps --no-build-isolation --no-cache-dir h5py==3.10.0
#
# gpyFFT
......@@ -235,22 +236,22 @@ RUN mkdir -p ${OCLCPUEXP} &&\
# clean cached packages
RUN ldconfig && \
rm -rf /var/lib/apt/lists/* && \
rm -rf $HOME/.cache/pip/* && \
rm -rf /tmp/*
USER hysop-user
RUN rm -rf $HYSOP_HOME/.cache/pip/*
###############
# Final-Stage #
###############
FROM hysop-base AS final-stage
COPY --from=hptt /home/hysop-user/hysopenv /home/hysop-user/hysopenv
COPY --from=flint /home/hysop-user/hysopenv /home/hysop-user/hysopenv
COPY --from=main-stage /home/hysop-user/hysopenv /home/hysop-user/hysopenv
ENV VIRTUAL_ENV=/home/hysop-user/hysopenv
COPY --from=hptt $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
COPY --from=flint $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
COPY --from=main-stage $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
ENV VIRTUAL_ENV=$HYSOP_HOME/hysopenv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN pip install --no-cache-dir setuptools==68.2.2 numpy==1.22.3 # just to be sure ...
WORKDIR /home/hysop-user
WORKDIR $HYSOP_HOME
RUN rm -rf $HOME/.cache/pip/*
......
##
## Copyright (C) HySoP 2011-2022
## Copyright (C) HySoP 2011-2024
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
......@@ -85,16 +85,17 @@ RUN apt-get update && \
&& apt autoclean -y && apt autoremove -y&& rm -rf /var/lib/apt/lists/*
# Create hysop-user
RUN useradd -ms /bin/bash -m -d /home/hysop-user hysop-user
ENV HYSOP_HOME /home/hysop-user
RUN useradd -ms /bin/bash -m -d $HYSOP_HOME -u 1001 -g 0 hysop-user
# Prepare entrypoint. Required to deal with okd/openshift
# user id which is not none in advance
ENV APP_ROOT=/opt/app-root
ENV PATH=${APP_ROOT}/bin:${PATH}
COPY ci/dockerfiles/uid_entrypoint/ ${APP_ROOT}/bin/
RUN chmod -R u+x ${APP_ROOT}/bin && \
chgrp -R 0 ${APP_ROOT} && \
chmod -R g=u ${APP_ROOT} /etc/passwd
#ENV APP_ROOT=/opt/app-root
#ENV PATH=${APP_ROOT}/bin:${PATH}
#COPY ci/dockerfiles/uid_entrypoint/ ${APP_ROOT}/bin/
#RUN chmod -R u+x ${APP_ROOT}/bin && \
# chgrp -R 0 ${APP_ROOT} && \
# chmod -R g=u ${APP_ROOT} /etc/passwd
FROM nvidia-gpu as hysop-base
USER hysop-user
......@@ -104,18 +105,20 @@ ENV MPICC "mpicc"
ENV VIRTUAL_ENV=$HYSOP_HOME/hysopenv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN pip install -U --no-cache-dir pip
########
# HPTT # (the longuest compilation of the Dockerfile!)
########
FROM hysop-base AS hptt
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
WORKDIR $HYSOP_HOME
RUN git clone https://gitlab.com/keckj/hptt.git && \
cd hptt && \
RUN git clone https://gitlab.com/keckj/hptt.git && \
cd hptt && \
sed -i "s#-mavx##g" CMakeLists.txt && \
sed -i "s#-march=native##g" CMakeLists.txt && \
sed -i "s#-mtune=native##g" CMakeLists.txt &&\
sed -i "s#-mtune=native##g" CMakeLists.txt && \
cmake -S $HYSOP_HOME/hptt -B $HYSOP_HOME/build-hptt -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$VIRTUAL_ENV && \
cmake --build $HYSOP_HOME/build-hptt -j `nproc --all`
ENV HPTT_ROOT $VIRTUAL_ENV
......@@ -168,7 +171,7 @@ RUN wget -q https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.14/hdf5-1.14.3
cd && rm -rf hdf5-* && \
CC="${MPICC}" HDF5_MPI="ON" HDF5_VERSION="1.14.3" \
HDF5_DIR=$VIRTUAL_ENV H5PY_SETUP_REQUIRES=0 \
pip install -U --no-binary=h5py --no-deps --no-build-isolation --no-cache-dir h5py==3.10.0
pip install --no-binary=h5py --no-deps --no-build-isolation --no-cache-dir h5py==3.10.0
#
# gpyFFT
......@@ -230,15 +233,16 @@ RUN rm -rf /var/lib/apt/lists/* && \
###############
FROM hysop-base AS final-stage
COPY --from=main-stage --chown=hysop-user $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
COPY --from=hptt --chown=hysop-user $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
COPY --from=flint --chown=hysop-user $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
WORKDIR $HYSOP_HOME
COPY --from=hptt $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
COPY --from=flint $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
COPY --from=main-stage $HYSOP_HOME/hysopenv $HYSOP_HOME/hysopenv
ENV VIRTUAL_ENV=$HYSOP_HOME/hysopenv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN pip install --no-cache-dir setuptools==68.2.2 numpy==1.22.3 # just to be sure ...
WORKDIR $HYSOP_HOME
RUN rm -rf $HOME/.cache/pip/*
RUN rm -rf $HYSOP_HOME/.cache/pip/*
ENTRYPOINT [ "uid_entrypoint" ]
#ENTRYPOINT [ "uid_entrypoint" ]
CMD ["/bin/bash"]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment