diff --git a/.github/workflows/gcc8_test.yaml b/.github/workflows/gcc8_test.yaml new file mode 100644 index 00000000..b6861905 --- /dev/null +++ b/.github/workflows/gcc8_test.yaml @@ -0,0 +1,57 @@ +# Copyright 2026-present Alibaba Inc. +# +# Licensed 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: Gcc 8 Test + +on: + push: + branches: + - '**' + tags: + - '**' + pull_request: + +concurrency: + group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + gcc8-test: + runs-on: ubuntu-22.04 + container: + image: ubuntu:20.04 + timeout-minutes: 120 + strategy: + fail-fast: false + steps: + - name: Install dependencies + run: | + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-8 g++-8 ninja-build git git-lfs tar curl tzdata zip unzip pkg-config build-essential python3-dev + curl -L -O https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz + tar -zxvf cmake-3.28.3-linux-x86_64.tar.gz -C /usr/local --strip-components=1 + rm cmake-3.28.3-linux-x86_64.tar.gz + - name: Checkout paimon-cpp + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + lfs: true + - name: Build Paimon + shell: bash + env: + CC: gcc-8 + CXX: g++-8 + run: ci/scripts/build_paimon.sh $(pwd) diff --git a/ci/scripts/build_paimon.sh b/ci/scripts/build_paimon.sh index 5def3757..cafc88a7 100755 --- a/ci/scripts/build_paimon.sh +++ b/ci/scripts/build_paimon.sh @@ -25,13 +25,24 @@ build_dir=${1}/build mkdir ${build_dir} pushd ${build_dir} +ENABLE_LUMINA="ON" +ENABLE_LANCE="ON" +if [[ "${CC:-}" == *"gcc-8"* ]] || [[ "${CXX:-}" == *"g++-8"* ]]; then + ENABLE_LUMINA="OFF" # Lumina is only supported on GCC 9 or higher. + ENABLE_LANCE="OFF" + # Lance's prebuilt binaries can only be compiled on Ubuntu 22.04 and above + # which requires a higher version of glibc, + # but Ubuntu 22.04 and above no longer ships with gcc-8 by default. + # Consider supporting Lance from source compilation in the future +fi + CMAKE_ARGS=( "-G Ninja" "-DCMAKE_BUILD_TYPE=${build_type}" "-DPAIMON_BUILD_TESTS=ON" - "-DPAIMON_ENABLE_LANCE=ON" + "-DPAIMON_ENABLE_LANCE=${ENABLE_LANCE}" "-DPAIMON_ENABLE_JINDO=ON" - "-DPAIMON_ENABLE_LUMINA=ON" + "-DPAIMON_ENABLE_LUMINA=${ENABLE_LUMINA}" "-DPAIMON_ENABLE_LUCENE=ON" ) diff --git a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake index db9b3017..078b780e 100644 --- a/cmake_modules/ThirdpartyToolchain.cmake +++ b/cmake_modules/ThirdpartyToolchain.cmake @@ -1145,7 +1145,8 @@ macro(build_arrow) -DZSTD_ROOT=${ARROW_ZSTD_ROOT} -DZLIB_ROOT=${ARROW_ZLIB_ROOT} -DSnappy_ROOT=${ARROW_SNAPPY_ROOT} - -DLZ4_ROOT=${ARROW_LZ4_ROOT}) + -DLZ4_ROOT=${ARROW_LZ4_ROOT} + -DBUILD_WARNING_LEVEL=PRODUCTION) # ignore warnings under gcc8 set(ARROW_CONFIGURE SOURCE_SUBDIR "cpp" CMAKE_ARGS ${ARROW_CMAKE_ARGS}) set(PATCH_FILE "${CMAKE_CURRENT_LIST_DIR}/arrow.diff") diff --git a/docs/source/building.rst b/docs/source/building.rst index 6416a91d..bf90003c 100644 --- a/docs/source/building.rst +++ b/docs/source/building.rst @@ -29,7 +29,7 @@ and invoke ``cmake $CMAKE_ARGS ..`` from this directory. Building requires: -* A C++17-enabled compiler. On Linux, gcc 9 and higher should be +* A C++17-enabled compiler. On Linux, gcc 8 and higher should be sufficient. Windows and MacOS are not supported for now. * At least 2GB of RAM for a minimal build, 8GB for a minimal debug build with tests and 16GB for a full build. @@ -122,7 +122,7 @@ boolean flags to ``cmake``. * ``-DPAIMON_ENABLE_LANCE=ON``: Paimon integration with Lance * ``-DPAIMON_ENABLE_AVRO=ON``: Apache Avro libraries and Paimon integration * ``-DPAIMON_ENABLE_JINDO=ON``: Support for Alibaba Jindo filesystems -* ``-DPAIMON_ENABLE_LUMINA=ON``: Support for Lumina vector index +* ``-DPAIMON_ENABLE_LUMINA=ON``: Support for Lumina vector index, lumina is only supported on gcc9 or higher. Optional Targets ~~~~~~~~~~~~~~~~