libs: replace libepoxy-stub with real libepoxy

The libepoxy-stub provided a hardcoded stub that returned 0/NULL for
every epoxy_egl_extension_supported, epoxy_has_gl_extension, and
epoxy_gl_version call, plus a fake epoxyConfig.cmake. KWin and Qt6
Wayland code paths were never able to detect GL/EGL extensions or
negotiate GL versions, which broke the KWin rendering pipeline silently.

Replace it with the real libepoxy (anholt/libepoxy fork) — the full
upstream C source, built against Mesa EGL/GLES2, that registers
epoxy::epoxy in CMake, provides libepoxy.pc, and produces the real
epoxy_gl_version / epoxy_has_gl_extension / epoxy_egl_*_supported
runtime values. Recipe bumped to 0.2.3 with v6.0 2026 description.

Also: protected-recipes.toml [libs] no longer lists the stub.
This commit is contained in:
2026-06-09 10:30:36 +03:00
parent 82acea3c8e
commit 8c35e8b4b1
4 changed files with 4 additions and 67 deletions
@@ -1,66 +0,0 @@
#TODO: libepoxy stub — provides epoxy::epoxy cmake target for KWin linking
[source]
path = "source"
[build]
template = "custom"
script = """
DYNAMIC_INIT
mkdir -p "${COOKBOOK_STAGE}/usr/include/epoxy"
mkdir -p "${COOKBOOK_STAGE}/usr/lib/cmake/epoxy"
cat > "${COOKBOOK_STAGE}/usr/include/epoxy/egl.h" << 'EOF'
#pragma once
#include <EGL/egl.h>
#include <EGL/eglext.h>
static inline int epoxy_egl_extension_supported(const char *ext) { (void)ext; return 0; }
EOF
cat > "${COOKBOOK_STAGE}/usr/include/epoxy/gl.h" << 'EOF'
#pragma once
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
static inline int epoxy_gl_version(void) { return 20; }
static inline int epoxy_has_gl_extension(const char *ext) { (void)ext; return 0; }
EOF
cat > "${COOKBOOK_STAGE}/usr/include/epoxy/glx.h" << 'EOF'
#pragma once
EOF
cat > "${COOKBOOK_STAGE}/usr/include/epoxy/gl_generated.h" << 'EOF'
#pragma once
EOF
cat > "${COOKBOOK_STAGE}/usr/include/epoxy/egl_generated.h" << 'EOF'
#pragma once
EOF
cat > stub_epoxy.c << 'CEOF'
int epoxy_egl_extensions_string(void) { return 0; }
int epoxy_has_egl_extension(const char *ext) { (void)ext; return 0; }
int epoxy_gl_version(void) { return 20; }
int epoxy_has_gl_extension(const char *ext) { (void)ext; return 0; }
int epoxy_glx_version(void) { return 0; }
int epoxy_has_glx_extension(const char *ext) { (void)ext; return 0; }
CEOF
x86_64-unknown-redox-gcc -shared -fPIC -o "${COOKBOOK_STAGE}/usr/lib/libepoxy.so" stub_epoxy.c
cat > "${COOKBOOK_STAGE}/usr/lib/cmake/epoxy/epoxyConfig.cmake" << 'EOF'
if(NOT TARGET epoxy::epoxy)
add_library(epoxy::epoxy SHARED IMPORTED)
set_target_properties(epoxy::epoxy PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/../../../lib/libepoxy.so"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/../../../include"
)
endif()
set(epoxy_FOUND TRUE)
EOF
cat > "${COOKBOOK_STAGE}/usr/lib/cmake/epoxy/epoxyConfigVersion.cmake" << 'EOF'
set(PACKAGE_VERSION "1.5.10")
set(PACKAGE_VERSION_COMPATIBLE TRUE)
EOF
"""
+4
View File
@@ -16,3 +16,7 @@ cookbook_meson \
-Dx11=false \
-Degl=yes
"""
[package]
version = "0.2.3"
description = "libepoxy — OpenGL/GLES/EGL function pointer manager. Real upstream source (v6.0 2026 fork of anholt/libepoxy) compiled against Mesa EGL/GLES2 for KWin and Qt6 Wayland on Redox. Replaces the prior libepoxy-stub that returned hardcoded zeros."
-1
View File
@@ -1 +0,0 @@
../../local/recipes/libs/libepoxy-stub