test mac build #602
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | name: Build | |
| # Controls when the workflow will run | |
| on: | |
| # Triggers the workflow on push or pull request events but only for the master branch | |
| push: | |
| pull_request: | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| jobs: | |
| build-mac-intel: | |
| runs-on: macos-15-intel | |
| strategy: | |
| matrix: | |
| python-version: [ '3.12', '3.13', '3.14', 'pypy-3.11' ] | |
| raylib-platform: ['Desktop', 'SDL'] | |
| env: | |
| MACOSX_DEPLOYMENT_TARGET: '10.13' | |
| steps: | |
| # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: fix raygui bug | |
| run: | | |
| patch -p0 <raygui.h.diff | |
| - name: Build SDL | |
| run: | | |
| wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.32.8.tar.gz | |
| tar xvfz release-2.32.8.tar.gz | |
| mkdir build | |
| cd build | |
| cmake ../SDL-release-2.32.8 -DSDL_SHARED=OFF -DSDL_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release | |
| cmake --build . --config Release | |
| sudo cmake --install . | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| # Version range or exact version of a Python version to use, using SemVer's version range syntax. | |
| python-version: ${{ matrix.python-version }} | |
| # The target architecture (x86, x64) of the Python interpreter. | |
| architecture: x64 | |
| # Runs a set of commands using the runners shell | |
| - name: Build raylib without SDL because SDL version has incorrect pkg-config | |
| run: | | |
| cd raylib-c | |
| mkdir build | |
| cd build | |
| cmake -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. | |
| make -j2 | |
| sudo make install | |
| - name: Build raylib with SDL if selected | |
| run: | | |
| cd raylib-c | |
| mkdir build2 | |
| cd build2 | |
| cmake -DPLATFORM=${{ matrix.raylib-platform }} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. | |
| make -j2 | |
| sudo cp raylib/libraylib.a /usr/local/lib/libraylib.a | |
| - name: Copy extras | |
| run: | | |
| sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ | |
| sudo cp physac/src/physac.h /usr/local/include/ | |
| sudo cp raygui/src/raygui.h /usr/local/include/ | |
| - name: Build raylib-python-cffi | |
| env: | |
| RAYLIB_PLATFORM: ${{ matrix.raylib-platform }} | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip3 install --upgrade "cffi>=2.0.0" | |
| pip3 install --upgrade wheel | |
| pip3 install --upgrade setuptools | |
| python -m pip install --upgrade build | |
| python -m build --wheel | |
| - name: Rename wheels from universal2 to x86_64 | |
| run: | | |
| # Rename universal2 wheels to x86_64 since they aren't truly universal | |
| for wheel in dist/*universal2.whl; do | |
| if [ -f "$wheel" ]; then | |
| new_wheel=$(echo "$wheel" | sed 's/universal2/x86_64/') | |
| echo "Renaming: $(basename "$wheel") -> $(basename "$new_wheel")" | |
| mv "$wheel" "$new_wheel" | |
| fi | |
| done | |
| shell: bash | |
| - name: Test | |
| run: | | |
| pip3 install dist/*.whl | |
| cd / | |
| python3 -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true | |
| cat /tmp/output | |
| if grep -q "INFO: Initializing raylib" /tmp/output; then | |
| echo "Passed" | |
| exit 0 | |
| else | |
| echo "Failed" | |
| exit 1 | |
| fi | |
| - name: Upload build Artifact wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel-mac-${{ matrix.raylib-platform }}-${{ matrix.python-version }} | |
| path: dist/* | |
| build-mac-arm64: | |
| runs-on: macos-13 | |
| strategy: | |
| matrix: | |
| python-version: [ '3.12', '3.13', '3.14', 'pypy-3.11' ] | |
| raylib-platform: ['Desktop', 'SDL'] | |
| env: | |
| MACOSX_DEPLOYMENT_TARGET: '11' | |
| steps: | |
| # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: fix raygui bug | |
| run: | | |
| patch -p0 <raygui.h.diff | |
| - name: Build SDL | |
| run: | | |
| wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.32.8.tar.gz | |
| tar xvfz release-2.32.8.tar.gz | |
| mkdir build | |
| cd build | |
| cmake ../SDL-release-2.32.8 -DSDL_SHARED=OFF -DSDL_STATIC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release | |
| cmake --build . --config Release | |
| sudo cmake --install . | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| # Version range or exact version of a Python version to use, using SemVer's version range syntax. | |
| python-version: ${{ matrix.python-version }} | |
| # The target architecture (x86, x64) of the Python interpreter. | |
| architecture: arm64 | |
| # Runs a set of commands using the runners shell | |
| - name: Build raylib without SDL because SDL version has incorrect pkg-config | |
| run: | | |
| cd raylib-c | |
| mkdir build | |
| cd build | |
| cmake -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. | |
| make -j2 | |
| sudo make install | |
| - name: Build raylib with SDL if selected | |
| run: | | |
| cd raylib-c | |
| mkdir build2 | |
| cd build2 | |
| cmake -DPLATFORM=${{ matrix.raylib-platform }} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. | |
| make -j2 | |
| sudo cp raylib/libraylib.a /usr/local/lib/libraylib.a | |
| - name: Copy extras | |
| run: | | |
| sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ | |
| sudo cp physac/src/physac.h /usr/local/include/ | |
| sudo cp raygui/src/raygui.h /usr/local/include/ | |
| - name: Build raylib-python-cffi | |
| env: | |
| RAYLIB_PLATFORM: ${{ matrix.raylib-platform }} | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip3 install --upgrade "cffi>=2.0.0" | |
| pip3 install --upgrade wheel | |
| pip3 install --upgrade setuptools | |
| python -m pip install --upgrade build | |
| python -m build --wheel | |
| - name: Rename wheels from universal2 to arm64 | |
| run: | | |
| # Rename universal2 wheels to arm64 since they aren't truly universal | |
| for wheel in dist/*universal2.whl; do | |
| if [ -f "$wheel" ]; then | |
| new_wheel=$(echo "$wheel" | sed 's/universal2/arm64/') | |
| echo "Renaming: $(basename "$wheel") -> $(basename "$new_wheel")" | |
| mv "$wheel" "$new_wheel" | |
| fi | |
| done | |
| shell: bash | |
| - name: Test | |
| run: | | |
| pip3 install dist/*.whl | |
| cd / | |
| python3 -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true | |
| cat /tmp/output | |
| if grep -q "INFO: Initializing raylib" /tmp/output; then | |
| echo "Passed" | |
| exit 0 | |
| else | |
| echo "Failed" | |
| exit 1 | |
| fi | |
| - name: Upload build Artifact wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel-mac-arm64-${{ matrix.raylib-platform }}-${{ matrix.python-version }} | |
| path: dist/* | |
| build-linux: | |
| runs-on: ubuntu-latest | |
| container: | |
| image: electronstudio/ubuntu16-modern:latest | |
| options: --user root | |
| volumes: | |
| # override /__e/node20 because GitHub Actions uses a version that requires too-recent glibc | |
| - /tmp:/__e/node20 | |
| strategy: | |
| # You can use PyPy versions in python-version. | |
| # For example, pypy2 and pypy3 | |
| matrix: | |
| python-version: ['python3.12', 'python3.13', 'python3.14', 'pypy3.11'] | |
| raylib-platform: ['Desktop', 'SDL', 'DRM'] | |
| steps: | |
| - name: fix node | |
| run: | | |
| ln -s /usr/local/bin /__e/node20/bin | |
| - uses: actions/checkout@v2 | |
| with: | |
| submodules: recursive | |
| - name: fix raygui bug | |
| run: | | |
| patch -p0 <raygui.h.diff | |
| # Runs a set of commands using the runners shell | |
| - name: Build raylib | |
| run: | | |
| cd raylib-c | |
| mkdir build | |
| cd build | |
| cmake -DPLATFORM=${{ matrix.raylib-platform }} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release -DOpenGL_GL_PREFERENCE=GLVND .. | |
| make -j2 | |
| make install | |
| - name: Copy extras | |
| run: | | |
| cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ | |
| cp physac/src/physac.h /usr/local/include/ | |
| cp raygui/src/raygui.h /usr/local/include/ | |
| - name: Build raylib-python-cffi | |
| env: | |
| RAYLIB_PLATFORM: ${{ matrix.raylib-platform }} | |
| PKG_CONFIG_PATH: /usr/local/lib/pkgconfig | |
| run: | | |
| ${{ matrix.python-version }} -m pip install --upgrade pip | |
| ${{ matrix.python-version }} -m pip install --upgrade "cffi>=2.0.0" | |
| ${{ matrix.python-version }} -m pip install --upgrade wheel | |
| ${{ matrix.python-version }} -m pip install --upgrade setuptools | |
| ${{ matrix.python-version }} -m pip install --upgrade build | |
| ${{ matrix.python-version }} -m build --wheel | |
| python3.13 -m pip install --upgrade auditwheel | |
| python3.13 -m pip install --upgrade patchelf | |
| python3.13 -m auditwheel repair dist/*.whl | |
| shell: bash | |
| - name: Rename wheel for testing | |
| run: | | |
| # Rename wheelhouse wheels to be maximally compatible for testing | |
| for wheel in wheelhouse/raylib*.whl; do | |
| if [ -f "$wheel" ]; then | |
| basename=$(basename "$wheel") | |
| # Extract package and version using regex | |
| if [[ $basename =~ ^([^-]+)-([^-]+.*)-[^-]+-[^-]+-[^-]+\.whl$ ]]; then | |
| package="${BASH_REMATCH[1]}" | |
| version="${BASH_REMATCH[2]}" | |
| new_name="${package}-${version}-py3-none-linux_x86_64.whl" | |
| echo "Renaming: $basename -> $new_name" | |
| cp "$wheel" "wheelhouse/$new_name" | |
| fi | |
| fi | |
| done | |
| shell: bash | |
| - name: Test | |
| run: | | |
| ${{ matrix.python-version }} -m pip install --no-deps wheelhouse/*-py3-none-linux_x86_64.whl | |
| # Clean up test wheels | |
| rm -f wheelhouse/*-py3-none-linux_x86_64.whl | |
| cd / | |
| ${{ matrix.python-version }} -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true | |
| cat /tmp/output | |
| if grep -q "INFO: Initializing raylib" /tmp/output; then | |
| echo "Passed" | |
| else | |
| echo "Failed" | |
| exit 1 | |
| fi | |
| - name: Upload build Artifact wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel-linux-${{ matrix.raylib-platform }}-${{ matrix.python-version }} | |
| path: wheelhouse/* | |
| build-windows: | |
| # The type of runner that the job will run on | |
| runs-on: windows-2022 | |
| strategy: | |
| # You can use PyPy versions in python-version. | |
| # For example, pypy2 and pypy3 | |
| matrix: | |
| python-version: [ '3.12', '3.13', '3.14', 'pypy-3.11' ] | |
| raylib-platform: ['Desktop', 'SDL'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Download SDL2 | |
| run: curl -L -o SDL2.zip https://github.com/libsdl-org/SDL/releases/download/release-2.30.8/SDL2-devel-2.30.8-VC.zip | |
| - name: Create extraction directory | |
| run: mkdir ${{ runner.temp }}\SDL2 | |
| - name: Unzip SDL2 | |
| run: tar -xf SDL2.zip -C ${{ runner.temp }}\SDL2 --strip-components=1 | |
| - name: Set SDL2_DIR environment variable | |
| run: echo SDL2_DIR=${{ runner.temp }}\SDL2\cmake >> $env:GITHUB_ENV | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| # Version range or exact version of a Python version to use, using SemVer's version range syntax. | |
| python-version: ${{ matrix.python-version }} | |
| # The target architecture (x86, x64) of the Python interpreter. | |
| architecture: x64 | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@v2 | |
| - name: fix raygui bug | |
| run: | | |
| patch -p0 <raygui.h.diff | |
| shell: cmd | |
| - name: Build raylib | |
| run: | | |
| cd raylib-c | |
| mkdir build | |
| cd build | |
| cmake -DPLATFORM=${{ matrix.raylib-platform }} -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. | |
| msbuild raylib.sln /target:raylib /property:Configuration=Release | |
| copy raylib\Release\raylib.lib ..\.. | |
| cd ..\.. | |
| shell: cmd | |
| - name: Build raylib-python-cffi | |
| env: | |
| RAYLIB_PLATFORM: ${{ matrix.raylib-platform }} | |
| run: | | |
| copy ${{ runner.temp }}\SDL2\lib\x64\SDL2.lib . | |
| copy ${{ runner.temp }}\SDL2\lib\x64\SDL2.dll raylib\ | |
| python -m pip install --upgrade pip | |
| pip3 install --upgrade "cffi>=2.0.0" | |
| pip3 install --upgrade wheel | |
| pip3 install --upgrade setuptools | |
| pip3 install --upgrade build | |
| del raylib\dynamic\*.so* >nul 2>&1 | |
| del raylib\dynamic\*.dll >nul 2>&1 | |
| del raylib\dynamic\*.dylib >nul 2>&1 | |
| del raylib\dynamic\32bit\* >nul 2>&1 | |
| python -m build --wheel | |
| shell: cmd | |
| - name: Test | |
| shell: bash | |
| run: | | |
| pip3 install --no-deps dist/*.whl | |
| cd / | |
| python3 -c 'import pyray; pyray.init_window(100,100,"test")' >/tmp/output 2>&1 || true | |
| cat /tmp/output | |
| if grep -q "INFO: Initializing raylib" /tmp/output; then | |
| echo "Passed" | |
| exit 0 | |
| else | |
| echo "Failed" | |
| exit 1 | |
| fi | |
| - name: Upload build Artifact wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel-windows-${{ matrix.raylib-platform }}-${{ matrix.python-version }} | |
| path: dist/* | |
| source-distro: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: fix raygui bug | |
| run: | | |
| patch -p0 <raygui.h.diff | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| # Version range or exact version of a Python version to use, using SemVer's version range syntax. | |
| python-version: '3.12' | |
| # The target architecture (x86, x64) of the Python interpreter. | |
| architecture: x64 | |
| - name: Build raylib | |
| run: | | |
| sudo apt update | |
| sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev libwayland-dev libxkbcommon-dev | |
| cd raylib-c | |
| mkdir build | |
| cd build | |
| cmake -DBUILD_EXAMPLES=OFF -DCUSTOMIZE_BUILD=ON -DSUPPORT_FILEFORMAT_JPG=ON -DSUPPORT_FILEFORMAT_FLAC=ON -DWITH_PIC=ON -DCMAKE_BUILD_TYPE=Release .. | |
| make -j2 | |
| sudo make install | |
| - name: Copy extras | |
| run: | | |
| sudo cp -r raylib-c/src/external/glfw/include/GLFW /usr/local/include/ | |
| sudo cp physac/src/physac.h /usr/local/include/ | |
| sudo cp raygui/src/raygui.h /usr/local/include/ | |
| - name: Build raylib-python-cffi | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip3 install --upgrade "cffi>=2.0.0" | |
| pip3 install --upgrade wheel | |
| pip3 install --upgrade setuptools | |
| python setup.py sdist | |
| - name: Upload build Artifact wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel-source | |
| path: dist/* | |
| dynamic-distro: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: fix raygui bug | |
| run: | | |
| patch -p0 <raygui.h.diff | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| # Version range or exact version of a Python version to use, using SemVer's version range syntax. | |
| python-version: '3.12' | |
| # The target architecture (x86, x64) of the Python interpreter. | |
| architecture: x64 | |
| - name: Build raylib-python-cffi-dynamic | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip3 install --upgrade "cffi>=2.0.0" | |
| pip3 install --upgrade wheel | |
| pip3 install --upgrade setuptools | |
| cd dynamic | |
| python setup.py sdist | |
| - name: Upload build Artifact wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel-dynamic | |
| path: dynamic/dist/* | |
| merge: | |
| needs: [build-mac-intel, build-mac-arm64, build-windows, build-linux, source-distro, dynamic-distro] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Merge All Artifacts | |
| uses: actions/upload-artifact/merge@v4 | |
| with: | |
| name: wheel | |
| pattern: wheel-* |