From a6c88d57a5b1dbc617b4f5643248d021c499cfdd Mon Sep 17 00:00:00 2001 From: SwayamInSync Date: Fri, 29 Aug 2025 15:21:56 +0000 Subject: [PATCH 1/2] fixing macos-14 --- .github/workflows/build_wheels.yml | 478 +++++++++++++++-------------- 1 file changed, 243 insertions(+), 235 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index a8b9d224..d552330c 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -16,69 +16,69 @@ on: workflow_dispatch: jobs: - build_wheels_linux: - name: Build wheels on Linux - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ">=3.11.0" - - - name: Verify QuadBLAS submodule - run: | - ls -la quaddtype/numpy_quaddtype/QBLAS/ - ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ - - - name: Install cibuildwheel - run: pip install cibuildwheel==3.1.4 - - - name: Build wheels - env: - CIBW_BUILD: "cp310-manylinux_x86_64 cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64 cp313t-manylinux_x86_64 cp314-manylinux_x86_64 cp314t-manylinux_x86_64" - CIBW_ENABLE: cpython-prerelease cpython-freethreading - CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 - CIBW_BUILD_VERBOSITY: "3" - CIBW_BEFORE_ALL: | - yum update -y - yum install -y cmake gcc gcc-c++ make git pkgconfig - # Install SLEEF in container - git clone --branch 3.8 https://github.com/shibatch/sleef.git - cd sleef - cmake -S . -B build \ - -DSLEEF_BUILD_QUAD:BOOL=ON \ - -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - cmake --build build/ --clean-first -j - cmake --install build --prefix /usr/local - CIBW_ENVIRONMENT: > - CFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include $CFLAGS" - CXXFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include -fext-numeric-literals $CXXFLAGS" - LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp $LDFLAGS" - LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" - PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" - CIBW_REPAIR_WHEEL_COMMAND: | - auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {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-linux + # build_wheels_linux: + # name: Build wheels on Linux + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v3 + # with: + # submodules: recursive + + # - name: Set up Python + # uses: actions/setup-python@v4 + # with: + # python-version: ">=3.11.0" + + # - name: Verify QuadBLAS submodule + # run: | + # ls -la quaddtype/numpy_quaddtype/QBLAS/ + # ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ + + # - name: Install cibuildwheel + # run: pip install cibuildwheel==3.1.4 + + # - name: Build wheels + # env: + # CIBW_BUILD: "cp310-manylinux_x86_64 cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64 cp313t-manylinux_x86_64 cp314-manylinux_x86_64 cp314t-manylinux_x86_64" + # CIBW_ENABLE: cpython-prerelease cpython-freethreading + # CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + # CIBW_BUILD_VERBOSITY: "3" + # CIBW_BEFORE_ALL: | + # yum update -y + # yum install -y cmake gcc gcc-c++ make git pkgconfig + # # Install SLEEF in container + # git clone --branch 3.8 https://github.com/shibatch/sleef.git + # cd sleef + # cmake -S . -B build \ + # -DSLEEF_BUILD_QUAD:BOOL=ON \ + # -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ + # -DCMAKE_POSITION_INDEPENDENT_CODE=ON + # cmake --build build/ --clean-first -j + # cmake --install build --prefix /usr/local + # CIBW_ENVIRONMENT: > + # CFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include $CFLAGS" + # CXXFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include -fext-numeric-literals $CXXFLAGS" + # LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp $LDFLAGS" + # LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" + # PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" + # CIBW_REPAIR_WHEEL_COMMAND: | + # auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {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-linux build_wheels_macos: name: Build wheels on ${{ matrix.os }} @@ -99,7 +99,15 @@ jobs: - name: Install dependencies run: | - brew install cmake libomp git + packages="cmake libomp git" + if [[ "${{ matrix.os }}" == "macos-14" ]]; then + echo "Remove preinstalled dependencies" + for pkg in $packages; do + brew uninstall --ignore-dependencies $pkg 2>/dev/null || true + done + brew cleanup + fi + brew install $packages - name: Install SLEEF env: @@ -161,174 +169,174 @@ jobs: 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 - with: - submodules: recursive - - - 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: Verify QuadBLAS submodule - shell: pwsh - run: | - Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/ - Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ - - - name: Clone and Build SLEEF - shell: pwsh - run: | - git clone --branch 3.8 https://github.com/shibatch/sleef.git - cd sleef - cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture == 'x86' && 'Win32' || 'x64' }} -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON - cmake --build build --config Release - cmake --install build --prefix "C:/sleef" --config Release - - - 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: > - INCLUDE="C:/sleef/include;{project}/numpy_quaddtype/QBLAS/include;$INCLUDE" - LIB="C:/sleef/lib;$LIB" - PATH="C:/sleef/bin;$PATH" - CFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CFLAGS" - CXXFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CXXFLAGS" - LDFLAGS="C:/sleef/lib/sleef.lib C:/sleef/lib/sleefquad.lib $LDFLAGS" - 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 - with: - submodules: recursive - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ">=3.11.0" - - - name: Verify QuadBLAS submodule - run: | - ls -la quaddtype/numpy_quaddtype/QBLAS/ - ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ - - - name: Install system dependencies - run: | - sudo apt-get update -y - sudo apt-get install -y cmake gcc g++ make git pkg-config - - - name: Install SLEEF - run: | - git clone --branch 3.8 https://github.com/shibatch/sleef.git - cd sleef - cmake -S . -B build \ - -DSLEEF_BUILD_QUAD:BOOL=ON \ - -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - cmake --build build/ --clean-first -j - sudo cmake --install build --prefix /usr/local - - - name: Install build dependencies - run: | - python -m pip install --upgrade pip - python -m pip install build - - - name: Build SDist - env: - CFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include" - CXXFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include -fext-numeric-literals" - LDFLAGS: "-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp" - LD_LIBRARY_PATH: "/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" - PKG_CONFIG_PATH: "/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" - run: | - python -m build --sdist --outdir dist/ - 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_windows: + # name: Build wheels on Windows + # runs-on: windows-latest + # strategy: + # matrix: + # architecture: [x64] + + # steps: + # - uses: actions/checkout@v3 + # with: + # submodules: recursive + + # - 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: Verify QuadBLAS submodule + # shell: pwsh + # run: | + # Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/ + # Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ + + # - name: Clone and Build SLEEF + # shell: pwsh + # run: | + # git clone --branch 3.8 https://github.com/shibatch/sleef.git + # cd sleef + # cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture == 'x86' && 'Win32' || 'x64' }} -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON + # cmake --build build --config Release + # cmake --install build --prefix "C:/sleef" --config Release + + # - 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: > + # INCLUDE="C:/sleef/include;{project}/numpy_quaddtype/QBLAS/include;$INCLUDE" + # LIB="C:/sleef/lib;$LIB" + # PATH="C:/sleef/bin;$PATH" + # CFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CFLAGS" + # CXXFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CXXFLAGS" + # LDFLAGS="C:/sleef/lib/sleef.lib C:/sleef/lib/sleefquad.lib $LDFLAGS" + # 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 + # with: + # submodules: recursive + + # - name: Set up Python + # uses: actions/setup-python@v4 + # with: + # python-version: ">=3.11.0" + + # - name: Verify QuadBLAS submodule + # run: | + # ls -la quaddtype/numpy_quaddtype/QBLAS/ + # ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ + + # - name: Install system dependencies + # run: | + # sudo apt-get update -y + # sudo apt-get install -y cmake gcc g++ make git pkg-config + + # - name: Install SLEEF + # run: | + # git clone --branch 3.8 https://github.com/shibatch/sleef.git + # cd sleef + # cmake -S . -B build \ + # -DSLEEF_BUILD_QUAD:BOOL=ON \ + # -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ + # -DCMAKE_POSITION_INDEPENDENT_CODE=ON + # cmake --build build/ --clean-first -j + # sudo cmake --install build --prefix /usr/local + + # - name: Install build dependencies + # run: | + # python -m pip install --upgrade pip + # python -m pip install build + + # - name: Build SDist + # env: + # CFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include" + # CXXFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include -fext-numeric-literals" + # LDFLAGS: "-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp" + # LD_LIBRARY_PATH: "/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" + # PKG_CONFIG_PATH: "/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" + # run: | + # python -m build --sdist --outdir dist/ + # 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 From fde1774ea03aceb8c2a33942cb30dda03283eda2 Mon Sep 17 00:00:00 2001 From: SwayamInSync Date: Fri, 29 Aug 2025 15:29:19 +0000 Subject: [PATCH 2/2] fixed yo --- .github/workflows/build_wheels.yml | 468 ++++++++++++++--------------- 1 file changed, 234 insertions(+), 234 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index d552330c..9f713720 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -16,69 +16,69 @@ on: workflow_dispatch: jobs: - # build_wheels_linux: - # name: Build wheels on Linux - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v3 - # with: - # submodules: recursive - - # - name: Set up Python - # uses: actions/setup-python@v4 - # with: - # python-version: ">=3.11.0" - - # - name: Verify QuadBLAS submodule - # run: | - # ls -la quaddtype/numpy_quaddtype/QBLAS/ - # ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ - - # - name: Install cibuildwheel - # run: pip install cibuildwheel==3.1.4 - - # - name: Build wheels - # env: - # CIBW_BUILD: "cp310-manylinux_x86_64 cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64 cp313t-manylinux_x86_64 cp314-manylinux_x86_64 cp314t-manylinux_x86_64" - # CIBW_ENABLE: cpython-prerelease cpython-freethreading - # CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 - # CIBW_BUILD_VERBOSITY: "3" - # CIBW_BEFORE_ALL: | - # yum update -y - # yum install -y cmake gcc gcc-c++ make git pkgconfig - # # Install SLEEF in container - # git clone --branch 3.8 https://github.com/shibatch/sleef.git - # cd sleef - # cmake -S . -B build \ - # -DSLEEF_BUILD_QUAD:BOOL=ON \ - # -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ - # -DCMAKE_POSITION_INDEPENDENT_CODE=ON - # cmake --build build/ --clean-first -j - # cmake --install build --prefix /usr/local - # CIBW_ENVIRONMENT: > - # CFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include $CFLAGS" - # CXXFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include -fext-numeric-literals $CXXFLAGS" - # LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp $LDFLAGS" - # LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" - # PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" - # CIBW_REPAIR_WHEEL_COMMAND: | - # auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {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-linux + build_wheels_linux: + name: Build wheels on Linux + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ">=3.11.0" + + - name: Verify QuadBLAS submodule + run: | + ls -la quaddtype/numpy_quaddtype/QBLAS/ + ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ + + - name: Install cibuildwheel + run: pip install cibuildwheel==3.1.4 + + - name: Build wheels + env: + CIBW_BUILD: "cp310-manylinux_x86_64 cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64 cp313t-manylinux_x86_64 cp314-manylinux_x86_64 cp314t-manylinux_x86_64" + CIBW_ENABLE: cpython-prerelease cpython-freethreading + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_BUILD_VERBOSITY: "3" + CIBW_BEFORE_ALL: | + yum update -y + yum install -y cmake gcc gcc-c++ make git pkgconfig + # Install SLEEF in container + git clone --branch 3.8 https://github.com/shibatch/sleef.git + cd sleef + cmake -S . -B build \ + -DSLEEF_BUILD_QUAD:BOOL=ON \ + -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + cmake --build build/ --clean-first -j + cmake --install build --prefix /usr/local + CIBW_ENVIRONMENT: > + CFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include $CFLAGS" + CXXFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include -fext-numeric-literals $CXXFLAGS" + LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp $LDFLAGS" + LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" + PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" + CIBW_REPAIR_WHEEL_COMMAND: | + auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {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-linux build_wheels_macos: name: Build wheels on ${{ matrix.os }} @@ -169,174 +169,174 @@ jobs: 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 - # with: - # submodules: recursive - - # - 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: Verify QuadBLAS submodule - # shell: pwsh - # run: | - # Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/ - # Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ - - # - name: Clone and Build SLEEF - # shell: pwsh - # run: | - # git clone --branch 3.8 https://github.com/shibatch/sleef.git - # cd sleef - # cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture == 'x86' && 'Win32' || 'x64' }} -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON - # cmake --build build --config Release - # cmake --install build --prefix "C:/sleef" --config Release - - # - 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: > - # INCLUDE="C:/sleef/include;{project}/numpy_quaddtype/QBLAS/include;$INCLUDE" - # LIB="C:/sleef/lib;$LIB" - # PATH="C:/sleef/bin;$PATH" - # CFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CFLAGS" - # CXXFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CXXFLAGS" - # LDFLAGS="C:/sleef/lib/sleef.lib C:/sleef/lib/sleefquad.lib $LDFLAGS" - # 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 - # with: - # submodules: recursive - - # - name: Set up Python - # uses: actions/setup-python@v4 - # with: - # python-version: ">=3.11.0" - - # - name: Verify QuadBLAS submodule - # run: | - # ls -la quaddtype/numpy_quaddtype/QBLAS/ - # ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ - - # - name: Install system dependencies - # run: | - # sudo apt-get update -y - # sudo apt-get install -y cmake gcc g++ make git pkg-config - - # - name: Install SLEEF - # run: | - # git clone --branch 3.8 https://github.com/shibatch/sleef.git - # cd sleef - # cmake -S . -B build \ - # -DSLEEF_BUILD_QUAD:BOOL=ON \ - # -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ - # -DCMAKE_POSITION_INDEPENDENT_CODE=ON - # cmake --build build/ --clean-first -j - # sudo cmake --install build --prefix /usr/local - - # - name: Install build dependencies - # run: | - # python -m pip install --upgrade pip - # python -m pip install build - - # - name: Build SDist - # env: - # CFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include" - # CXXFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include -fext-numeric-literals" - # LDFLAGS: "-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp" - # LD_LIBRARY_PATH: "/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" - # PKG_CONFIG_PATH: "/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" - # run: | - # python -m build --sdist --outdir dist/ - # 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_windows: + name: Build wheels on Windows + runs-on: windows-latest + strategy: + matrix: + architecture: [x64] + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - 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: Verify QuadBLAS submodule + shell: pwsh + run: | + Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/ + Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ + + - name: Clone and Build SLEEF + shell: pwsh + run: | + git clone --branch 3.8 https://github.com/shibatch/sleef.git + cd sleef + cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture == 'x86' && 'Win32' || 'x64' }} -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON + cmake --build build --config Release + cmake --install build --prefix "C:/sleef" --config Release + + - 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: > + INCLUDE="C:/sleef/include;{project}/numpy_quaddtype/QBLAS/include;$INCLUDE" + LIB="C:/sleef/lib;$LIB" + PATH="C:/sleef/bin;$PATH" + CFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CFLAGS" + CXXFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CXXFLAGS" + LDFLAGS="C:/sleef/lib/sleef.lib C:/sleef/lib/sleefquad.lib $LDFLAGS" + 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 + with: + submodules: recursive + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ">=3.11.0" + + - name: Verify QuadBLAS submodule + run: | + ls -la quaddtype/numpy_quaddtype/QBLAS/ + ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/ + + - name: Install system dependencies + run: | + sudo apt-get update -y + sudo apt-get install -y cmake gcc g++ make git pkg-config + + - name: Install SLEEF + run: | + git clone --branch 3.8 https://github.com/shibatch/sleef.git + cd sleef + cmake -S . -B build \ + -DSLEEF_BUILD_QUAD:BOOL=ON \ + -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + cmake --build build/ --clean-first -j + sudo cmake --install build --prefix /usr/local + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + python -m pip install build + + - name: Build SDist + env: + CFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include" + CXXFLAGS: "-I/usr/local/include -I$(pwd)/numpy_quaddtype/QBLAS/include -fext-numeric-literals" + LDFLAGS: "-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp" + LD_LIBRARY_PATH: "/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH" + PKG_CONFIG_PATH: "/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" + run: | + python -m build --sdist --outdir dist/ + 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