Skip to content

Commit 7e8848e

Browse files
committed
update python package to align with current major of TidesDB
1 parent efa2065 commit 7e8848e

33 files changed

Lines changed: 1773 additions & 3647 deletions
Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
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+
-S . -B build
152+
cmake --build build --config Release
153+
cmake --install build --prefix /mingw64
154+
155+
- name: Install Python
156+
uses: actions/setup-python@v5
157+
with:
158+
python-version: '3.12'
159+
160+
- name: Run Python tests (Linux)
161+
if: runner.os == 'Linux'
162+
run: |
163+
cd tidesdb-python
164+
pip install -e ".[dev]"
165+
pytest -v
166+
167+
- name: Run Python tests (macOS)
168+
if: runner.os == 'macOS'
169+
run: |
170+
cd tidesdb-python
171+
pip install -e ".[dev]"
172+
pytest -v
173+
174+
- name: Run Python tests (Windows)
175+
if: runner.os == 'Windows'
176+
shell: msys2 {0}
177+
run: |
178+
export PATH="/mingw64/bin:$PATH"
179+
cd tidesdb-python
180+
pip install -e ".[dev]"
181+
pytest -v

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

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

0 commit comments

Comments
 (0)