From 3ce59c09e67b70b44e30d6c12703e95bf6876363 Mon Sep 17 00:00:00 2001
From: MADELA Patrick <patrick.madela@synchrotron-soleil.fr>
Date: Thu, 20 Feb 2025 20:47:47 +0100
Subject: [PATCH] Rename image based on conda-forge and add image based  on
 compiled gcc

---
 .gitlab-ci.yml                                |  8 +-
 README.md                                     |  1 +
 .../.gitlab-ci.yml                            |  2 +-
 .../Dockerfile                                |  0
 .../docker-compose.yml                        | 18 +++++
 .../environment.yml                           |  0
 conan-el7-gcc115/.gitlab-ci.yml               | 42 ++++++++++
 conan-el7-gcc115/Dockerfile                   | 81 +++++++++++++++++++
 .../docker-compose.yml                        |  8 +-
 9 files changed, 154 insertions(+), 6 deletions(-)
 rename {conan-el7-gcc114 => conan-el7-gcc114-conda-forge}/.gitlab-ci.yml (97%)
 rename {conan-el7-gcc114 => conan-el7-gcc114-conda-forge}/Dockerfile (100%)
 create mode 100644 conan-el7-gcc114-conda-forge/docker-compose.yml
 rename {conan-el7-gcc114 => conan-el7-gcc114-conda-forge}/environment.yml (100%)
 create mode 100644 conan-el7-gcc115/.gitlab-ci.yml
 create mode 100644 conan-el7-gcc115/Dockerfile
 rename {conan-el7-gcc114 => conan-el7-gcc115}/docker-compose.yml (65%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c379283..089e4dd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -64,7 +64,13 @@ conan-el7-gcc112:
 conan-el7-gcc114:
     stage: triggers
     trigger:
-      include: conan-el7-gcc114/.gitlab-ci.yml
+      include: conan-el7-gcc114-conda-forge/.gitlab-ci.yml
+      strategy: depend
+
+conan-el7-gcc115:
+    stage: triggers
+    trigger:
+      include: conan-el7-gcc115/.gitlab-ci.yml
       strategy: depend
 
 conan-el9-gcc115:
diff --git a/README.md b/README.md
index 03a34f6..14a0ca3 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,7 @@ All images include:
 | conan-el7-gcc93-x86 | CentOS 7       | i686    | gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)   |
 | conan-el7-gcc112    | CentOS 7       | x86_64  | gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) |
 | conan-el7-gcc114    | CentOS 7       | x86_64  | gcc (conda-forge gcc 11.4.0-13) 11.4.0       |
+| conan-el7-gcc115    | CentOS 7       | x86_64  | gcc (GCC) 11.5.0                             |
 | conan-el9-gcc115    | Rocky Linux 9  | x86_64  | gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5) |
 
 ## Build 
diff --git a/conan-el7-gcc114/.gitlab-ci.yml b/conan-el7-gcc114-conda-forge/.gitlab-ci.yml
similarity index 97%
rename from conan-el7-gcc114/.gitlab-ci.yml
rename to conan-el7-gcc114-conda-forge/.gitlab-ci.yml
index b6dcfc0..8e979f9 100644
--- a/conan-el7-gcc114/.gitlab-ci.yml
+++ b/conan-el7-gcc114-conda-forge/.gitlab-ci.yml
@@ -3,7 +3,7 @@ services:
     - docker:dind
 
 variables:
-    NAME: conan-el7-gcc114
+    NAME: conan-el7-gcc114-conda-forge
     CONTAINER_TEST_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:$CI_COMMIT_REF_SLUG
     CONTAINER_RELEASE_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:latest
 
