Skip to content

Commit 2c3052c

Browse files
authored
Merge pull request #29 from tidesdb/update-binding-tdb7
update python package to align with current major of TidesDB
2 parents efa2065 + 08dace7 commit 2c3052c

33 files changed

Lines changed: 1789 additions & 3647 deletions
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
name: TidesDB Python CI
2+
3+
on:
4+
push:
5+
branches: [ "master" ]
6+
pull_request:
7+
branches: [ "master" ]
8+
workflow_dispatch:
9+
10+
jobs:
11+
build-and-test:
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
include:
16+
- os: ubuntu-latest
17+
name: Linux x64
18+
- os: macos-latest
19+
name: macOS x64
20+
- os: windows-latest
21+
name: Windows x64
22+
23+
runs-on: ${{ matrix.os }}
24+
name: ${{ matrix.name }}
25+
26+
steps:
27+
- name: Checkout tidesdb-python repo
28+
uses: actions/checkout@v4
29+
with:
30+
repository: tidesdb/tidesdb-python
31+
path: tidesdb-python
32+
33+
- name: Checkout tidesdb repo
34+
uses: actions/checkout@v4
35+
with:
36+
repository: tidesdb/tidesdb
37+
path: tidesdb
38+
39+
- name: Install dependencies (Linux)
40+
if: runner.os == 'Linux'
41+
run: |
42+
sudo apt update
43+
sudo apt install -y libzstd-dev liblz4-dev libsnappy-dev build-essential cmake pkg-config
44+
45+
- name: Install dependencies (macOS)
46+
if: runner.os == 'macOS'
47+
run: brew install zstd lz4 snappy
48+
49+
- name: Setup MSYS2 (Windows)
50+
if: runner.os == 'Windows'
51+
uses: msys2/setup-msys2@v2
52+
with:
53+
msystem: MINGW64
54+
update: true
55+
install: >-
56+
mingw-w64-x86_64-gcc
57+
mingw-w64-x86_64-cmake
58+
mingw-w64-x86_64-make
59+
mingw-w64-x86_64-zstd
60+
mingw-w64-x86_64-lz4
61+
mingw-w64-x86_64-snappy
62+
mingw-w64-x86_64-python
63+
mingw-w64-x86_64-python-pip
64+
65+
- name: Configure and build TidesDB (Linux)
66+
if: runner.os == 'Linux'
67+
run: |
68+
cd tidesdb
69+
cmake -S . -B build -DTIDESDB_BUILD_TESTS=OFF -DTIDESDB_WITH_SANITIZER=OFF
70+
cmake --build build --config Release
71+
sudo cmake --install build
72+
sudo ldconfig
73+
74+
- name: Configure and build TidesDB (macOS)
75+
if: runner.os == 'macOS'
76+
run: |
77+
cd tidesdb
78+
export HOMEBREW_PREFIX=$(brew --prefix)
79+
cmake -S . -B build \
80+
-DTIDESDB_BUILD_TESTS=OFF \
81+
-DTIDESDB_WITH_SANITIZER=OFF \
82+
-DCMAKE_PREFIX_PATH="${HOMEBREW_PREFIX}"
83+
cmake --build build --config Release
84+
sudo cmake --install build
85+
86+
- name: Create CMake config files for MSYS2 packages (Windows)
87+
if: runner.os == 'Windows'
88+
shell: msys2 {0}
89+
run: |
90+
MINGW_PREFIX_WIN=$(cygpath -m /mingw64)
91+
92+
mkdir -p /mingw64/lib/cmake/lz4
93+
mkdir -p /mingw64/lib/cmake/zstd
94+
mkdir -p /mingw64/lib/cmake/Snappy
95+
mkdir -p /mingw64/lib/cmake/PThreads4W
96+
97+
cat > /mingw64/lib/cmake/lz4/lz4-config.cmake << EOF
98+
if(NOT TARGET lz4::lz4)
99+
add_library(lz4::lz4 SHARED IMPORTED)
100+
set_target_properties(lz4::lz4 PROPERTIES
101+
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/liblz4.dll"
102+
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/liblz4.dll.a"
103+
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
104+
)
105+
endif()
106+
EOF
107+
108+
cat > /mingw64/lib/cmake/zstd/zstd-config.cmake << EOF
109+
if(NOT TARGET zstd::libzstd_shared)
110+
add_library(zstd::libzstd_shared SHARED IMPORTED)
111+
set_target_properties(zstd::libzstd_shared PROPERTIES
112+
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libzstd.dll"
113+
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libzstd.dll.a"
114+
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
115+
)
116+
endif()
117+
EOF
118+
119+
cat > /mingw64/lib/cmake/Snappy/Snappy-config.cmake << EOF
120+
if(NOT TARGET Snappy::snappy)
121+
add_library(Snappy::snappy SHARED IMPORTED)
122+
set_target_properties(Snappy::snappy PROPERTIES
123+
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libsnappy.dll"
124+
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libsnappy.dll.a"
125+
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
126+
)
127+
endif()
128+
EOF
129+
130+
cat > /mingw64/lib/cmake/PThreads4W/PThreads4W-config.cmake << EOF
131+
if(NOT TARGET PThreads4W::PThreads4W)
132+
add_library(PThreads4W::PThreads4W SHARED IMPORTED)
133+
set_target_properties(PThreads4W::PThreads4W PROPERTIES
134+
IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libwinpthread-1.dll"
135+
IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libpthread.dll.a"
136+
INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include"
137+
)
138+
endif()
139+
EOF
140+
141+
- name: Configure and build TidesDB (Windows)
142+
if: runner.os == 'Windows'
143+
shell: msys2 {0}
144+
run: |
145+
cd tidesdb
146+
cmake -G "MinGW Makefiles" \
147+
-DCMAKE_MAKE_PROGRAM=mingw32-make \
148+
-DCMAKE_PREFIX_PATH=/mingw64 \
149+
-DTIDESDB_WITH_SANITIZER=OFF \
150+
-DTIDESDB_BUILD_TESTS=OFF \
151+
-DBUILD_SHARED_LIBS=ON \
152+
-S . -B build
153+
cmake --build build --config Release
154+
cmake --install build --prefix /mingw64
155+
cp build/libtidesdb.dll /mingw64/bin/
156+
157+
- name: Install Python
158+
uses: actions/setup-python@v5
159+
with:
160+
python-version: '3.12'
161+
162+
- name: Run Python tests (Linux)
163+
if: runner.os == 'Linux'
164+
run: |
165+
cd tidesdb-python
166+
pip install -e ".[dev]"
167+
pytest -v
168+
169+
- name: Run Python tests (macOS)
170+
if: runner.os == 'macOS'
171+
run: |
172+
cd tidesdb-python
173+
pip install -e ".[dev]"
174+
pytest -v
175+
176+
- name: Run Python tests (Windows)
177+
if: runner.os == 'Windows'
178+
shell: msys2 {0}
179+
run: |
180+
export PATH="/mingw64/bin:/mingw64/lib:$PATH"
181+
cd tidesdb-python
182+
python -m venv venv
183+
source venv/bin/activate
184+
pip install pytest pytest-cov
185+
pip install -e .
186+
pytest -v --no-cov

.github/workflows/tidesdb-python-build-test.yml

Lines changed: 0 additions & 180 deletions
This file was deleted.

0 commit comments

Comments
 (0)