jinja2 3.1.6 + glad 2.0.8: el generador del loader GL que libplacebo trae como submódulo

libplacebo genera su `gl.h` con `python -m glad`, y glad le llega a upstream como submódulo git
(`3rdparty/glad`). El `[source]` de hammer no clona submódulos —sólo repo+commit o
tarball+sha256— así que glad entra como receta propia desde PyPI, que además pinea por sha256.
Es lo mismo que hace Alpine con `py3-glad` como makedepend.

Python puro las dos, mismo molde que `mako`/`markupsafe`: se copia el paquete a site-packages,
sin pip ni wheel. jinja2 es dep de runtime de glad; markupsafe ya estaba en el corpus.

El sdist de glad trae los XML de Khronos adentro ⇒ el generador no sale a la red, que es lo que
lo hace usable dentro del sandbox hermético.

Selladas: jinja2 b3:74a3aa9f (27 ficheros), glad b3:c1d773f2 (75 ficheros).
This commit is contained in:
Sergio
2026-09-03 03:10:00 +00:00
parent 681bb642c2
commit ecc6166dfe
2 changed files with 71 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# glad 2.0.8 (paquete PyPI `glad2`, módulo `glad`) — generador de loaders GL/GLES/EGL/Vulkan.
# Herramienta de BUILD de `libplacebo`: su `src/opengl/include/glad/meson.build` corre
# `python -m glad … --api=gl:core,gles2,egl --header-only --mx` y genera el `gl.h` que compila el
# backend de OpenGL. Sin glad, libplacebo sólo construye con `-Dopengl=disabled` y `mpv` se queda
# sin `vo=gpu-next`.
#
# POR QUÉ ES UNA RECETA Y NO UN SUBMÓDULO. libplacebo trae glad como submódulo git
# (`3rdparty/glad`), y el `[source]` de hammer NO clona submódulos: `Source` sólo entiende
# repo+commit o tarball+sha256. Alpine resuelve lo mismo con `py3-glad` como makedepend, así que
# acá va igual — y de paso el pin queda por sha256 de PyPI, que es más firme que un submódulo.
# El `python_env` de libplacebo hace `append` sobre el PYTHONPATH heredado, no lo reemplaza, así
# que apuntar `PYTHONPATH=/usr/lib/python3.12/site-packages` en la fase alcanza para que lo vea.
#
# Python PURO. El sdist trae los XML de Khronos ya adentro (`glad/files/{gl,egl,vk}.xml`) ⇒ el
# generador NO sale a la red, que es lo que lo hace utilizable en el sandbox hermético.
name = "glad"
version = "2.0.8"
license = "MIT"
[source]
tarball = "https://files.pythonhosted.org/packages/6e/5a/d62b24fe1c7c2f34e15c2aa4418a5327a8550fdc272999a59e0dddebc3ee/glad2-2.0.8.tar.gz"
sha256 = "b84079b9fa404f37171b961bdd1d8da21370e6c818defb8481c5b3fe3d6436da"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
[build.phases]
compile = "true"
install = '''
set -e
SP=/out/usr/lib/python3.12/site-packages
mkdir -p "$SP"
cp -r glad "$SP/glad"
'''
[deps]
build = ["python3", "jinja2", "markupsafe"]
+32
View File
@@ -0,0 +1,32 @@
# jinja2 3.1.6 — motor de plantillas; la dep de RUNTIME de `glad`, que es el generador del loader de
# OpenGL/EGL que usa `libplacebo`. Mismo rol que `mako` tiene para Mesa, y por eso mismo entra igual:
# Python PURO, se copia el paquete a site-packages, sin pip ni wheel (el sandbox es hermético y no
# hay red adentro).
#
# `jinja2/__init__.py` importa `markupsafe` a nivel de módulo ⇒ markupsafe es dep de runtime, y ya
# estaba en el corpus por Mako/Mesa. La copia de `incoming-gnome/py3-jinja2.toml` NO se reusa: esa
# vive en una cola hermana y una receta del corpus no la alcanza (sibling-first, después el padre).
name = "jinja2"
version = "3.1.6"
license = "BSD-3-Clause"
[source]
tarball = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz"
sha256 = "0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
[build.phases]
compile = "true"
install = '''
set -e
SP=/out/usr/lib/python3.12/site-packages
mkdir -p "$SP"
cp -r src/jinja2 "$SP/jinja2"
'''
[deps]
build = ["python3", "markupsafe"]