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

yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.1 by this push:
     new 9e8790f80c1 branch-4.1: [fix](build) Fix JindoFS jar packaging #61940 
(#61978)
9e8790f80c1 is described below

commit 9e8790f80c18fd3d874a6229cc00593b92cf1b4a
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Apr 1 15:37:57 2026 +0800

    branch-4.1: [fix](build) Fix JindoFS jar packaging #61940 (#61978)
    
    Cherry-picked from #61940
    
    Co-authored-by: Calvin Kirs <[email protected]>
---
 build.sh                               |  25 ++-----
 docker/thirdparties/jindofs-helpers.sh | 122 +++++++++++++++++++++++++++++++++
 2 files changed, 129 insertions(+), 18 deletions(-)

diff --git a/build.sh b/build.sh
index bf02668d7e4..a788d0db48d 100755
--- a/build.sh
+++ b/build.sh
@@ -139,6 +139,7 @@ function copy_common_files() {
 }
 
 . "${DORIS_HOME}/docker/thirdparties/juicefs-helpers.sh"
+. "${DORIS_HOME}/docker/thirdparties/jindofs-helpers.sh"
 
 find_juicefs_hadoop_jar() {
     juicefs_find_hadoop_jar_by_globs \
@@ -901,16 +902,10 @@ if [[ "${BUILD_FE}" -eq 1 ]]; then
 
     #cp -r -p "${DORIS_HOME}/docs/build/help-resource.zip" 
"${DORIS_OUTPUT}/fe/lib"/
 
-    # copy jindofs jars, only support for Linux x64 or arm
+    # copy jindofs jars, including common jars and the matching platform jar
     if [[ "${BUILD_JINDOFS}" == "ON" ]]; then
-        if [[ "${TARGET_SYSTEM}" == 'Linux' ]] && [[ "${TARGET_ARCH}" == 
'x86_64' ]]; then
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-core-[0-9]*.jar 
"${DORIS_OUTPUT}/fe/lib/jindofs"/
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-core-linux-ubuntu22-x86_64-[0-9]*.jar
 "${DORIS_OUTPUT}/fe/lib/jindofs"/
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-sdk-[0-9]*.jar 
"${DORIS_OUTPUT}/fe/lib/jindofs"/
-        elif [[ "${TARGET_SYSTEM}" == 'Linux' ]] && [[ "${TARGET_ARCH}" == 
'aarch64' ]]; then
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-core-linux-el7-aarch64-[0-9]*.jar
 "${DORIS_OUTPUT}/fe/lib/jindofs"/
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-sdk-[0-9]*.jar 
"${DORIS_OUTPUT}/fe/lib/jindofs"/
-        fi
+        jindofs_copy_jars "${DORIS_THIRDPARTY}/installed/jindofs_libs" 
"${DORIS_OUTPUT}/fe/lib/jindofs" \
+            "${TARGET_SYSTEM}" "${TARGET_ARCH}"
     fi
 
     # copy juicefs hadoop client jar
@@ -1084,17 +1079,11 @@ EOF
         fi
     done        
 
-    # copy jindofs jars, only support for Linux x64 or arm
+    # copy jindofs jars, including common jars and the matching platform jar
     if [[ "${BUILD_JINDOFS}" == "ON" ]]; then
         install -d "${DORIS_OUTPUT}/be/lib/java_extensions/jindofs"/
-        if [[ "${TARGET_SYSTEM}" == 'Linux' ]] && [[ "$TARGET_ARCH" == 
'x86_64' ]]; then
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-core-[0-9]*.jar 
"${DORIS_OUTPUT}/be/lib/java_extensions/jindofs"/
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-core-linux-ubuntu22-x86_64-[0-9]*.jar
 "${DORIS_OUTPUT}/be/lib/java_extensions/jindofs"/
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-sdk-[0-9]*.jar 
"${DORIS_OUTPUT}/be/lib/java_extensions/jindofs"/
-        elif [[ "${TARGET_SYSTEM}" == 'Linux' ]] && [[ "$TARGET_ARCH" == 
'aarch64' ]]; then
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-core-linux-el7-aarch64-[0-9]*.jar
 "${DORIS_OUTPUT}/be/lib/java_extensions/jindofs"/
-            cp -r -p 
"${DORIS_THIRDPARTY}"/installed/jindofs_libs/jindo-sdk-[0-9]*.jar 
"${DORIS_OUTPUT}/be/lib/java_extensions/jindofs"/
-        fi
+        jindofs_copy_jars "${DORIS_THIRDPARTY}/installed/jindofs_libs" 
"${DORIS_OUTPUT}/be/lib/java_extensions/jindofs" \
+            "${TARGET_SYSTEM}" "${TARGET_ARCH}"
     fi
     if [[ "${BUILD_JUICEFS}" == "ON" ]]; then
         install -d "${DORIS_OUTPUT}/be/lib/java_extensions/juicefs"/
diff --git a/docker/thirdparties/jindofs-helpers.sh 
b/docker/thirdparties/jindofs-helpers.sh
new file mode 100644
index 00000000000..f50cbec64dc
--- /dev/null
+++ b/docker/thirdparties/jindofs-helpers.sh
@@ -0,0 +1,122 @@
+#!/usr/bin/env 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.
+
+# Shared JindoFS helper functions used by build packaging.
+
+JINDOFS_PLATFORM_JAR_PATTERNS_X86_64=(
+    'jindo-core-linux-ubuntu22-x86_64-*.jar'
+)
+
+JINDOFS_PLATFORM_JAR_PATTERNS_AARCH64=(
+    'jindo-core-linux-el7-aarch64-*.jar'
+)
+
+jindofs_all_platform_jar_patterns() {
+    printf '%s\n' \
+        "${JINDOFS_PLATFORM_JAR_PATTERNS_X86_64[@]}" \
+        "${JINDOFS_PLATFORM_JAR_PATTERNS_AARCH64[@]}"
+}
+
+jindofs_platform_jar_patterns() {
+    local target_system="$1"
+    local target_arch="$2"
+
+    if [[ "${target_system}" != "Linux" ]]; then
+        return 1
+    fi
+
+    if [[ "${target_arch}" == "x86_64" ]]; then
+        printf '%s\n' "${JINDOFS_PLATFORM_JAR_PATTERNS_X86_64[@]}"
+        return 0
+    fi
+
+    if [[ "${target_arch}" == "aarch64" ]]; then
+        printf '%s\n' "${JINDOFS_PLATFORM_JAR_PATTERNS_AARCH64[@]}"
+        return 0
+    fi
+
+    return 1
+}
+
+jindofs_is_platform_jar() {
+    local jar_name="$1"
+    local pattern=""
+    while IFS= read -r pattern; do
+        if [[ -n "${pattern}" && "${jar_name}" == ${pattern} ]]; then
+            return 0
+        fi
+    done < <(jindofs_all_platform_jar_patterns)
+    return 1
+}
+
+jindofs_find_common_jars() {
+    local jindofs_dir="$1"
+    local jar=""
+    while IFS= read -r jar; do
+        if ! jindofs_is_platform_jar "$(basename "${jar}")"; then
+            echo "${jar}"
+        fi
+    done < <(compgen -G "${jindofs_dir}/*.jar" | sort)
+}
+
+jindofs_log_source_jars() {
+    local jindofs_dir="$1"
+    local target_dir="$2"
+    local jar=""
+    local -a jars=()
+
+    while IFS= read -r jar; do
+        jars+=("${jar}")
+    done < <(compgen -G "${jindofs_dir}/*.jar" | sort)
+
+    echo "JindoFS source jar count for ${target_dir}: ${#jars[@]}"
+    for jar in "${jars[@]}"; do
+        echo "JindoFS source jar for ${target_dir}: $(basename "${jar}")"
+    done
+}
+
+jindofs_copy_jars() {
+    local jindofs_dir="$1"
+    local target_dir="$2"
+    local target_system="$3"
+    local target_arch="$4"
+    local jar=""
+    local platform_jar_pattern=""
+
+    if [[ "${target_system}" != "Linux" ]]; then
+        return 0
+    fi
+
+    if [[ "${target_arch}" != "x86_64" && "${target_arch}" != "aarch64" ]]; 
then
+        return 0
+    fi
+
+    jindofs_log_source_jars "${jindofs_dir}" "${target_dir}"
+
+    while IFS= read -r jar; do
+        cp -r -p "${jar}" "${target_dir}/"
+        echo "Copy JindoFS jar to ${target_dir}: $(basename "${jar}")"
+    done < <(jindofs_find_common_jars "${jindofs_dir}")
+
+    while IFS= read -r platform_jar_pattern; do
+        while IFS= read -r jar; do
+            cp -r -p "${jar}" "${target_dir}/"
+            echo "Copy JindoFS jar to ${target_dir}: $(basename "${jar}")"
+        done < <(compgen -G "${jindofs_dir}/${platform_jar_pattern}" | sort)
+    done < <(jindofs_platform_jar_patterns "${target_system}" "${target_arch}" 
|| true)
+}


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

Reply via email to