From 7e9151084ef7236d0b87a25444b81ac43433b59d Mon Sep 17 00:00:00 2001 From: Saikari Date: Fri, 30 Jan 2026 05:04:50 +0300 Subject: [PATCH 1/3] fix pixi run examples for linux --- examples/example_glfw3.cpp | 28 ++++++++++++++++++++++++---- pixi.toml | 9 +++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/examples/example_glfw3.cpp b/examples/example_glfw3.cpp index b133e9af..a37e876c 100644 --- a/examples/example_glfw3.cpp +++ b/examples/example_glfw3.cpp @@ -120,9 +120,14 @@ int main() return -1; } + std::cout << "GLFW Version: " << glfwGetVersionString() << "\n"; + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + // Force GLX context creation API to ensure compatibility with GLEW + glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_NATIVE_CONTEXT_API); + #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); #endif @@ -141,15 +146,30 @@ int main() glfwMakeContextCurrent(window); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + // Check if context is valid using standard GL + const GLubyte* renderer = glGetString(GL_RENDERER); + const GLubyte* version = glGetString(GL_VERSION); + if (renderer && version) { + std::cout << "Renderer: " << renderer << "\n"; + std::cout << "OpenGL version supported: " << version << "\n"; + } else { + std::cerr << "Failed to get GL_RENDERER or GL_VERSION. Context might be invalid.\n"; + } + // ---------- GLEW init ---------- glewExperimental = GL_TRUE; GLenum glewErr = glewInit(); if (glewErr != GLEW_OK) { - std::cerr << "Failed to initialize GLEW: " << reinterpret_cast(glewGetErrorString(glewErr)) - << "\n"; - glfwTerminate(); - return -1; + // Ignore NO_GLX_DISPLAY if we have a valid context + if (glewErr == GLEW_ERROR_NO_GLX_DISPLAY && renderer) { + std::cerr << "GLEW warning: " << glewGetErrorString(glewErr) << " (Ignored because context seems valid)\n"; + } else { + std::cerr << "Failed to initialize GLEW: " << reinterpret_cast(glewGetErrorString(glewErr)) + << "\n"; + glfwTerminate(); + return -1; + } } // ---------- GL state ---------- diff --git a/pixi.toml b/pixi.toml index ca51768d..8dadfa38 100644 --- a/pixi.toml +++ b/pixi.toml @@ -37,6 +37,15 @@ ninja = ">=1.13.2,<2" [target.linux-64.dependencies] mesa-libgl-devel-cos7-x86_64 = ">=18.3.4,<19" +xorg-x11-server-xvfb-cos7-x86_64 = ">=1.20.4,<2" + +[target.linux-64.activation.env] +__GLX_VENDOR_LIBRARY_NAME = "mesa" +EGL_PLATFORM = "x11" +GLFW_PLATFORM = "x11" + +[target.linux-64.tasks] +examples = { cwd = "pixi", cmd = "xvfb-run -a -s '-screen 0 1024x768x24 +extension GLX +render' cmake -DCMAKE_BUILD_TYPE=Debug -P run.examples.cmake", depends-on = ["build"] } [target.win-64.dependencies] mesa-libgl-devel-cos7-x86_64 = ">=18.3.4,<19" From 0e792c9b9cfe6e8f206e315b2beca739b39edcb1 Mon Sep 17 00:00:00 2001 From: Saikari Date: Fri, 30 Jan 2026 05:06:14 +0300 Subject: [PATCH 2/3] add pixi.lock to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index d019ea73..6473a829 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ /clang-coverage/ *.gcov *.bin +# pixi lock +pixi.lock # pixi environments .pixi/* !.pixi/config.toml From 72404f21594f2847e83516644991385cce40aa58 Mon Sep 17 00:00:00 2001 From: Saikari Date: Fri, 30 Jan 2026 05:13:27 +0300 Subject: [PATCH 3/3] do similiar for aarch64 linux --- pixi.toml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pixi.toml b/pixi.toml index 8dadfa38..4a6418a5 100644 --- a/pixi.toml +++ b/pixi.toml @@ -58,3 +58,12 @@ mesa-libgl-devel-cos7-aarch64 = ">=18.3.4,<19" [target.linux-aarch64.dependencies] mesa-libgl-devel-cos7-aarch64 = ">=18.3.4,<19" +xorg-x11-server-xvfb-cos7-aarch64 = ">=1.20.4,<2" + +[target.linux-aarch64.activation.env] +__GLX_VENDOR_LIBRARY_NAME = "mesa" +EGL_PLATFORM = "x11" +GLFW_PLATFORM = "x11" + +[target.linux-aarch64.tasks] +examples = { cwd = "pixi", cmd = "xvfb-run -a -s '-screen 0 1024x768x24 +extension GLX +render' cmake -DCMAKE_BUILD_TYPE=Debug -P run.examples.cmake", depends-on = ["build"] }