* raylib: add PLATFORM_OFFSCREEN support for headless CI rendering
- build.sh: use commaai/raylib platform-offscreen commit, build offscreen
variant (libraylib_offscreen.a) alongside desktop for x86_64, bundle
GLVND dispatchers (libEGL, libOpenGL, libGLdispatch) in install/lib/mesa/
- build.py: add PLATFORM_OFFSCREEN elif — uses offscreen lib + bundled
GLVND with RPATH, links -lOpenGL -lEGL instead of -lGL -lX11
- __init__.py: auto-rebuild CFFI when RAYLIB_PLATFORM env changes
(tracks built platform in .raylib_platform marker file)
- Bump version to 5.5.0.5
This lets openpilot CI render headlessly via EGL surfaceless + Mesa
llvmpipe without needing xvfb or any additional apt packages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* raylib: auto-detect CI and use PLATFORM_OFFSCREEN
__init__.py now auto-detects CI on Linux x86_64 and uses
PLATFORM_OFFSCREEN + LIBGL_ALWAYS_SOFTWARE=1 automatically.
No env vars needed in the consuming CI workflow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The CFFI extension was built with py_limited_api=False, producing
version-specific .so files (e.g., cpython-312 on Linux, cpython-314
on macOS). This caused import failures when the build Python version
didn't match the runtime version.
Switch to py_limited_api=True to produce _raylib_cffi.abi3.so which
works across Python 3.x versions.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The shim setup.py extracts .so files from the wheel, but the
generated pyproject.toml didn't include them in package-data, so
they were excluded when uv built a local wheel from the source.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Build the CFFI Python extension (_raylib_cffi.so) during wheel build
instead of deferring to first import. This eliminates the need for
libgl-dev and libx11-dev on the target system.
- setup.py: run build.py after build.sh to compile CFFI extension
- pyproject.toml: include _raylib_cffi*.so in package-data, bump to 5.5.0.3
- _shim_setup.py: extract .so files from wheel alongside data directory
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The shim branch was only copying __init__.py from each package,
which dropped Python source files needed for CFFI builds (build.py,
colors.py, defines.py, enums.py, version.py) and extra packages
like pyray. It also dropped project dependencies like cffi.
- Copy all .py files from the main module, not just __init__.py
- Copy extra packages listed in packages.find.include
- Preserve project dependencies in generated pyproject.toml
Vendor raylib C library + pyray Python bindings (CFFI) from commaai's
raylib and raylib-python-cffi forks.
Supports PLATFORM_DESKTOP (X11/GL) and PLATFORM_COMMA (DRM/EGL/GLES)
backends, auto-detected via /TICI.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Static build of bzip2 1.0.8 (libbz2.a + bzlib.h) for use as a
vendored dependency in openpilot replay/cabana tools.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* build linux wheels inside manylinux_2_28 for glibc 2.28 compat
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* add perl-IPC-Cmd for openssl build in manylinux
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Vendors OpenSSL 3.4.1 as static libraries (libcrypto.a, libssl.a) for
openpilot, following the same pattern as other vendored packages.
Uses module name openssl3 to avoid case-insensitive filesystem conflict
with pyOpenSSL's OpenSSL module on macOS.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Vendors libjpeg-turbo 3.1.0 as a static library for openpilot, following
the same pattern as zstd/ncurses/zeromq.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
LTO bitcode is compiler-version-specific. The wheel built with
clang 17 produces bitcode that clang 16 (used in openpilot CI)
cannot read. Disable IPO to produce standard object files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cppcheck 2.19.1 static analysis tool, built from source. Includes
the MISRA C addon, cfg files, and platform definitions for opendbc
and panda safety analysis.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Header-only Eigen 3.4.0 C++ linear algebra library, downloaded from
GitLab release. Exposes INCLUDE_DIR for scons integration.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Static build of libzmq 4.3.5 providing headers and library for
C/C++ projects that link against zmq.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>