Upgrade V8 to v13.1.201.9 #221
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
--- | |
name: MacOSX ARM64 build/release workflow | |
on: | |
push: | |
pull_request: | |
release: | |
types: [published] | |
branches: [master] | |
jobs: | |
build-v8: | |
# If Google V8 is in the workflow cache, don't build it. | |
# Cloning the repository is still necessary in any case | |
# to calculate the hash for the cache key | |
name: Build Google V8 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-14] | |
outputs: | |
v8-hash: ${{ steps.build-v8.outputs.v8-hash }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Clone Google V8 | |
run: | | |
python3 -m pip install --break-system-packages wheel setuptools | |
echo "::group::Clone Google V8" | |
python3 setup.py checkout_v8 | |
echo "::endgroup::" | |
- name: Restore Google V8 from cache | |
id: restore-v8 | |
uses: actions/cache/restore@main | |
with: | |
path: | | |
v8/out.gn/x64.release.sample/obj/libv8_monolith.a | |
v8/out.gn/x64.release.sample/icudtl.dat | |
v8/include | |
key: ${{ matrix.os }}-arm64-build-v8-${{ hashFiles('v8/src/**') }} | |
- name: Build Google V8 | |
id: build-v8 | |
if: ${{ steps.restore-v8.outputs.cache-hit != 'true' }} | |
continue-on-error: false | |
run: | | |
echo "v8-hash=${{ hashFiles('v8/src/**') }}" >> "$GITHUB_OUTPUT" | |
python3 -m pip install --break-system-packages wheel | |
echo "::group::v8" | |
python3 setup.py v8 | |
echo "::endgroup::" | |
- name: Save Google V8 to cache | |
uses: actions/cache/save@main | |
if: ${{ steps.restore-v8.outputs.cache-hit != 'true' }} | |
with: | |
# Save compiled binary and header files. This will save an | |
# additional clone of Google V8 for the linker | |
path: | | |
v8/out.gn/x64.release.sample/obj/libv8_monolith.a | |
v8/out.gn/x64.release.sample/icudtl.dat | |
v8/include | |
key: ${{ matrix.os }}-arm64-build-v8-${{ hashFiles('v8/src/**') }} | |
build: | |
name: Build OSX ARM64 wheel (Python ${{ matrix.python-version }}) | |
needs: build-v8 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-14] | |
python-version: ['3.10', '3.11', '3.12', '3.13'] | |
boost-version: [1.86.0] | |
boost-version-snake: ['1_86_0'] | |
env: | |
ARCH: arm64 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Download Boost | |
id: download-boost | |
uses: suisei-cn/actions-download-file@v1.6.0 | |
with: | |
url: https://boostorg.jfrog.io/artifactory/main/release/${{ matrix.boost-version }}/source/boost_${{ | |
matrix.boost-version-snake }}.zip | |
- name: Install Boost | |
id: install-boost | |
run: | | |
unzip -q ${{ steps.download-boost.outputs.filename }} | |
cd boost_${{ matrix.boost-version-snake }} | |
./bootstrap.sh | |
sudo ./b2 install -j 8 --with-system --with-python --with-filesystem --with-iostreams --with-date_time --with-thread | |
- name: Restore Google V8 from cache | |
id: restore-v8 | |
uses: actions/cache/restore@main | |
with: | |
path: | | |
v8/out.gn/x64.release.sample/obj/libv8_monolith.a | |
v8/out.gn/x64.release.sample/icudtl.dat | |
v8/include | |
key: ${{ matrix.os }}-arm64-build-v8-${{ needs.build-v8.outputs.v8-hash | |
}} | |
- name: Install dependencies | |
run: | | |
pip install --upgrade --break-system-packages pip setuptools delocate wheel pytest pytest-order | |
- name: Build wheel | |
run: | | |
python3 setup.py sdist bdist_wheel --skip-build-v8 -d stpyv8-${{ matrix.os }}-${{ matrix.python-version }} | |
env: | |
ARCHFLAGS: -arch arm64 | |
_PYTHON_HOST_PLATFORM: macosx-11.0-arm64 | |
- name: Repair wheel | |
run: | | |
delocate-listdeps stpyv8-${{ matrix.os }}-${{ matrix.python-version }}/stpyv8*.whl | |
delocate-wheel --require-archs arm64 stpyv8-${{ matrix.os }}-${{ matrix.python-version }}/stpyv8*.whl | |
- name: Install wheel | |
run: | | |
python3 -m pip install --break-system-packages stpyv8-${{ matrix.os }}-${{ matrix.python-version }}/*.whl | |
- name: Test wheel | |
run: | | |
pytest -v | |
- name: Upload wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: stpyv8-${{ matrix.os }}-python${{ matrix.python-version }} | |
path: stpyv8-${{ matrix.os }}-${{ matrix.python-version }}/*.whl | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: ${{ github.event_name == 'release' }} | |
with: | |
files: stpyv8-${{ matrix.os }}-${{ matrix.python-version }}/*.whl | |
token: ${{ secrets.GITHUB_TOKEN }} | |
pypi-publish: | |
name: Upload release to PyPI | |
if: ${{ github.event_name == 'release' }} | |
needs: build | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/stpyv8 | |
permissions: | |
id-token: write | |
steps: | |
- name: Download wheels | |
uses: actions/download-artifact@v4 | |
with: | |
path: stpyv8-macos-dist | |
pattern: stpyv8-macos* | |
merge-multiple: true | |
- name: Publish wheels to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: stpyv8-macos-dist |