diff --git a/conan-el7-gcc114/Dockerfile b/conan-el7-gcc114-conda-forge/Dockerfile
similarity index 100%
rename from conan-el7-gcc114/Dockerfile
rename to conan-el7-gcc114-conda-forge/Dockerfile
diff --git a/conan-el7-gcc114-conda-forge/docker-compose.yml b/conan-el7-gcc114-conda-forge/docker-compose.yml
new file mode 100644
index 0000000..c8416f6
--- /dev/null
+++ b/conan-el7-gcc114-conda-forge/docker-compose.yml
@@ -0,0 +1,18 @@
+version: "3.8"
+
+services:
+    conan-el7-gcc114-conda-forge:
+        build:
+            context: ..
+            dockerfile: conan-el7-gcc114-conda-forge/Dockerfile
+            args:
+              - http_proxy
+              - https_proxy
+              - no_proxy
+        image: "gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el7-gcc114-conda-forge"
+        container_name: conan-el7-gcc114-conda-forge
+        tty: true
+        environment:
+            - http_proxy
+            - https_proxy
+            - no_proxy
diff --git a/conan-el7-gcc114/environment.yml b/conan-el7-gcc114-conda-forge/environment.yml
similarity index 100%
rename from conan-el7-gcc114/environment.yml
rename to conan-el7-gcc114-conda-forge/environment.yml
diff --git a/conan-el7-gcc115/.gitlab-ci.yml b/conan-el7-gcc115/.gitlab-ci.yml
new file mode 100644
index 0000000..ffc74d8
--- /dev/null
+++ b/conan-el7-gcc115/.gitlab-ci.yml
@@ -0,0 +1,42 @@
+image: docker:latest
+services:
+    - docker:dind
+
+variables:
+    NAME: conan-el7-gcc115
+    CONTAINER_TEST_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:$CI_COMMIT_REF_SLUG
+    CONTAINER_RELEASE_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:latest
+
+stages:
+    - build
+    - test
+    - release
+
+before_script:
+    - echo "${CI_JOB_TOKEN}" | docker login ${CI_REGISTRY} -u ${CI_REGISTRY_USER} --password-stdin
+
+build:
+    stage: build
+    script:
+        - docker build --pull -t ${CONTAINER_TEST_IMAGE} -f ${NAME}/Dockerfile .
+        - docker push ${CONTAINER_TEST_IMAGE}
+
+test:
+    stage: test
+    script:
+        - docker run --rm ${CONTAINER_TEST_IMAGE} cat /etc/centos-release | grep "CentOS Linux release 7"
+        - docker run --rm ${CONTAINER_TEST_IMAGE} uname -m | grep "x86_64"
+        - docker run --rm ${CONTAINER_TEST_IMAGE} gcc --version | grep "gcc (GCC) 11\.5"
+        - docker run --rm ${CONTAINER_TEST_IMAGE} cmake --version | grep "3.31.5"
+        - docker run --rm ${CONTAINER_TEST_IMAGE} git --version | grep "2.39.2"
+        - docker run --rm ${CONTAINER_TEST_IMAGE} python --version | grep "3.6.13"
+        - docker run --rm ${CONTAINER_TEST_IMAGE} conan --version | grep "2.12.1"
+        - docker run --rm ${CONTAINER_TEST_IMAGE} jq --version
+        - docker run --rm ${CONTAINER_TEST_IMAGE} yq --version
+
+release:
+    stage: release
+    script:
+        - docker pull ${CONTAINER_TEST_IMAGE}
+        - docker tag ${CONTAINER_TEST_IMAGE} ${CONTAINER_RELEASE_IMAGE}
+        - docker push ${CONTAINER_RELEASE_IMAGE}
diff --git a/conan-el7-gcc115/Dockerfile b/conan-el7-gcc115/Dockerfile
new file mode 100644
index 0000000..7540a78
--- /dev/null
+++ b/conan-el7-gcc115/Dockerfile
@@ -0,0 +1,81 @@
+FROM centos:7
+
+LABEL maintainer="Patrick Madela <patrick.madela@synchrotron-soleil.fr"
+
+RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime \
+    # Fix Centos repo urls
+    && sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* \
+    && sed -i 's|#\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* \
+    # Update OS
+    && yum -y update \
+    # Install epel repo
+    && yum -y install epel-release \
+    && yum -y install unzip sudo make glibc-devel \
+    && yum clean all --enablerepo='*'
+
+ARG PYTHON_VERSION=3.6.13 \
+    CONAN_VERSION=2.12.1 \
+    CMAKE_VERSION=3.31.5 \
+    GIT_VERSION=2.39.2 \
+    GCC_VERSION=11.5.0 \
+    DEVTOOLS_ROOT=/usr/Local/devtools \
+    OS=linux \
+    ARCH=x86_64
+
+ENV PYTHON_ROOT=${DEVTOOLS_ROOT}/python-${PYTHON_VERSION}-${OS}-${ARCH} \
+    CONAN_ROOT=${DEVTOOLS_ROOT}/conan-${CONAN_VERSION}-${OS}-${ARCH} \
+    CMAKE_ROOT=${DEVTOOLS_ROOT}/cmake-${CMAKE_VERSION}-${OS}-${ARCH} \
+    GIT_ROOT=${DEVTOOLS_ROOT}/git-${GIT_VERSION}-${OS}-${ARCH} \
+    GCC_ROOT=${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH} \
+    PATH=${DEVTOOLS_ROOT}/bin:${DEVTOOLS_ROOT}/python-${PYTHON_VERSION}-${OS}-${ARCH}/bin:${DEVTOOLS_ROOT}/conan-${CONAN_VERSION}-${OS}-${ARCH}:${DEVTOOLS_ROOT}/cmake-${CMAKE_VERSION}-${OS}-${ARCH}/bin:${DEVTOOLS_ROOT}/git-${GIT_VERSION}-${OS}-${ARCH}/bin:${PATH}:${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/bin:${PATH} \
+    LD_LIBRARY_PATH=${DEVTOOLS_ROOT}/python-${PYTHON_VERSION}-${OS}-${ARCH}/lib:${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/lib64 \
+    CXX=${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/bin/g++ \
+    CC=${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/bin/gcc
+
+RUN groupadd g1001 -g 1001 \
+    && groupadd g1000 -g 1000 \
+    && groupadd g2000 -g 2000 \
+    # Creation of conan user
+    && useradd -ms /bin/bash conan -u 1000 -g 1001 -G 1000,2000,999 \
+    # Add sudo for conan user
+    && printf "conan:conan" | chpasswd \
+    && printf "conan ALL= NOPASSWD: ALL\\n" >> /etc/sudoers \
+    # Create devtools folder
+    && mkdir -p ${DEVTOOLS_ROOT} \
+    # Install python 3
+    && curl -s -L -o ${PYTHON_ROOT}.zip https://gitlab.synchrotron-soleil.fr/software-control-system/devtools/python3/-/jobs/artifacts/3.6.13/download?job=linux-x86_64 \
+    && unzip -q ${PYTHON_ROOT}.zip -d ${DEVTOOLS_ROOT} \
+    && rm ${PYTHON_ROOT}.zip \
+    # Install git
+    && curl -s -L -o ${GIT_ROOT}.zip https://gitlab.synchrotron-soleil.fr/software-control-system/devtools/git/-/jobs/artifacts/2.39.2/download?job=linux-x86_64 \
+    && unzip -q ${GIT_ROOT}.zip -d ${DEVTOOLS_ROOT} \
+    && rm ${GIT_ROOT}.zip \
+    # Install cmake
+    && CMAKE_VERSION_MAJOR_MINOR=$(echo ${CMAKE_VERSION} | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\1\.\2/') \ 
+    && curl -s https://cmake.org/files/v${CMAKE_VERSION_MAJOR_MINOR}/cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz | tar -xzf - -C ${DEVTOOLS_ROOT} \
+        --exclude=bin/cmake-gui \
+        --exclude=doc/cmake \
+        --exclude=share/cmake-${CMAKE_VERSION_MAJOR_MINOR}/Help \
+        --exclude=share/vim \
+    # Install conan
+    && curl -s -L -o ${CONAN_ROOT}.zip https://gitlab.synchrotron-soleil.fr/software-control-system/devtools/conan/-/jobs/artifacts/2.12.1/download?job=linux-x86_64 \
+    && unzip -q ${CONAN_ROOT}.zip -d ${DEVTOOLS_ROOT} \
+    && rm ${CONAN_ROOT}.zip \
+    # Install other tools
+    && mkdir ${DEVTOOLS_ROOT}/bin \
+    && curl -s -L -o ${DEVTOOLS_ROOT}/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64 \
+    && curl -s -L -o ${DEVTOOLS_ROOT}/bin/yq https://github.com/mikefarah/yq/releases/download/v4.34.2/yq_linux_amd64 \
+    && chmod +x ${DEVTOOLS_ROOT}/bin/* \
+    # Install gcc
+    && curl -s -L -o ${GCC_ROOT}.zip https://controlforge.synchrotron-soleil.fr/artifactory/generic-local/soleil/gcc/11.5.0/gcc-11.5.0-linux-x86_64.zip \
+    && mkdir -p ${DEVTOOLS_ROOT} \
+    && unzip -q ${GCC_ROOT}.zip -d ${GCC_ROOT} \
+    && rm ${GCC_ROOT}.zip
+
+COPY environment /etc/environment 
+USER conan
+WORKDIR /home/conan
+
+ENTRYPOINT ["bash", "-c" ,"conan config install --verify-ssl false --type git https://gitlab.synchrotron-soleil.fr/software-control-system/factory/conan/conan2-config.git && \"$@\"", "-s"]
+
+CMD ["bash"]
diff --git a/conan-el7-gcc114/docker-compose.yml b/conan-el7-gcc115/docker-compose.yml
similarity index 65%
rename from conan-el7-gcc114/docker-compose.yml
rename to conan-el7-gcc115/docker-compose.yml
index 665b0d9..c706498 100644
--- a/conan-el7-gcc114/docker-compose.yml
+++ b/conan-el7-gcc115/docker-compose.yml
@@ -1,16 +1,16 @@
 version: "3.8"
 
 services:
-    conan-el7-gcc114:
+    conan-el7-gcc115:
         build:
             context: ..
-            dockerfile: conan-el7-gcc114/Dockerfile
+            dockerfile: conan-el7-gcc115/Dockerfile
             args:
               - http_proxy
               - https_proxy
               - no_proxy
-        image: "gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el7-gcc114"
-        container_name: conan-el7-gcc114
+        image: "gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el7-gcc115"
+        container_name: conan-el7-gcc115
         tty: true
         environment:
             - http_proxy
-- 
GitLab