This is an automated email from the ASF dual-hosted git repository.

yuanzhou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 8a14ba9c18 [GLUTEN-10254][VL] Adding Centos-9 based dev docker image 
(#10231)
8a14ba9c18 is described below

commit 8a14ba9c18ae6a4febb62d4d2e2faf89175b090c
Author: Yuan <[email protected]>
AuthorDate: Wed Jul 30 09:12:40 2025 +0100

    [GLUTEN-10254][VL] Adding Centos-9 based dev docker image (#10231)
    
    This patch adds Centos-9 based dev docker image. Also cleanup the existing 
centos-8 based code to use "matrix" style build
    
    (Fixes: #10254 )
    
    Signed-off-by: Yuan <[email protected]>
---
 .github/workflows/docker_image.yml          | 65 ++++++++++++++++++++---------
 dev/ci-velox-buildstatic-centos-9.sh        | 27 ++++++++++++
 dev/docker/Dockerfile.centos9-dynamic-build | 62 +++++++++++++++++++++++++++
 dev/docker/Dockerfile.centos9-static-build  | 48 +++++++++++++++++++++
 dev/vcpkg/setup-build-depends.sh            | 18 ++++++++
 5 files changed, 200 insertions(+), 20 deletions(-)

diff --git a/.github/workflows/docker_image.yml 
b/.github/workflows/docker_image.yml
index 63ff3b6290..43e41697c8 100644
--- a/.github/workflows/docker_image.yml
+++ b/.github/workflows/docker_image.yml
@@ -24,7 +24,9 @@ on:
       - '.github/workflows/util/install_spark_resources.sh'
       - 'dev/docker/Dockerfile.centos7-static-build'
       - 'dev/docker/Dockerfile.centos8-static-build'
+      - 'dev/docker/Dockerfile.centos9-static-build'
       - 'dev/docker/Dockerfile.centos8-dynamic-build'
+      - 'dev/docker/Dockerfile.centos9-dynamic-build'
       - 'dev/docker/cudf/Dockerfile'
   schedule:
     - cron: '0 20 * * 0'
@@ -139,7 +141,7 @@ jobs:
           if-no-files-found: error
           retention-days: 1
 
-  build-centos-8-jdk8:
+  build-vcpkg-centos-9:
     if: ${{ startsWith(github.repository, 'apache/') }}
     runs-on: ${{ matrix.os }}
     strategy:
@@ -155,7 +157,7 @@ jobs:
         uses: docker/metadata-action@v5
         with:
           images: ${{ env.DOCKERHUB_REPO }}
-          tags: centos-8-jdk8
+          tags: vcpkg-centos-9
 
       - name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v3
@@ -171,8 +173,7 @@ jobs:
         uses: docker/build-push-action@v6
         with:
           context: .
-          build-args: JAVA_VERSION=1.8.0
-          file: dev/docker/Dockerfile.centos8-dynamic-build
+          file: dev/docker/Dockerfile.centos9-static-build
           labels: ${{ steps.meta.outputs.labels }}
           outputs: type=image,"name=${{ env.DOCKERHUB_REPO 
}}",push-by-digest=true,push=true
 
@@ -185,18 +186,20 @@ jobs:
       - name: Upload digest
         uses: actions/upload-artifact@v4
         with:
-          name: digests-centos-8-jdk8-${{ matrix.os }}
+          name: digests-vcpkg-centos-9-${{ matrix.os }}
           path: ${{ runner.temp }}/digests/*
           if-no-files-found: error
           retention-days: 1
 
-  build-centos-8-jdk11:
+  build-centos-8:
     if: ${{ startsWith(github.repository, 'apache/') }}
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
         os: [ ubuntu-latest, ubuntu-24.04-arm ]
-
+        jdk: [jdk8, jdk11, jdk17]
+    env:
+      JDK_VERSION: 1.8.0
     steps:
       - name: Checkout repository
         uses: actions/checkout@v2
@@ -206,7 +209,17 @@ jobs:
         uses: docker/metadata-action@v5
         with:
           images: ${{ env.DOCKERHUB_REPO }}
-          tags: centos-8-jdk11
+          tags: centos-8-${{ matrix.jdk }}
+
+      - name: Prepare
+        run: |
+          if [ "${{ matrix.jdk }}" = "jdk8" ]; then
+            echo "JDK_VERSION=1.8.0" >> $GITHUB_ENV
+          elif [ "${{ matrix.jdk }}" = "jdk11" ]; then
+            echo "JDK_VERSION=11" >> $GITHUB_ENV
+          else
+            echo "JDK_VERSION=17" >> $GITHUB_ENV
+          fi
 
       - name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v3
@@ -222,7 +235,7 @@ jobs:
         uses: docker/build-push-action@v6
         with:
           context: .
-          build-args: JAVA_VERSION=11
+          build-args: JAVA_VERSION=${{ env.JDK_VERSION }}
           file: dev/docker/Dockerfile.centos8-dynamic-build
           labels: ${{ steps.meta.outputs.labels }}
           outputs: type=image,"name=${{ env.DOCKERHUB_REPO 
}}",push-by-digest=true,push=true
@@ -236,18 +249,20 @@ jobs:
       - name: Upload digest
         uses: actions/upload-artifact@v4
         with:
-          name: digests-centos-8-jdk11-${{ matrix.os }}
+          name: digests-centos-8-${{ matrix.jdk }}-${{ matrix.os }}
           path: ${{ runner.temp }}/digests/*
           if-no-files-found: error
           retention-days: 1
 
-  build-centos-8-jdk17:
+  build-centos-9:
     if: ${{ startsWith(github.repository, 'apache/') }}
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
         os: [ ubuntu-latest, ubuntu-24.04-arm ]
-
+        jdk: [jdk8, jdk11, jdk17]
+    env:
+      JDK_VERSION: 1.8.0
     steps:
       - name: Checkout repository
         uses: actions/checkout@v2
@@ -257,7 +272,17 @@ jobs:
         uses: docker/metadata-action@v5
         with:
           images: ${{ env.DOCKERHUB_REPO }}
-          tags: centos-8-jdk17
+          tags: centos-9-${{ matrix.jdk }}
+
+      - name: Prepare
+        run: |
+          if [ "${{ matrix.jdk }}" = "jdk8" ]; then
+            echo "JDK_VERSION=1.8.0" >> $GITHUB_ENV
+          elif [ "${{ matrix.jdk }}" = "jdk11" ]; then
+            echo "JDK_VERSION=11" >> $GITHUB_ENV
+          else
+            echo "JDK_VERSION=17" >> $GITHUB_ENV
+          fi
 
       - name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v3
@@ -273,8 +298,8 @@ jobs:
         uses: docker/build-push-action@v6
         with:
           context: .
-          build-args: JAVA_VERSION=17
-          file: dev/docker/Dockerfile.centos8-dynamic-build
+          build-args: JAVA_VERSION=${{ env.JDK_VERSION }}
+          file: dev/docker/Dockerfile.centos9-dynamic-build
           labels: ${{ steps.meta.outputs.labels }}
           outputs: type=image,"name=${{ env.DOCKERHUB_REPO 
}}",push-by-digest=true,push=true
 
@@ -287,7 +312,7 @@ jobs:
       - name: Upload digest
         uses: actions/upload-artifact@v4
         with:
-          name: digests-centos-8-jdk17-${{ matrix.os }}
+          name: digests-centos-9-${{ matrix.jdk }}-${{ matrix.os }}
           path: ${{ runner.temp }}/digests/*
           if-no-files-found: error
           retention-days: 1
@@ -297,12 +322,12 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        digests: [ vcpkg-centos-8, centos-8-jdk8, centos-8-jdk11, 
centos-8-jdk17 ]
+        digests: [ vcpkg-centos-8, vcpkg-centos-9,centos-8-jdk8, 
centos-8-jdk11, centos-8-jdk17, centos-9-jdk8, centos-9-jdk11, centos-9-jdk17 ]
     needs:
       - build-vcpkg-centos-8
-      - build-centos-8-jdk8
-      - build-centos-8-jdk11
-      - build-centos-8-jdk17
+      - build-vcpkg-centos-9
+      - build-centos-8
+      - build-centos-9
     steps:
       - name: Download digests
         uses: actions/download-artifact@v4
diff --git a/dev/ci-velox-buildstatic-centos-9.sh 
b/dev/ci-velox-buildstatic-centos-9.sh
new file mode 100644
index 0000000000..88ee83b4b0
--- /dev/null
+++ b/dev/ci-velox-buildstatic-centos-9.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -e
+
+source /opt/rh/gcc-toolset-12/enable
+if [ "$(uname -m)" = "aarch64" ]; then
+    export CPU_TARGET="aarch64";
+    export VCPKG_FORCE_SYSTEM_BINARIES=1;
+fi
+
+./dev/builddeps-veloxbe.sh --enable_vcpkg=ON --build_arrow=OFF 
--build_tests=OFF --build_benchmarks=OFF \
+                           --build_examples=OFF --enable_s3=ON --enable_gcs=ON 
--enable_hdfs=ON --enable_abfs=ON
diff --git a/dev/docker/Dockerfile.centos9-dynamic-build 
b/dev/docker/Dockerfile.centos9-dynamic-build
new file mode 100644
index 0000000000..e50268cbc0
--- /dev/null
+++ b/dev/docker/Dockerfile.centos9-dynamic-build
@@ -0,0 +1,62 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM quay.io/centos/centos:stream9
+
+ARG JAVA_VERSION=1.8.0
+#ARG JAVA_VERSION=11
+#ARG JAVA_VERSION=17
+
+
+ENV JAVA_HOME=/usr/lib/jvm/java-${JAVA_VERSION}-openjdk
+ENV PATH=$JAVA_HOME/bin:$PATH
+ENV PATH=${PATH}:/usr/lib/maven/bin
+
+
+RUN set -ex; \
+    yum update -y && yum install -y epel-release sudo dnf && yum install -y 
ccache; \
+    dnf install -y --setopt=install_weak_deps=False gcc-toolset-12; \
+    echo "check_certificate = off" >> ~/.wgetrc; \
+    yum install -y java-${JAVA_VERSION}-openjdk-devel patch wget git perl; \
+    maven_version=3.9.2; \
+    local_binary="apache-maven-${maven_version}-bin.tar.gz"; \
+    mirror_host="https://www.apache.org/dyn/closer.lua";; \
+    
url="${mirror_host}/maven/maven-3/${maven_version}/binaries/${local_binary}?action=download";
 \
+    wget -nv -O ${local_binary} ${url}; \
+    tar -xvf ${local_binary}; \
+    mv apache-maven-${maven_version} /usr/lib/maven; \
+    rm -rf ${local_binary}; \
+    wget -nv 
https://archive.apache.org/dist/celeborn/celeborn-0.4.3/apache-celeborn-0.4.3-bin.tgz
 -P /opt/; \
+    wget -nv 
https://archive.apache.org/dist/celeborn/celeborn-0.5.4/apache-celeborn-0.5.4-bin.tgz
 -P /opt/; \
+    wget -nv 
https://archive.apache.org/dist/celeborn/celeborn-0.6.0/apache-celeborn-0.6.0-bin.tgz
 -P /opt/; \
+    wget -nv 
https://archive.apache.org/dist/incubator/uniffle/0.9.2/apache-uniffle-0.9.2-incubating-bin.tar.gz
 -P /opt/; \
+    wget -nv 
https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz 
-P /opt/; \
+    git clone --depth=1 https://github.com/apache/incubator-gluten 
/opt/gluten; \
+    cd /opt/gluten/.github/workflows/util/; \
+    ./install_spark_resources.sh 3.2; \
+    ./install_spark_resources.sh 3.3; \
+    ./install_spark_resources.sh 3.4; \
+    ./install_spark_resources.sh 3.5; \
+    ./install_spark_resources.sh 3.5-scala2.13; \
+    if [ "$(uname -m)" = "aarch64" ]; then \
+        export CPU_TARGET="aarch64"; \
+    fi; \
+    cd /opt/gluten; \
+    source /opt/rh/gcc-toolset-12/enable; \
+    ./dev/builddeps-veloxbe.sh --run_setup_script=ON build_arrow; \
+    mvn dependency:go-offline -Pbackends-velox -Piceberg -Pdelta -Pspark-3.5 
-DskipTests; \
+    dnf clean all; \
+    rm -rf /opt/gluten; \
+    rm -rf /root/.cache/ccache;
diff --git a/dev/docker/Dockerfile.centos9-static-build 
b/dev/docker/Dockerfile.centos9-static-build
new file mode 100644
index 0000000000..d50837c8ac
--- /dev/null
+++ b/dev/docker/Dockerfile.centos9-static-build
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM quay.io/centos/centos:stream9
+
+
+ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk
+ENV PATH=$JAVA_HOME/bin:$PATH
+ENV PATH=${PATH}:/usr/lib/maven/bin
+
+# An actual path used for vcpkg cache.
+ENV VCPKG_PATH=/var/cache/vcpkg
+# Set vcpkg cache path.
+ENV VCPKG_BINARY_SOURCES=clear;files,${VCPKG_PATH},readwrite
+
+RUN set -ex; \
+    yum update -y && yum install -y epel-release sudo dnf && yum install -y 
ccache; \
+    dnf install -y --setopt=install_weak_deps=False gcc-toolset-12; \
+    echo "check_certificate = off" >> ~/.wgetrc; \
+    yum install -y java-17-openjdk-devel patch wget git perl; \
+    dnf clean all; \
+    git clone --depth=1 https://github.com/apache/incubator-gluten 
/opt/gluten; \
+    cd /opt/gluten && bash ./dev/vcpkg/setup-build-depends.sh; \
+    mkdir -p ${VCPKG_PATH}; \
+    echo "Build arrow, then install the native libs to system paths and jar 
package to .m2/ directory."; \
+    if [ "$(uname -m)" = "aarch64" ]; then \
+        export CPU_TARGET="aarch64"; \
+        export VCPKG_FORCE_SYSTEM_BINARIES=1; \
+    fi; \
+    source /opt/rh/gcc-toolset-12/enable; \
+    cd /opt/gluten; \
+    bash ./dev/builddeps-veloxbe.sh --enable_vcpkg=ON --build_tests=ON 
--enable_s3=ON --enable_gcs=ON \
+                                    --enable_hdfs=ON --enable_abfs=ON  
build_arrow; \
+    mvn dependency:go-offline -Pbackends-velox -Piceberg -Pdelta -Pspark-3.5 
-DskipTests; \
+    rm -rf /opt/gluten; \
+    rm -rf /root/.cache/ccache;
diff --git a/dev/vcpkg/setup-build-depends.sh b/dev/vcpkg/setup-build-depends.sh
index b248c0985e..12a8ee8180 100755
--- a/dev/vcpkg/setup-build-depends.sh
+++ b/dev/vcpkg/setup-build-depends.sh
@@ -163,6 +163,24 @@ install_centos_8() {
     install_maven_from_source
 }
 
+install_centos_9() {
+    yum -y install \
+        wget tar zip unzip git which sudo patch \
+        cmake perl-IPC-Cmd autoconf automake libtool \
+        gcc-toolset-12 \
+        flex bison python3 python3-pip \
+        java-17-openjdk java-17-openjdk-devel
+
+    pip3 install --upgrade pip
+
+    # Requires cmake >= 3.28.3
+    pip3 install cmake==3.28.3
+
+    dnf -y --enablerepo=crb install autoconf-archive ninja-build
+
+    install_maven_from_source
+}
+
 install_ubuntu_20.04() {
     apt-get update && apt-get -y install \
         wget curl tar zip unzip git \


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to