From c7e80576d8a8bb7e630f06206ec1aa2bcfaa665d Mon Sep 17 00:00:00 2001 From: WrathfulSpatula Date: Mon, 28 Oct 2024 07:42:32 -0400 Subject: [PATCH] build-cpu-only.yml --- .github/workflows/build-cpu-only.yml | 315 +++++++++++++++++++++++++++ .github/workflows/build.yml | 8 +- 2 files changed, 317 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/build-cpu-only.yml diff --git a/.github/workflows/build-cpu-only.yml b/.github/workflows/build-cpu-only.yml new file mode 100644 index 0000000..3165ac5 --- /dev/null +++ b/.github/workflows/build-cpu-only.yml @@ -0,0 +1,315 @@ +name: Build PyQrack Wheels + +on: + push: + branches: + - cpu-only # Trigger on pushes to the cpu-only branch (adjust if needed) + + workflow_dispatch: # Allow manual triggering of the workflow + + +jobs: + build_noble: + runs-on: ubuntu-24.04 # Use a Noble Numbat runner + strategy: + matrix: + platform: + - manylinux_2_39_x86_64 + steps: + - name: Checkout PyQrack + uses: actions/checkout@v4 + + - name: Checkout Qrack + uses: actions/checkout@v4 + with: + repository: 'unitaryfund/qrack' + path: qrack + + - name: Prepare Build Environment (Linux) + run: | + sudo apt-get update + sudo apt-get install -y build-essential cmake python3-venv + + - name: Install Python Dependencies + run: | + mkdir venv + python -m venv venv + source venv/bin/activate + python -m pip install --upgrade pip + python -m pip install wheel setuptools + + - name: Build Qrack Linux x86-64 + run: | + cd qrack + mkdir build + cd build + cmake -DENABLE_RDRAND=OFF -DENABLE_DEVRAND=ON -DQBCAPPOW=7 -DCPP_STD=14 -DENABLE_OPENCL=OFF .. + make qrack_pinvoke + + - name: Build Wheel + run: | + source venv/bin/activate + mkdir pyqrack/qrack_system/qrack_lib + cp qrack/build/libqrack_pinvoke.* pyqrack/qrack_system/qrack_lib/ + python setup.py bdist_wheel --plat-name=${{ matrix.platform }} + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: pyqrack-${{ matrix.platform }} + path: dist/ + + build_jammy: + runs-on: ubuntu-22.04 # Use a Jammy Jellyfish runner + strategy: + matrix: + platform: + - manylinux_2_35_x86_64 + steps: + - name: Checkout PyQrack + uses: actions/checkout@v4 + + - name: Checkout Qrack + uses: actions/checkout@v4 + with: + repository: 'unitaryfund/qrack' + path: qrack + + - name: Prepare Build Environment (Linux) + run: | + sudo apt-get update + sudo apt-get install -y build-essential cmake python3-venv + + - name: Install Python Dependencies + run: | + mkdir venv + python -m venv venv + source venv/bin/activate + python -m pip install --upgrade pip + python -m pip install wheel setuptools + + - name: Build Qrack Linux x86-64 + run: | + cd qrack + mkdir build + cd build + cmake -DENABLE_RDRAND=OFF -DENABLE_DEVRAND=ON -DQBCAPPOW=7 -DCPP_STD=14 -DENABLE_OPENCL=OFF .. + make qrack_pinvoke + + - name: Build Wheel + run: | + source venv/bin/activate + mkdir pyqrack/qrack_system/qrack_lib + cp qrack/build/libqrack_pinvoke.* pyqrack/qrack_system/qrack_lib/ + python setup.py bdist_wheel --plat-name=${{ matrix.platform }} + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: pyqrack-${{ matrix.platform }} + path: dist/ + + build_focal: + runs-on: ubuntu-20.04 # Use a Focal Fossa runner + strategy: + matrix: + platform: + - manylinux_2_31_x86_64 + steps: + - name: Checkout PyQrack + uses: actions/checkout@v4 + + - name: Checkout Qrack + uses: actions/checkout@v4 + with: + repository: 'unitaryfund/qrack' + path: qrack + + - name: Prepare Build Environment (Linux) + run: | + sudo apt-get update + sudo apt-get install -y build-essential cmake python3-venv + + - name: Install Python Dependencies + run: | + mkdir venv + python -m venv venv + source venv/bin/activate + python -m pip install --upgrade pip + python -m pip install wheel setuptools + + - name: Build Qrack Linux x86-64 + run: | + cd qrack + mkdir build + cd build + cmake -DENABLE_RDRAND=OFF -DENABLE_DEVRAND=ON -DQBCAPPOW=7 -DCPP_STD=14 -DENABLE_OPENCL=OFF .. + make qrack_pinvoke qrack_cl_precompile + + - name: Build Wheel + run: | + source venv/bin/activate + mkdir pyqrack/qrack_system/qrack_lib + cp qrack/build/libqrack_pinvoke.* pyqrack/qrack_system/qrack_lib/ + python setup.py bdist_wheel --plat-name=${{ matrix.platform }} + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: pyqrack-${{ matrix.platform }} + path: dist/ + + build_mac_13: + runs-on: macos-13 # Use a Mac OS runner + strategy: + matrix: + platform: + - macosx_13_0_x86_64 + steps: + - name: Checkout PyQrack + uses: actions/checkout@v4 + + - name: Checkout Qrack + uses: actions/checkout@v4 + with: + repository: 'unitaryfund/qrack' + path: qrack + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install Python Dependencies + run: | + python -m pip install --upgrade pip + python -m pip install wheel setuptools + + - name: Install Homebrew (MacOS) + uses: Homebrew/actions/setup-homebrew@master + + - name: Prepare Build Environment (MacOS) + run: | + brew upgrade rustup + brew install cmake + + - name: Build Qrack MacOS + run: | + cd qrack + mkdir build + cd build + cmake -DQBCAPPOW=7 -DCPP_STD=14 -DENABLE_RDRAND=OFF -DENABLE_OPENCL=OFF .. + make qrack_pinvoke + + - name: Build Wheel + run: | + mkdir pyqrack/qrack_system/qrack_lib + cp qrack/build/libqrack_pinvoke.* pyqrack/qrack_system/qrack_lib/ + python setup.py bdist_wheel --plat-name=${{ matrix.platform }} + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: pyqrack-${{ matrix.platform }} + path: dist/ + + build_mac_12: + runs-on: macos-12 # Use a Mac OS runner + strategy: + matrix: + platform: + - macosx_12_0_x86_64 + steps: + - name: Checkout PyQrack + uses: actions/checkout@v4 + + - name: Checkout Qrack + uses: actions/checkout@v4 + with: + repository: 'unitaryfund/qrack' + path: qrack + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install Python Dependencies + run: | + python -m pip install --upgrade pip + python -m pip install wheel setuptools + + - name: Install Homebrew (MacOS) + uses: Homebrew/actions/setup-homebrew@master + + - name: Prepare Build Environment (MacOS) + run: | + brew upgrade rustup + brew install cmake + + - name: Build Qrack MacOS + run: | + cd qrack + mkdir build + cd build + cmake -DQBCAPPOW=7 -DCPP_STD=14 -DENABLE_RDRAND=OFF -DENABLE_OPENCL=OFF .. + make qrack_pinvoke + + - name: Build Wheel + run: | + mkdir pyqrack/qrack_system/qrack_lib + cp qrack/build/libqrack_pinvoke.* pyqrack/qrack_system/qrack_lib/ + python setup.py bdist_wheel --plat-name=${{ matrix.platform }} + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: pyqrack-${{ matrix.platform }} + path: dist/ + + build_windows: + runs-on: windows-latest # Use a Linux runner + strategy: + matrix: + platform: + - win-amd64 + dependencies: [vcpkg] + steps: + - name: Checkout PyQrack + uses: actions/checkout@v4 + + - name: Checkout Qrack + uses: actions/checkout@v4 + with: + repository: 'unitaryfund/qrack' + path: qrack + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install Python Dependencies + run: | + python -m pip install --upgrade pip + python -m pip install wheel setuptools + + - name: Build Qrack Windows x86-64 + run: | + cd qrack + mkdir build + cd build + cmake .. -DQBCAPPOW=7 -DCPP_STD=14 -DENABLE_OPENCL=OFF + cmake --build . --config Release --target qrack_pinvoke + + - name: Build Wheel + run: | + mkdir pyqrack/qrack_system/qrack_lib + copy qrack/build/Release/qrack_pinvoke.dll pyqrack/qrack_system/qrack_lib/ + python setup.py bdist_wheel --plat-name=${{ matrix.platform }} + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: pyqrack-${{ matrix.platform }} + path: dist/ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 39142ee..c583732 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -205,14 +205,12 @@ jobs: mkdir build cd build cmake -DENABLE_COMPLEX_X2=OFF -DENABLE_SSE3=OFF -DENABLE_RDRAND=OFF -DENABLE_OPENCL=OFF -DQBCAPPOW=7 -DCPP_STD=14 .. - make qrack_pinvoke qrack_cl_precompile + make qrack_pinvoke - name: Build Wheel run: | mkdir pyqrack/qrack_system/qrack_lib - mkdir pyqrack/qrack_system/qrack_cl_precompile cp qrack/build/libqrack_pinvoke.* pyqrack/qrack_system/qrack_lib/ - cp qrack/build/qrack_cl_precompile pyqrack/qrack_system/qrack_cl_precompile/ python setup.py bdist_wheel --plat-name=${{ matrix.platform }} - name: Upload Artifacts @@ -261,14 +259,12 @@ jobs: mkdir build cd build cmake -DENABLE_COMPLEX_X2=OFF -DENABLE_SSE3=OFF -DENABLE_RDRAND=OFF -DENABLE_OPENCL=OFF -DQBCAPPOW=7 -DCPP_STD=14 .. - make qrack_pinvoke qrack_cl_precompile + make qrack_pinvoke - name: Build Wheel run: | mkdir pyqrack/qrack_system/qrack_lib - mkdir pyqrack/qrack_system/qrack_cl_precompile cp qrack/build/libqrack_pinvoke.* pyqrack/qrack_system/qrack_lib/ - cp qrack/build/qrack_cl_precompile pyqrack/qrack_system/qrack_cl_precompile/ python setup.py bdist_wheel --plat-name=${{ matrix.platform }} - name: Upload Artifacts