# 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
#
#     https://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: Cpp-Dependency-Source

on:
  push:
    branches:
      - develop
      - iotdb
      - rc/*
    paths:
      - '.github/workflows/cpp-dependency-source.yml'
      - 'cpp/**'
      - 'pom.xml'
  pull_request:
    branches:
      - develop
      - dev/*
      - iotdb
      - rc/*
    paths:
      - '.github/workflows/cpp-dependency-source.yml'
      - 'cpp/**'
      - 'pom.xml'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

env:
  TSFILE_BUILD_DIR: cpp/target/dependency-source-build
  TSFILE_DEPENDENCY_CACHE: cpp/target/dependency-source-cache

jobs:
  legacy-cmake:
    name: Legacy core build with CMake 3.11
    runs-on: ubuntu-22.04
    timeout-minutes: 20
    env:
      CMAKE_3_11_VERSION: 3.11.4
      CMAKE_3_11_SHA256: 6dab016a6b82082b8bcd0f4d1e53418d6372015dd983d29367b9153f1a376435
      XZ_VERSION: 5.8.3
      XZ_SHA256: 3d3a1b973af218114f4f889bbaa2f4c037deaae0c8e815eec381c3d546b974a0
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Install verified CMake 3.11
        shell: bash
        run: |
          curl --fail --location --retry 3 \
            "https://cmake.org/files/v3.11/cmake-${CMAKE_3_11_VERSION}-Linux-x86_64.tar.gz" \
            --output cmake-3.11.tar.gz
          echo "${CMAKE_3_11_SHA256}  cmake-3.11.tar.gz" | sha256sum --check
          tar -xzf cmake-3.11.tar.gz

      - name: Configure the legacy core with default LZMA2 setting
        shell: bash
        run: |
          mkdir -p "$TSFILE_BUILD_DIR"
          cd "$TSFILE_BUILD_DIR"
          "$GITHUB_WORKSPACE/cmake-${CMAKE_3_11_VERSION}-Linux-x86_64/bin/cmake" \
            "$GITHUB_WORKSPACE/cpp" \
            -DCMAKE_BUILD_TYPE=Release \
            -DBUILD_TEST=OFF \
            -DBUILD_TOOLS=OFF \
            -DENABLE_ANTLR4=OFF \
            -DENABLE_SNAPPY=OFF \
            -DENABLE_LZ4=OFF \
            -DENABLE_LZOKAY=OFF \
            -DENABLE_ZLIB=OFF \
            -DENABLE_ZSTD=OFF \
            -DENABLE_SIMD=OFF
          grep -Fx "ENABLE_LZMA2:BOOL=OFF" CMakeCache.txt
          ! grep -q '^TSFILE_LIBLZMA' CMakeCache.txt

      - name: Build TsFile with CMake 3.11
        shell: bash
        run: |
          cd "$TSFILE_BUILD_DIR"
          "$GITHUB_WORKSPACE/cmake-${CMAKE_3_11_VERSION}-Linux-x86_64/bin/cmake" \
            --build . --target tsfile -- -j2

      - name: Install an external liblzma for the legacy SYSTEM build
        shell: bash
        run: |
          curl --fail --location --retry 3 \
            "https://github.com/tukaani-project/xz/releases/download/v${XZ_VERSION}/xz-${XZ_VERSION}.tar.gz" \
            --output xz.tar.gz
          echo "${XZ_SHA256}  xz.tar.gz" | sha256sum --check
          tar -xzf xz.tar.gz
          cd "xz-${XZ_VERSION}"
          ./configure \
            --prefix="$GITHUB_WORKSPACE/system-liblzma" \
            --disable-static \
            --disable-xz \
            --disable-xzdec \
            --disable-lzmadec \
            --disable-lzmainfo \
            --disable-lzma-links \
            --disable-scripts \
            --disable-doc \
            --disable-nls
          make -j2
          make install

      - name: Build LZMA2 against SYSTEM liblzma with CMake 3.11
        shell: bash
        run: |
          mkdir -p "${TSFILE_BUILD_DIR}-lzma2-system"
          cd "${TSFILE_BUILD_DIR}-lzma2-system"
          "$GITHUB_WORKSPACE/cmake-${CMAKE_3_11_VERSION}-Linux-x86_64/bin/cmake" \
            "$GITHUB_WORKSPACE/cpp" \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/system-liblzma" \
            -DBUILD_TEST=OFF \
            -DBUILD_TOOLS=OFF \
            -DENABLE_ANTLR4=OFF \
            -DENABLE_SNAPPY=OFF \
            -DENABLE_LZ4=OFF \
            -DENABLE_LZOKAY=OFF \
            -DENABLE_ZLIB=OFF \
            -DENABLE_ZSTD=OFF \
            -DENABLE_LZMA2=ON \
            -DENABLE_SIMD=OFF \
            -DTSFILE_DEPENDENCY_SOURCE=SYSTEM \
            2>&1 | tee configure.log
          grep -F "TsFile dependency liblzma: SYSTEM" configure.log
          "$GITHUB_WORKSPACE/cmake-${CMAKE_3_11_VERSION}-Linux-x86_64/bin/cmake" \
            --build . --target tsfile -- -j2

      - name: Reject bundled LZMA2 with CMake 3.11 clearly
        shell: bash
        run: |
          mkdir -p "${TSFILE_BUILD_DIR}-lzma2-bundled-rejected"
          cd "${TSFILE_BUILD_DIR}-lzma2-bundled-rejected"
          if "$GITHUB_WORKSPACE/cmake-${CMAKE_3_11_VERSION}-Linux-x86_64/bin/cmake" \
            "$GITHUB_WORKSPACE/cpp" \
            -DBUILD_TEST=OFF \
            -DBUILD_TOOLS=OFF \
            -DENABLE_ANTLR4=OFF \
            -DENABLE_SNAPPY=OFF \
            -DENABLE_LZ4=OFF \
            -DENABLE_LZOKAY=OFF \
            -DENABLE_ZLIB=OFF \
            -DENABLE_ZSTD=OFF \
            -DENABLE_LZMA2=ON \
            -DENABLE_SIMD=OFF \
            -DTSFILE_DEPENDENCY_SOURCE=BUNDLED \
            > configure.log 2>&1; then
            echo "Bundled LZMA2 unexpectedly configured with CMake 3.11."
            exit 1
          fi
          cat configure.log
          # CMake wraps long FATAL_ERROR messages, so match short fragments
          # instead of assuming the complete sentence remains on one line.
          grep -F "XZ Utils 5.8.3" configure.log
          grep -F "CMake 3.20 or newer" configure.log

  bundled:
    name: BUNDLED from a fresh archive cache
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Install bundled build prerequisites
        run: |
          sudo apt-get update
          sudo apt-get install -y uuid-dev

      - name: Configure all dependencies from verified archives
        shell: bash
        run: |
          cmake -S cpp -B "$TSFILE_BUILD_DIR" \
            -DCMAKE_BUILD_TYPE=Release \
            -DBUILD_TEST=OFF \
            -DBUILD_TOOLS=OFF \
            -DENABLE_LZMA2=ON \
            -DTSFILE_DEPENDENCY_SOURCE=BUNDLED \
            -DTSFILE_DEPENDENCY_CACHE="$GITHUB_WORKSPACE/$TSFILE_DEPENDENCY_CACHE" \
            2>&1 | tee bundled-configure.log

          for dependency in ANTLR4 Snappy LZ4 lzokay zlib Zstandard liblzma SIMDe; do
            grep -F "TsFile dependency ${dependency}: BUNDLED" bundled-configure.log
          done

      - name: Build TsFile with bundled dependencies
        run: cmake --build "$TSFILE_BUILD_DIR" --target tsfile --parallel 2

      - name: Upload verified dependency archives
        uses: actions/upload-artifact@v7
        with:
          name: tsfile-cpp-dependency-archives
          path: ${{ env.TSFILE_DEPENDENCY_CACHE }}/
          if-no-files-found: error
          retention-days: 1

  offline:
    name: BUNDLED from cache with network downloads disabled
    needs: bundled
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Download verified dependency archives
        uses: actions/download-artifact@v8
        with:
          name: tsfile-cpp-dependency-archives
          path: ${{ env.TSFILE_DEPENDENCY_CACHE }}

      - name: Install offline build prerequisites
        run: |
          sudo apt-get update
          sudo apt-get install -y uuid-dev

      - name: Configure all dependencies offline
        shell: bash
        run: |
          cmake -S cpp -B "$TSFILE_BUILD_DIR" \
            -DCMAKE_BUILD_TYPE=Release \
            -DBUILD_TEST=OFF \
            -DBUILD_TOOLS=OFF \
            -DENABLE_LZMA2=ON \
            -DTSFILE_DEPENDENCY_SOURCE=BUNDLED \
            -DTSFILE_DEPENDENCY_OFFLINE=ON \
            -DTSFILE_DEPENDENCY_CACHE="$GITHUB_WORKSPACE/$TSFILE_DEPENDENCY_CACHE" \
            2>&1 | tee offline-configure.log

          for dependency in ANTLR4 Snappy LZ4 lzokay zlib Zstandard liblzma SIMDe; do
            grep -F "TsFile dependency ${dependency}: BUNDLED" offline-configure.log
          done

      - name: Build TsFile offline
        run: cmake --build "$TSFILE_BUILD_DIR" --target tsfile --parallel 2

  system:
    name: SYSTEM from an external package prefix
    runs-on: ubuntu-24.04
    timeout-minutes: 45
    env:
      VCPKG_COMMIT: a2b75031b909a2d6b051725c3909230c72d4bd4a
      VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/.vcpkg-binary-cache
      ANTLR4_VERSION: 4.9.3
      ANTLR4_SHA256: efe4057d75ab48145d4683100fec7f77d7f87fa258707330cadd1f8e6f7eecae
      SIMDE_VERSION: 0.8.4-rc3
      SIMDE_SHA256: a5407985439fef1435ac1f091a4d2e6c71981faed213e1be156aca575ce7052c
    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Checkout pinned vcpkg registry
        uses: actions/checkout@v7
        with:
          repository: microsoft/vcpkg
          ref: ${{ env.VCPKG_COMMIT }}
          path: vcpkg

      - name: Cache vcpkg binary packages
        uses: actions/cache@v6
        with:
          path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
          key: ${{ runner.os }}-vcpkg-${{ env.VCPKG_COMMIT }}-tsfile-system-v2

      - name: Install external build prerequisites
        run: |
          sudo apt-get update
          sudo apt-get install -y cmake libutfcpp-dev pkg-config uuid-dev

      - name: Install external vcpkg dependencies
        shell: bash
        run: |
          mkdir -p "$VCPKG_DEFAULT_BINARY_CACHE"
          ./vcpkg/bootstrap-vcpkg.sh -disableMetrics
          ./vcpkg/vcpkg install \
            snappy:x64-linux \
            lz4:x64-linux \
            lzokay:x64-linux \
            zlib:x64-linux \
            zstd:x64-linux \
            liblzma:x64-linux \
            --clean-after-build

      # ANTLR4 4.10 and later require C++17, while TsFile currently targets
      # C++11. Build the compatible 4.9.3 runtime into the external prefix with
      # Ubuntu's distro CMake; CMake 4 no longer accepts its legacy policies.
      - name: Install external ANTLR4 runtime
        shell: bash
        run: |
          mkdir -p system-prefix
          curl --fail --location --retry 3 \
            "https://github.com/antlr/antlr4/archive/refs/tags/${ANTLR4_VERSION}.tar.gz" \
            --output antlr4.tar.gz
          echo "${ANTLR4_SHA256}  antlr4.tar.gz" | sha256sum --check
          tar -xzf antlr4.tar.gz
          /usr/bin/cmake \
            -S "antlr4-${ANTLR4_VERSION}/runtime/Cpp" \
            -B antlr4-build \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/system-prefix" \
            -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
            -DANTLR4_INSTALL=ON \
            -DWITH_DEMO=OFF
          /usr/bin/cmake --build antlr4-build \
            --target install --parallel 2

      # vcpkg currently provides SIMDe 0.8.2, which is below TsFile's 0.8.4
      # minimum. Install the verified upstream headers into a separate external
      # prefix so SYSTEM mode still validates SIMD support.
      - name: Install external SIMDe headers
        shell: bash
        run: |
          mkdir -p system-prefix/include
          curl --fail --location --retry 3 \
            "https://github.com/simd-everywhere/simde/archive/refs/tags/v${SIMDE_VERSION}.tar.gz" \
            --output simde.tar.gz
          echo "${SIMDE_SHA256}  simde.tar.gz" | sha256sum --check
          tar -xzf simde.tar.gz
          cmake -E copy_directory \
            "simde-${SIMDE_VERSION}/simde" \
            system-prefix/include/simde

      - name: Configure all dependencies from the system prefix
        shell: bash
        run: |
          cmake -S cpp -B "$TSFILE_BUILD_DIR" \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_TOOLCHAIN_FILE="$GITHUB_WORKSPACE/vcpkg/scripts/buildsystems/vcpkg.cmake" \
            -DCMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/system-prefix" \
            -Dantlr4-runtime_DIR="$GITHUB_WORKSPACE/system-prefix/lib/cmake/antlr4-runtime" \
            -DSIMDE_ROOT="$GITHUB_WORKSPACE/system-prefix" \
            -DBUILD_TEST=OFF \
            -DBUILD_TOOLS=OFF \
            -DENABLE_LZMA2=ON \
            -DTSFILE_DEPENDENCY_SOURCE=SYSTEM \
            2>&1 | tee system-configure.log

          for dependency in ANTLR4 Snappy LZ4 lzokay zlib Zstandard liblzma SIMDe; do
            grep -F "TsFile dependency ${dependency}: SYSTEM" system-configure.log
          done

      - name: Build TsFile with system dependencies
        run: cmake --build "$TSFILE_BUILD_DIR" --target tsfile --parallel 2
