# 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. name: Build Third Party Libraries on: pull_request: concurrency: group: ${{ github.ref }} (Build Third Party Libraries) cancel-in-progress: true jobs: changes: name: Detect Changes runs-on: ubuntu-latest outputs: thirdparty_changes: ${{ steps.filter.outputs.thirdparty_changes }} steps: - name: Checkout ${{ github.ref }} uses: actions/checkout@v3 with: persist-credentials: false submodules: recursive - name: Paths filter uses: ./.github/actions/paths-filter id: filter with: filters: | thirdparty_changes: - 'thirdparty/**' build_linux: name: Build Third Party Libraries (Linux) needs: changes if: ${{ needs.changes.outputs.thirdparty_changes == 'true' }} runs-on: ubuntu-22.04 steps: - name: Checkout easimon/maximize-build-space run: | git clone -b v7 https://github.com/easimon/maximize-build-space - name: Maximize build space uses: ./maximize-build-space with: root-reserve-mb: 4096 swap-size-mb: 8192 remove-dotnet: 'true' remove-android: 'true' remove-haskell: 'true' remove-codeql: 'true' remove-docker-images: 'true' - name: Checkout ${{ github.ref }} uses: actions/checkout@v3 - name: Download run: | cd thirdparty curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz \ -o doris-thirdparty-source.tgz tar -zxvf doris-thirdparty-source.tgz - name: Prepare run: | export DEFAULT_DIR='/opt/doris' export PATH="${DEFAULT_DIR}/ldb-toolchain/bin:${PATH}" packages=( 'build-essential' 'automake' 'autoconf' 'libtool-bin' 'pkg-config' 'cmake' 'ninja-build' 'ccache' 'python-is-python3' 'bison' 'byacc' 'flex' 'binutils-dev' 'libiberty-dev' 'curl' 'git' 'zip' 'unzip' 'autopoint' 'openjdk-8-jdk' 'openjdk-8-jdk-headless' 'maven' ) sudo apt update sudo DEBIAN_FRONTEND=noninteractive apt install --yes "${packages[@]}" mkdir -p "${DEFAULT_DIR}" wget https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.18/ldb_toolchain_gen.sh \ -q -O /tmp/ldb_toolchain_gen.sh bash /tmp/ldb_toolchain_gen.sh "${DEFAULT_DIR}/ldb-toolchain" - name: Build run: | export DEFAULT_DIR='/opt/doris' export PATH="${DEFAULT_DIR}/ldb-toolchain/bin:${PATH}" export PATH="$(find /usr/lib/jvm/java-8-openjdk* -maxdepth 1 -type d -name 'bin'):${PATH}" export JAVA_HOME="$(find /usr/lib/jvm/java-8-openjdk* -maxdepth 0)" export DORIS_TOOLCHAIN=gcc cd thirdparty ./build-thirdparty.sh -j "$(nproc)" build_macos: name: Build Third Party Libraries (macOS) needs: changes if: ${{ needs.changes.outputs.thirdparty_changes == 'true' }} runs-on: macos-12 steps: - name: Checkout ${{ github.ref }} uses: actions/checkout@v3 - name: Download run: | cd thirdparty curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz \ -o doris-thirdparty-source.tgz tar -zxvf doris-thirdparty-source.tgz - name: Prepare run: | packages=( 'automake' 'autoconf' 'libtool' 'pkg-config' 'texinfo' 'coreutils' 'gnu-getopt' 'python@3' 'cmake' 'ninja' 'ccache' 'bison' 'byacc' 'gettext' 'wget' 'pcre' 'openjdk@11' 'maven' 'node' 'llvm@16' ) brew install "${packages[@]}" - name: Build run: | cd thirdparty ./build-thirdparty.sh -j "$(nproc)"