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

gavinchou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a38371759d [chore](cloud) add build fdb script (#60877)
6a38371759d is described below

commit 6a38371759da8073afdaade58481e37ef8fe69d3
Author: walter <[email protected]>
AuthorDate: Thu Mar 5 15:58:35 2026 +0800

    [chore](cloud) add build fdb script (#60877)
---
 cloud/script/build_fdb.sh | 384 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 384 insertions(+)

diff --git a/cloud/script/build_fdb.sh b/cloud/script/build_fdb.sh
new file mode 100644
index 00000000000..89f8dc887c7
--- /dev/null
+++ b/cloud/script/build_fdb.sh
@@ -0,0 +1,384 @@
+# 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.
+#!/bin/bash
+
+set -e
+
+# Default values
+VERSION="7.1.55"
+BUILD_DIR="./build_output"
+DOCKER_IMAGE="foundationdb/build:centos7-latest"
+REPO_URL="https://github.com/apple/foundationdb.git";
+SRC_DIR="./foundationdb"
+UPDATE_REPO=true
+
+# Feature flags (default: all enabled except AWS and Azure backup)
+BUILD_AWS_BACKUP=false
+BUILD_AZURE_BACKUP=false
+USE_JEMALLOC=true
+USE_LTO=true
+BUILD_DOCUMENTATION=true
+WITH_ROCKSDB=true
+WITH_GRPC=true
+FULL_DEBUG_SYMBOLS=true
+
+# Binding flags (default: only C and Python enabled)
+BUILD_C_BINDING=true
+BUILD_PYTHON_BINDING=true
+BUILD_JAVA_BINDING=false
+BUILD_GO_BINDING=false
+BUILD_SWIFT_BINDING=false
+BUILD_RUBY_BINDING=false
+
+# Colors for output
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m' # No Color
+
+# Print help message
+show_help() {
+    cat << EOF
+Usage: $0 [OPTIONS]
+
+Build FoundationDB using Docker.
+
+Options:
+    -v VERSION         FoundationDB version/tag to build (default: 7.1.55)
+    -o BUILD_DIR       Output directory for build artifacts (default: 
./build_output)
+    -i DOCKER_IMAGE    Docker image to use (default: 
foundationdb/build:centos7-latest)
+    -s SRC_DIR         Source directory (default: ./foundationdb)
+    -u                 Skip updating repository
+
+Backup Options:
+    --aws              Enable AWS backup support
+    --azure            Enable Azure backup support
+
+Build Options:
+    --no-jemalloc      Disable jemalloc (default: enabled)
+    --no-lto           Disable Link Time Optimization (default: enabled)
+    --no-debug-syms    Disable full debug symbols (default: enabled)
+    --no-docs          Disable documentation (default: enabled)
+    --no-rocksdb       Disable RocksDB support (default: enabled)
+    --no-grpc          Disable gRPC support (default: enabled)
+
+Binding Options (default: C and Python enabled, others disabled):
+    --java             Enable Java binding
+    --go               Enable Go binding
+    --swift            Enable Swift binding
+    --ruby             Enable Ruby binding
+    --all-bindings     Enable all bindings
+    --minimal-bindings Enable only C binding
+
+Environment Variables:
+    FDB_ENABLE_JAVA    Enable Java binding (true/false)
+    FDB_ENABLE_GO      Enable Go binding (true/false)
+    FDB_ENABLE_SWIFT   Enable Swift binding (true/false)
+    FDB_ENABLE_RUBY    Enable Ruby binding (true/false)
+
+General:
+    -h                 Show this help message
+
+Examples:
+    $0                                          # Build with all features (C + 
Python bindings)
+    $0 -v 7.3.0                                 # Build specific version
+    $0 -v 7.3.0 --aws --azure                   # Enable AWS + Azure backup
+    $0 --java --go --swift                      # Enable additional bindings
+    $0 --all-bindings                           # Enable all bindings
+    $0 --no-grpc --no-rocksdb                   # Disable specific features
+    $0 --minimal-bindings                       # Only C binding
+    FDB_ENABLE_JAVA=true $0                     # Enable Java via env var
+
+EOF
+}
+
+# Parse command line arguments
+while [[ $# -gt 0 ]]; do
+    case $1 in
+        -v)
+            VERSION="$2"
+            shift 2
+            ;;
+        -o)
+            BUILD_DIR="$2"
+            shift 2
+            ;;
+        -i)
+            DOCKER_IMAGE="$2"
+            shift 2
+            ;;
+        -s)
+            SRC_DIR="$2"
+            shift 2
+            ;;
+        -u)
+            UPDATE_REPO=false
+            shift
+            ;;
+        --aws)
+            BUILD_AWS_BACKUP=true
+            shift
+            ;;
+        --azure)
+            BUILD_AZURE_BACKUP=true
+            shift
+            ;;
+        --no-jemalloc)
+            USE_JEMALLOC=false
+            shift
+            ;;
+        --no-lto)
+            USE_LTO=false
+            shift
+            ;;
+        --no-debug-syms)
+            FULL_DEBUG_SYMBOLS=false
+            shift
+            ;;
+        --no-docs)
+            BUILD_DOCUMENTATION=false
+            shift
+            ;;
+        --no-rocksdb)
+            WITH_ROCKSDB=false
+            shift
+            ;;
+        --no-grpc)
+            WITH_GRPC=false
+            shift
+            ;;
+        --debug-syms)
+            FULL_DEBUG_SYMBOLS=true
+            shift
+            ;;
+        --docs)
+            BUILD_DOCUMENTATION=true
+            shift
+            ;;
+        --rocksdb)
+            WITH_ROCKSDB=true
+            shift
+            ;;
+        --grpc)
+            WITH_GRPC=true
+            shift
+            ;;
+        --java)
+            BUILD_JAVA_BINDING=true
+            shift
+            ;;
+        --go)
+            BUILD_GO_BINDING=true
+            shift
+            ;;
+        --swift)
+            BUILD_SWIFT_BINDING=true
+            shift
+            ;;
+        --ruby)
+            BUILD_RUBY_BINDING=true
+            shift
+            ;;
+        --all-bindings)
+            BUILD_JAVA_BINDING=true
+            BUILD_GO_BINDING=true
+            BUILD_SWIFT_BINDING=true
+            BUILD_RUBY_BINDING=true
+            shift
+            ;;
+        --minimal-bindings)
+            BUILD_PYTHON_BINDING=false
+            shift
+            ;;
+        -h)
+            show_help
+            exit 0
+            ;;
+        *)
+            echo -e "${RED}Unknown option: $1${NC}" >&2
+            show_help
+            exit 1
+            ;;
+    esac
+done
+
+# Override bindings from environment variables
+if [ "$FDB_ENABLE_JAVA" = "true" ]; then
+    BUILD_JAVA_BINDING=true
+fi
+if [ "$FDB_ENABLE_GO" = "true" ]; then
+    BUILD_GO_BINDING=true
+fi
+if [ "$FDB_ENABLE_SWIFT" = "true" ]; then
+    BUILD_SWIFT_BINDING=true
+fi
+if [ "$FDB_ENABLE_RUBY" = "true" ]; then
+    BUILD_RUBY_BINDING=true
+fi
+
+# Build CMAKE options string
+CMAKE_OPTIONS=""
+
+# Base options
+CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE=Release"
+CMAKE_OPTIONS+=" -DFDB_RELEASE=ON"
+# CMAKE_OPTIONS+=" -DFORCE_ALL_COMPONENTS=ON"
+
+# Optional features
+if [ "$USE_JEMALLOC" = true ]; then
+    CMAKE_OPTIONS+=" -DUSE_JEMALLOC=ON"
+else
+    CMAKE_OPTIONS+=" -DUSE_JEMALLOC=OFF"
+fi
+
+if [ "$USE_LTO" = true ]; then
+    CMAKE_OPTIONS+=" -DUSE_LTO=ON"
+else
+    CMAKE_OPTIONS+=" -DUSE_LTO=OFF"
+fi
+
+if [ "$FULL_DEBUG_SYMBOLS" = true ]; then
+    CMAKE_OPTIONS+=" -DFULL_DEBUG_SYMBOLS=ON"
+fi
+
+if [ "$BUILD_DOCUMENTATION" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_DOCUMENTATION=ON"
+fi
+
+if [ "$WITH_ROCKSDB" = true ]; then
+    CMAKE_OPTIONS+=" -DWITH_ROCKSDB=ON"
+fi
+
+if [ "$WITH_GRPC" = true ]; then
+    CMAKE_OPTIONS+=" -DWITH_GRPC=ON"
+fi
+
+# Backup options
+if [ "$BUILD_AWS_BACKUP" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_AWS_BACKUP=ON"
+fi
+
+if [ "$BUILD_AZURE_BACKUP" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_AZURE_BACKUP=ON"
+fi
+
+# Binding options
+if [ "$BUILD_C_BINDING" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_C_BINDING=ON"
+fi
+
+if [ "$BUILD_PYTHON_BINDING" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_PYTHON_BINDING=ON"
+fi
+
+if [ "$BUILD_JAVA_BINDING" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_JAVA_BINDING=ON"
+fi
+
+if [ "$BUILD_GO_BINDING" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_GO_BINDING=ON"
+fi
+
+if [ "$BUILD_SWIFT_BINDING" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_SWIFT_BINDING=ON"
+fi
+
+if [ "$BUILD_RUBY_BINDING" = true ]; then
+    CMAKE_OPTIONS+=" -DBUILD_RUBY_BINDING=ON"
+fi
+
+# Print configuration
+echo -e "${GREEN}=== FoundationDB Build Configuration ===${NC}"
+echo -e "${BLUE}Basic Settings:${NC}"
+echo "  Version:      $VERSION"
+echo "  Build Dir:    $BUILD_DIR"
+echo "  Source Dir:   $SRC_DIR"
+echo "  Docker Image: $DOCKER_IMAGE"
+echo "  Update Repo:  $UPDATE_REPO"
+echo ""
+
+echo -e "${BLUE}Enabled Features:${NC}"
+echo "  JEMALLOC:       $USE_JEMALLOC"
+echo "  LTO:            $USE_LTO"
+echo "  Debug Symbols:  $FULL_DEBUG_SYMBOLS"
+echo "  Documentation:  $BUILD_DOCUMENTATION"
+echo "  RocksDB:        $WITH_ROCKSDB"
+echo "  gRPC:           $WITH_GRPC"
+echo "  AWS Backup:     $BUILD_AWS_BACKUP"
+echo "  Azure Backup:   $BUILD_AZURE_BACKUP"
+echo ""
+
+echo -e "${BLUE}Enabled Bindings:${NC}"
+echo "  C:      $BUILD_C_BINDING"
+echo "  Python: $BUILD_PYTHON_BINDING"
+echo "  Java:   $BUILD_JAVA_BINDING"
+echo "  Go:     $BUILD_GO_BINDING"
+echo "  Swift:  $BUILD_SWIFT_BINDING"
+echo "  Ruby:   $BUILD_RUBY_BINDING"
+echo ""
+
+echo -e "${BLUE}CMake Options:${NC}"
+echo "$CMAKE_OPTIONS" | tr ' ' '\n' | grep -v '^$' | sed 's/^/  /'
+echo ""
+
+# Pull Docker image
+echo -e "${YELLOW}Pulling Docker image...${NC}"
+docker pull "$DOCKER_IMAGE"
+
+# Clone or update repository
+if [ -d "$SRC_DIR" ]; then
+    echo -e "${YELLOW}Repository exists...${NC}"
+    if [ "$UPDATE_REPO" = true ]; then
+        echo "Updating repository..."
+        cd "$SRC_DIR"
+        git fetch origin
+        git reset --hard origin/main
+        cd ..
+    else
+        echo "Skipping repository update (-u flag set)"
+    fi
+else
+    echo -e "${YELLOW}Cloning repository...${NC}"
+    git clone "$REPO_URL" "$SRC_DIR"
+fi
+
+# Checkout specific version/tag
+echo -e "${YELLOW}Checking out version: $VERSION${NC}"
+cd "$SRC_DIR"
+git checkout "$VERSION"
+cd ..
+
+# Create build output directory
+mkdir -p "$BUILD_DIR"
+
+# Run build in container
+echo -e "${YELLOW}Starting build...${NC}"
+docker run --rm \
+    -v "$(pwd)/$SRC_DIR:/foundationdb/src:ro" \
+    -v "$(pwd)/$BUILD_DIR:/foundationdb/build" \
+    "$DOCKER_IMAGE" \
+    bash -c "
+        mkdir -p /foundationdb/build && \
+        cd /foundationdb/build && \
+        CC=clang CXX=clang++ LD=lld cmake -B build -D USE_LD=LLD -D 
USE_LIBCXX=1 -G Ninja $CMAKE_OPTIONS /foundationdb/src && \
+        ninja -C build
+    "
+
+echo ""
+echo -e "${GREEN}=== Build Complete! ===${NC}"
+echo "Artifacts location: $(pwd)/$BUILD_DIR"


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

Reply via email to