commit:     2d54fa9acbeda3b6253f41e1ba97c204d28d0a5a
Author:     Nguyen Dinh Dang Duong <dangduong31205 <AT> gmail <DOT> com>
AuthorDate: Thu Jul 10 21:56:39 2025 +0000
Commit:     Nguyen Dinh Dang Duong <dangduong31205 <AT> gmail <DOT> com>
CommitDate: Thu Jul 10 22:15:59 2025 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=2d54fa9a

media-gfx/glslViewer: fix 3.2.4

Add dev-libs/vera as dependency and remove the bundled vera.
Add python use flag to enable python bindings, support multiple
python version.

Signed-off-by: Nguyen Dinh Dang Duong <dangduong31205 <AT> gmail.com>

 media-gfx/glslViewer/Manifest                      |   1 +
 .../glslViewer/files/0001-Fix-CMakelists.patch     | 319 +++++++++++++++++++++
 ...afe-post-install-MIME-and-desktop-databas.patch | 182 ------------
 ...getExposure-result-to-float-to-setUniform.patch | 281 ++++++++++++++++++
 .../files/0002-Install-libvera.so-to-machine.patch |  29 --
 media-gfx/glslViewer/glslViewer-3.2.4.ebuild       |  76 ++++-
 6 files changed, 664 insertions(+), 224 deletions(-)

diff --git a/media-gfx/glslViewer/Manifest b/media-gfx/glslViewer/Manifest
new file mode 100644
index 0000000000..759a213e98
--- /dev/null
+++ b/media-gfx/glslViewer/Manifest
@@ -0,0 +1 @@
+DIST glslViewer-3.2.4.tar.gz 108258877 BLAKE2B 
552beedeafed97372f36a307c2ce3f742d4437ae3357cf3fa30c091953bac834aedde5270313f267657317c433b3e5eb2378427a66b5687de3956e99ae65f21b
 SHA512 
20766ad1fe288d4e193849809b5633635b2d3a551cd46c9378f80c8817aeb90180847f2e9540e02f6c5729e0fa7fd51c45b4a1fa5f7e4ed6e397c58ef3e32c47

