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
186 changes: 186 additions & 0 deletions .github/workflows/build_and_test_tidesdb.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
name: TidesDB Python CI

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:

jobs:
build-and-test:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
name: Linux x64
- os: macos-latest
name: macOS x64
- os: windows-latest
name: Windows x64

runs-on: ${{ matrix.os }}
name: ${{ matrix.name }}

steps:
- name: Checkout tidesdb-python repo
uses: actions/checkout@v4
with:
repository: tidesdb/tidesdb-python
path: tidesdb-python

- name: Checkout tidesdb repo
uses: actions/checkout@v4
with:
repository: tidesdb/tidesdb
path: tidesdb

- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install -y libzstd-dev liblz4-dev libsnappy-dev build-essential cmake pkg-config

- name: Install dependencies (macOS)
if: runner.os == 'macOS'
run: brew install zstd lz4 snappy

- name: Setup MSYS2 (Windows)
if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
mingw-w64-x86_64-gcc
mingw-w64-x86_64-cmake
mingw-w64-x86_64-make
mingw-w64-x86_64-zstd
mingw-w64-x86_64-lz4
mingw-w64-x86_64-snappy
mingw-w64-x86_64-python
mingw-w64-x86_64-python-pip

- name: Configure and build TidesDB (Linux)
if: runner.os == 'Linux'
run: |
cd tidesdb
cmake -S . -B build -DTIDESDB_BUILD_TESTS=OFF -DTIDESDB_WITH_SANITIZER=OFF
cmake --build build --config Release
sudo cmake --install build
sudo ldconfig

- name: Configure and build TidesDB (macOS)
if: runner.os == 'macOS'
run: |
cd tidesdb
export HOMEBREW_PREFIX=$(brew --prefix)
cmake -S . -B build \
-DTIDESDB_BUILD_TESTS=OFF \
-DTIDESDB_WITH_SANITIZER=OFF \
-DCMAKE_PREFIX_PATH="${HOMEBREW_PREFIX}"
cmake --build build --config Release
sudo cmake --install build

- name: Create CMake config files for MSYS2 packages (Windows)
if: runner.os == 'Windows'
shell: msys2 {0}
run: |
MINGW_PREFIX_WIN=$(cygpath -m /mingw64)

mkdir -p /mingw64/lib/cmake/lz4
mkdir -p /mingw64/lib/cmake/zstd
mkdir -p /mingw64/lib/cmake/Snappy
mkdir -p /mingw64/lib/cmake/PThreads4W

cat > /mingw64/lib/cmake/lz4/lz4-config.cmake << EOF
if(NOT TARGET lz4::lz4)
add_library(lz4::lz4 SHARED IMPORTED)
set_target_properties(lz4::lz4 PROPERTIES
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/liblz4.dll"
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/liblz4.dll.a"
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
)
endif()
EOF

cat > /mingw64/lib/cmake/zstd/zstd-config.cmake << EOF
if(NOT TARGET zstd::libzstd_shared)
add_library(zstd::libzstd_shared SHARED IMPORTED)
set_target_properties(zstd::libzstd_shared PROPERTIES
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libzstd.dll"
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libzstd.dll.a"
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
)
endif()
EOF

cat > /mingw64/lib/cmake/Snappy/Snappy-config.cmake << EOF
if(NOT TARGET Snappy::snappy)
add_library(Snappy::snappy SHARED IMPORTED)
set_target_properties(Snappy::snappy PROPERTIES
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libsnappy.dll"
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libsnappy.dll.a"
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
)
endif()
EOF

cat > /mingw64/lib/cmake/PThreads4W/PThreads4W-config.cmake << EOF
if(NOT TARGET PThreads4W::PThreads4W)
add_library(PThreads4W::PThreads4W SHARED IMPORTED)
set_target_properties(PThreads4W::PThreads4W PROPERTIES
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libwinpthread-1.dll"
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libpthread.dll.a"
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
)
endif()
EOF

- name: Configure and build TidesDB (Windows)
if: runner.os == 'Windows'
shell: msys2 {0}
run: |
cd tidesdb
cmake -G "MinGW Makefiles" \
-DCMAKE_MAKE_PROGRAM=mingw32-make \
-DCMAKE_PREFIX_PATH=/mingw64 \
-DTIDESDB_WITH_SANITIZER=OFF \
-DTIDESDB_BUILD_TESTS=OFF \
-DBUILD_SHARED_LIBS=ON \
-S . -B build
cmake --build build --config Release
cmake --install build --prefix /mingw64
cp build/libtidesdb.dll /mingw64/bin/

- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Run Python tests (Linux)
if: runner.os == 'Linux'
run: |
cd tidesdb-python
pip install -e ".[dev]"
pytest -v

- name: Run Python tests (macOS)
if: runner.os == 'macOS'
run: |
cd tidesdb-python
pip install -e ".[dev]"
pytest -v

- name: Run Python tests (Windows)
if: runner.os == 'Windows'
shell: msys2 {0}
run: |
export PATH="/mingw64/bin:/mingw64/lib:$PATH"
cd tidesdb-python
python -m venv venv
source venv/bin/activate
pip install pytest pytest-cov
pip install -e .
pytest -v --no-cov
180 changes: 0 additions & 180 deletions .github/workflows/tidesdb-python-build-test.yml

This file was deleted.

Loading
Loading