diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 37cb843..e764edf 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -22,6 +22,13 @@ jobs: steps: - uses: actions/checkout@v3 + - name: ccaches + uses: hendrikmuhs/ccache-action@v1.2 + with: + create-symlink: true + key: ${{ github.job }}-ubuntu-latest + verbose: 2 + - name: Set up Python uses: actions/setup-python@v4 with: @@ -60,192 +67,192 @@ jobs: path: ./quaddtype/wheelhouse/*.whl name: wheels-linux - build_wheels_macos: - name: Build wheels on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [macos-13, macos-14] - - steps: - - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ">=3.11.0" - - - name: Install dependencies - run: | - packages="cmake libomp git" - echo "Remove preinstalled dependencies" - for pkg in $packages; do - brew uninstall --ignore-dependencies $pkg 2>/dev/null || true - done - brew cleanup - brew install $packages - - - name: Installing Python dependencies - run: | - pip install -U pip - pip install cibuildwheel==3.1.4 - pip install pytest-run-parallel - - - name: Build wheels - env: - CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-* cp313t-* cp314t-*" - CIBW_ENABLE: cpython-prerelease cpython-freethreading - CIBW_ARCHS_MACOS: ${{ matrix.os == 'macos-13' && 'x86_64' || 'arm64' }} - CIBW_BUILD_VERBOSITY: "3" - CIBW_ENVIRONMENT: > - MACOSX_DEPLOYMENT_TARGET="${{ matrix.os == 'macos-13' && '13.0' || '14.0' }}" - CIBW_REPAIR_WHEEL_COMMAND: > - delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} - CIBW_TEST_COMMAND: | - pip install {package}[test] - if python -c "import sys; exit(0 if hasattr(sys, '_is_gil_enabled') and not sys._is_gil_enabled() else 1)"; then - pytest --parallel-threads=10 --iterations=10 {project}/tests - else - pytest -s {project}/tests - fi - CIBW_TEST_EXTRAS: "test" - run: | - python -m cibuildwheel --output-dir wheelhouse - working-directory: ./quaddtype - - - uses: actions/upload-artifact@v4 - with: - path: ./quaddtype/wheelhouse/*.whl - name: wheels-${{ matrix.os }} - - # disabling QBLAS optimization for windows due to incompatibility with MSVC - build_wheels_windows: - name: Build wheels on Windows - runs-on: windows-latest - strategy: - matrix: - architecture: [x64] - - steps: - - uses: actions/checkout@v3 - - - name: Setup MSVC - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ matrix.architecture }} - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ">=3.11.0" - architecture: ${{ matrix.architecture }} - - - name: Install CMake - uses: lukka/get-cmake@latest - - - name: Install build dependencies - shell: bash -l {0} - run: | - pip install -U pip - pip install cibuildwheel==3.1.4 ninja meson meson-python numpy delvewheel pytest - - - name: Build wheels - env: - CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-* cp313t-* cp314t-*" - CIBW_ENABLE: cpython-prerelease cpython-freethreading - CIBW_SKIP: "pp* cp36-* cp37-* cp38-* cp39-*" - CIBW_ARCHS_WINDOWS: ${{ matrix.architecture == 'x86' && 'x86' || 'AMD64' }} - CIBW_BUILD_VERBOSITY: "3" - DISTUTILS_USE_SDK: "1" - MSSdk: "1" - CIBW_BEFORE_BUILD: | - pip install meson meson-python ninja numpy - CIBW_ENVIRONMENT: > - CFLAGS="/DDISABLE_QUADBLAS $CFLAGS" - CXXFLAGS="/DDISABLE_QUADBLAS $CXXFLAGS" - CIBW_REPAIR_WHEEL_COMMAND: 'delvewheel repair -w {dest_dir} {wheel} --add-path C:\sleef\bin' - CIBW_TEST_COMMAND: | - pip install {package}[test] - if python -c "import sys; exit(0 if hasattr(sys, '_is_gil_enabled') and not sys._is_gil_enabled() else 1)"; then - pytest --parallel-threads=10 --iterations=10 {project}/tests - else - pytest -s {project}/tests - fi - CIBW_TEST_EXTRAS: test - CIBW_TEST_FAIL_FAST: 1 - shell: pwsh - run: | - python -m cibuildwheel --output-dir wheelhouse - if (-not (Test-Path wheelhouse/*.whl)) { throw "Wheel was not created" } - working-directory: ./quaddtype - - - uses: actions/upload-artifact@v4 - with: - path: ./quaddtype/wheelhouse/*.whl - name: wheels-windows-${{ matrix.architecture }} - - build_sdist: - name: Build SDist - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ">=3.11.0" - - - name: Install system dependencies - run: | - sudo apt-get update -y - sudo apt-get install -y cmake gcc g++ make git pkg-config - - - name: Install build dependencies - run: | - python -m pip install --upgrade pip - python -m pip install build pytest - - - name: Build SDist & test sdist - env: - LDFLAGS: "-fopenmp" - run: | - python -m build --sdist --outdir dist/ - pip install dist/*.tar.gz -v - pytest -s tests - working-directory: ./quaddtype - - - name: Upload SDist artifact - uses: actions/upload-artifact@v4 - with: - name: sdist - path: ./quaddtype/dist/*.tar.gz - - publish_to_pypi: - name: Publish to PyPI - needs: - [ - build_wheels_linux, - build_wheels_macos, - build_wheels_windows, - build_sdist, - ] - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/quaddtype-v') - - environment: - name: quadtype_release - url: https://pypi.org/p/numpy-quaddtype - - permissions: - id-token: write # IMPORTANT: mandatory for trusted publishing - - steps: - - name: Download all workflow run artifacts - uses: actions/download-artifact@v4 - with: - pattern: "*" - path: dist - merge-multiple: true - - - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 + # build_wheels_macos: + # name: Build wheels on ${{ matrix.os }} + # runs-on: ${{ matrix.os }} + # strategy: + # matrix: + # os: [macos-13, macos-14] + + # steps: + # - uses: actions/checkout@v3 + + # - name: Set up Python + # uses: actions/setup-python@v4 + # with: + # python-version: ">=3.11.0" + + # - name: Install dependencies + # run: | + # packages="cmake libomp git" + # echo "Remove preinstalled dependencies" + # for pkg in $packages; do + # brew uninstall --ignore-dependencies $pkg 2>/dev/null || true + # done + # brew cleanup + # brew install $packages + + # - name: Installing Python dependencies + # run: | + # pip install -U pip + # pip install cibuildwheel==3.1.4 + # pip install pytest-run-parallel + + # - name: Build wheels + # env: + # CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-* cp313t-* cp314t-*" + # CIBW_ENABLE: cpython-prerelease cpython-freethreading + # CIBW_ARCHS_MACOS: ${{ matrix.os == 'macos-13' && 'x86_64' || 'arm64' }} + # CIBW_BUILD_VERBOSITY: "3" + # CIBW_ENVIRONMENT: > + # MACOSX_DEPLOYMENT_TARGET="${{ matrix.os == 'macos-13' && '13.0' || '14.0' }}" + # CIBW_REPAIR_WHEEL_COMMAND: > + # delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} + # CIBW_TEST_COMMAND: | + # pip install {package}[test] + # if python -c "import sys; exit(0 if hasattr(sys, '_is_gil_enabled') and not sys._is_gil_enabled() else 1)"; then + # pytest --parallel-threads=10 --iterations=10 {project}/tests + # else + # pytest -s {project}/tests + # fi + # CIBW_TEST_EXTRAS: "test" + # run: | + # python -m cibuildwheel --output-dir wheelhouse + # working-directory: ./quaddtype + + # - uses: actions/upload-artifact@v4 + # with: + # path: ./quaddtype/wheelhouse/*.whl + # name: wheels-${{ matrix.os }} + + # # disabling QBLAS optimization for windows due to incompatibility with MSVC + # build_wheels_windows: + # name: Build wheels on Windows + # runs-on: windows-latest + # strategy: + # matrix: + # architecture: [x64] + + # steps: + # - uses: actions/checkout@v3 + + # - name: Setup MSVC + # uses: ilammy/msvc-dev-cmd@v1 + # with: + # arch: ${{ matrix.architecture }} + + # - name: Set up Python + # uses: actions/setup-python@v4 + # with: + # python-version: ">=3.11.0" + # architecture: ${{ matrix.architecture }} + + # - name: Install CMake + # uses: lukka/get-cmake@latest + + # - name: Install build dependencies + # shell: bash -l {0} + # run: | + # pip install -U pip + # pip install cibuildwheel==3.1.4 ninja meson meson-python numpy delvewheel pytest + + # - name: Build wheels + # env: + # CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-* cp313t-* cp314t-*" + # CIBW_ENABLE: cpython-prerelease cpython-freethreading + # CIBW_SKIP: "pp* cp36-* cp37-* cp38-* cp39-*" + # CIBW_ARCHS_WINDOWS: ${{ matrix.architecture == 'x86' && 'x86' || 'AMD64' }} + # CIBW_BUILD_VERBOSITY: "3" + # DISTUTILS_USE_SDK: "1" + # MSSdk: "1" + # CIBW_BEFORE_BUILD: | + # pip install meson meson-python ninja numpy + # CIBW_ENVIRONMENT: > + # CFLAGS="/DDISABLE_QUADBLAS $CFLAGS" + # CXXFLAGS="/DDISABLE_QUADBLAS $CXXFLAGS" + # CIBW_REPAIR_WHEEL_COMMAND: 'delvewheel repair -w {dest_dir} {wheel} --add-path C:\sleef\bin' + # CIBW_TEST_COMMAND: | + # pip install {package}[test] + # if python -c "import sys; exit(0 if hasattr(sys, '_is_gil_enabled') and not sys._is_gil_enabled() else 1)"; then + # pytest --parallel-threads=10 --iterations=10 {project}/tests + # else + # pytest -s {project}/tests + # fi + # CIBW_TEST_EXTRAS: test + # CIBW_TEST_FAIL_FAST: 1 + # shell: pwsh + # run: | + # python -m cibuildwheel --output-dir wheelhouse + # if (-not (Test-Path wheelhouse/*.whl)) { throw "Wheel was not created" } + # working-directory: ./quaddtype + + # - uses: actions/upload-artifact@v4 + # with: + # path: ./quaddtype/wheelhouse/*.whl + # name: wheels-windows-${{ matrix.architecture }} + + # build_sdist: + # name: Build SDist + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v3 + + # - name: Set up Python + # uses: actions/setup-python@v4 + # with: + # python-version: ">=3.11.0" + + # - name: Install system dependencies + # run: | + # sudo apt-get update -y + # sudo apt-get install -y cmake gcc g++ make git pkg-config + + # - name: Install build dependencies + # run: | + # python -m pip install --upgrade pip + # python -m pip install build pytest + + # - name: Build SDist & test sdist + # env: + # LDFLAGS: "-fopenmp" + # run: | + # python -m build --sdist --outdir dist/ + # pip install dist/*.tar.gz -v + # pytest -s tests + # working-directory: ./quaddtype + + # - name: Upload SDist artifact + # uses: actions/upload-artifact@v4 + # with: + # name: sdist + # path: ./quaddtype/dist/*.tar.gz + + # publish_to_pypi: + # name: Publish to PyPI + # needs: + # [ + # build_wheels_linux, + # build_wheels_macos, + # build_wheels_windows, + # build_sdist, + # ] + # runs-on: ubuntu-latest + # if: startsWith(github.ref, 'refs/tags/quaddtype-v') + + # environment: + # name: quadtype_release + # url: https://pypi.org/p/numpy-quaddtype + + # permissions: + # id-token: write # IMPORTANT: mandatory for trusted publishing + + # steps: + # - name: Download all workflow run artifacts + # uses: actions/download-artifact@v4 + # with: + # pattern: "*" + # path: dist + # merge-multiple: true + + # - name: Publish to PyPI + # uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55c3f2d..34ad8c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,88 +1,88 @@ -name: Numpy User DTypes CI +# name: Numpy User DTypes CI -on: - push: - branches: - - main - pull_request: - workflow_dispatch: +# on: +# push: +# branches: +# - main +# pull_request: +# workflow_dispatch: -jobs: - test: - runs-on: ubuntu-latest +# jobs: +# test: +# runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Setup Python - uses: actions/setup-python@v3 - with: - python-version: "3.10" - - name: Install build and test dependencies - run: | - python -m pip install -U pip build pytest unyt wheel meson ninja meson-python patchelf pandas numpy - - name: Install asciidtype - working-directory: asciidtype - run: | - CFLAGS="-Werror" python -m pip install . --no-build-isolation - - name: Run asciidtype tests - working-directory: asciidtype - run: | - pytest -vvv --color=yes - - name: Install metadatadtype - working-directory: metadatadtype - run: | - python -m build --no-isolation --wheel -Cbuilddir=build - find ./dist/*.whl | xargs python -m pip install - - name: Run metadatadtype tests - working-directory: metadatadtype - run: | - pytest -vvv --color=yes - - name: install mpfdtype - working-directory: mpfdtype - run: | - sudo apt install libmpfr-dev -y - CFLAGS="-Werror" python -m pip install . --no-build-isolation - - name: Run mpfdtype tests - working-directory: mpfdtype - run: | - pytest -vvv --color=yes - - name: Install unytdtype - working-directory: unytdtype - run: | - python -m build --no-isolation --wheel -Cbuilddir=build - find ./dist/*.whl | xargs python -m pip install - - name: Run unytdtype tests - working-directory: unytdtype - run: | - pytest -vvv --color=yes - - name: Install quaddtype dependencies - run: | - sudo apt-get update - sudo apt-get install -y libmpfr-dev libssl-dev libfftw3-dev +# steps: +# - uses: actions/checkout@v3 +# - name: Setup Python +# uses: actions/setup-python@v3 +# with: +# python-version: "3.10" +# - name: Install build and test dependencies +# run: | +# python -m pip install -U pip build pytest unyt wheel meson ninja meson-python patchelf pandas numpy +# - name: Install asciidtype +# working-directory: asciidtype +# run: | +# CFLAGS="-Werror" python -m pip install . --no-build-isolation +# - name: Run asciidtype tests +# working-directory: asciidtype +# run: | +# pytest -vvv --color=yes +# - name: Install metadatadtype +# working-directory: metadatadtype +# run: | +# python -m build --no-isolation --wheel -Cbuilddir=build +# find ./dist/*.whl | xargs python -m pip install +# - name: Run metadatadtype tests +# working-directory: metadatadtype +# run: | +# pytest -vvv --color=yes +# - name: install mpfdtype +# working-directory: mpfdtype +# run: | +# sudo apt install libmpfr-dev -y +# CFLAGS="-Werror" python -m pip install . --no-build-isolation +# - name: Run mpfdtype tests +# working-directory: mpfdtype +# run: | +# pytest -vvv --color=yes +# - name: Install unytdtype +# working-directory: unytdtype +# run: | +# python -m build --no-isolation --wheel -Cbuilddir=build +# find ./dist/*.whl | xargs python -m pip install +# - name: Run unytdtype tests +# working-directory: unytdtype +# run: | +# pytest -vvv --color=yes +# - name: Install quaddtype dependencies +# run: | +# sudo apt-get update +# sudo apt-get install -y libmpfr-dev libssl-dev libfftw3-dev - - name: Install quaddtype - working-directory: quaddtype - run: | - export LDFLAGS="-fopenmp" - python -m pip install . -v +# - name: Install quaddtype +# working-directory: quaddtype +# run: | +# export LDFLAGS="-fopenmp" +# python -m pip install . -v - - name: Run quaddtype tests - working-directory: quaddtype - run: | - pytest -vvv --color=yes - - name: Install stringdtype - working-directory: stringdtype - run: | - if [ -d "build/" ] - then - rm -r build - fi - meson setup build - python -m build --no-isolation --wheel -Cbuilddir=build --config-setting='compile-args=-v' -Csetup-args="-Dbuildtype=debug" - find ./dist/*.whl | xargs python -m pip install - - name: Run stringdtype tests - working-directory: stringdtype - run: | - pytest -s -vvv --color=yes - pip uninstall -y pandas - pytest -s -vvv --color=yes +# - name: Run quaddtype tests +# working-directory: quaddtype +# run: | +# pytest -vvv --color=yes +# - name: Install stringdtype +# working-directory: stringdtype +# run: | +# if [ -d "build/" ] +# then +# rm -r build +# fi +# meson setup build +# python -m build --no-isolation --wheel -Cbuilddir=build --config-setting='compile-args=-v' -Csetup-args="-Dbuildtype=debug" +# find ./dist/*.whl | xargs python -m pip install +# - name: Run stringdtype tests +# working-directory: stringdtype +# run: | +# pytest -s -vvv --color=yes +# pip uninstall -y pandas +# pytest -s -vvv --color=yes