diff --git a/media-gfx/glslViewer/files/0001-Fix-CMakelists.patch 
b/media-gfx/glslViewer/files/0001-Fix-CMakelists.patch
new file mode 100644
index 0000000000..a3375f3426
--- /dev/null
+++ b/media-gfx/glslViewer/files/0001-Fix-CMakelists.patch
@@ -0,0 +1,319 @@
+From e692a65ee828896d6d08f9b8b6e8cb0cb04ee2eb Mon Sep 17 00:00:00 2001
+From: Nguyen Dinh Dang Duong <[email protected]>
+Date: Thu, 10 Jul 2025 23:00:42 +0700
+Subject: [PATCH 1/2] Fix CMakelists
+
+---
+ CMakeLists.txt | 226 +++++++++++++++++++++++--------------------------
+ 1 file changed, 104 insertions(+), 122 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0a90b18..672e9b9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,12 +13,8 @@ set(CMAKE_CXX_STANDARD 14)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ set(CMAKE_CXX_EXTENSIONS OFF)
+ 
+-# The compiled vera 
+-add_subdirectory(deps)
+-
+-if(MSVC)
+-    add_definitions( -DPLATFORM_WINDOWS )
+-endif()
++find_package(PkgConfig REQUIRED)
++include_directories(${PROJECT_SOURCE_DIR}/deps)
+ 
+ if (NO_X11 OR FORCE_GBM)
+     add_compile_options(-std=c++14 -DGLM_FORCE_CXX14 -fpermissive -Wno-psabi 
-lpthread)
+@@ -38,7 +34,7 @@ set(CORE_HEADERS
+     "${PROJECT_SOURCE_DIR}/src/core/tools/tracker.h"
+ )
+ 
+-set(CORE_SOURCES 
++set(CORE_SOURCES
+     "${PROJECT_SOURCE_DIR}/src/core/sandbox.cpp"
+     "${PROJECT_SOURCE_DIR}/src/core/sceneRender.cpp"
+     "${PROJECT_SOURCE_DIR}/src/core/uniforms.cpp"
+@@ -48,22 +44,24 @@ set(CORE_SOURCES
+     "${PROJECT_SOURCE_DIR}/src/core/tools/tracker.cpp"
+ )
+ 
+-add_executable(glslViewer 
++add_executable(glslViewer
+     "${PROJECT_SOURCE_DIR}/src/main.cpp"
+     ${CORE_SOURCES}
+ )
+ 
+-
+-include_directories(deps/liblo)
+-target_include_directories(glslViewer PRIVATE deps)
++# Vera
++pkg_check_modules(VERA REQUIRED vera)
++include_directories(${VERA_INCLUDE_DIRS})
++link_libraries(${VERA_LIBRARIES})
+ target_link_libraries(glslViewer PRIVATE vera)
++
+ # target_compile_definitions(vera PUBLIC SUPPORT_PLY_BINARY)
+ target_compile_definitions(glslViewer PRIVATE 
GLSLVIEWER_VERSION_MAJOR=${VERSION_MAJOR})
+ target_compile_definitions(glslViewer PRIVATE 
GLSLVIEWER_VERSION_MINOR=${VERSION_MINOR})
+ target_compile_definitions(glslViewer PRIVATE 
GLSLVIEWER_VERSION_PATCH=${VERSION_PATCH})
+ 
+-if (EMSCRIPTEN)    
+-    
++if (EMSCRIPTEN)
++
+     set(LFLAGS "${LFLAGS} -s USE_GLFW=3")
+     # set(LFLAGS "${LFLAGS} -s FULL_ES2=1")
+     # set(LFLAGS "${LFLAGS} -s FULL_ES3=1")
+@@ -78,17 +76,18 @@ if (EMSCRIPTEN)
+     set(LFLAGS "${LFLAGS} -s NO_DYNAMIC_EXECUTION=1")
+     # set(LFLAGS "${LFLAGS} -s NO_DISABLE_EXCEPTION_CATCHING")
+ 
+-    # Copy the default index.html 
++    # Copy the default index.html
+     file(COPY   assets/index.html DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
+ 
+-    # Add examples folder to the .data file system 
++    # Add examples folder to the .data file system
+     file(COPY   examples DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
+     set(LFLAGS "${LFLAGS} --preload-file examples")
+ 
+     set_target_properties(glslViewer PROPERTIES LINK_FLAGS "${LFLAGS}")
+     target_link_libraries(glslViewer PRIVATE glfw webxr)
+-    
++
+ else()
++    # Curses
+     find_package(Curses)
+     if (CURSES_FOUND)
+         target_compile_definitions(glslViewer PUBLIC SUPPORT_NCURSES)
+@@ -96,8 +95,28 @@ else()
+         target_link_libraries(glslViewer PRIVATE ${CURSES_LIBRARY})
+     endif()
+ 
+-    target_compile_definitions(glslViewer PUBLIC 
+-        SUPPORT_MULTITHREAD_RECORDING 
++    find_library(TINFO_LIB tinfo)
++    if (TINFO_LIB)
++        target_link_libraries(glslViewer PRIVATE ${TINFO_LIB})
++    endif()
++
++    # OpenGL
++    set(OpenGL_GL_PREFERENCE GLVND)
++    find_package(OpenGL REQUIRED)
++    target_include_directories(glslViewer PRIVATE ${OPENGL_INCLUDE_DIR})
++    target_link_libraries(glslViewer PRIVATE OpenGL::GL)
++
++    # Liblo
++    pkg_check_modules(LIBLO REQUIRED liblo)
++    target_include_directories(glslViewer PRIVATE ${LIBLO_INCLUDE_DIRS})
++    target_link_libraries(glslViewer PRIVATE ${LIBLO_LIBRARIES})
++
++    # Glm
++    find_package(glm REQUIRED)
++    target_include_directories(glslViewer PRIVATE ${GLM_INCLUDE_DIRS})
++
++    target_compile_definitions(glslViewer PUBLIC
++        SUPPORT_MULTITHREAD_RECORDING
+         SUPPORT_OSC
+     )
+ 
+@@ -127,105 +146,73 @@ else()
+     # set a default system name - use CMake setting (Linux|Windows|...)
+     set(SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
+ 
+-    # for msvc the SYSTEM_NAME is set win32/64 instead of "Windows"
+-    if(MSVC)
+-        if(CMAKE_CL_64)
+-            set(SYSTEM_NAME "win64")
+-        else()
+-            set(SYSTEM_NAME "win32")
+-        endif()
+-    endif()
+     set(CPACK_PACKAGE_FILE_NAME 
"${CMAKE_PROJECT_NAME}-${VERSION}-${SYSTEM_NAME}-${SYSTEM_ARCH}")
+ 
+-    if (MSVC)
+-          target_link_libraries(glslViewer PRIVATE 
+-            lo_static 
+-            Ws2_32.lib 
+-            Iphlpapi.lib
++    target_link_libraries(glslViewer PRIVATE pthread dl)
++    install(TARGETS glslViewer DESTINATION ${CMAKE_INSTALL_BINDIR})
++
++    if (NOT APPLE)
++        target_link_libraries(glslViewer PRIVATE atomic)
++
++        # Install glslViewer Icon
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.png" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.desktop" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
++
++        # Install supported MIME file types by GlslViewer
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer-types.xml" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages)
++
++        # Add a thumbnailer for 3D Models
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.thumbnailer" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/thumbnailers)
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslThumbnailer.sh"
++                PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ 
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
++                DESTINATION ${CMAKE_INSTALL_BINDIR}
++                RENAME "glslThumbnailer")
++
++        # Add ScreenSaver script
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.py"
++                PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ 
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
++                DESTINATION ${CMAKE_INSTALL_BINDIR}
++                RENAME "glslScreenSaver")
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.frag" 
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
++        install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.yaml" 
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
++
++        find_program(XDG-DESKTOP-MENU_EXECUTABLE xdg-desktop-menu)
++        execute_process(COMMAND ${XDG-DESKTOP-MENU_EXECUTABLE} install 
--novendor ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop)
++
++        # set(CPACK_GENERATOR "DEB")
++        set(DEBSRC_BUILD_DEPENDS debhelper git cmake xorg-dev libgbm-dev 
libglu1-mesa-dev libavcodec-dev libavfilter-dev  libavdevice-dev 
libavformat-dev libavutil-dev libswscale-dev libv4l-dev libjpeg-dev libpng-dev 
libtiff-dev)
++        set(DEBSRC_PACKAGE_DEPENDS ffmpeg libavcodec-extra libavfilter-extra 
xorg-x11-server-Xvfb )
++
++        set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
++
++        set(CPACK_DEBIAN_PACKAGE_DEPENDS)
++        foreach(DEP ${DEBSRC_PACKAGE_DEPENDS})
++        set(CPACK_DEBIAN_PACKAGE_DEPEND "${CPACK_DEBIAN_PACKAGE_DEPENDS}, 
${DEP}")
++        endforeach(DEP ${DEBSRC_PACKAGE_DEPENDS})
++
++        set(CPACK_DEBIAN_BUILD_DEPENDS)
++        foreach(DEP ${DEBSRC_BUILD_DEPENDS})
++        set(CPACK_DEBIAN_BUILD_DEPENDS "${CPACK_DEBIAN_BUILD_DEPENDS}, 
${DEP}")
++        endforeach(DEP ${DEBSRC_BUILD_DEPENDS})
++
++        # find out and set DEB_ARCHITECTURE
++        execute_process(
++            COMMAND dpkg --print-architecture
++            OUTPUT_VARIABLE DEB_ARCHITECTURE
++            OUTPUT_STRIP_TRAILING_WHITESPACE
+         )
+-
+-        install(TARGETS glslViewer)
+-        set(CPACK_GENERATOR "ZIP")
+-
+-    else()
+-        target_link_libraries(glslViewer PRIVATE pthread dl lo_static)
+-        install(TARGETS glslViewer DESTINATION ${CMAKE_INSTALL_BINDIR})
+-        
+-        if (NOT APPLE)
+-            target_link_libraries(glslViewer PRIVATE atomic)
+-
+-            # Install glslViewer Icon
+-            install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.png" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
+-            install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.desktop" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
+-            
+-            # Install supported MIME file types by GlslViewer
+-            install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer-types.xml" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages)
+-            find_program(XDG-MIME_EXECUTABLE xdg-mime)
+-            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
install --novendor 
${CMAKE_INSTALL_FULL_DATAROOTDIR}/mime/packages/glslViewer-types.xml)")
+-            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/lst)")
+-            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/ply)")
+-            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/obj)")
+-            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/gltf-binary)")
+-            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/gltf+json)")
+-            find_program(UPDATE_MIME_DATABASE update-mime-database)
+-            install(CODE "execute_process(COMMAND ${UPDATE_MIME_DATABASE} 
${CMAKE_INSTALL_FULL_DATAROOTDIR}/mime )")
+-            find_program(UPDATE_DESKTOP_DATABASE update-desktop-database)
+-            install(CODE "execute_process(COMMAND ${UPDATE_DESKTOP_DATABASE} 
${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications)")
+-            
+-            # Add a thumbnailer for 3D Models
+-            install(FILES 
"${PROJECT_SOURCE_DIR}/assets/glslViewer.thumbnailer" DESTINATION 
${CMAKE_INSTALL_DATAROOTDIR}/thumbnailers)
+-            install(FILES "${PROJECT_SOURCE_DIR}/assets/glslThumbnailer.sh"
+-                    PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE 
GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+-                    DESTINATION ${CMAKE_INSTALL_BINDIR}
+-                    RENAME "glslThumbnailer")
+-
+-            # Add ScreenSaver script
+-            install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.py"
+-                    PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE 
GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+-                    DESTINATION ${CMAKE_INSTALL_BINDIR}
+-                    RENAME "glslScreenSaver")
+-            install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.frag" 
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
+-            install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.yaml" 
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
+-
+-            find_program(XDG-DESKTOP-MENU_EXECUTABLE xdg-desktop-menu)
+-            execute_process(COMMAND ${XDG-DESKTOP-MENU_EXECUTABLE} install 
--novendor ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop)
+-
+-            # set(CPACK_GENERATOR "DEB")
+-            set(DEBSRC_BUILD_DEPENDS debhelper git cmake xorg-dev libgbm-dev 
libglu1-mesa-dev libavcodec-dev libavfilter-dev  libavdevice-dev 
libavformat-dev libavutil-dev libswscale-dev libv4l-dev libjpeg-dev libpng-dev 
libtiff-dev)
+-            set(DEBSRC_PACKAGE_DEPENDS ffmpeg libavcodec-extra 
libavfilter-extra xorg-x11-server-Xvfb )
+-
+-            set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
+-
+-            set(CPACK_DEBIAN_PACKAGE_DEPENDS)
+-            foreach(DEP ${DEBSRC_PACKAGE_DEPENDS})
+-            set(CPACK_DEBIAN_PACKAGE_DEPEND "${CPACK_DEBIAN_PACKAGE_DEPENDS}, 
${DEP}")
+-            endforeach(DEP ${DEBSRC_PACKAGE_DEPENDS})  
+-
+-            set(CPACK_DEBIAN_BUILD_DEPENDS)
+-            foreach(DEP ${DEBSRC_BUILD_DEPENDS})
+-            set(CPACK_DEBIAN_BUILD_DEPENDS "${CPACK_DEBIAN_BUILD_DEPENDS}, 
${DEP}")
+-            endforeach(DEP ${DEBSRC_BUILD_DEPENDS})
+-
+-            # find out and set DEB_ARCHITECTURE
+-            execute_process(
+-                COMMAND dpkg --print-architecture
+-                OUTPUT_VARIABLE DEB_ARCHITECTURE
+-                OUTPUT_STRIP_TRAILING_WHITESPACE            
+-            )
+-            message(STATUS "package_details.cmake: your architecture is 
${DEB_ARCHITECTURE}")
+-
+-            set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEB_ARCHITECTURE})
+-            set(CPACK_DEBIAN_PACKAGE_SECTION graphics)
+-            set(CPACK_DEBIAN_PACKAGE_PRIORITY extra )
+-            set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Patricio Gonzalez Vivo 
<[email protected]>")
+-            set(CPACK_DEBIAN_DISTRIBUTION_NAME ubuntu )
+-            set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal ) 
+-            set(CPACK_DEBIAN_CHANGELOG "  * Latest development version.")
+-            # set(CPACK_DEBIAN_RESOURCE_FILE_CHANGELOG 
${PROJECT_SOURCE_DIR}/changelog)
+-            # set(CPACK_DEBIAN_UPDATE_CHANGELOG ON)
+-            set(CPACK_PACKAGE_FILE_NAME 
"${CMAKE_PROJECT_NAME}-${VERSION}-${DEB_ARCHITECTURE}")
+-        endif()
+-        
++        message(STATUS "package_details.cmake: your architecture is 
${DEB_ARCHITECTURE}")
++
++        set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEB_ARCHITECTURE})
++        set(CPACK_DEBIAN_PACKAGE_SECTION graphics)
++        set(CPACK_DEBIAN_PACKAGE_PRIORITY extra )
++        set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Patricio Gonzalez Vivo 
<[email protected]>")
++        set(CPACK_DEBIAN_DISTRIBUTION_NAME ubuntu )
++        set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal )
++        set(CPACK_DEBIAN_CHANGELOG "  * Latest development version.")
++        # set(CPACK_DEBIAN_RESOURCE_FILE_CHANGELOG 
${PROJECT_SOURCE_DIR}/changelog)
++        # set(CPACK_DEBIAN_UPDATE_CHANGELOG ON)
++        set(CPACK_PACKAGE_FILE_NAME 
"${CMAKE_PROJECT_NAME}-${VERSION}-${DEB_ARCHITECTURE}")
+     endif()
+ 
+     include(CPack)
+@@ -233,12 +220,8 @@ else()
+ endif()
+ 
+ if (PYTHON_BINDINGS)
+-    find_package(Python3 3.10 REQUIRED COMPONENTS Interpreter Development)
+-
+-    # pybind11
+-    set(DEPS_FOLDER "${PROJECT_SOURCE_DIR}/deps")
+-    add_subdirectory("${DEPS_FOLDER}/pybind11")
+-    include_directories(${pybind11_INCLUDE_DIRS})
++    find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
++    find_package(pybind11 REQUIRED)
+ 
+     set(PYBIND_INCLUDES
+         "${PROJECT_SOURCE_DIR}/src/python/engine.h"
+@@ -255,7 +238,6 @@ if (PYTHON_BINDINGS)
+     target_compile_definitions(PyGlslViewer PRIVATE 
GLSLVIEWER_VERSION_MAJOR=${VERSION_MAJOR})
+     target_compile_definitions(PyGlslViewer PRIVATE 
GLSLVIEWER_VERSION_MINOR=${VERSION_MINOR})
+     target_compile_definitions(PyGlslViewer PRIVATE 
GLSLVIEWER_VERSION_PATCH=${VERSION_PATCH})
+-    target_include_directories(PyGlslViewer PUBLIC ${DEPS_FOLDER})
+     target_link_libraries(PyGlslViewer PRIVATE vera pybind11::module)
+ 
+-endif()
+\ No newline at end of file
++endif()
+-- 
+2.50.0
+

diff --git 
a/media-gfx/glslViewer/files/0001-Removed-unsafe-post-install-MIME-and-desktop-databas.patch
 
b/media-gfx/glslViewer/files/0001-Removed-unsafe-post-install-MIME-and-desktop-databas.patch
deleted file mode 100644
index 3a11ad518b..0000000000
--- 
a/media-gfx/glslViewer/files/0001-Removed-unsafe-post-install-MIME-and-desktop-databas.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 5fe84056dceee18e99cfcc490330475ac2fd7b6c Mon Sep 17 00:00:00 2001
-From: Nguyen Dinh Dang Duong <[email protected]>
-Date: Sat, 28 Jun 2025 04:31:30 +0700
-Subject: [PATCH 1/2] Removed unsafe post-install MIME and desktop database
- updates to avoid sandbox violations
-
-Signed-off-by: Nguyen Dinh Dang Duong <[email protected]>
----
- CMakeLists.txt | 55 ++++++++++++++++++++------------------------------
- 1 file changed, 22 insertions(+), 33 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 6df0206..a7b041c 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -5,7 +5,7 @@ set(VERSION_MINOR 3)
- set(VERSION_PATCH 0)
- set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
- 
--project(glslViewer 
-+project(glslViewer
-         VERSION ${VERSION}
-         LANGUAGES C CXX )
- 
-@@ -13,7 +13,7 @@ set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_EXTENSIONS OFF)
- 
--# The compiled vera 
-+# The compiled vera
- add_subdirectory(deps)
- 
- if(MSVC)
-@@ -38,7 +38,7 @@ set(CORE_HEADERS
-     "${PROJECT_SOURCE_DIR}/src/core/tools/tracker.h"
- )
- 
--set(CORE_SOURCES 
-+set(CORE_SOURCES
-     "${PROJECT_SOURCE_DIR}/src/core/sandbox.cpp"
-     "${PROJECT_SOURCE_DIR}/src/core/sceneRender.cpp"
-     "${PROJECT_SOURCE_DIR}/src/core/uniforms.cpp"
-@@ -48,7 +48,7 @@ set(CORE_SOURCES
-     "${PROJECT_SOURCE_DIR}/src/core/tools/tracker.cpp"
- )
- 
--add_executable(glslViewer 
-+add_executable(glslViewer
-     "${PROJECT_SOURCE_DIR}/src/main.cpp"
-     ${CORE_SOURCES}
- )
-@@ -63,8 +63,8 @@ target_compile_definitions(glslViewer PRIVATE 
GLSLVIEWER_VERSION_MAJOR=${VERSION
- target_compile_definitions(glslViewer PRIVATE 
GLSLVIEWER_VERSION_MINOR=${VERSION_MINOR})
- target_compile_definitions(glslViewer PRIVATE 
GLSLVIEWER_VERSION_PATCH=${VERSION_PATCH})
- 
--if (EMSCRIPTEN)    
--    
-+if (EMSCRIPTEN)
-+
-     set(LFLAGS "${LFLAGS} -s USE_GLFW=3")
-     # set(LFLAGS "${LFLAGS} -s FULL_ES2=1")
-     # set(LFLAGS "${LFLAGS} -s FULL_ES3=1")
-@@ -79,16 +79,16 @@ if (EMSCRIPTEN)
-     set(LFLAGS "${LFLAGS} -s NO_DYNAMIC_EXECUTION=1")
-     # set(LFLAGS "${LFLAGS} -s NO_DISABLE_EXCEPTION_CATCHING")
- 
--    # Copy the default index.html 
-+    # Copy the default index.html
-     file(COPY   assets/index.html DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
- 
--    # Add examples folder to the .data file system 
-+    # Add examples folder to the .data file system
-     file(COPY   examples DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
-     set(LFLAGS "${LFLAGS} --preload-file examples")
- 
-     set_target_properties(glslViewer PROPERTIES LINK_FLAGS "${LFLAGS}")
-     target_link_libraries(glslViewer PRIVATE glfw webxr)
--    
-+
- else()
-     find_package(Curses)
-     if (CURSES_FOUND)
-@@ -97,8 +97,8 @@ else()
-         target_link_libraries(glslViewer PRIVATE ${CURSES_LIBRARY})
-     endif()
- 
--    target_compile_definitions(glslViewer PUBLIC 
--        SUPPORT_MULTITHREAD_RECORDING 
-+    target_compile_definitions(glslViewer PUBLIC
-+        SUPPORT_MULTITHREAD_RECORDING
-         SUPPORT_OSC
-     )
- 
-@@ -139,9 +139,9 @@ else()
-     set(CPACK_PACKAGE_FILE_NAME 
"${CMAKE_PROJECT_NAME}-${VERSION}-${SYSTEM_NAME}-${SYSTEM_ARCH}")
- 
-     if (MSVC)
--          target_link_libraries(glslViewer PRIVATE 
--            lo_static 
--            Ws2_32.lib 
-+          target_link_libraries(glslViewer PRIVATE
-+            lo_static
-+            Ws2_32.lib
-             Iphlpapi.lib
-         )
- 
-@@ -151,28 +151,17 @@ else()
-     else()
-         target_link_libraries(glslViewer PRIVATE pthread dl lo_static)
-         install(TARGETS glslViewer DESTINATION ${CMAKE_INSTALL_BINDIR})
--        
-+
-         if (NOT APPLE)
-             target_link_libraries(glslViewer PRIVATE atomic)
- 
-             # Install glslViewer Icon
-             install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.png" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
-             install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.desktop" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
--            
-+
-             # Install supported MIME file types by GlslViewer
-             install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer-types.xml" 
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages)
--            find_program(XDG-MIME_EXECUTABLE xdg-mime)
--            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
install --novendor 
${CMAKE_INSTALL_FULL_DATAROOTDIR}/mime/packages/glslViewer-types.xml)")
--            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/lst)")
--            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/ply)")
--            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/obj)")
--            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/gltf-binary)")
--            install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} 
default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop 
model/gltf+json)")
--            find_program(UPDATE_MIME_DATABASE update-mime-database)
--            install(CODE "execute_process(COMMAND ${UPDATE_MIME_DATABASE} 
${CMAKE_INSTALL_FULL_DATAROOTDIR}/mime )")
--            find_program(UPDATE_DESKTOP_DATABASE update-desktop-database)
--            install(CODE "execute_process(COMMAND ${UPDATE_DESKTOP_DATABASE} 
${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications)")
--            
-+
-             # Add a thumbnailer for 3D Models
-             install(FILES 
"${PROJECT_SOURCE_DIR}/assets/glslViewer.thumbnailer" DESTINATION 
${CMAKE_INSTALL_DATAROOTDIR}/thumbnailers)
-             install(FILES "${PROJECT_SOURCE_DIR}/assets/glslThumbnailer.sh"
-@@ -200,7 +189,7 @@ else()
-             set(CPACK_DEBIAN_PACKAGE_DEPENDS)
-             foreach(DEP ${DEBSRC_PACKAGE_DEPENDS})
-             set(CPACK_DEBIAN_PACKAGE_DEPEND "${CPACK_DEBIAN_PACKAGE_DEPENDS}, 
${DEP}")
--            endforeach(DEP ${DEBSRC_PACKAGE_DEPENDS})  
-+            endforeach(DEP ${DEBSRC_PACKAGE_DEPENDS})
- 
-             set(CPACK_DEBIAN_BUILD_DEPENDS)
-             foreach(DEP ${DEBSRC_BUILD_DEPENDS})
-@@ -211,7 +200,7 @@ else()
-             execute_process(
-                 COMMAND dpkg --print-architecture
-                 OUTPUT_VARIABLE DEB_ARCHITECTURE
--                OUTPUT_STRIP_TRAILING_WHITESPACE            
-+                OUTPUT_STRIP_TRAILING_WHITESPACE
-             )
-             message(STATUS "package_details.cmake: your architecture is 
${DEB_ARCHITECTURE}")
- 
-@@ -220,13 +209,13 @@ else()
-             set(CPACK_DEBIAN_PACKAGE_PRIORITY extra )
-             set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Patricio Gonzalez Vivo 
<[email protected]>")
-             set(CPACK_DEBIAN_DISTRIBUTION_NAME ubuntu )
--            set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal ) 
-+            set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal )
-             set(CPACK_DEBIAN_CHANGELOG "  * Latest development version.")
-             # set(CPACK_DEBIAN_RESOURCE_FILE_CHANGELOG 
${PROJECT_SOURCE_DIR}/changelog)
-             # set(CPACK_DEBIAN_UPDATE_CHANGELOG ON)
-             set(CPACK_PACKAGE_FILE_NAME 
"${CMAKE_PROJECT_NAME}-${VERSION}-${DEB_ARCHITECTURE}")
-         endif()
--        
-+
-     endif()
- 
-     include(CPack)
-@@ -259,4 +248,4 @@ if (PYTHON_BINDINGS)
-     target_include_directories(PyGlslViewer PUBLIC ${DEPS_FOLDER})
-     target_link_libraries(PyGlslViewer PRIVATE vera pybind11::module)
- 
--endif()
-\ No newline at end of file
-+endif()
--- 
-2.50.0
-

diff --git 
a/media-gfx/glslViewer/files/0002-Cast-getExposure-result-to-float-to-setUniform.patch
 
b/media-gfx/glslViewer/files/0002-Cast-getExposure-result-to-float-to-setUniform.patch
new file mode 100644
index 0000000000..5abbb6f39d
--- /dev/null
+++ 
b/media-gfx/glslViewer/files/0002-Cast-getExposure-result-to-float-to-setUniform.patch
@@ -0,0 +1,281 @@
+From 9e2959b03e256ec9a3d43e1bcaa4c5ddd595c69c Mon Sep 17 00:00:00 2001
+From: Nguyen Dinh Dang Duong <[email protected]>
+Date: Thu, 10 Jul 2025 23:25:00 +0700
+Subject: [PATCH 2/2] Cast getExposure() result to float to setUniform
+
+---
+ src/core/uniforms.cpp | 70 +++++++++++++++++++++----------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
+
+diff --git a/src/core/uniforms.cpp b/src/core/uniforms.cpp
+index 4182977..3b76f23 100644
+--- a/src/core/uniforms.cpp
++++ b/src/core/uniforms.cpp
+@@ -16,7 +16,7 @@
+ 
+ std::string UniformData::getType() {
+     if (size == 1) return (bInt ? "int" : "float");
+-    else return (bInt ? "ivec" : "vec") + vera::toString(size); 
++    else return (bInt ? "ivec" : "vec") + vera::toString(size);
+ }
+ 
+ void UniformData::set(const UniformValue &_value, size_t _size, bool _int, 
bool _queue) {
+@@ -27,13 +27,13 @@ void UniformData::set(const UniformValue &_value, size_t 
_size, bool _int, bool
+         queue.push( _value );
+     else
+         value = _value;
+-    
++
+     change = true;
+ }
+ 
+ void UniformData::parse(const std::vector<std::string>& _command, size_t 
_start, bool _queue) {;
+     UniformValue candidate;
+-    for (size_t i = _start; i < _command.size() && i < 5; i++) 
++    for (size_t i = _start; i < _command.size() && i < 5; i++)
+         candidate[i-_start] = vera::toFloat(_command[i]);
+ 
+     set(candidate, _command.size() - _start, false, _queue);
+@@ -88,14 +88,14 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+     //
+     functions["u_iblLuminance"] = UniformFunction("float", 
[this](vera::Shader& _shader) {
+         if (activeCamera)
+-            _shader.setUniform("u_iblLuminance", 30000.0f * 
activeCamera->getExposure());
++            _shader.setUniform("u_iblLuminance", 30000.0f * 
static_cast<float>(activeCamera->getExposure()));
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(30000.0f * activeCamera->getExposure());
+         return std::string("");
+     });
+-    
++
+     // CAMERA UNIFORMS
+     //
+     functions["u_camera"] = UniformFunction("vec3", [this](vera::Shader& 
_shader) {
+@@ -112,7 +112,7 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+         if (activeCamera)
+             _shader.setUniform("u_cameraDistance", 
activeCamera->getDistance());
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(activeCamera->getDistance());
+         return std::string("");
+@@ -122,7 +122,7 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+         if (activeCamera)
+             _shader.setUniform("u_cameraNearClip", 
activeCamera->getNearClip());
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(activeCamera->getNearClip());
+         return std::string("");
+@@ -132,9 +132,9 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+         if (activeCamera)
+             _shader.setUniform("u_cameraFarClip", activeCamera->getFarClip());
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+-            return vera::toString(activeCamera->getFarClip()); 
++            return vera::toString(activeCamera->getFarClip());
+         return std::string("");
+     });
+ 
+@@ -150,9 +150,9 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+ 
+     functions["u_cameraExposure"] = UniformFunction("float", 
[this](vera::Shader& _shader) {
+         if (activeCamera)
+-            _shader.setUniform("u_cameraExposure", 
activeCamera->getExposure());
++            _shader.setUniform("u_cameraExposure", 
static_cast<float>(activeCamera->getExposure()));
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(activeCamera->getExposure());
+         return std::string("");
+@@ -162,7 +162,7 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+         if (activeCamera)
+             _shader.setUniform("u_cameraAperture", 
activeCamera->getAperture());
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(activeCamera->getAperture());
+         return std::string("");
+@@ -172,7 +172,7 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+         if (activeCamera)
+             _shader.setUniform("u_cameraShutterSpeed", 
activeCamera->getShutterSpeed());
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(activeCamera->getShutterSpeed());
+         return std::string("");
+@@ -182,7 +182,7 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+         if (activeCamera)
+             _shader.setUniform("u_cameraSensitivity", 
activeCamera->getSensitivity());
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(activeCamera->getSensitivity());
+         return std::string("");
+@@ -192,12 +192,12 @@ Uniforms::Uniforms() : m_frame(0), m_play(true), 
m_change(false) {
+         if (activeCamera)
+             _shader.setUniform("u_cameraChange", activeCamera->bChange);
+     },
+-    [this]() { 
++    [this]() {
+         if (activeCamera)
+             return vera::toString(activeCamera->bChange);
+         return std::string("");
+     });
+-    
++
+     functions["u_normalMatrix"] = UniformFunction("mat3", 
[this](vera::Shader& _shader) {
+         if (activeCamera)
+             _shader.setUniform("u_normalMatrix", 
activeCamera->getNormalMatrix());
+@@ -248,7 +248,7 @@ bool Uniforms::feedTo(vera::Shader *_shader, bool _lights, 
bool _buffers ) {
+     }
+ 
+     // Pass user defined uniforms (only if the shader code or scene had 
changed)
+-    // if (m_change) 
++    // if (m_change)
+     {
+         for (UniformDataMap::iterator it = data.begin(); it != data.end(); 
++it) {
+             _shader->setUniform(it->first, it->second.value.data(), 
it->second.size);
+@@ -291,7 +291,7 @@ bool Uniforms::feedTo(vera::Shader *_shader, bool _lights, 
bool _buffers ) {
+ 
+         for (size_t i = 0; i < doubleBuffers.size(); i++)
+             _shader->setUniformTexture("u_doubleBuffer" + vera::toString(i), 
doubleBuffers[i]->src, _shader->textureIndex++ );
+-    
++
+         for (size_t i = 0; i < floods.size(); i++)
+             _shader->setUniformTexture("u_flood" + vera::toString(i), 
floods[i].dst, _shader->textureIndex++ );
+     }
+@@ -300,7 +300,7 @@ bool Uniforms::feedTo(vera::Shader *_shader, bool _lights, 
bool _buffers ) {
+     for (size_t i = 0; i < pyramids.size(); i++)
+         _shader->setUniformTexture("u_pyramid" + vera::toString(i), 
pyramids[i].getResult(), _shader->textureIndex++ );
+ 
+-    
++
+     if (_lights) {
+         // Pass Light Uniforms
+         if (lights.size() == 1) {
+@@ -318,7 +318,7 @@ bool Uniforms::feedTo(vera::Shader *_shader, bool _lights, 
bool _buffers ) {
+         }
+         else {
+             // TODO:
+-            //      - Lights should be pass as structs?? 
++            //      - Lights should be pass as structs??
+ 
+             for (vera::LightsMap::iterator it = lights.begin(); it != 
lights.end(); ++it) {
+                 std::string name = "u_" + it->first;
+@@ -336,7 +336,7 @@ bool Uniforms::feedTo(vera::Shader *_shader, bool _lights, 
bool _buffers ) {
+                 _shader->setUniformDepthTexture(name + "ShadowMap", 
it->second->getShadowMap(), _shader->textureIndex++ );
+             }
+         }
+-        
++
+         if (activeCubemap) {
+             _shader->setUniformTextureCube("u_cubeMap", 
(vera::TextureCube*)activeCubemap);
+             _shader->setUniform("u_SH", activeCubemap->SH, 9);
+@@ -372,12 +372,12 @@ void Uniforms::unflagChange() {
+         activeCamera->bChange = false;
+ }
+ 
+-bool Uniforms::haveChange() { 
++bool Uniforms::haveChange() {
+     if (activeCamera)
+         if (activeCamera->bChange)
+             return true;
+-            
+-    if (functions["u_time"].present || 
++
++    if (functions["u_time"].present ||
+         functions["u_date"].present ||
+         functions["u_delta"].present ||
+         functions["u_mouse"].present)
+@@ -402,7 +402,7 @@ void Uniforms::checkUniforms( const std::string 
&_vert_src, const std::string &_
+         if ( it->second.present != present ) {
+             it->second.present = present;
+             m_change = true;
+-        } 
++        }
+     }
+ }
+ 
+@@ -515,16 +515,16 @@ void Uniforms::setStreamsRestart() {
+ void Uniforms::printAvailableUniforms(bool _non_active) {
+     if (_non_active) {
+         // Print all Native Uniforms (they carry functions)
+-        for (UniformFunctionsMap::iterator it= functions.begin(); it != 
functions.end(); ++it) {                
++        for (UniformFunctionsMap::iterator it= functions.begin(); it != 
functions.end(); ++it) {
+             std::cout << "uniform " << it->second.type << ' ' << it->first << 
";";
+-            if (it->second.print) 
++            if (it->second.print)
+                 std::cout << " // " << it->second.print();
+             std::cout << std::endl;
+         }
+     }
+     else {
+         // Print Native Uniforms (they carry functions) that are present on 
the shader
+-        for (UniformFunctionsMap::iterator it= functions.begin(); it != 
functions.end(); ++it) {                
++        for (UniformFunctionsMap::iterator it= functions.begin(); it != 
functions.end(); ++it) {
+             if (it->second.present) {
+                 std::cout<< "uniform " << it->second.type << ' ' << it->first 
<< ";";
+                 if (it->second.print)
+@@ -567,7 +567,7 @@ void Uniforms::printDefinedUniforms(bool _csv){
+                 std::cout << "uniform " << it->second[frame].getType() << "  
" << it->first << "; // " << it->second[frame].print() << std::endl;
+             }
+         }
+-    }    
++    }
+ }
+ 
+ void Uniforms::addDefine(const std::string& _define, const std::string& 
_value) {
+@@ -597,7 +597,7 @@ void Uniforms::printBuffers() {
+         std::cout << "uniform sampler2D u_doubleBuffer" << i << ";" << 
std::endl;
+ 
+     for (size_t i = 0; i < pyramids.size(); i++)
+-        std::cout << "uniform sampler2D u_pyramid" << i << ";" << std::endl;  
++        std::cout << "uniform sampler2D u_pyramid" << i << ";" << std::endl;
+ 
+     if (functions["u_scene"].present)
+         std::cout << "uniform sampler2D u_scene;" << std::endl;
+@@ -642,7 +642,7 @@ bool Uniforms::addCameraPath( const std::string& _filename 
) {
+         //     );
+ 
+         while (std::getline(is, line)) {
+-            // If line not commented 
++            // If line not commented
+             if (line[0] == '#')
+                 continue;
+ 
+@@ -669,9 +669,9 @@ bool Uniforms::addCameraPath( const std::string& _filename 
) {
+             // glm::mat4 projection = glm::ortho(0.0f, w, h, 0.0f, near, far);
+             // glm::mat4 ndc = glm::mat4(
+             //     fL,     0.0f,   0.0f,   0.0f,
+-            //     0.0f,   fL,     0.0f,   0.0f, 
++            //     0.0f,   fL,     0.0f,   0.0f,
+             //     cx,     cy,     1.0f,   0.0f,
+-            //     0.0f,   0.0f,   0.0f,   1.0f  
++            //     0.0f,   0.0f,   0.0f,   1.0f
+             // );
+             // frame.projection = projection * ndc;
+ 
+@@ -681,7 +681,7 @@ bool Uniforms::addCameraPath( const std::string& _filename 
) {
+                 (w - 2.0f*cx)/w,    (h-2.0f*cy)/h,      (-far-near)/delta,    
     -1.0f,
+                 0.0f,               0.0f,               -2.0f*far*near/delta, 
      0.0f
+             );
+-            
++
+             // frame.projection = glm::mat4(
+             //     fL/cx,      0.0f,   0.0f,                   0.0f,
+             //     0.0f,       fL/cy,  0.0f,                   0.0f,
+-- 
+2.50.0
+

diff --git 
a/media-gfx/glslViewer/files/0002-Install-libvera.so-to-machine.patch 
b/media-gfx/glslViewer/files/0002-Install-libvera.so-to-machine.patch
deleted file mode 100644
index ae9500eccf..0000000000
--- a/media-gfx/glslViewer/files/0002-Install-libvera.so-to-machine.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From d813c82384ebd642376e09d73d6254a244f2b40a Mon Sep 17 00:00:00 2001
-From: Nguyen Dinh Dang Duong <[email protected]>
-Date: Sat, 28 Jun 2025 04:49:46 +0700
-Subject: [PATCH 2/2] Install libvera.so to machine
-
-`
----
- CMakeLists.txt | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a7b041c..03cf64d 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -16,6 +16,11 @@ set(CMAKE_CXX_EXTENSIONS OFF)
- # The compiled vera
- add_subdirectory(deps)
- 
-+install(TARGETS vera
-+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-+
- if(MSVC)
-     add_definitions( -DPLATFORM_WINDOWS )
- endif()
--- 
-2.50.0
-

diff --git a/media-gfx/glslViewer/glslViewer-3.2.4.ebuild 
b/media-gfx/glslViewer/glslViewer-3.2.4.ebuild
index 606acf7c01..48a132e656 100644
--- a/media-gfx/glslViewer/glslViewer-3.2.4.ebuild
+++ b/media-gfx/glslViewer/glslViewer-3.2.4.ebuild
@@ -3,51 +3,101 @@
 
 EAPI=8
 
-inherit cmake git-r3
+# pybind11 has not bump python to 3.14 yet
+PYTHON_COMPAT=( python3_{11..13} )
+inherit cmake flag-o-matic python-r1
 
 DESCRIPTION="Console-based GLSL live-coding viewer"
 HOMEPAGE="https://github.com/patriciogonzalezvivo/glslViewer";
-EGIT_REPO_URI="https://github.com/patriciogonzalezvivo/glslViewer.git";
-EGIT_COMMIT="7eb6254cb4cedf03f1c78653f90905fe0c3b48fb"
+SRC_URI="https://codeload.github.com/patriciogonzalezvivo/glslViewer/tar.gz/refs/tags/${PV}
 -> ${P}.tar.gz"
 
-LICENSE="BSD"
+LICENSE="BSD MIT"
 SLOT="0"
-IUSE="ffmpeg xvfb"
+
+IUSE="X ffmpeg xvfb python"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
 
 DEPEND="
        media-libs/glu
        sys-libs/ncurses
+       x11-misc/shared-mime-info
+       dev-libs/lygia
+       media-libs/liblo
+       dev-libs/vera
+       media-libs/glm
        ffmpeg? (
                media-video/ffmpeg
        )
        xvfb? (
                x11-base/xorg-server[xvfb]
        )
-       x11-misc/shared-mime-info
+       python? (
+               ${PYTHON_DEPS}
+               $(python_gen_cond_dep '
+                       dev-python/pybind11[${PYTHON_USEDEP}]
+               ')
+       )
 "
 RDEPEND="${DEPEND}"
-BDEPEND="
-       dev-build/cmake
-       virtual/pkgconfig
-"
 
 PATCHES=(
-       
"${FILESDIR}/0001-Removed-unsafe-post-install-MIME-and-desktop-databas.patch"
-       "${FILESDIR}/0002-Install-libvera.so-to-machine.patch"
+       "${FILESDIR}/0001-Fix-CMakelists.patch"
+       "${FILESDIR}/0002-Cast-getExposure-result-to-float-to-setUniform.patch"
 )
 
 src_configure() {
        local mycmakeargs=(
-               -DCMAKE_EXE_LINKER_FLAGS="-ltinfo"
+               -DCMAKE_INSTALL_PREFIX=/usr
+               -DCMAKE_INSTALL_LIBDIR="$(get_libdir)"
+               -DNO_X11="$(usex X OFF ON)"
+       )
+       append-cxxflags "-DGL_OPENGL -DDRIVER_GLFW"
+       cmake_src_configure
+       if use python; then
+               python_foreach_impl python_configure
+       fi
+}
+
+python_configure() {
+       mkdir -p "${BUILD_DIR}" || die "mkdir failed"
+       pushd "${BUILD_DIR}" > /dev/null || die "pushd failed"
+       local mycmakeargs=(
+               -DCMAKE_INSTALL_PREFIX=/usr
+               -DCMAKE_INSTALL_LIBDIR="$(get_libdir)"
+               -DNO_X11="$(usex X OFF ON)"
+               -DPYTHON_BINDINGS=ON
+               -DPython3_EXECUTABLE="${PYTHON}"
        )
+       append-cxxflags "-DGL_OPENGL -DDRIVER_GLFW"
        cmake_src_configure
+       popd >/dev/null || die "popd failed"
+}
+
+src_compile() {
+       cmake_src_compile
+       if use python; then
+               python_foreach_impl python_compile
+       fi
+}
+
+python_compile() {
+       pushd "${BUILD_DIR}" > /dev/null || die "pushd failed"
+       cmake_src_compile
+       popd >/dev/null || die "popd failed"
 }
 
 src_install() {
        cmake_src_install
+       if use python; then
+               python_foreach_impl python_install
+       fi
        dodoc README.md
 }
 
+python_install() {
+       python_domodule "${BUILD_DIR}"/PyGlslViewer*.so || die "failed to 
install PyGlslViewer module"
+}
+
 pkg_postinst() {
        xdg-icon-resource forceupdate || die
        update-mime-database /usr/share/mime || die


Reply via email to