From c8b5cbc4cbe9cd6f7796cc31742387d419acea30 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 8 Jul 2025 13:40:05 +0100 Subject: [PATCH 1/9] Temporary CI to test epicscorelibs PR --- .github/workflows/code.yml | 317 +++++++++++++++++++------------------ 1 file changed, 159 insertions(+), 158 deletions(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 6feedecd..227a60f7 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -13,163 +13,163 @@ on: - cron: '0 8 * * MON' jobs: - lint: - runs-on: "ubuntu-latest" - steps: - - name: Checkout Source - uses: actions/checkout@v4 - - - name: Install Python - uses: actions/setup-python@v4 - with: - python-version: "3.12" - - - name: Install Python Dependencies - run: pip install flake8 - - - name: Lint - run: flake8 - - sdist: - runs-on: "ubuntu-latest" - steps: - - name: Checkout Source - uses: actions/checkout@v4 - with: - # require history to get back to last tag for version number of branches - fetch-depth: 0 - submodules: true - - - name: Build Sdist - run: pipx run build --sdist . - - - name: Upload Sdist - uses: actions/upload-artifact@v4 - with: - name: dist - path: dist/* - - build: - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest, macos-13] - python: [cp37, cp38, cp39, cp310, cp311, cp312] - - - include: - # Put coverage and results files in the project directory for mac - - os: macos-13 - cov_file: "{project}/dist/coverage.xml" - results_file: "{project}/dist/pytest-results.xml" - # And for windows - - os: windows-latest - cov_file: "{project}/dist/coverage.xml" - results_file: "{project}/dist/pytest-results.xml" - # But put coverage and results files in the output dir mounted in docker for linux - - os: ubuntu-latest - cov_file: /output/coverage.xml - results_file: /output/pytest-results.xml - - name: build/${{ matrix.os }}/${{ matrix.python }} - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout Source - uses: actions/checkout@v4 - with: - # require history to get back to last tag for version number of branches - fetch-depth: 0 - submodules: true - - - name: Install Python - uses: actions/setup-python@v4 - with: - python-version: "3.12" - - - name: Install Python Dependencies - # cibuildwheel 3.0.0 dropped support for Python 3.7. We still want to - # support 3.7 for the time being. - run: pip install build cibuildwheel==2.23.3 - - - name: Build Wheel - run: cibuildwheel --output-dir dist - env: - CIBW_BUILD: ${{ matrix.python }}*64 - CIBW_TEST_EXTRAS: dev - # Added a sleep command afterwards to let all cleanup finish; sometimes - # cibuildwheel reports it cannot clean up the temp dir used for testing, - # and fails the build. Sleeping seems to give pytest enough time to - # fully clean up. - CIBW_TEST_COMMAND: pytest {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} && sleep 2 - # Run with faulthandler and -s in the hope we get a stack trace on seg fault on windows... - CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} - # Disable auditwheel as it isn't compatible with setuptools_dso approach - # https://github.com/mdavidsaver/setuptools_dso/issues/17 - CIBW_REPAIR_WHEEL_COMMAND: "" - CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 - CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux2014_x86_64 - CIBW_SKIP: "*-musllinux*" # epicscorelibs doesn't build on musllinux platforms - - - name: Upload Wheel - uses: actions/upload-artifact@v4 - with: - name: dist-${{ matrix.os }}-${{ matrix.python }} - path: dist/softioc* - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - with: - name: ${{ matrix.os }}/${{ matrix.python }} - directory: dist - - test-sdist: - needs: [sdist] - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, windows-latest, macos-13] - python: [cp37, cp38, cp39, cp310, cp311, cp312] - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/download-artifact@v4 - with: - name: dist - path: dist - - - name: Install sdist in a venv and check cli works - run: pipx run --spec dist/*.tar.gz pythonSoftIOC --version - shell: bash - - release: - needs: [build, sdist] - runs-on: ubuntu-latest - # upload to PyPI and make a release on every tag - if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') - steps: - - uses: actions/download-artifact@v4 - with: - pattern: dist* - path: dist - merge-multiple: true - - - name: Github Release - # We pin to the SHA, not the tag, for security reasons. - # https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions - uses: softprops/action-gh-release@2d72d869af3bf23602f9593a1e3fd739b80ac1eb # v0.1.12 - with: - files: dist/* - body: See [Changelog](CHANGELOG.rst) for more details - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Publish to PyPI - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.pypi_token }} - run: pipx run twine upload dist/* + # lint: + # runs-on: "ubuntu-latest" + # steps: + # - name: Checkout Source + # uses: actions/checkout@v4 + + # - name: Install Python + # uses: actions/setup-python@v4 + # with: + # python-version: "3.12" + + # - name: Install Python Dependencies + # run: pip install flake8 + + # - name: Lint + # run: flake8 + + # sdist: + # runs-on: "ubuntu-latest" + # steps: + # - name: Checkout Source + # uses: actions/checkout@v4 + # with: + # # require history to get back to last tag for version number of branches + # fetch-depth: 0 + # submodules: true + + # - name: Build Sdist + # run: pipx run build --sdist . + + # - name: Upload Sdist + # uses: actions/upload-artifact@v4 + # with: + # name: dist + # path: dist/* + + # build: + # strategy: + # fail-fast: false + # matrix: + # os: [ubuntu-latest, windows-latest, macos-13] + # python: [cp37, cp38, cp39, cp310, cp311, cp312] + + + # include: + # # Put coverage and results files in the project directory for mac + # - os: macos-13 + # cov_file: "{project}/dist/coverage.xml" + # results_file: "{project}/dist/pytest-results.xml" + # # And for windows + # - os: windows-latest + # cov_file: "{project}/dist/coverage.xml" + # results_file: "{project}/dist/pytest-results.xml" + # # But put coverage and results files in the output dir mounted in docker for linux + # - os: ubuntu-latest + # cov_file: /output/coverage.xml + # results_file: /output/pytest-results.xml + + # name: build/${{ matrix.os }}/${{ matrix.python }} + # runs-on: ${{ matrix.os }} + + # steps: + # - name: Checkout Source + # uses: actions/checkout@v4 + # with: + # # require history to get back to last tag for version number of branches + # fetch-depth: 0 + # submodules: true + + # - name: Install Python + # uses: actions/setup-python@v4 + # with: + # python-version: "3.12" + + # - name: Install Python Dependencies + # # cibuildwheel 3.0.0 dropped support for Python 3.7. We still want to + # # support 3.7 for the time being. + # run: pip install build cibuildwheel==2.23.3 + + # - name: Build Wheel + # run: cibuildwheel --output-dir dist + # env: + # CIBW_BUILD: ${{ matrix.python }}*64 + # CIBW_TEST_EXTRAS: dev + # # Added a sleep command afterwards to let all cleanup finish; sometimes + # # cibuildwheel reports it cannot clean up the temp dir used for testing, + # # and fails the build. Sleeping seems to give pytest enough time to + # # fully clean up. + # CIBW_TEST_COMMAND: pytest {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} && sleep 2 + # # Run with faulthandler and -s in the hope we get a stack trace on seg fault on windows... + # CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} + # # Disable auditwheel as it isn't compatible with setuptools_dso approach + # # https://github.com/mdavidsaver/setuptools_dso/issues/17 + # CIBW_REPAIR_WHEEL_COMMAND: "" + # CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 + # CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux2014_x86_64 + # CIBW_SKIP: "*-musllinux*" # epicscorelibs doesn't build on musllinux platforms + + # - name: Upload Wheel + # uses: actions/upload-artifact@v4 + # with: + # name: dist-${{ matrix.os }}-${{ matrix.python }} + # path: dist/softioc* + + # - name: Upload coverage to Codecov + # uses: codecov/codecov-action@v4 + # with: + # name: ${{ matrix.os }}/${{ matrix.python }} + # directory: dist + + # test-sdist: + # needs: [sdist] + # strategy: + # fail-fast: false + # matrix: + # os: [ubuntu-latest, windows-latest, macos-13] + # python: [cp37, cp38, cp39, cp310, cp311, cp312] + + # runs-on: ${{ matrix.os }} + + # steps: + # - uses: actions/download-artifact@v4 + # with: + # name: dist + # path: dist + + # - name: Install sdist in a venv and check cli works + # run: pipx run --spec dist/*.tar.gz pythonSoftIOC --version + # shell: bash + + # release: + # needs: [build, sdist] + # runs-on: ubuntu-latest + # # upload to PyPI and make a release on every tag + # if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') + # steps: + # - uses: actions/download-artifact@v4 + # with: + # pattern: dist* + # path: dist + # merge-multiple: true + + # - name: Github Release + # # We pin to the SHA, not the tag, for security reasons. + # # https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions + # uses: softprops/action-gh-release@2d72d869af3bf23602f9593a1e3fd739b80ac1eb # v0.1.12 + # with: + # files: dist/* + # body: See [Changelog](CHANGELOG.rst) for more details + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # - name: Publish to PyPI + # env: + # TWINE_USERNAME: __token__ + # TWINE_PASSWORD: ${{ secrets.pypi_token }} + # run: pipx run twine upload dist/* # Check that the master branches of various upstream dependencies are # still compatible when used together @@ -191,7 +191,8 @@ jobs: - name: Install master versions run: | - pip install git+https://github.com/epics-base/p4p.git git+https://github.com/epics-base/pvxs.git git+https://github.com/epics-base/epicscorelibs.git + pip install git+https://github.com/epics-base/p4p.git git+https://github.com/epics-base/pvxs.git + pip install git+https://github.com/epics-base/epicscorelibs.git@fix-compiler-detection pip install git+https://github.com/DiamondLightSource/aioca git+https://github.com/DiamondLightSource/cothread pip install -e .[dev] pip freeze From 939013faf3727430f246148cd38121c50d542571 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 8 Jul 2025 13:41:13 +0100 Subject: [PATCH 2/9] Remove unnecessary if check This branch is just for testing this CI --- .github/workflows/code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 227a60f7..2ff2555d 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -174,7 +174,7 @@ jobs: # Check that the master branches of various upstream dependencies are # still compatible when used together master_branch_test: - if: ${{ github.event_name == 'schedule' }} + # if: ${{ github.event_name == 'schedule' }} runs-on: "ubuntu-latest" steps: - name: Checkout Source From 4f6726c4e0d5d96ec201a5b179455ece0b529091 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 8 Jul 2025 14:45:42 +0100 Subject: [PATCH 3/9] Test PR on more platforms --- .github/workflows/code.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 2ff2555d..1ceb9bb2 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -174,8 +174,15 @@ jobs: # Check that the master branches of various upstream dependencies are # still compatible when used together master_branch_test: - # if: ${{ github.event_name == 'schedule' }} - runs-on: "ubuntu-latest" + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-13] + python: [cp37, cp38, cp39, cp310, cp311, cp312] + + name: build/${{ matrix.os }}/${{ matrix.python }} + runs-on: ${{ matrix.os }} + steps: - name: Checkout Source uses: actions/checkout@v4 @@ -187,14 +194,11 @@ jobs: - name: Install Python uses: actions/setup-python@v4 with: - python-version: "3.12" + python-version: ${{ matrix.python }} - name: Install master versions run: | - pip install git+https://github.com/epics-base/p4p.git git+https://github.com/epics-base/pvxs.git - pip install git+https://github.com/epics-base/epicscorelibs.git@fix-compiler-detection - pip install git+https://github.com/DiamondLightSource/aioca git+https://github.com/DiamondLightSource/cothread - pip install -e .[dev] + pip install git+https://github.com/epics-base/epicscorelibs.git@fix-compiler-detection -e .[dev] pip freeze - name: Run tests From b1b7a825c60844dc18c9686d87a2cd3ef984b106 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 8 Jul 2025 14:47:53 +0100 Subject: [PATCH 4/9] Fix python version specification --- .github/workflows/code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 1ceb9bb2..43c8c423 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -178,7 +178,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-13] - python: [cp37, cp38, cp39, cp310, cp311, cp312] + python: [3.7, 3.8, 3.9, 3.10, 3.11, 3.12] name: build/${{ matrix.os }}/${{ matrix.python }} runs-on: ${{ matrix.os }} From a0582856df50f1823867e601c2d77b381683a908 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 8 Jul 2025 15:05:00 +0100 Subject: [PATCH 5/9] Fix integer parsing issue 3.10 was being read as 3.1. --- .github/workflows/code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 43c8c423..edbbcea8 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -178,7 +178,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-13] - python: [3.7, 3.8, 3.9, 3.10, 3.11, 3.12] + python: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] name: build/${{ matrix.os }}/${{ matrix.python }} runs-on: ${{ matrix.os }} From 14b45d5c7889726999c4d732cacc117e1d59c4e3 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 8 Jul 2025 16:15:10 +0100 Subject: [PATCH 6/9] Add 3.13 CI --- .github/workflows/code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index edbbcea8..ded6ee32 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -178,7 +178,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-13] - python: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + python: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] name: build/${{ matrix.os }}/${{ matrix.python }} runs-on: ${{ matrix.os }} From 7b195aef443f61a2b237453fb01d909c30384661 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 15 Jul 2025 09:25:13 +0100 Subject: [PATCH 7/9] Try using latest alpha releases --- .github/workflows/code.yml | 2 +- pyproject.toml | 2 +- setup.cfg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index ded6ee32..14908aa7 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -198,7 +198,7 @@ jobs: - name: Install master versions run: | - pip install git+https://github.com/epics-base/epicscorelibs.git@fix-compiler-detection -e .[dev] + pip install --pre -e .[dev] pip freeze - name: Run tests diff --git a/pyproject.toml b/pyproject.toml index f83a3dc9..45ec5ed8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,3 @@ [build-system] -requires = ["setuptools", "wheel", "setuptools_dso>=2.1", "epicscorelibs>=7.0.7.99.1.1a3"] +requires = ["setuptools", "wheel", "setuptools_dso>=2.1", "epicscorelibs>=7.0.7.99.1.2a2"] build-backend = "setuptools.build_meta:__legacy__" diff --git a/setup.cfg b/setup.cfg index 52d59955..563c0f4d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -57,7 +57,7 @@ dev = pytest-asyncio aioca >=1.6 cothread; sys_platform != "win32" - p4p>=4.2.0a2 + p4p>=4.2.1a1 [flake8] max-line-length = 80 From 50b92ce71aff03f3b595f1397b5aa256ab9086db Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 29 Jul 2025 09:51:50 +0100 Subject: [PATCH 8/9] Use latest aioca alpha --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 563c0f4d..5d1aa954 100644 --- a/setup.cfg +++ b/setup.cfg @@ -55,7 +55,7 @@ dev = sphinx-rtd-theme ==1.0.0 sphinx-rtd-theme-github-versions ==1.1 pytest-asyncio - aioca >=1.6 + aioca >=2.0a3 cothread; sys_platform != "win32" p4p>=4.2.1a1 From 479b937a1dfcfd096f255511265452686bbd108c Mon Sep 17 00:00:00 2001 From: AlexWells Date: Tue, 29 Jul 2025 10:20:47 +0100 Subject: [PATCH 9/9] Extend testing --- .github/workflows/code.yml | 138 ++++++++++++++++++------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 14908aa7..253f9090 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -49,79 +49,79 @@ jobs: # name: dist # path: dist/* - # build: - # strategy: - # fail-fast: false - # matrix: - # os: [ubuntu-latest, windows-latest, macos-13] - # python: [cp37, cp38, cp39, cp310, cp311, cp312] - - - # include: - # # Put coverage and results files in the project directory for mac - # - os: macos-13 - # cov_file: "{project}/dist/coverage.xml" - # results_file: "{project}/dist/pytest-results.xml" - # # And for windows - # - os: windows-latest - # cov_file: "{project}/dist/coverage.xml" - # results_file: "{project}/dist/pytest-results.xml" - # # But put coverage and results files in the output dir mounted in docker for linux - # - os: ubuntu-latest - # cov_file: /output/coverage.xml - # results_file: /output/pytest-results.xml - - # name: build/${{ matrix.os }}/${{ matrix.python }} - # runs-on: ${{ matrix.os }} - - # steps: - # - name: Checkout Source - # uses: actions/checkout@v4 - # with: - # # require history to get back to last tag for version number of branches - # fetch-depth: 0 - # submodules: true + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-13] + python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313] + + + include: + # Put coverage and results files in the project directory for mac + - os: macos-13 + cov_file: "{project}/dist/coverage.xml" + results_file: "{project}/dist/pytest-results.xml" + # And for windows + - os: windows-latest + cov_file: "{project}/dist/coverage.xml" + results_file: "{project}/dist/pytest-results.xml" + # But put coverage and results files in the output dir mounted in docker for linux + - os: ubuntu-latest + cov_file: /output/coverage.xml + results_file: /output/pytest-results.xml - # - name: Install Python - # uses: actions/setup-python@v4 - # with: - # python-version: "3.12" + name: build/${{ matrix.os }}/${{ matrix.python }} + runs-on: ${{ matrix.os }} - # - name: Install Python Dependencies - # # cibuildwheel 3.0.0 dropped support for Python 3.7. We still want to - # # support 3.7 for the time being. - # run: pip install build cibuildwheel==2.23.3 + steps: + - name: Checkout Source + uses: actions/checkout@v4 + with: + # require history to get back to last tag for version number of branches + fetch-depth: 0 + submodules: true - # - name: Build Wheel - # run: cibuildwheel --output-dir dist - # env: - # CIBW_BUILD: ${{ matrix.python }}*64 - # CIBW_TEST_EXTRAS: dev - # # Added a sleep command afterwards to let all cleanup finish; sometimes - # # cibuildwheel reports it cannot clean up the temp dir used for testing, - # # and fails the build. Sleeping seems to give pytest enough time to - # # fully clean up. - # CIBW_TEST_COMMAND: pytest {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} && sleep 2 - # # Run with faulthandler and -s in the hope we get a stack trace on seg fault on windows... - # CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} - # # Disable auditwheel as it isn't compatible with setuptools_dso approach - # # https://github.com/mdavidsaver/setuptools_dso/issues/17 - # CIBW_REPAIR_WHEEL_COMMAND: "" - # CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 - # CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux2014_x86_64 - # CIBW_SKIP: "*-musllinux*" # epicscorelibs doesn't build on musllinux platforms - - # - name: Upload Wheel - # uses: actions/upload-artifact@v4 - # with: - # name: dist-${{ matrix.os }}-${{ matrix.python }} - # path: dist/softioc* + - name: Install Python + uses: actions/setup-python@v4 + with: + python-version: "3.12" + + - name: Install Python Dependencies + # cibuildwheel 3.0.0 dropped support for Python 3.7. We still want to + # support 3.7 for the time being. + run: pip install build cibuildwheel==2.23.3 + + - name: Build Wheel + run: cibuildwheel --output-dir dist + env: + CIBW_BUILD: ${{ matrix.python }}*64 + CIBW_TEST_EXTRAS: dev + # Added a sleep command afterwards to let all cleanup finish; sometimes + # cibuildwheel reports it cannot clean up the temp dir used for testing, + # and fails the build. Sleeping seems to give pytest enough time to + # fully clean up. + CIBW_TEST_COMMAND: pytest {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} && sleep 2 + # Run with faulthandler and -s in the hope we get a stack trace on seg fault on windows... + CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} + # Disable auditwheel as it isn't compatible with setuptools_dso approach + # https://github.com/mdavidsaver/setuptools_dso/issues/17 + CIBW_REPAIR_WHEEL_COMMAND: "" + CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 + CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux2014_x86_64 + CIBW_SKIP: "*-musllinux*" # epicscorelibs doesn't build on musllinux platforms + + - name: Upload Wheel + uses: actions/upload-artifact@v4 + with: + name: dist-${{ matrix.os }}-${{ matrix.python }} + path: dist/softioc* - # - name: Upload coverage to Codecov - # uses: codecov/codecov-action@v4 - # with: - # name: ${{ matrix.os }}/${{ matrix.python }} - # directory: dist + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + name: ${{ matrix.os }}/${{ matrix.python }} + directory: dist # test-sdist: # needs: [sdist]