Skip to content

test mac build

test mac build #601

Workflow file for this run

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-arm:
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 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-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-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-*