Skip to content

Commit a8361fc

Browse files
authored
Merge pull request #17 from yabirgb/python314
2 parents d5dd97e + 673b69b commit a8361fc

15 files changed

Lines changed: 13279 additions & 156 deletions

.github/workflows/build.yml

Lines changed: 43 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,24 @@ on:
1010
tags:
1111
- 'v*'
1212

13+
permissions: {}
14+
1315
env:
14-
LIB_VERSION: '2024.10.1'
15-
PYTHON_VERSION: '3.11.9'
16-
CIBW_VERSION: '2.21.3'
17-
CIBW_BUILD: 'cp311-* cp312-*'
16+
LIB_VERSION: '2026.7.1'
17+
PYTHON_VERSION: '3.14'
18+
CIBW_VERSION: '4.1.0'
19+
CIBW_BUILD: 'cp314-* cp314t-*'
1820
CIBW_SKIP: '*-musllinux_*'
1921
CIBW_BUILD_VERBOSITY: 1
22+
CIBW_TEST_COMMAND: 'python -c "from pysqlcipher3 import dbapi2 as sqlite; conn = sqlite.connect('':memory:''); conn.close()"'
2023

2124
concurrency:
2225
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
2326
cancel-in-progress: true
2427

2528
jobs:
2629
build_macos_openssl:
27-
runs-on: macos-13
30+
runs-on: macos-15
2831
strategy:
2932
matrix:
3033
ARCH:
@@ -38,7 +41,7 @@ jobs:
3841
FLAGS: no-shared no-asm no-idea no-camellia no-seed no-bf no-cast no-rc2 no-rc4 no-rc5 no-md2 no-md4 no-ecdh no-sock no-ssl3 no-dsa no-dh no-ec no-ecdsa no-tls1 no-rfc3779 no-whirlpool no-srp no-mdc2 no-ecdh no-engine no-srtp no-weak-ssl-ciphers
3942
name: "Build OpenSSL for macOS (${{ matrix.ARCH.NAME }})"
4043
steps:
41-
- uses: actions/checkout@v4
44+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
4245
with:
4346
submodules: true
4447
persist-credentials: false
@@ -48,68 +51,41 @@ jobs:
4851
cd openssl
4952
perl ./Configure \
5053
--prefix="${BASEDIR}/artifact" \
51-
--openssldir=${{ matrix.ARCH.OPENSSLDIR }} \
52-
darwin64-${{ matrix.ARCH.NAME }}-cc \
53-
${{ matrix.ARCH.FLAGS }}
54+
--openssldir="${OPENSSLDIR}" \
55+
"darwin64-${ARCH_NAME}-cc" \
56+
${CONFIGURE_FLAGS}
5457
55-
make -j$(sysctl -n hw.logicalcpu)
58+
make -j$(sysctl -n hw.logicalcpu) build_sw
5659
make install_sw
5760
env:
61+
ARCH_NAME: ${{ matrix.ARCH.NAME }}
5862
CFLAGS: ${{ matrix.ARCH.CFLAGS }}
63+
CONFIGURE_FLAGS: ${{ matrix.ARCH.FLAGS }}
64+
OPENSSLDIR: ${{ matrix.ARCH.OPENSSLDIR }}
5965

60-
- uses: actions/upload-artifact@v4
66+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
6167
with:
6268
name: "openssl-macos-${{ matrix.ARCH.NAME }}"
6369
path: artifact/
6470

