name: Test Python on: push: paths: - "bdk-ffi/**" - "bdk-python/**" pull_request: paths: - "bdk-ffi/**" - "bdk-python/**" # We use manylinux2014 because older CentOS versions used by 2010 and 1 have a very old glibc version, which # makes it very hard to use GitHub's javascript actions (checkout, upload-artifact, etc). # They mount their own nodejs interpreter inside your container, but since that's not statically linked it # tries to load glibc and fails because it requires a more recent version. jobs: build-manylinux2014-x86_64-wheel: name: "Build and test Manylinux 2014 x86_64 wheels" runs-on: ubuntu-22.04 defaults: run: working-directory: bdk-python container: image: quay.io/pypa/manylinux2014_x86_64 env: PLAT: manylinux2014_x86_64 PYBIN: '/opt/python/${{ matrix.python }}/bin' strategy: matrix: python: # Update this list whenever the docker image is updated (check /opt/python/) # - cp36-cp36m # - cp37-cp37m # - cp38-cp38 # - cp39-cp39 - cp310-cp310 steps: - name: Checkout uses: actions/checkout@v2 with: submodules: true - uses: actions-rs/toolchain@v1 with: toolchain: stable - name: Install requirements run: ${PYBIN}/pip install -r requirements.txt - name: Generate bindings run: bash generate.sh - name: Build wheel run: ${PYBIN}/python setup.py bdist_wheel --verbose - name: Install wheel run: ${PYBIN}/pip install ./dist/*.whl - name: Run tests run: ${PYBIN}/python -m unittest tests/test_bdk.py --verbose build-macos-universal-wheel: name: "Build and test macOS wheels" runs-on: macos-12 defaults: run: working-directory: bdk-python strategy: matrix: python: # - '3.7' # - '3.8' # - '3.9' - '3.10' steps: - name: Checkout uses: actions/checkout@v2 with: submodules: true - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: Generate bdk.py run: | python3 --version rustup target add aarch64-apple-darwin pip3 install --user -r requirements.txt bash generate.sh - name: Build wheel env: ARCHFLAGS: "-arch x86_64 -arch arm64" run: python3 setup.py bdist_wheel --verbose - name: Install wheel run: pip3 install ./dist/*.whl - name: Run tests run: python3 -m unittest tests/test_bdk.py --verbose build-windows-wheel: name: "Build and test Windows wheels" runs-on: windows-2022 defaults: run: working-directory: bdk-python strategy: matrix: python: # - '3.7' # - '3.8' # - '3.9' - '3.10' steps: - name: Checkout uses: actions/checkout@v2 with: submodules: true - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: Generate bdk.py run: | python --version pip install --user -r requirements.txt bash generate.sh - name: Build wheel run: python setup.py bdist_wheel --verbose # TODO: On Windows the pip install ./dist/*.whl step fails with the following error: # Run pip install ./dist/*.whl # WARNING: Requirement './dist/*.whl' looks like a filename, but the file does not exist # ERROR: *.whl is not a valid wheel filename.*.whl is not a valid wheel name # So we skip the installing and the tests and simply test that the wheel builds # - name: Install wheel # run: pip install ./dist/*.whl # - name: Run tests # run: python -m unittest tests/test_bdk.py --verbose