Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/workflows/package-consumers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Package Consumers

on:
push:
pull_request:

permissions:
contents: read

jobs:
cmake-consumers:
name: CMake consumers
runs-on: ubuntu-24.04
env:
CC: gcc-13
CXX: g++-13

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl gcc-13 g++-13 libsqlite3-dev ninja-build

- name: Build and install vsqlitepp
run: |
cmake -S . -B build/install -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${RUNNER_TEMP}/vsqlitepp-install" \
-DVSQLITE_BUILD_EXAMPLES=OFF \
-DVSQLITE_BUILD_TESTS=OFF \
-DVSQLITE_BUNDLED_SQLITE=OFF
cmake --build build/install
cmake --install build/install

- name: Test installed package consumer
run: |
cmake -S tests/package_consumers/install -B build/consumer-install -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="${RUNNER_TEMP}/vsqlitepp-install"
cmake --build build/consumer-install
./build/consumer-install/vsqlitepp_install_consumer

- name: Test FetchContent consumer
run: |
cmake -S tests/package_consumers/fetchcontent -B build/consumer-fetchcontent -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DVSQLITEPP_SOURCE_DIR="${GITHUB_WORKSPACE}" \
-DVSQLITE_BUILD_EXAMPLES=OFF \
-DVSQLITE_BUILD_TESTS=OFF \
-DVSQLITE_BUNDLED_SQLITE=OFF
cmake --build build/consumer-fetchcontent
./build/consumer-fetchcontent/vsqlitepp_fetchcontent_consumer

- name: Test CPM.cmake consumer
run: |
mkdir -p "${RUNNER_TEMP}/cpm"
curl -fsSL https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/CPM.cmake \
-o "${RUNNER_TEMP}/cpm/CPM.cmake"
cmake -S tests/package_consumers/cpm -B build/consumer-cpm -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCPM_SOURCE_CACHE="${RUNNER_TEMP}/cpm" \
-DVSQLITEPP_SOURCE_DIR="${GITHUB_WORKSPACE}" \
-DVSQLITE_BUILD_EXAMPLES=OFF \
-DVSQLITE_BUILD_TESTS=OFF \
-DVSQLITE_BUNDLED_SQLITE=OFF
cmake --build build/consumer-cpm
./build/consumer-cpm/vsqlitepp_cpm_consumer
70 changes: 70 additions & 0 deletions .github/workflows/package-managers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Package Managers

on:
push:
pull_request:

permissions:
contents: read

jobs:
conan:
name: Conan package
runs-on: ubuntu-24.04
env:
CC: gcc-13
CXX: g++-13

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc-13 g++-13 python3-pip
python3 -m pip install --user conan
echo "${HOME}/.local/bin" >> "${GITHUB_PATH}"

- name: Create package
run: |
conan profile detect --force
conan create . --build=missing -s compiler.cppstd=20

vcpkg:
name: vcpkg overlay port
runs-on: ubuntu-24.04
env:
CC: gcc-13
CXX: g++-13

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl gcc-13 g++-13 git ninja-build tar unzip zip

- name: Bootstrap vcpkg
run: |
git clone --depth 1 https://github.com/microsoft/vcpkg "${RUNNER_TEMP}/vcpkg"
"${RUNNER_TEMP}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics

- name: Install overlay port
run: |
"${RUNNER_TEMP}/vcpkg/vcpkg" install vsqlitepp \
--overlay-ports="${GITHUB_WORKSPACE}/packaging/vcpkg" \
--x-install-root="${RUNNER_TEMP}/vcpkg-installed" \
--triplet=x64-linux

- name: Test vcpkg consumer
run: |
cmake -S tests/package_consumers/install -B build/consumer-vcpkg -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE="${RUNNER_TEMP}/vcpkg/scripts/buildsystems/vcpkg.cmake" \
-DVCPKG_INSTALLED_DIR="${RUNNER_TEMP}/vcpkg-installed" \
-DVCPKG_TARGET_TRIPLET=x64-linux
cmake --build build/consumer-vcpkg
./build/consumer-vcpkg/vsqlitepp_install_consumer
113 changes: 113 additions & 0 deletions .github/workflows/release-packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: Release Packages

on:
push:
tags:
- 'v*'

permissions:
contents: write

jobs:
cpack-linux:
name: CPack DEB and RPM
runs-on: ubuntu-24.04
env:
CC: gcc-13
CXX: g++-13

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y dpkg-dev gcc-13 g++-13 libsqlite3-dev ninja-build rpm

- name: Configure
run: |
cmake -S . -B build/package -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_SHARED_LIBS=ON \
-DVSQLITE_BUILD_EXAMPLES=OFF \
-DVSQLITE_BUILD_TESTS=OFF \
-DVSQLITE_BUNDLED_SQLITE=OFF

- name: Build
run: cmake --build build/package

- name: Package
working-directory: build/package
run: |
cpack -G DEB
cpack -G RPM
cpack -G TGZ
cpack -G TXZ
cpack -G ZIP
mkdir -p "${GITHUB_WORKSPACE}/dist"
find . -maxdepth 1 -type f \( -name '*.deb' -o -name '*.rpm' -o -name '*.tar.gz' -o -name '*.tar.xz' -o -name '*.zip' \) \
-exec cp {} "${GITHUB_WORKSPACE}/dist/" \;

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: cpack-linux
path: dist/*

arch-linux:
name: Arch Linux package
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Build package
run: |
version="$(cat VERSION)"
mkdir -p dist build/arch
git archive --format=tar.gz --prefix="vsqlitepp-${version}/" \
-o "build/arch/vsqlitepp-${version}.tar.gz" HEAD
cp packaging/arch/PKGBUILD build/arch/PKGBUILD
sed -i "s/^pkgver=.*/pkgver=${version}/" build/arch/PKGBUILD
docker run --rm -v "${GITHUB_WORKSPACE}/build/arch:/pkgbuild" archlinux:base-devel bash -lc '
pacman -Sy --noconfirm --needed sudo
useradd -m builder
chown -R builder:builder /pkgbuild
echo "builder ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/builder
chmod 0440 /etc/sudoers.d/builder
cd /pkgbuild
sudo -u builder makepkg --syncdeps --noconfirm
'
cp build/arch/*.pkg.tar.* dist/

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: arch-linux
path: dist/*.pkg.tar.*

publish:
name: Upload to GitHub release
runs-on: ubuntu-24.04
needs:
- cpack-linux
- arch-linux

steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true

- name: Publish assets
env:
GH_TOKEN: ${{ github.token }}
TAG_NAME: ${{ github.ref_name }}
run: |
gh release view "${TAG_NAME}" >/dev/null 2>&1 || \
gh release create "${TAG_NAME}" --title "${TAG_NAME}" --notes "Release ${TAG_NAME}"
gh release upload "${TAG_NAME}" dist/* --clobber
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,7 @@ Makefile.in
.cache
out
compile_commands.json

# Conan
test_package/build/
test_package/CMakeUserPresets.json
Loading
Loading