This is an automated email from the ASF dual-hosted git repository.
csy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/auron.git
The following commit(s) were added to refs/heads/master by this push:
new d4e147ff [AURON #1417] Expand build support to modern Linux
distributions. (#1418)
d4e147ff is described below
commit d4e147ff99edd94b46004867a159055dba3842a7
Author: slfan1989 <[email protected]>
AuthorDate: Tue Oct 14 13:29:53 2025 +0800
[AURON #1417] Expand build support to modern Linux distributions. (#1418)
---
auron-build.sh | 21 ++++++++-
dev/docker-build/centos7/Dockerfile | 2 +-
dev/docker-build/debian11/Dockerfile | 77 +++++++++++++++++++++++++++++++
dev/docker-build/docker-compose.yml | 2 +-
dev/docker-build/rockylinux8/Dockerfile | 82 +++++++++++++++++++++++++++++++++
dev/docker-build/ubuntu24/Dockerfile | 72 +++++++++++++++++++++++++++++
6 files changed, 252 insertions(+), 4 deletions(-)
diff --git a/auron-build.sh b/auron-build.sh
index 230e6b40..80555129 100755
--- a/auron-build.sh
+++ b/auron-build.sh
@@ -25,7 +25,8 @@ print_help() {
echo "Build Auron project with specified Maven profiles"
echo
echo "Options:"
- echo " --docker <true|false> Build in Docker with CentOS7 (default:
false)"
+ echo " --docker <true|false> Build in Docker environment (default:
false)"
+ echo " --image <NAME> Docker image to use
(centos7|ubuntu24|rockylinux8|debian11, default: centos7)"
echo " --pre Activate pre-release profile"
echo " --release Activate release profile"
echo " --sparkver <VERSION> Specify Spark version (e.g.
3.0/3.1/3.2/3.3/3.4/3.5)"
@@ -40,7 +41,7 @@ print_help() {
echo
echo "Examples:"
echo " $0 --pre --sparkver 3.5 --scalaver 2.12 -DskipBuildNative"
- echo " $0 --docker true --clean true --skiptests true --release
--sparkver 3.5 --scalaver 2.12 --celeborn 0.5 --uniffle 0.10 --paimon 1.2"
+ echo " $0 --docker true --image centos7 --clean true --skiptests true
--release --sparkver 3.5 --scalaver 2.12 --celeborn 0.5 --uniffle 0.10 --paimon
1.2"
exit 0
}
@@ -48,6 +49,7 @@ MVN_CMD="$(dirname "$0")/build/mvn"
# Initialize variables
USE_DOCKER=false
+IMAGE_NAME="centos7"
PRE_PROFILE=false
RELEASE_PROFILE=false
CLEAN=true
@@ -79,6 +81,19 @@ while [[ $# -gt 0 ]]; do
exit 1
fi
;;
+ --image)
+ if [[ -n "$2" && "$2" != -* ]]; then
+ IMAGE_NAME="$2"
+ if [[ ! "$IMAGE_NAME" =~
^(centos7|ubuntu24|rockylinux8|debian11)$ ]]; then
+ echo "ERROR: Unsupported image '$IMAGE_NAME'. Supported:
centos7, ubuntu24, rockylinux8, debian11" >&2
+ exit 1
+ fi
+ shift 2
+ else
+ echo "ERROR: --image requires one of: centos7, ubuntu24,
rockylinux8, debian11" >&2
+ exit 1
+ fi
+ ;;
--clean)
if [[ -n "$2" && "$2" =~ ^(true|false)$ ]]; then
CLEAN="$2"
@@ -302,6 +317,7 @@ echo "[INFO] Build info written to $BUILD_INFO_FILE"
# Execute Maven command
if [[ "$USE_DOCKER" == true ]]; then
+ echo "[INFO] Compiling inside Docker container using image: $IMAGE_NAME"
# In Docker mode, use multi-threaded Maven build with -T8 for faster
compilation
BUILD_ARGS+=("-T8")
if [[ "$CLEAN" == true ]]; then
@@ -313,6 +329,7 @@ if [[ "$USE_DOCKER" == true ]]; then
echo "[INFO] Compiling inside Docker container..."
export AURON_BUILD_ARGS="${BUILD_ARGS[*]}"
+ export BUILD_CONTEXT="./${IMAGE_NAME}"
exec docker-compose -f dev/docker-build/docker-compose.yml up
--abort-on-container-exit
else
echo "[INFO] Compiling locally with maven args: $MVN_CMD ${MVN_ARGS[@]} $@"
diff --git a/dev/docker-build/centos7/Dockerfile
b/dev/docker-build/centos7/Dockerfile
index 9c240bfa..1b07ac5a 100644
--- a/dev/docker-build/centos7/Dockerfile
+++ b/dev/docker-build/centos7/Dockerfile
@@ -39,7 +39,7 @@ RUN echo '. /opt/rh/devtoolset-11/enable' >> ~/.bashrc
# install rust nightly toolchain
RUN curl https://sh.rustup.rs > /rustup-init
RUN chmod +x /rustup-init
-RUN /rustup-init -y --default-toolchain
nightly-2023-08-01-x86_64-unknown-linux-gnu
+RUN /rustup-init -y --default-toolchain
nightly-2025-05-09-x86_64-unknown-linux-gnu
# install java
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
diff --git a/dev/docker-build/debian11/Dockerfile
b/dev/docker-build/debian11/Dockerfile
new file mode 100644
index 00000000..20134df9
--- /dev/null
+++ b/dev/docker-build/debian11/Dockerfile
@@ -0,0 +1,77 @@
+#
+# 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.
+#
+
+# ---------------------------------------------------------------------
+# Apache Auron build environment on Debian 11
+# ---------------------------------------------------------------------
+FROM debian:11
+
+LABEL maintainer="Apache Auron Team"
+LABEL description="Debian 11 build environment for Auron project"
+
+# ---------------------------------------------------------------------
+# Environment setup
+# ---------------------------------------------------------------------
+ENV LANG=en_US.UTF-8
+ENV LC_ALL=en_US.UTF-8
+ENV TZ=UTC
+ENV DEBIAN_FRONTEND=noninteractive
+
+# ---------------------------------------------------------------------
+# Update system and install basic packages
+# ---------------------------------------------------------------------
+RUN apt-get update -y && \
+ apt-get install -y --no-install-recommends \
+ build-essential \
+ software-properties-common \
+ curl wget git unzip zip \
+ pkg-config \
+ ca-certificates openssl libssl-dev zlib1g-dev && \
+ rm -rf /var/lib/apt/lists/*
+
+# ---------------------------------------------------------------------
+# Verify GCC / G++
+# ---------------------------------------------------------------------
+RUN gcc --version && g++ --version
+
+# ---------------------------------------------------------------------
+# Install Rust (nightly toolchain)
+# ---------------------------------------------------------------------
+RUN curl https://sh.rustup.rs -sSf -o rustup-init && \
+ chmod +x rustup-init && \
+ ./rustup-init -y --default-toolchain
nightly-2025-05-09-x86_64-unknown-linux-gnu && \
+ rm rustup-init
+ENV PATH="/root/.cargo/bin:${PATH}"
+
+# ---------------------------------------------------------------------
+# Install Java (OpenJDK 11)
+# ---------------------------------------------------------------------
+RUN apt-get update -y && \
+ apt-get install -y --no-install-recommends openjdk-11-jdk && \
+ rm -rf /var/lib/apt/lists/*
+ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
+ENV PATH="${JAVA_HOME}/bin:${PATH}"
+
+# ---------------------------------------------------------------------
+# Set working directory
+# ---------------------------------------------------------------------
+WORKDIR /auron
+
+# ---------------------------------------------------------------------
+# Default command
+# ---------------------------------------------------------------------
+CMD ["/bin/bash"]
\ No newline at end of file
diff --git a/dev/docker-build/docker-compose.yml
b/dev/docker-build/docker-compose.yml
index 20c948fd..27bbc922 100644
--- a/dev/docker-build/docker-compose.yml
+++ b/dev/docker-build/docker-compose.yml
@@ -19,7 +19,7 @@ version: "3"
services:
build-release:
- build: ./centos7
+ build: ${BUILD_CONTEXT:-./centos7}
volumes:
- ~/.m2:/root/.m2:rw
- ~/.sbt:/root/.sbt:rw
diff --git a/dev/docker-build/rockylinux8/Dockerfile
b/dev/docker-build/rockylinux8/Dockerfile
new file mode 100644
index 00000000..e519c4f4
--- /dev/null
+++ b/dev/docker-build/rockylinux8/Dockerfile
@@ -0,0 +1,82 @@
+#
+# 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.
+#
+
+# ---------------------------------------------------------------------
+# Apache Auron build environment on Rocky Linux 8
+# ---------------------------------------------------------------------
+FROM rockylinux:8
+
+LABEL maintainer="Apache Auron Team"
+LABEL description="Rocky Linux 8 build environment for Auron project"
+
+# ---------------------------------------------------------------------
+# Basic environment setup
+# ---------------------------------------------------------------------
+ENV LANG=en_US.UTF-8
+ENV LC_ALL=en_US.UTF-8
+ENV TZ=UTC
+ENV DEBIAN_FRONTEND=noninteractive
+
+# ---------------------------------------------------------------------
+# Update system and install base packages (no EPEL)
+# ---------------------------------------------------------------------
+RUN dnf -y update && \
+ dnf -y groupinstall "Development Tools" && \
+ dnf -y install \
+ git curl wget unzip zip \
+ openssl openssl-devel \
+ zlib-devel pkgconfig \
+ ca-certificates dnf-plugins-core && \
+ # Disable EPEL repos if any exist (avoid metadata errors)
+ if ls /etc/yum.repos.d/epel*.repo >/dev/null 2>&1; then \
+ sed -i 's/^enabled=1/enabled=0/' /etc/yum.repos.d/epel*.repo; \
+ fi && \
+ dnf clean all && \
+ rm -rf /var/cache/dnf
+
+# ---------------------------------------------------------------------
+# Verify GCC / G++
+# ---------------------------------------------------------------------
+RUN gcc --version && g++ --version
+
+# ---------------------------------------------------------------------
+# Install Rust nightly toolchain
+# ---------------------------------------------------------------------
+RUN curl https://sh.rustup.rs -sSf -o rustup-init && \
+ chmod +x rustup-init && \
+ ./rustup-init -y --default-toolchain
nightly-2025-05-09-x86_64-unknown-linux-gnu && \
+ rm rustup-init
+ENV PATH="/root/.cargo/bin:${PATH}"
+
+# ---------------------------------------------------------------------
+# Install Java (OpenJDK 8)
+# ---------------------------------------------------------------------
+RUN dnf -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel && \
+ dnf clean all && \
+ rm -rf /var/cache/dnf
+ENV JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"
+ENV PATH="${JAVA_HOME}/bin:${PATH}"
+
+# ---------------------------------------------------------------------
+# Set working directory
+# ---------------------------------------------------------------------
+WORKDIR /auron
+
+# ---------------------------------------------------------------------
+# Default command
+# ---------------------------------------------------------------------
+CMD ["/bin/bash"]
\ No newline at end of file
diff --git a/dev/docker-build/ubuntu24/Dockerfile
b/dev/docker-build/ubuntu24/Dockerfile
new file mode 100644
index 00000000..b8a4d54e
--- /dev/null
+++ b/dev/docker-build/ubuntu24/Dockerfile
@@ -0,0 +1,72 @@
+#
+# 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 ubuntu:24.04
+
+LABEL maintainer="Apache Auron Team"
+LABEL description="Ubuntu 24.04 build environment for Auron project"
+
+# ---------------------------------------------------------------------
+# Update system and install basic tools
+# ---------------------------------------------------------------------
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update -y && \
+ apt-get install -y --no-install-recommends \
+ build-essential \
+ software-properties-common \
+ curl wget unzip zip \
+ git ca-certificates openssl libssl-dev \
+ pkg-config libz-dev && \
+ rm -rf /var/lib/apt/lists/*
+
+# ---------------------------------------------------------------------
+# Install GCC / G++
+# ---------------------------------------------------------------------
+RUN apt-get update -y && \
+ apt-get install -y gcc g++ && \
+ update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 100 && \
+ update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 100 && \
+ rm -rf /var/lib/apt/lists/*
+
+# ---------------------------------------------------------------------
+# Install Rust nightly toolchain
+# ---------------------------------------------------------------------
+RUN curl https://sh.rustup.rs -sSf -o rustup-init && \
+ chmod +x rustup-init && \
+ ./rustup-init -y --default-toolchain
nightly-2025-05-09-x86_64-unknown-linux-gnu && \
+ rm rustup-init
+ENV PATH="/root/.cargo/bin:${PATH}"
+
+# ---------------------------------------------------------------------
+# Install Java (OpenJDK 8)
+# ---------------------------------------------------------------------
+RUN apt-get update -y && \
+ apt-get install -y openjdk-8-jdk && \
+ rm -rf /var/lib/apt/lists/*
+ENV JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
+ENV PATH="${JAVA_HOME}/bin:${PATH}"
+
+# ---------------------------------------------------------------------
+# Set working directory
+# ---------------------------------------------------------------------
+WORKDIR /auron
+
+# ---------------------------------------------------------------------
+# Default command
+# ---------------------------------------------------------------------
+CMD ["/bin/bash"]