| # |
| # 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-Packaging |
| |
| on: |
| push: |
| branches: |
| - develop |
| - rc/** |
| paths: |
| - '.github/workflows/cpp-packaging.yml' |
| - 'cpp/**' |
| - 'packaging/**' |
| - 'LICENSE' |
| - 'NOTICE' |
| pull_request: |
| branches: |
| - develop |
| - rc/** |
| paths: |
| - '.github/workflows/cpp-packaging.yml' |
| - 'cpp/**' |
| - 'packaging/**' |
| - 'LICENSE' |
| - 'NOTICE' |
| workflow_dispatch: |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| deb: |
| name: Debian package |
| runs-on: ubuntu-24.04 |
| timeout-minutes: 30 |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v7 |
| |
| - name: Install packaging tools |
| run: | |
| sudo apt-get update |
| sudo apt-get install -y build-essential cmake ninja-build pkg-config dpkg-dev uuid-dev |
| |
| - name: Configure and build |
| run: | |
| cmake -S cpp -B build/deb -G Ninja \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DBUILD_TEST=OFF \ |
| -DBUILD_TOOLS=ON \ |
| -DTSFILE_ENABLE_CPACK=ON \ |
| -DTSFILE_DEPENDENCY_SOURCE=AUTO \ |
| -DTSFILE_ENABLE_NATIVE_ARCH=OFF |
| cmake --build build/deb --parallel |
| |
| - name: Build and inspect DEB packages |
| run: | |
| cpack --config build/deb/CPackConfig.cmake -G DEB |
| ls -lh ./*.deb |
| for package in ./*.deb; do |
| dpkg-deb --info "$package" |
| dpkg-deb --contents "$package" | grep -E '(/libtsfile|/tsfile-cli|TsFileConfig|libtsfile.pc)' || true |
| done |
| |
| - name: Upload DEB packages |
| uses: actions/upload-artifact@v4 |
| with: |
| name: tsfile-deb |
| path: '*.deb' |
| if-no-files-found: error |
| |
| rpm: |
| name: Fedora package |
| runs-on: ubuntu-24.04 |
| container: fedora:latest |
| timeout-minutes: 30 |
| steps: |
| - name: Install build and packaging tools |
| run: | |
| dnf install -y \ |
| cmake gcc-c++ make ninja-build pkgconf-pkg-config rpm-build \ |
| git curl tar xz unzip gzip libuuid-devel |
| |
| - name: Checkout repository |
| uses: actions/checkout@v7 |
| |
| - name: Configure and build |
| run: | |
| cmake -S cpp -B build/rpm -G Ninja \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DBUILD_TEST=OFF \ |
| -DBUILD_TOOLS=ON \ |
| -DTSFILE_ENABLE_CPACK=ON \ |
| -DTSFILE_DEPENDENCY_SOURCE=AUTO \ |
| -DTSFILE_ENABLE_NATIVE_ARCH=OFF |
| cmake --build build/rpm --parallel |
| |
| - name: Build and inspect RPM packages |
| run: | |
| cpack --config build/rpm/CPackConfig.cmake -G RPM |
| ls -lh ./*.rpm |
| for package in ./*.rpm; do |
| rpm -qip "$package" |
| rpm -qlp "$package" | grep -E '(/libtsfile|/tsfile-cli|TsFileConfig|libtsfile.pc)' || true |
| done |
| |
| - name: Upload RPM packages |
| uses: actions/upload-artifact@v4 |
| with: |
| name: tsfile-rpm |
| path: '*.rpm' |
| if-no-files-found: error |