Skip to content

panda3d: Add version 1.10.16 - #3262

Draft
luhenry wants to merge 2 commits into
mainfrom
panda3d
Draft

luhenry wants to merge 2 commits into
mainfrom
panda3d

Conversation

@luhenry

@luhenry luhenry commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Compiles the Panda3D 3D engine's C++ core and its generated Python bindings via makepanda. Upstream publishes no riscv64 wheel.

Mirrors upstream's makepanda job of ci.yml.

Differs from upstream

  • Drops ODE physics and Cg shaders - no riscv64 package for either, same as upstream's own Linux CI already dropping Bullet.
  • Builds cp312/cp313/cp314/cp314t in one container run, reusing makepanda's own outputdir cache across interpreters like upstream's own CI loop does.

Testing

  • Installs each built wheel into a venv and runs the upstream pytest suite - same as upstream.

License: OK.

Patches

  • 0001-makepanda-detect-manylinux_2_39_riscv64.patch - To upstream, not yet submitted. makepanda's own --wheel platform-tag detection only recognizes specific glibc files none of manylinux_2_39_riscv64 has, so it falls back to a non-manylinux tag; reproduces on x86_64 too (confirmed locally).

CI pending.

Panda3D's own makepanda.py build/wheel tooling probes each native
dependency (OpenGL, X11, audio, physics, Cg shaders, ...) and silently
drops the feature when it's missing rather than failing the build, the
same way upstream's own Linux CI already drops features it has no
dev package for (Bullet). That makes the port tractable: install the
subset of upstream's apt-get list that Rocky 10 riscv64 actually has
(bison/flex/freetype/mesa-libGL/libjpeg-turbo/libpng/libvorbis/libX11
family/openal-soft/zlib/openssl), drop ode-devel (not packaged for
Rocky 10) and nvidia-cg-toolkit (x86-only, never had a riscv64 build),
and let SmartPkgEnable skip ODE/Cg gracefully.

The one real blocker is makepanda's own --wheel platform-tag detection:
it recognizes manylinux1/2010/2014/2_24/2_28 by checking for a specific
versioned glibc file, none of which exist in manylinux_2_39_riscv64, so
it falls through to a plain (non-manylinux) linux_riscv64 tag -
confirmed locally against an x86_64 Ubuntu host, which hits the exact
same fallback. patches/panda3d/1.10.16 adds a branch keyed on the
target arch instead.

A single job builds cp312/cp313/cp314/cp314t in one container
invocation, reusing makepanda's own outputdir-keyed dependency cache
across interpreters (matching upstream's own CI, which loops the same
--outputdir across every Python version it supports) rather than
rebuilding the ~700k-line engine from scratch per interpreter.
luhenry added a commit that referenced this pull request Oct 15, 2026
@luhenry
luhenry marked this pull request as draft October 15, 2026 12:13
dnf fails with "Unable to find a match: openal-soft-devel": the package
exists only in EPEL on RHEL derivatives, and manylinux installs no EPEL
on riscv64 (and Rocky 10's own BaseOS/AppStream/CRB for riscv64 carry no
openal package under any name either). Drop it from the install list,
same treatment already given to ode-devel and nvidia-cg-toolkit --
makepanda's SmartPkgEnable will probe for OpenAL, find it missing, and
silently skip audio support instead of failing the build.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant