diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f416def..2f0c6da 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,9 +28,10 @@ jobs: uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - - name: Install system OSMesa/OpenGL libraries (Ubuntu) + - name: Install system OpenGL/EGL libraries (Ubuntu) if: matrix.os == 'ubuntu' - run: sudo apt-get install -y --no-install-recommends libosmesa6 libgl1 + # libegl1: EGL headless rendering (no display needed); libgl1: pulled in by PyOpenGL + run: sudo apt-get install -y --no-install-recommends libegl1 libgl1 - name: Install dependencies run: | python -m pip install --progress-bar off --upgrade pip setuptools wheel diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 7d983ff..0861899 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -28,7 +28,7 @@ jobs: - name: Install system dependencies run: | sudo apt-get update - sudo apt-get -y install libgl1 libosmesa6 libxcb-cursor0 pandoc + sudo apt-get -y install libegl1 libgl1 libxcb-cursor0 pandoc - name: Install package run: | python -m pip install --progress-bar off --upgrade pip setuptools wheel diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index cfe8e9d..64d6e6f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ jobs: with: python-version: '3.13' - name: Install system dependencies - run: sudo apt-get install -y --no-install-recommends libosmesa6 libgl1 + run: sudo apt-get install -y --no-install-recommends libegl1 libgl1 - name: Install python dependencies run: | python -m pip install --progress-bar off --upgrade pip setuptools wheel diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 83f50ec..79e12f7 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -32,9 +32,12 @@ jobs: uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - - name: Install system OSMesa library (Ubuntu) + - name: Install system OpenGL/EGL libraries (Ubuntu) if: matrix.os == 'ubuntu' - run: sudo apt-get install -y --no-install-recommends libosmesa6 libgl1 + # libegl1: EGL headless rendering (preferred, no display needed) + # libgl1: OpenGL implementation pulled in by PyOpenGL + # libfontconfig1: font discovery used by the caption renderer + run: sudo apt-get install -y --no-install-recommends libegl1 libgl1 libfontconfig1 - name: Install Mesa software OpenGL (Windows) if: matrix.os == 'windows' # mesa-dist-win (MSVC build) provides software OpenGL 3.3 Core via @@ -50,8 +53,9 @@ jobs: 7z e $archive -o"C:\mesa" "x64\*" -y echo "C:\mesa" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append # Rendering strategy per platform: - # Ubuntu: no display → GLFW fails → EGL skipped (no /dev/dri/renderD*) - # → OSMesa headless (libosmesa6) used as final fallback + # Ubuntu: no display → GLFW fails → EGL + # CI runners have no GPU device so EGL uses CPU software + # rendering (llvmpipe) via EGL_MESA_device_software # macOS: rendering tests SKIPPED — NSGL requires a real display # connection even for invisible windows; CI runners have none # Windows: Mesa opengl32.dll (MSVC build) on PATH → GLFW invisible