65-
build_macos_openssl_universal2:
66-
runs-on: macos-13
67-
name: "Build OpenSSL for macOS (universal2)"
68-
needs: [build_macos_openssl]
69-
steps:
70-
- uses: actions/download-artifact@v4
71-
with:
72-
name: openssl-macos-x86_64
73-
path: x86-64
74-
- uses: actions/download-artifact@v4
75-
with:
76-
name: openssl-macos-arm64
77-
path: arm64
78-
- name: Create universal2 OpenSSL
79-
run: |
80-
mkdir artifact
81-
cd artifact
82-
mkdir bin lib
83-
cp -r ../x86-64/include .
84-
cp -r ../x86-64/lib/pkgconfig lib/
85-
cp ../x86-64/bin/c_rehash bin/ # c_rehash is a perl script
86-
lipo -create -output bin/openssl ../x86-64/bin/openssl ../arm64/bin/openssl
87-
lipo -create -output lib/libssl.a ../x86-64/lib/libssl.a ../arm64/lib/libssl.a
88-
lipo -create -output lib/libcrypto.a ../x86-64/lib/libcrypto.a ../arm64/lib/libcrypto.a
89-
- uses: actions/upload-artifact@v4
90-
with:
91-
name: "openssl-macos-universal2"
92-
path: artifact/
93-
9471
build_wheels_macos:
9572
name: 'Build wheels for macOS'
96-
runs-on: macos-13
73+
runs-on: macos-15
9774
strategy:
9875
fail-fast: false
9976
matrix:
100-
arch: [arm64, x86_64, universal2]
101-
needs: [build_macos_openssl_universal2]
77+
arch: [arm64, x86_64]
78+
needs: [build_macos_openssl]
10279
steps:
103-
- uses: actions/checkout@v4
80+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
10481
with:
10582
submodules: true
10683
persist-credentials: false
10784
- name: Set up python
108-
uses: actions/setup-python@v5
85+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
10986
with:
11087
python-version: ${{ env.PYTHON_VERSION }}
111-
cache: 'pip'
112-
- uses: actions/download-artifact@v4
88+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
11389
with:
11490
name: openssl-macos-${{ matrix.arch }}
11591
path: openssl-macos-${{ matrix.arch }}
@@ -123,7 +99,7 @@ jobs:
12399
env:
124100
CIBW_ARCHS_MACOS: ${{ matrix.arch }}
125101
CIBW_BEFORE_ALL_MACOS: ./build.sh
126-
- uses: actions/upload-artifact@v4
102+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
127103
with:
128104
name: pypi-wheels-macos-${{ matrix.arch }}
129105
path: build/wheelhouse/*.whl
@@ -140,15 +116,14 @@ jobs:
140116
- name: native
141117
runner: ubuntu-24.04
142118
steps:
143-
- uses: actions/checkout@v4
119+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
144120
with:
145121
submodules: true
146122
persist-credentials: false
147123
- name: Set up python
148-
uses: actions/setup-python@v5
124+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
149125
with:
150126
python-version: ${{ env.PYTHON_VERSION }}
151-
cache: 'pip'
152127
- name: prepare build directory
153128
run: ./scripts/prepare.sh
154129
env:
@@ -161,24 +136,23 @@ jobs:
161136
env:
162137
CIBW_BEFORE_ALL_LINUX: ./build.sh
163138
CIBW_ARCHS_LINUX: ${{ matrix.arch.name }}
164-
- uses: actions/upload-artifact@v4
139+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
165140
with:
166141
name: pypi-wheels-linux-${{ matrix.arch.name }}
167142
path: build/wheelhouse/*.whl
168143

169144
build_wheels_windows:
170145
name: 'Build wheels for Windows'
171-
runs-on: 'windows-2019'
146+
runs-on: 'windows-latest'
172147
steps:
173-
- uses: actions/checkout@v4
148+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
174149
with:
175150
submodules: true
176151
persist-credentials: false
177152
- name: Set up python
178-
uses: actions/setup-python@v5
153+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
179154
with:
180155
python-version: ${{ env.PYTHON_VERSION }}
181-
cache: 'pip'
182156
- name: prepare build directory
183157
run: ./scripts/prepare.ps1
184158
- name: Install cibuildwheel
@@ -192,70 +166,67 @@ jobs:
192166
- name: clean openssl conf
193167
shell: pwsh
194168
run: echo "OPENSSL_CONF=''" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append
195-
- uses: actions/upload-artifact@v4
169+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
196170
with:
197171
name: pypi-wheels-windows
198172
path: build\wheelhouse\*.whl
199173

200174
build_sdist:
201175
name: 'Build sdist'
202-
runs-on: ubuntu-20.04
176+
runs-on: ubuntu-24.04
203177
steps:
204-
- uses: actions/checkout@v4
178+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
205179
with:
206180
submodules: true
207181
persist-credentials: false
208182
- name: Set up python
209-
uses: actions/setup-python@v5
183+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
210184
with:
211185
python-version: ${{ env.PYTHON_VERSION }}
212-
cache: 'pip'
213186
- name: prepare build directory
214187
run: ./scripts/prepare.sh
215188
- name: Build sdist
216189
working-directory: build
217190
run: python3 -m pip install --upgrade build && python -m build -s
218191
- name: Store artifacts
219-
uses: actions/upload-artifact@v4
192+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
220193
with:
221194
name: pypi-sdist
222195
path: build/dist/*.tar.gz
223196

224197
upload_pypi_test:
225198
name: Upload to PyPI (test)
226199
needs: [build_wheels_macos, build_wheels_linux, build_wheels_windows, build_sdist]
227-
runs-on: ubuntu-20.04
200+
runs-on: ubuntu-24.04
228201
if: github.event_name == 'push' && !(startsWith(github.ref, 'refs/tags/v'))
229202
environment: test-pypi
230203
permissions:
231-
# IMPORTANT: this permission is mandatory for Trusted Publishing
232-
id-token: write
204+
id-token: write # needed for PyPI Trusted Publishing
233205
steps:
234-
- uses: actions/download-artifact@v4
206+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
235207
with:
236208
merge-multiple: true
237209
pattern: pypi-*
238210
path: dist
239211

240-
- uses: pypa/gh-action-pypi-publish@v1.10.3
212+
- uses: pypa/gh-action-pypi-publish@f7600683efdcb7656dec5b29656edb7bc586e597 # v1.10.3
241213
with:
242214
repository-url: https://test.pypi.org/legacy/
243215
skip-existing: true
244216

245217
upload_pypi:
246218
name: Upload to PyPI (prod)
247219
needs: [build_wheels_macos, build_wheels_linux, build_wheels_windows, build_sdist]
248-
runs-on: ubuntu-20.04
220+
runs-on: ubuntu-24.04
249221
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
250222
environment: pypi
251223
permissions:
252-
# IMPORTANT: this permission is mandatory for Trusted Publishing
253-
id-token: write
224+
id-token: write # needed for PyPI Trusted Publishing
254225
steps:
255-
- uses: actions/download-artifact@v4
226+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
256227
with:
257228
merge-multiple: true
258229
pattern: pypi-*
259230
path: dist
260231

261-
- uses: pypa/gh-action-pypi-publish@v1.10.3
232+
- uses: pypa/gh-action-pypi-publish@f7600683efdcb7656dec5b29656edb7bc586e597 # v1.10.3

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 2026.7.1
4+
- Ports the Python 3 extension sources to CPython 3.14's sqlite implementation.
5+
- Adds CPython 3.13, 3.14, and 3.14 free-threaded wheel builds.
6+
37
## 2024.10.1
48
- Updates SQLCipher to v4.6.1
59
- Updates OpenSSL to v3.0.15
@@ -27,4 +31,4 @@
2731
*The version doesn't build Python 3.10 compatible wheels.*
2832

2933
## 2022.6.1
30-
- Initial build with wheels for Python 3.9.
34+
- Initial build with wheels for Python 3.9.

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@ Configuration for providing pre-build [pysqlcipher3](https://github.com/rigglema
1313

1414
This is a collections of patches and scripts to build wheels for rotki and publish them on PyPI.
1515

16-
It builds wheels for CPython 3.11 & 3.12 for the following architectures:
16+
It builds wheels for CPython 3.14 for the following architectures:
1717

1818
- Linux x86_64
1919
- Linux aarch64
2020
- Windows amd64
2121
- macOS x86_64
2222
- macOS arm64
23-
- macOS universal2
2423

2524
The package is intended to be a drop-in replacement for the [pysqlcipher3 package](https://pypi.org/project/pysqlcipher3/).
2625
And it is statically linked with [SQLCipher](https://github.com/sqlcipher/sqlcipher) 4.x and [OpenSSL](https://github.com/openssl/openssl) 3.0.x LTS.

0 commit comments

Comments
 (0)