Skip to content

Merge branch 'feature' of github.com:duckdb/duckdb into jemalloc_opt_… #10

Merge branch 'feature' of github.com:duckdb/duckdb into jemalloc_opt_…

Merge branch 'feature' of github.com:duckdb/duckdb into jemalloc_opt_… #10

Workflow file for this run

name: Pyodide
on:
workflow_call:
inputs:
override_git_describe:
type: string
git_ref:
type: string
skip_tests:
type: string
workflow_dispatch:
inputs:
override_git_describe:
type: string
git_ref:
type: string
skip_tests:
type: string
push:
branches:
- "**"
- "!main"
- "!feature"
paths-ignore:
- "**"
- "!.github/workflows/Pyodide.yml"
- "!tools/pythonpkg/setup.py"
pull_request:
types: [opened, reopened, ready_for_review]
paths-ignore:
- "**"
- "!.github/workflows/Pyodide.yml"
- "!tools/pythonpkg/setup.py"
jobs:
build_pyodide:
name: Build pyodide wheel
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
version:
- python: "3.10"
pyodide-build: "0.22.1"
node: "16"
- python: "3.11"
pyodide-build: "0.25.1"
node: "18"
steps:
- uses: actions/checkout@v4
with:
# fetch everything so that the version on the built wheel path is
# correct
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.version.python }}
- run: pip install 'pyodide-build==${{ matrix.version.pyodide-build }}' 'pydantic<2'
- name: get emscripten version
id: emscripten-version
run: |
echo "value=$(pyodide config get emscripten_version)" | tee -a "$GITHUB_OUTPUT"
- uses: mymindstorm/setup-emsdk@v14
with:
version: ${{ steps.emscripten-version.outputs.value }}
- name: build wasm wheel
run: pyodide build --exports=whole_archive
working-directory: ./tools/pythonpkg
env:
DUCKDB_CUSTOM_PLATFORM: wasm_eh_pyodide
CFLAGS: "-fexceptions"
LDFLAGS: "-fexceptions"
- name: install node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.version.node }}
- name: create pyodide environment
run: pyodide venv .venv-pyodide
- name: install deps into environment
run: |
source .venv-pyodide/bin/activate
pip install pytest numpy pandas mypy
- name: install duckdb wasm wheel into environment
run: |
source .venv-pyodide/bin/activate
pip install ./tools/pythonpkg/dist/*.whl
- name: run tests using pyodide
run: |
source .venv-pyodide/bin/activate
python -m pytest ./tools/pythonpkg/tests
env:
TZ: UTC
- name: Wheel sizes
run: |
ls -lah ./tools/pythonpkg/dist/*.whl
- uses: actions/upload-artifact@v3
with:
name: pyodide-python${{ matrix.version.python }}
if-no-files-found: error
path: |
./tools/pythonpkg/dist/*.whl
- name: Deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.S3_DUCKDB_STAGING_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_DUCKDB_STAGING_KEY }}
shell: bash
run: |
./scripts/upload-assets-to-staging.sh pyodide tools/pythonpkg/dist/*.whl