From a12e2cb8981ec8771d27188355c2ce091483c9be Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Thu, 23 Jan 2025 11:39:35 -0500 Subject: [PATCH] Ensure AL2 arm64 runs gcc10 while AL2 x64 runs gcc12 Signed-off-by: Peter Zhu --- .../build.al2.opensearch.x64.arm64.dockerfile | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/docker/ci/dockerfiles/current/build.al2.opensearch.x64.arm64.dockerfile b/docker/ci/dockerfiles/current/build.al2.opensearch.x64.arm64.dockerfile index 815086959b..a57f0d5e1b 100644 --- a/docker/ci/dockerfiles/current/build.al2.opensearch.x64.arm64.dockerfile +++ b/docker/ci/dockerfiles/current/build.al2.opensearch.x64.arm64.dockerfile @@ -100,22 +100,38 @@ RUN ln -sfn /usr/local/bin/python3.9 /usr/bin/python3 && \ pip3 install pip==23.1.2 && pip3 install pipenv==2023.6.12 awscli==1.32.17 # Upgrade gcc -RUN curl -SL https://ci.opensearch.org/ci/dbc/tools/gcc/gcc-12.4.0.tar.gz -o gcc12.tgz && \ - tar -xzf gcc12.tgz && cd gcc-12.4.0 && \ - sed -i 's@base_url=.*@base_url=https://ci.opensearch.org/ci/dbc/tools/gcc/@g' ./contrib/download_prerequisites && \ - ./contrib/download_prerequisites && \ - mkdir build && cd build && \ - ../configure --enable-languages=all --prefix=/usr --disable-multilib --disable-bootstrap && \ - make && make install && gcc --version && g++ --version && gfortran --version && \ - cd ../../ && rm -rf gcc12.tgz gcc-12.4.0 +# Only x64 requires gcc 12+ for k-NN avx512_spr fp16 feature +# https://github.com/opensearch-project/opensearch-build/issues/5226 +# Due to cross-compilation being too slow on arm64, it will stay on gcc 10 for the time being +RUN if [ `uname -m` = "x86_64" ]; then \ + curl -SL https://ci.opensearch.org/ci/dbc/tools/gcc/gcc-12.4.0.tar.gz -o gcc12.tgz && \ + tar -xzf gcc12.tgz && cd gcc-12.4.0 && \ + sed -i 's@base_url=.*@base_url=https://ci.opensearch.org/ci/dbc/tools/gcc/@g' ./contrib/download_prerequisites && \ + ./contrib/download_prerequisites && \ + mkdir build && cd build && \ + ../configure --enable-languages=all --prefix=/usr --disable-multilib --disable-bootstrap && \ + make && make install && gcc --version && g++ --version && gfortran --version && \ + cd ../../ && rm -rf gcc12.tgz gcc-12.4.0; \ + else \ + yum install -y gcc10* && \ + mv -v /usr/bin/gcc /usr/bin/gcc7-gcc && \ + mv -v /usr/bin/g++ /usr/bin/gcc7-g++ && \ + mv -v /usr/bin/gfortran /usr/bin/gcc7-gfortran && \ + update-alternatives --install /usr/bin/gcc gcc $(which gcc10-gcc) 1 && \ + update-alternatives --install /usr/bin/g++ g++ $(which gcc10-g++) 1 && \ + update-alternatives --install /usr/bin/gfortran gfortran $(which gcc10-gfortran) 1; \ + fi # Upgrade binutils -RUN curl -SLO https://ci.opensearch.org/ci/dbc/tools/gcc/binutils-2.42.90.tar.xz && \ - tar -xf binutils-2.42.90.tar.xz && cd binutils-2.42.90 && \ - mkdir build && cd build && \ - ../configure --prefix=/usr && \ - make && make install && ld --version && \ - cd ../../ && rm -rf binutils-2.42.90.tar.xz binutils-2.42.90 +# This is only required if gcc upgrade to 12 or above +RUN if [ `uname -m` = "x86_64" ]; then \ + curl -SLO https://ci.opensearch.org/ci/dbc/tools/gcc/binutils-2.42.90.tar.xz && \ + tar -xf binutils-2.42.90.tar.xz && cd binutils-2.42.90 && \ + mkdir build && cd build && \ + ../configure --prefix=/usr && \ + make && make install && ld --version && \ + cd ../../ && rm -rf binutils-2.42.90.tar.xz binutils-2.42.90; \ + fi ENV FC=gfortran ENV CXX=g++