-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GitHubAction builds for espeak-py (#2)
Use maturin tooling on GitHub action, turn the steps from README into a build script, and get it to build our key target python versions. Support both python 3.9 and 3.11 CPython for now (other autodetected versions fail, particularly PyPy builds). Fix up macOS ARM, where homebrew puts files and libraries in different locations. Fixed up C compile options so that doesn't fail on newer gcc on Ubuntu 22.04+ Added GHA/pypi publish step as per redis-wheel.
- Loading branch information
1 parent
31c5d1f
commit 9d4d77d
Showing
6 changed files
with
150 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
# This file is autogenerated by maturin v1.7.4 | ||
# To update, run | ||
# | ||
# maturin generate-ci github --platform linux --platform macos | ||
# | ||
# manual edits: | ||
# - to limit the number of ubuntu variants | ||
# - do the rust build step | ||
# - to add the RUSTFLAGS environment variable | ||
# - to specify python version used by maturin | ||
|
||
name: CI | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
workflow_call: | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
linux: | ||
runs-on: ${{ matrix.platform.runner }} | ||
strategy: | ||
matrix: | ||
platform: | ||
- runner: ubuntu-22.04 | ||
target: x86_64 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v5 | ||
- name: Build bindings | ||
run: | | ||
tools/build.sh | ||
- name: Build wheels | ||
uses: PyO3/maturin-action@v1 | ||
env: | ||
RUSTFLAGS: -L espeak-ng/src/.libs | ||
with: | ||
target: ${{ matrix.platform.target }} | ||
# only CPython and PyPy (which fail) so specify the full path to the CPythons | ||
args: --release --out dist --interpreter /usr/local/bin/python3.9 --interpreter /usr/local/bin/python3.11 | ||
sccache: 'true' | ||
manylinux: auto | ||
- name: Upload wheels | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: wheels-linux-${{ matrix.platform.target }} | ||
path: dist | ||
|
||
macos: | ||
runs-on: ${{ matrix.platform.runner }} | ||
strategy: | ||
matrix: | ||
# Fix up the python versions that maturin detects, as some break | ||
platform: | ||
- runner: macos-13 | ||
target: x86_64 | ||
python_args: --interpreter /Users/runner/hostedtoolcache/Python/3.9.20/x64/bin/python3.9 --interpreter /usr/local/bin/python3.11 | ||
- runner: macos-14 | ||
target: aarch64 | ||
python_args: --interpreter python3.9 --interpreter python3.11 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v5 | ||
- name: Build bindings | ||
run: | | ||
tools/build.sh | ||
- name: Build wheels | ||
uses: PyO3/maturin-action@v1 | ||
env: | ||
RUSTFLAGS: -L espeak-ng/src/.libs | ||
with: | ||
target: ${{ matrix.platform.target }} | ||
args: --release --out dist ${{ matrix.platform.python_args }} | ||
sccache: 'true' | ||
- name: Upload wheels | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: wheels-macos-${{ matrix.platform.target }} | ||
path: dist |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
name: Publish Wheels | ||
|
||
on: | ||
release: | ||
types: [published] | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
run-build-workflow: | ||
uses: ./.github/workflows/build.yml | ||
|
||
pypi-publish: | ||
name: Publish to PyPi | ||
needs: run-build-workflow | ||
runs-on: ubuntu-latest | ||
environment: release | ||
permissions: | ||
id-token: write | ||
steps: | ||
- name: Download artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
pattern: wheels-* | ||
merge-multiple: true | ||
path: dist/ | ||
- name: List artifacts downloaded | ||
run: ls -R dist | ||
- name: Publish package | ||
uses: pypa/gh-action-pypi-publish@release/v1.8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/bin/bash | ||
set -e | ||
SCRIPT_DIR=$(cd $(dirname $0); pwd) | ||
PARENT_DIR=$(dirname $SCRIPT_DIR) | ||
|
||
echo $PARENT_DIR | ||
cd $PARENT_DIR/espeak-ng | ||
if [[ "$(uname)" == "Darwin" ]]; then | ||
brew install automake libtool autoconf | ||
rm CHANGELOG.md | ||
echo "Changelog dummy" > ChangeLog.md | ||
fi | ||
ls | ||
|
||
# Fix error on Ubuntu 22.04+ | ||
# See https://stackoverflow.com/questions/76060903/gcc-multiple-definition-of-error-on-ubuntu-22-04-after-updating-from-ubuntu-2 | ||
export CFLAGS="-fcommon" | ||
|
||
./autogen.sh | ||
./configure --without-klatt --without-pcaudiolib --without-mbrola --without-sonic --without-async | ||
make |