From b3787969586196bcc2d8a7db17a11f790fa6af4f Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Tue, 25 Nov 2025 16:13:58 -0500
Subject: [PATCH 01/16] better about box
Signed-off-by: Patrick Bergeron
---
cmake/dependencies/glew.cmake | 28 +--
cmake/dependencies/imgui.cmake | 13 +-
cmake/dependencies/python3.cmake | 56 +++--
src/lib/app/RvCommon/CMakeLists.txt | 129 ++++++++++
src/lib/app/RvCommon/RvApplication.cpp | 11 +
src/lib/app/RvCommon/generate_about_rv.py | 288 ++++++++++++++++++++++
6 files changed, 482 insertions(+), 43 deletions(-)
create mode 100755 src/lib/app/RvCommon/generate_about_rv.py
diff --git a/cmake/dependencies/glew.cmake b/cmake/dependencies/glew.cmake
index 29ed756d5..ce8d4b617 100644
--- a/cmake/dependencies/glew.cmake
+++ b/cmake/dependencies/glew.cmake
@@ -9,6 +9,11 @@ PROCESSORCOUNT(_cpu_count)
RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_GLEW" "e1a80a9f12d7def202d394f46e44cfced1104bfb" "make" "")
+# The actual GLEW version (the _version above is a git commit hash)
+SET(_glew_version
+ "2.2.0"
+)
+
SET(_download_url
"https://github.com/nigels-com/glew/archive/${_version}.zip"
)
@@ -33,11 +38,11 @@ ENDIF()
IF(RV_TARGET_DARWIN)
SET(_glew_lib_name
- ${CMAKE_SHARED_LIBRARY_PREFIX}GLEW.2.2.0${CMAKE_SHARED_LIBRARY_SUFFIX}
+ ${CMAKE_SHARED_LIBRARY_PREFIX}GLEW.${_glew_version}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
ELSE()
SET(_glew_lib_name
- ${CMAKE_SHARED_LIBRARY_PREFIX}GLEW${CMAKE_SHARED_LIBRARY_SUFFIX}.2.2.0
+ ${CMAKE_SHARED_LIBRARY_PREFIX}GLEW${CMAKE_SHARED_LIBRARY_SUFFIX}.${_glew_version}
)
ENDIF()
SET(_glew_lib
@@ -52,19 +57,12 @@ EXTERNALPROJECT_ADD(
URL_MD5 ${_download_hash}
DOWNLOAD_NAME ${_target}_${_version}.zip
DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
- # Patch to fix the build issue with OpenGL-Registry
- # Pinning the OpenGL-Registry version to a specific commit
- # https://github.com/nigels-com/glew/issues/449
+ # Patch to fix the build issue with OpenGL-Registry Pinning the OpenGL-Registry version to a specific commit https://github.com/nigels-com/glew/issues/449
# Also clone the required glfixes repository
- PATCH_COMMAND
- cd auto &&
- git clone https://github.com/KhronosGroup/OpenGL-Registry.git || true &&
- cd OpenGL-Registry &&
- git checkout a77f5b6ffd0b0b74904f755ae977fa278eac4e95 &&
- cd .. &&
- git clone --depth=1 --branch glew https://github.com/nigels-com/glfixes glfixes || true &&
- touch OpenGL-Registry/.dummy &&
- cd ..
+ PATCH_COMMAND
+ cd auto && git clone https://github.com/KhronosGroup/OpenGL-Registry.git || true && cd OpenGL-Registry && git checkout
+ a77f5b6ffd0b0b74904f755ae977fa278eac4e95 && cd .. && git clone --depth=1 --branch glew https://github.com/nigels-com/glfixes glfixes || true && touch
+ OpenGL-Registry/.dummy && cd ..
CONFIGURE_COMMAND cd auto && ${_make_command} && cd .. && ${_make_command}
BUILD_COMMAND ${_make_command} -j${_cpu_count} GLEW_DEST=${_install_dir}
INSTALL_COMMAND ${_make_command} install LIBDIR=${_lib_dir} GLEW_DEST=${_install_dir}
@@ -103,6 +101,6 @@ ADD_CUSTOM_TARGET(
ADD_DEPENDENCIES(dependencies ${_target}-stage-target)
SET(RV_DEPS_GLEW_VERSION
- ${_version}
+ ${_glew_version}
CACHE INTERNAL "" FORCE
)
diff --git a/cmake/dependencies/imgui.cmake b/cmake/dependencies/imgui.cmake
index bb4a7fe14..fde4cadc2 100644
--- a/cmake/dependencies/imgui.cmake
+++ b/cmake/dependencies/imgui.cmake
@@ -42,7 +42,7 @@ ENDIF()
IF(RV_TARGET_WINDOWS)
SET(_libpath
- ${_bin_dir}/${_libname}
+ ${_bin_dir}/${_libname}
)
ELSE()
SET(_libpath
@@ -110,7 +110,6 @@ IF(NOT _qt_location)
MESSAGE(FATAL_ERROR "Qt is not found in path \"${_qt_location}\". Please provide -DRV_DEPS_QT${_qt_major}_LOCATION= to CMake.")
ENDIF()
-
SET(_patch_command_for_imgui
patch -p1 < ${CMAKE_CURRENT_SOURCE_DIR}/patch/imgui_cpp_h.patch
)
@@ -127,8 +126,8 @@ EXTERNALPROJECT_ADD(
${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/imgui/CMakeLists.txt ${CMAKE_BINARY_DIR}/${_target}/src/CMakeLists.txt && ${CMAKE_COMMAND} -E
copy_directory ${CMAKE_BINARY_DIR}/${_target}/deps/implot ${CMAKE_BINARY_DIR}/${_target}/src/implot && ${CMAKE_COMMAND} -E copy_directory
${CMAKE_BINARY_DIR}/${_target}/deps/imgui-backend-qt/backends ${CMAKE_BINARY_DIR}/${_target}/src/backends && ${CMAKE_COMMAND} -E copy_directory
- ${CMAKE_BINARY_DIR}/${_target}/deps/imgui-node-editor ${CMAKE_BINARY_DIR}/${_target}/src/imgui-node-editor
- && ${_patch_command_for_imgui_backend_qt} && ${_patch_command_for_imgui}
+ ${CMAKE_BINARY_DIR}/${_target}/deps/imgui-node-editor ${CMAKE_BINARY_DIR}/${_target}/src/imgui-node-editor && ${_patch_command_for_imgui_backend_qt} &&
+ ${_patch_command_for_imgui}
CONFIGURE_COMMAND ${CMAKE_COMMAND} ${_configure_options} -DFIND_QT_VERSION=${_find_qt_version} -DCMAKE_PREFIX_PATH=${_qt_location}/lib/cmake
BUILD_COMMAND ${_cmake_build_command}
INSTALL_COMMAND ${_cmake_install_command}
@@ -168,3 +167,9 @@ TARGET_INCLUDE_DIRECTORIES(
)
LIST(APPEND RV_DEPS_LIST imgui::imgui)
+
+# Set version for about dialog
+SET(RV_DEPS_IMGUI_VERSION
+ ${_version}
+ CACHE INTERNAL "" FORCE
+)
diff --git a/cmake/dependencies/python3.cmake b/cmake/dependencies/python3.cmake
index 18f38aa80..6792d2e7e 100644
--- a/cmake/dependencies/python3.cmake
+++ b/cmake/dependencies/python3.cmake
@@ -29,14 +29,13 @@ SET(RV_DEPS_PYTHON_VERSION_SHORT
"${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}"
)
-# This version is used for generating src/build/requirements.txt from requirements.txt.in template
-# All platforms install OpenTimelineIO from git to ensure consistent source builds.
+# This version is used for generating src/build/requirements.txt from requirements.txt.in template All platforms install OpenTimelineIO from git to ensure
+# consistent source builds.
SET(_opentimelineio_version
"0.18.1"
)
-# Construct the full git URL for pip to use in requirements.txt
-# Using this avoids @ symbol conflicts in CONFIGURE_FILE
+# Construct the full git URL for pip to use in requirements.txt Using this avoids @ symbol conflicts in CONFIGURE_FILE
SET(_opentimelineio_pip_url
"git+https://github.com/AcademySoftwareFoundation/OpenTimelineIO@v${_opentimelineio_version}#egg=OpenTimelineIO"
)
@@ -68,8 +67,8 @@ SET(_build_dir
${RV_DEPS_BASE_DIR}/${_python3_target}/build
)
-# Note: OpenTimelineIO is now installed via requirements.txt from git URL for all platforms.
-# This ensures consistent source builds across Windows, Mac, and Linux.
+# Note: OpenTimelineIO is now installed via requirements.txt from git URL for all platforms. This ensures consistent source builds across Windows, Mac, and
+# Linux.
FETCHCONTENT_DECLARE(
${_pyside_target}
@@ -242,27 +241,17 @@ SET(_requirements_output_file
"${CMAKE_BINARY_DIR}/requirements.txt"
)
-CONFIGURE_FILE(
- ${_requirements_input_file}
- ${_requirements_output_file}
- @ONLY
-)
+CONFIGURE_FILE(${_requirements_input_file} ${_requirements_output_file} @ONLY)
IF(RV_TARGET_WINDOWS)
- # On Windows, OpenTimelineIO needs to be built from source and requires
- # CMake to find the Python libraries. Set CMAKE_ARGS to help pybind11
- # locate the Python development files.
- # This is required for both old and new versions of pybind11, but especially
- # for pybind11 v2.13.6+ which has stricter Python library detection.
- # Note: pybind11's FindPythonLibsNew.cmake uses PYTHON_LIBRARY (all caps),
- # PYTHON_INCLUDE_DIR, and PYTHON_EXECUTABLE variables.
-
+ # On Windows, OpenTimelineIO needs to be built from source and requires CMake to find the Python libraries. Set CMAKE_ARGS to help pybind11 locate the Python
+ # development files. This is required for both old and new versions of pybind11, but especially for pybind11 v2.13.6+ which has stricter Python library
+ # detection. Note: pybind11's FindPythonLibsNew.cmake uses PYTHON_LIBRARY (all caps), PYTHON_INCLUDE_DIR, and PYTHON_EXECUTABLE variables.
+
IF(CMAKE_BUILD_TYPE MATCHES "^Debug$")
- # For Debug builds, we need to tell OpenTimelineIO to build in debug mode
- # and link against the debug Python library (python311_d.lib)
+ # For Debug builds, we need to tell OpenTimelineIO to build in debug mode and link against the debug Python library (python311_d.lib)
SET(_requirements_install_command
- ${CMAKE_COMMAND} -E env
- "OTIO_CXX_DEBUG_BUILD=1"
+ ${CMAKE_COMMAND} -E env "OTIO_CXX_DEBUG_BUILD=1"
"CMAKE_ARGS=-DPYTHON_LIBRARY=${_python3_implib} -DPYTHON_INCLUDE_DIR=${_include_dir} -DPYTHON_EXECUTABLE=${_python3_executable}"
"${_python3_executable}" -m pip install --upgrade -r "${_requirements_output_file}"
)
@@ -370,7 +359,8 @@ IF(RV_TARGET_WINDOWS
POST_BUILD
COMMENT "Copying Debug Python lib as a unversionned file for Debug"
COMMAND cmake -E copy_if_different ${_python3_implib} ${_python_release_libpath}
- COMMAND cmake -E copy_if_different ${_python3_implib} ${_python_release_in_bin_libpath} DEPENDS ${_python3_target} ${_requirements_output_file} ${_requirements_input_file}
+ COMMAND cmake -E copy_if_different ${_python3_implib} ${_python_release_in_bin_libpath} DEPENDS ${_python3_target} ${_requirements_output_file}
+ ${_requirements_input_file}
)
ENDIF()
@@ -488,6 +478,24 @@ SET(RV_DEPS_PYSIDE_VERSION
CACHE INTERNAL "" FORCE
)
+# Set NumPy version based on VFX Platform NumPy is a Python package dependency, version corresponds to VFX Platform year
+IF(RV_VFX_PLATFORM STREQUAL "CY2024")
+ SET(RV_DEPS_NUMPY_VERSION
+ "1.24"
+ CACHE INTERNAL "" FORCE
+ )
+ELSEIF(RV_VFX_PLATFORM STREQUAL "CY2023")
+ SET(RV_DEPS_NUMPY_VERSION
+ "1.23"
+ CACHE INTERNAL "" FORCE
+ )
+ELSE()
+ SET(RV_DEPS_NUMPY_VERSION
+ "Unknown"
+ CACHE INTERNAL "" FORCE
+ )
+ENDIF()
+
SET(RV_DEPS_PYTHON3_EXECUTABLE
${_python3_executable}
CACHE INTERNAL "" FORCE
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index d8b32daef..30b5d5905 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -191,6 +191,135 @@ FOREACH(
LIST(APPEND _sources ${outfile})
ENDFOREACH()
+#
+# Generate about_rv.cpp with build information
+#
+SET(_about_rv_cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/about_rv.cpp
+)
+
+# Get compiler name
+IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ SET(_compiler_name
+ "GCC ${CMAKE_CXX_COMPILER_VERSION}"
+ )
+ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ IF(CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
+ SET(_compiler_name
+ "Clang-cl ${CMAKE_CXX_COMPILER_VERSION}"
+ )
+ ELSE()
+ SET(_compiler_name
+ "Clang ${CMAKE_CXX_COMPILER_VERSION}"
+ )
+ ENDIF()
+ELSEIF(MSVC)
+ SET(_compiler_name
+ "MSVC ${CMAKE_CXX_COMPILER_VERSION}"
+ )
+ELSE()
+ SET(_compiler_name
+ "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}"
+ )
+ENDIF()
+
+# Get CXX flags
+STRING(REPLACE ";" " " _cxx_flags_str "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
+
+# Get VFX platform
+IF(RV_VFX_PLATFORM)
+ SET(_vfx_platform_str
+ ${RV_VFX_PLATFORM}
+ )
+ELSE()
+ SET(_vfx_platform_str
+ "N/A"
+ )
+ENDIF()
+
+# Get build root
+GET_FILENAME_COMPONENT(_build_root ${CMAKE_BINARY_DIR} NAME)
+
+# Get platform and arch
+IF(RV_TARGET_DARWIN)
+ SET(_platform_name
+ "macOS"
+ )
+ELSEIF(RV_TARGET_LINUX)
+ SET(_platform_name
+ "Linux"
+ )
+ELSEIF(RV_TARGET_WINDOWS)
+ SET(_platform_name
+ "Windows"
+ )
+ELSE()
+ SET(_platform_name
+ ${CMAKE_SYSTEM_NAME}
+ )
+ENDIF()
+
+SET(_arch_name
+ ${CMAKE_SYSTEM_PROCESSOR}
+)
+
+# Gather dependency versions
+IF(RV_VFX_PLATFORM STREQUAL "CY2024")
+ SET(_qt_version
+ "${RV_DEPS_QT6_VERSION}"
+ )
+ELSE()
+ SET(_qt_version
+ "${RV_DEPS_QT5_VERSION}"
+ )
+ENDIF()
+
+# Create a JSON-like string with versions (using semicolon as separator for CMake list)
+SET(_versions_list
+ "Qt:${_qt_version}"
+ "CMake:${CMAKE_VERSION}"
+ "Python:${RV_DEPS_PYTHON3_VERSION}"
+ "PySide:${RV_DEPS_PYSIDE_VERSION}"
+ "Boost:${RV_DEPS_BOOST_VERSION}"
+ "Imath:${RV_DEPS_IMATH_VERSION}"
+ "OpenEXR:${RV_DEPS_OPENEXR_VERSION}"
+ "OpenImageIO:${RV_DEPS_OIIO_VERSION}"
+ "OpenColorIO:${RV_DEPS_OCIO_VERSION}"
+ "FFmpeg:${RV_DEPS_FFMPEG_VERSION}"
+ "OpenSSL:${RV_DEPS_OPENSSL_VERSION}"
+ "GLEW:${RV_DEPS_GLEW_VERSION}"
+ "spdlog:${RV_DEPS_SPDLOG_VERSION}"
+ "yaml-cpp:${RV_DEPS_YAML_CPP_VERSION}"
+ "zlib:${RV_DEPS_ZLIB_VERSION}"
+ "dav1d:${RV_DEPS_DAV1D_VERSION}"
+ "jpegturbo:${RV_DEPS_JPEGTURBO_VERSION}"
+ "png:${RV_DEPS_PNG_VERSION}"
+ "tiff:${RV_DEPS_TIFF_VERSION}"
+ "webp:${RV_DEPS_WEBP_VERSION}"
+ "openjpeg:${RV_DEPS_OPENJPEG_VERSION}"
+ "openjph:${RV_DEPS_OPENJPH_VERSION}"
+ "raw:${RV_DEPS_RAW_VERSION}"
+ "gc:${RV_DEPS_GC_VERSION}"
+ "aja:${RV_DEPS_AJA_VERSION}"
+ "bmd:${RV_DEPS_BMD_VERSION}"
+ "imgui:${RV_DEPS_IMGUI_VERSION}"
+ "numpy:${RV_DEPS_NUMPY_VERSION}"
+)
+STRING(REPLACE ";" "," _versions_str "${_versions_list}")
+
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${_about_rv_cpp}
+ COMMAND
+ ${CMAKE_COMMAND} -E env ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py ${_about_rv_cpp} "${_compiler_name}" "${CMAKE_BUILD_TYPE}"
+ "${_cxx_flags_str}" "${_vfx_platform_str}" "${_build_root}" "${_platform_name}" "${_arch_name}" "${RV_UI_APPLICATION_NAME}" "${_versions_str}"
+ "${RV_GIT_COMMIT_SHORT_HASH}"
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py
+ COMMENT "Generating about_rv.cpp with build information"
+ VERBATIM
+)
+
+LIST(APPEND _sources ${_about_rv_cpp})
+
ADD_LIBRARY(
${_target} STATIC
${_sources} qrc/RvCommon.qrc
diff --git a/src/lib/app/RvCommon/RvApplication.cpp b/src/lib/app/RvCommon/RvApplication.cpp
index 149333ead..4b7bc6da4 100644
--- a/src/lib/app/RvCommon/RvApplication.cpp
+++ b/src/lib/app/RvCommon/RvApplication.cpp
@@ -59,6 +59,9 @@
extern char** environ;
#endif
+// Generated by generate_about_rv.py
+extern const char* about_RV;
+
#ifdef PLATFORM_DARWIN
extern void (*sessionFromUrlPointer)(std::string);
extern void (*putUrlOnMacPasteboardPointer)(std::string, std::string);
@@ -619,7 +622,15 @@ namespace Rv
msgBox->setIconPixmap(icon.pixmap(size));
msgBox->setStandardButtons(QMessageBox::Close);
+ // Add a text box with detailed build and dependency information
+ QTextEdit* textBox = new QTextEdit();
+ textBox->setHtml(about_RV);
+ textBox->setReadOnly(true);
+ textBox->setMinimumHeight(250);
+ textBox->setMinimumWidth(500);
+
QGridLayout* grid = static_cast(msgBox->layout());
+ grid->addWidget(textBox, grid->rowCount() - 1, 0, 1, -1);
QDialogButtonBox* buttonBox = msgBox->findChild();
grid->removeWidget(buttonBox);
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
new file mode 100755
index 000000000..e97c1830e
--- /dev/null
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -0,0 +1,288 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2025 Autodesk, Inc. All Rights Reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Generate about_rv.cpp with build and dependency information
+
+import sys
+import subprocess
+from datetime import datetime
+
+
+def get_git_info(git_hash_from_cmake=""):
+ """Get git commit hash - prefer the one from CMake for consistency"""
+ if git_hash_from_cmake:
+ return git_hash_from_cmake
+
+ # Fallback: try to get from git if not provided
+ try:
+ result = subprocess.run(["git", "log", "-1", "--pretty=format:%h"], capture_output=True, text=True, check=True)
+ return result.stdout.strip()
+ except (subprocess.CalledProcessError, FileNotFoundError, OSError):
+ return "unknown"
+
+
+def parse_versions(versions_str):
+ """Parse the versions string into a dictionary"""
+ versions = {}
+ if versions_str:
+ for item in versions_str.split(","):
+ if ":" in item:
+ key, value = item.split(":", 1)
+ versions[key] = value
+ return versions
+
+
+def get_dependencies_info(vfx_platform, versions, app_name, platform=""):
+ """Generate dependency information using detected versions"""
+
+ # Helper to get version or default
+ def get_ver(key, default="Unknown"):
+ version = versions.get(key, default)
+ # Strip FFmpeg's 'n' prefix from version tags (e.g., n6.1.2 -> 6.1.2)
+ if key == "FFmpeg" and version.startswith("n"):
+ version = version[1:]
+ return version
+
+ # Determine Qt license based on application type
+ # OpenRV uses LGPL, commercial RV uses Qt Commercial
+ is_commercial_rv = app_name == "RV"
+ qt_license = "Commercial" if is_commercial_rv else "LGPL v3"
+ pyside_license = "Commercial" if is_commercial_rv else "LGPL v3"
+
+ # Detect if we're on macOS
+ is_macos = "darwin" in platform.lower() or "macos" in platform.lower()
+
+ # VFX Platform components (listed in order)
+ # Note: PyQt is NOT used by RV (only PySide), so it's excluded from the list
+ vfx_deps = [
+ ("Qt Framework", get_ver("Qt"), qt_license),
+ ("CMake", get_ver("CMake"), "BSD 3-Clause"),
+ ("Python", get_ver("Python"), "PSF License"),
+ ("PySide", get_ver("PySide"), pyside_license),
+ ("NumPy", get_ver("numpy", "1.24+"), "BSD 3-Clause"),
+ ("Imath", get_ver("Imath"), "BSD 3-Clause"),
+ ("OpenEXR", get_ver("OpenEXR"), "BSD 3-Clause"),
+ ("Boost", get_ver("Boost"), "Boost Software License"),
+ ("OpenImageIO", get_ver("OpenImageIO"), "Apache 2.0"),
+ ("OpenColorIO", get_ver("OpenColorIO"), "BSD 3-Clause"),
+ ]
+
+ # RV-specific proprietary components (only for commercial RV)
+ rv_specific_deps = []
+ if is_commercial_rv:
+ # Apple ProRes is only available on macOS
+ if is_macos:
+ rv_specific_deps.append(("Apple ProRes", "Integrated", "Apple Proprietary"))
+
+ rv_specific_deps.extend(
+ [
+ ("RED R3D SDK", "Integrated", "RED Proprietary"),
+ ("ARRI SDK", "Integrated", "ARRI Proprietary"),
+ ("x264", "Integrated", "x264 Commercial License"),
+ ]
+ )
+
+ # Other third-party components
+ other_deps = [
+ ("FFmpeg", get_ver("FFmpeg"), "LGPL v2.1+"),
+ ("libjpeg-turbo", get_ver("jpegturbo"), "BSD-style"),
+ ("libpng", get_ver("png"), "libpng License"),
+ ("libtiff", get_ver("tiff"), "libtiff License"),
+ ("OpenJPEG", get_ver("openjpeg"), "BSD 2-Clause"),
+ ("OpenJPH", get_ver("openjph"), "BSD 2-Clause"),
+ ("libwebp", get_ver("webp"), "BSD 3-Clause"),
+ ("LibRaw", get_ver("raw"), "LGPL v2.1 / CDDL"),
+ ("dav1d", get_ver("dav1d"), "BSD 2-Clause"),
+ ("zlib", get_ver("zlib"), "zlib License"),
+ ("OpenSSL", get_ver("OpenSSL"), "Apache License 2.0"),
+ ("GLEW", get_ver("GLEW"), "Modified BSD / MIT"),
+ ("Dear ImGui", get_ver("imgui"), "MIT License"),
+ ("spdlog", get_ver("spdlog"), "MIT License"),
+ ("yaml-cpp", get_ver("yaml-cpp"), "MIT License"),
+ ("Boehm GC", get_ver("gc"), "MIT-style"),
+ ("AJA NTV2 SDK", get_ver("aja"), "MIT License"),
+ ("Blackmagic DeckLink SDK", get_ver("bmd"), "Proprietary"),
+ ]
+
+ return vfx_deps, other_deps, rv_specific_deps
+
+
+def generate_about_cpp(
+ output_file,
+ compiler,
+ build_type,
+ cxx_flags,
+ vfx_platform,
+ build_root,
+ platform,
+ arch,
+ app_name,
+ versions_str="",
+ git_hash="",
+):
+ """Generate the about_rv.cpp file"""
+
+ git_commit = get_git_info(git_hash)
+ versions = parse_versions(versions_str)
+ vfx_deps, other_deps, rv_specific_deps = get_dependencies_info(vfx_platform, versions, app_name, platform)
+ build_date = datetime.now().strftime("%B %d, %Y")
+
+ # Build the HTML content
+ html_content = []
+ html_content.append("")
+ html_content.append(f"{platform} {arch}")
+ html_content.append("
")
+ html_content.append("")
+ html_content.append(f"Compiled using {compiler}")
+ html_content.append("
")
+ html_content.append("")
+ html_content.append(f"Build identifier: {app_name}, HEAD={git_commit}")
+ html_content.append("
")
+ html_content.append("")
+ html_content.append(f"Built on: {build_date}")
+ html_content.append("
")
+
+ # Single table with both sections
+ html_content.append("
")
+ html_content.append("")
+ html_content.append('
')
+
+ # VFX Platform header row
+ if vfx_platform:
+ # Extract year from platform (e.g., "CY2024" -> "2024")
+ vfx_year = vfx_platform.replace("CY", "") if vfx_platform.startswith("CY") else vfx_platform
+ html_content.append("")
+ html_content.append(f'| VFX Reference Platform {vfx_year} | ')
+ html_content.append("
")
+
+ # Column headers
+ html_content.append("")
+ html_content.append("| Description | ")
+ html_content.append("Version | ")
+ html_content.append("License | ")
+ html_content.append("
")
+
+ # VFX Platform dependencies
+ for desc, version, license in vfx_deps:
+ html_content.append("")
+ html_content.append(f"| {desc} | ")
+ html_content.append(f"{version} | ")
+ html_content.append(f"{license} | ")
+ html_content.append("
")
+
+ # Empty row separator
+ html_content.append('| |
')
+
+ # Other Dependencies header row
+ html_content.append("")
+ html_content.append('| Other Dependencies | ')
+ html_content.append("
")
+
+ # Column headers for other dependencies
+ html_content.append("")
+ html_content.append("| Description | ")
+ html_content.append("Version | ")
+ html_content.append("License | ")
+ html_content.append("
")
+
+ # Other dependencies
+ for desc, version, license in other_deps:
+ html_content.append("")
+ html_content.append(f"| {desc} | ")
+ html_content.append(f"{version} | ")
+ html_content.append(f"{license} | ")
+ html_content.append("
")
+
+ # RV-Specific Components section (only for commercial RV)
+ if rv_specific_deps:
+ # Empty row separator
+ html_content.append('| |
')
+
+ # RV Components header row
+ html_content.append("")
+ html_content.append('| RV-Specific Components | ')
+ html_content.append("
")
+
+ # Column headers
+ html_content.append("")
+ html_content.append("| Description | ")
+ html_content.append("Version | ")
+ html_content.append("License | ")
+ html_content.append("
")
+
+ # RV-specific components
+ for desc, version, license in rv_specific_deps:
+ html_content.append("")
+ html_content.append(f"| {desc} | ")
+ html_content.append(f"{version} | ")
+ html_content.append(f"{license} | ")
+ html_content.append("
")
+
+ html_content.append("
")
+ html_content.append("")
+ html_content.append("
")
+ html_content.append("")
+ html_content.append("For detailed license information, please see the THIRD-PARTY.md file ")
+ html_content.append("included with this distribution or visit the Open RV GitHub repository.")
+ html_content.append("
")
+
+ # Join without newlines - HTML doesn't need them
+ html_str = "".join(html_content)
+
+ # Escape quotes for C++
+ html_str = html_str.replace('"', '\\"')
+
+ # Generate the C++ file
+ cpp_content = f'''//
+// Copyright (C) 2025 Autodesk, Inc. All Rights Reserved.
+//
+// SPDX-License-Identifier: Apache-2.0
+//
+// This file is auto-generated by generate_about_rv.py
+// DO NOT EDIT MANUALLY
+
+const char* about_RV = "{html_str}";
+'''
+
+ with open(output_file, "w", encoding="utf-8") as f:
+ f.write(cpp_content)
+
+ print(f"Generated {output_file}")
+
+
+if __name__ == "__main__":
+ if len(sys.argv) < 9:
+ print(
+ "Usage: generate_about_rv.py "
+ + " [versions] [git_hash]"
+ )
+ sys.exit(1)
+
+ output_file = sys.argv[1]
+ compiler = sys.argv[2]
+ build_type = sys.argv[3]
+ cxx_flags = sys.argv[4]
+ vfx_platform = sys.argv[5]
+ build_root = sys.argv[6]
+ platform = sys.argv[7]
+ arch = sys.argv[8]
+ app_name = sys.argv[9] if len(sys.argv) > 9 else "Open RV"
+ versions_str = sys.argv[10] if len(sys.argv) > 10 else ""
+ git_hash = sys.argv[11] if len(sys.argv) > 11 else ""
+
+ generate_about_cpp(
+ output_file,
+ compiler,
+ build_type,
+ cxx_flags,
+ vfx_platform,
+ build_root,
+ platform,
+ arch,
+ app_name,
+ versions_str,
+ git_hash,
+ )
From 0a7c13ed29887f4c947d502311b5d144c3f3a910 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Tue, 25 Nov 2025 17:20:56 -0500
Subject: [PATCH 02/16] added proprietary versions for prores, arri, red, x264.
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 23 +++++++++++++++++++++++
src/lib/app/RvCommon/generate_about_rv.py | 12 +++++++-----
2 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 30b5d5905..bcdfd560e 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -305,6 +305,29 @@ SET(_versions_list
"imgui:${RV_DEPS_IMGUI_VERSION}"
"numpy:${RV_DEPS_NUMPY_VERSION}"
)
+
+# Add commercial RV-specific SDK versions if they exist
+IF(DEFINED RV_DEPS_PRORES_VERSION
+ AND RV_DEPS_PRORES_VERSION
+)
+ LIST(APPEND _versions_list "prores:${RV_DEPS_PRORES_VERSION}")
+ENDIF()
+IF(DEFINED RV_DEPS_R3DSDK_VERSION
+ AND RV_DEPS_R3DSDK_VERSION
+)
+ LIST(APPEND _versions_list "r3dsdk:${RV_DEPS_R3DSDK_VERSION}")
+ENDIF()
+IF(DEFINED RV_DEPS_ARRIRAW_VERSION
+ AND RV_DEPS_ARRIRAW_VERSION
+)
+ LIST(APPEND _versions_list "arriraw:${RV_DEPS_ARRIRAW_VERSION}")
+ENDIF()
+IF(DEFINED RV_DEPS_X264_VERSION
+ AND RV_DEPS_X264_VERSION
+)
+ LIST(APPEND _versions_list "x264:${RV_DEPS_X264_VERSION}")
+ENDIF()
+
STRING(REPLACE ";" "," _versions_str "${_versions_list}")
ADD_CUSTOM_COMMAND(
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index e97c1830e..e5c695881 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -73,15 +73,17 @@ def get_ver(key, default="Unknown"):
# RV-specific proprietary components (only for commercial RV)
rv_specific_deps = []
if is_commercial_rv:
- # Apple ProRes is only available on macOS
+ # Apple ProRes is only available on macOS (and not on ARM64 currently)
if is_macos:
- rv_specific_deps.append(("Apple ProRes", "Integrated", "Apple Proprietary"))
+ prores_ver = get_ver("prores", "Not Used")
+ rv_specific_deps.append(("Apple ProRes", prores_ver, "Apple Proprietary"))
+ # Always add these for commercial RV (version will show "Not Used" if not available)
rv_specific_deps.extend(
[
- ("RED R3D SDK", "Integrated", "RED Proprietary"),
- ("ARRI SDK", "Integrated", "ARRI Proprietary"),
- ("x264", "Integrated", "x264 Commercial License"),
+ ("RED R3D SDK", get_ver("r3dsdk", "Not Used"), "RED Proprietary"),
+ ("ARRI SDK", get_ver("arriraw", "Not Used"), "ARRI Proprietary"),
+ ("x264", get_ver("x264", "Not Used"), "x264 Commercial License"),
]
)
From cbf9d38fc9f4718fd17680d886ac82be50a93e59 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Fri, 28 Nov 2025 16:13:31 -0500
Subject: [PATCH 03/16] attempt at fix command
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index bcdfd560e..8931932de 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -333,9 +333,8 @@ STRING(REPLACE ";" "," _versions_str "${_versions_list}")
ADD_CUSTOM_COMMAND(
OUTPUT ${_about_rv_cpp}
COMMAND
- ${CMAKE_COMMAND} -E env ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py ${_about_rv_cpp} "${_compiler_name}" "${CMAKE_BUILD_TYPE}"
- "${_cxx_flags_str}" "${_vfx_platform_str}" "${_build_root}" "${_platform_name}" "${_arch_name}" "${RV_UI_APPLICATION_NAME}" "${_versions_str}"
- "${RV_GIT_COMMIT_SHORT_HASH}"
+ ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py ${_about_rv_cpp} "${_compiler_name}" "${CMAKE_BUILD_TYPE}" "${_cxx_flags_str}"
+ "${_vfx_platform_str}" "${_build_root}" "${_platform_name}" "${_arch_name}" "${RV_UI_APPLICATION_NAME}" "${_versions_str}" "${RV_GIT_COMMIT_SHORT_HASH}"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py
COMMENT "Generating about_rv.cpp with build information"
VERBATIM
From 6829175fc102edf2843f5f4e6461ce5c133cd10e Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Fri, 28 Nov 2025 16:31:23 -0500
Subject: [PATCH 04/16] fix for cy2025+
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 05ac662d0..1f0438ba0 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -264,7 +264,7 @@ SET(_arch_name
)
# Gather dependency versions
-IF(RV_VFX_PLATFORM STREQUAL "CY2024")
+IF(RV_VFX_PLATFORM STRGREATER_EQUAL CY2024)
SET(_qt_version
"${RV_DEPS_QT6_VERSION}"
)
From 20522748035c4b480e5a0c52faae0bfd3103175e Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Fri, 28 Nov 2025 17:02:47 -0500
Subject: [PATCH 05/16] fix glitches
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 2 +-
src/lib/app/RvCommon/generate_about_rv.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 1f0438ba0..52e8c0c90 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -287,7 +287,7 @@ SET(_versions_list
"OpenColorIO:${RV_DEPS_OCIO_VERSION}"
"FFmpeg:${RV_DEPS_FFMPEG_VERSION}"
"OpenSSL:${RV_DEPS_OPENSSL_VERSION}"
- "GLEW:${RV_DEPS_GLEW_VERSION}"
+ "GLEW:${RV_DEPS_GLEW_VERSION_LIB}"
"spdlog:${RV_DEPS_SPDLOG_VERSION}"
"yaml-cpp:${RV_DEPS_YAML_CPP_VERSION}"
"zlib:${RV_DEPS_ZLIB_VERSION}"
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index e5c695881..6ac1dddea 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -49,8 +49,8 @@ def get_ver(key, default="Unknown"):
# Determine Qt license based on application type
# OpenRV uses LGPL, commercial RV uses Qt Commercial
is_commercial_rv = app_name == "RV"
- qt_license = "Commercial" if is_commercial_rv else "LGPL v3"
- pyside_license = "Commercial" if is_commercial_rv else "LGPL v3"
+ qt_license = "Qt Commercial" if is_commercial_rv else "LGPL v3"
+ pyside_license = "Qt Commercial" if is_commercial_rv else "LGPL v3"
# Detect if we're on macOS
is_macos = "darwin" in platform.lower() or "macos" in platform.lower()
From f278136130616c17fd38ca10395921df9620a6be Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Fri, 28 Nov 2025 23:57:49 -0500
Subject: [PATCH 06/16] attempted fix for windows build
Signed-off-by: Patrick Bergeron
---
.gitignore | 3 +++
src/lib/app/RvCommon/CMakeLists.txt | 19 ++++++++++++++++++-
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 83fa3abba..5807659e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,9 @@
**/*.pkg
**/*.dmg
+# CMake generated
+**/about_rv.cpp
+
# Windows
**/*.pdb
**/*.idb
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 52e8c0c90..956c26274 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -195,7 +195,7 @@ ENDFOREACH()
# Generate about_rv.cpp with build information
#
SET(_about_rv_cpp
- ${CMAKE_CURRENT_BINARY_DIR}/about_rv.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_target}/generated/about_rv.cpp
)
# Get compiler name
@@ -340,6 +340,20 @@ ADD_CUSTOM_COMMAND(
VERBATIM
)
+# Create explicit target to ensure about_rv.cpp is generated before RvCommon builds
+ADD_CUSTOM_TARGET(
+ generate_about_rv_cpp
+ DEPENDS ${_about_rv_cpp}
+)
+
+SET_SOURCE_FILES_PROPERTIES(
+ ${_about_rv_cpp}
+ PROPERTIES SKIP_AUTOMOC ON
+ SKIP_AUTOUIC ON
+ SKIP_AUTORCC ON
+ GENERATED TRUE
+)
+
LIST(APPEND _sources ${_about_rv_cpp})
ADD_LIBRARY(
@@ -347,6 +361,9 @@ ADD_LIBRARY(
${_sources} qrc/RvCommon.qrc
)
+# Ensure about_rv.cpp is generated before building RvCommon
+ADD_DEPENDENCIES(${_target} generate_about_rv_cpp)
+
# Need that with Qt6 since the code for this target does not support unicode correctly.
IF(RV_TARGET_WINDOWS
AND RV_VFX_PLATFORM STRGREATER_EQUAL CY2024
From 68a977bd23fed255af44bcf4444d1816dd277074 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Sat, 29 Nov 2025 01:50:23 -0500
Subject: [PATCH 07/16] try to fix py code for windows
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/generate_about_rv.py | 27 ++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index 6ac1dddea..ca5f95e6e 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -9,6 +9,7 @@
import sys
import subprocess
from datetime import datetime
+from pathlib import Path
def get_git_info(git_hash_from_cmake=""):
@@ -249,10 +250,30 @@ def generate_about_cpp(
const char* about_RV = "{html_str}";
'''
- with open(output_file, "w", encoding="utf-8") as f:
- f.write(cpp_content)
+ # Ensure the output directory exists
+ try:
+ output_path = Path(output_file)
+ print(f"Creating directory: {output_path.parent}")
+ output_path.parent.mkdir(parents=True, exist_ok=True)
+
+ print(f"Writing to: {output_path}")
+ with open(output_file, "w", encoding="utf-8", newline="\n") as f:
+ f.write(cpp_content)
+
+ # Verify the file was written
+ if not output_path.exists():
+ print(f"ERROR: File was not created: {output_file}", file=sys.stderr)
+ sys.exit(1)
- print(f"Generated {output_file}")
+ file_size = output_path.stat().st_size
+ print(f"Generated {output_file} ({file_size} bytes)")
+
+ except Exception as e:
+ print(f"ERROR generating {output_file}: {e}", file=sys.stderr)
+ import traceback
+
+ traceback.print_exc()
+ sys.exit(1)
if __name__ == "__main__":
From ab182e7749e0da9e635c12f51cab87bb9fda3f4c Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Sat, 29 Nov 2025 11:44:46 -0500
Subject: [PATCH 08/16] yet another attempted fix for windows
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 2 +-
src/lib/app/RvCommon/RvCommon/generated/.gitignore | 4 ++++
src/lib/app/RvCommon/generate_about_rv.py | 11 +++++++++++
3 files changed, 16 insertions(+), 1 deletion(-)
create mode 100644 src/lib/app/RvCommon/RvCommon/generated/.gitignore
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 956c26274..935e1d2dc 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -333,7 +333,7 @@ STRING(REPLACE ";" "," _versions_str "${_versions_list}")
ADD_CUSTOM_COMMAND(
OUTPUT ${_about_rv_cpp}
COMMAND
- ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py ${_about_rv_cpp} "${_compiler_name}" "${CMAKE_BUILD_TYPE}" "${_cxx_flags_str}"
+ python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py ${_about_rv_cpp} "${_compiler_name}" "${CMAKE_BUILD_TYPE}" "${_cxx_flags_str}"
"${_vfx_platform_str}" "${_build_root}" "${_platform_name}" "${_arch_name}" "${RV_UI_APPLICATION_NAME}" "${_versions_str}" "${RV_GIT_COMMIT_SHORT_HASH}"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py
COMMENT "Generating about_rv.cpp with build information"
diff --git a/src/lib/app/RvCommon/RvCommon/generated/.gitignore b/src/lib/app/RvCommon/RvCommon/generated/.gitignore
new file mode 100644
index 000000000..a2e8001af
--- /dev/null
+++ b/src/lib/app/RvCommon/RvCommon/generated/.gitignore
@@ -0,0 +1,4 @@
+moc_*.cpp
+ui_*.h
+about_rv.cpp
+
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index ca5f95e6e..bc920c7e6 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -12,6 +12,14 @@
from pathlib import Path
+# Print to BOTH stdout and stderr immediately before any other imports
+sys.stdout.write("=== calling generate_about_rv.py STDOUT ===\n")
+sys.stdout.flush()
+sys.stderr.write("=== calling generate_about_rv.py STDERR ===\n")
+sys.stderr.flush()
+print("=== generate_about_rv.py starting ===", flush=True)
+
+
def get_git_info(git_hash_from_cmake=""):
"""Get git commit hash - prefer the one from CMake for consistency"""
if git_hash_from_cmake:
@@ -277,6 +285,7 @@ def generate_about_cpp(
if __name__ == "__main__":
+ print(f"=== Arguments received: {len(sys.argv)} ===", flush=True)
if len(sys.argv) < 9:
print(
"Usage: generate_about_rv.py "
@@ -284,6 +293,7 @@ def generate_about_cpp(
)
sys.exit(1)
+ print("=== Parsing arguments ===", flush=True)
output_file = sys.argv[1]
compiler = sys.argv[2]
build_type = sys.argv[3]
@@ -296,6 +306,7 @@ def generate_about_cpp(
versions_str = sys.argv[10] if len(sys.argv) > 10 else ""
git_hash = sys.argv[11] if len(sys.argv) > 11 else ""
+ print(f"=== Calling generate_about_cpp for: {output_file} ===", flush=True)
generate_about_cpp(
output_file,
compiler,
From e49b999f851c8b45de38ec7d08363ed4890156a2 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Sat, 29 Nov 2025 14:48:17 -0500
Subject: [PATCH 09/16] fixed some printouts
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/generate_about_rv.py | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index bc920c7e6..15631f758 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -12,14 +12,6 @@
from pathlib import Path
-# Print to BOTH stdout and stderr immediately before any other imports
-sys.stdout.write("=== calling generate_about_rv.py STDOUT ===\n")
-sys.stdout.flush()
-sys.stderr.write("=== calling generate_about_rv.py STDERR ===\n")
-sys.stderr.flush()
-print("=== generate_about_rv.py starting ===", flush=True)
-
-
def get_git_info(git_hash_from_cmake=""):
"""Get git commit hash - prefer the one from CMake for consistency"""
if git_hash_from_cmake:
@@ -285,7 +277,7 @@ def generate_about_cpp(
if __name__ == "__main__":
- print(f"=== Arguments received: {len(sys.argv)} ===", flush=True)
+ print("=== generate_about_rv.py starting ===", flush=True)
if len(sys.argv) < 9:
print(
"Usage: generate_about_rv.py "
@@ -293,7 +285,6 @@ def generate_about_cpp(
)
sys.exit(1)
- print("=== Parsing arguments ===", flush=True)
output_file = sys.argv[1]
compiler = sys.argv[2]
build_type = sys.argv[3]
From 81a3e2b0332afc031dde4cda5c47777f96f09b83 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Sat, 29 Nov 2025 14:51:00 -0500
Subject: [PATCH 10/16] remove useless skip automoc/ui/cc
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 8 --------
1 file changed, 8 deletions(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 935e1d2dc..9b662976e 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -346,14 +346,6 @@ ADD_CUSTOM_TARGET(
DEPENDS ${_about_rv_cpp}
)
-SET_SOURCE_FILES_PROPERTIES(
- ${_about_rv_cpp}
- PROPERTIES SKIP_AUTOMOC ON
- SKIP_AUTOUIC ON
- SKIP_AUTORCC ON
- GENERATED TRUE
-)
-
LIST(APPEND _sources ${_about_rv_cpp})
ADD_LIBRARY(
From fbebff23f2bd712ea1af269ba334d6d20b4a0f65 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Sat, 29 Nov 2025 14:52:51 -0500
Subject: [PATCH 11/16] fixed .gitignore for about_rv.cpp - moved elsewhere to
the generated files section
Signed-off-by: Patrick Bergeron
---
.gitignore | 3 ---
1 file changed, 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index 5807659e1..83fa3abba 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,9 +12,6 @@
**/*.pkg
**/*.dmg
-# CMake generated
-**/about_rv.cpp
-
# Windows
**/*.pdb
**/*.idb
From 5835eea427068405b28739582c7a0c16a071a25e Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Sat, 29 Nov 2025 14:59:12 -0500
Subject: [PATCH 12/16] fix .gitignore
Signed-off-by: Patrick Bergeron
---
.gitignore | 4 +++-
src/lib/app/RvCommon/RvCommon/generated/.gitignore | 4 ----
2 files changed, 3 insertions(+), 5 deletions(-)
delete mode 100644 src/lib/app/RvCommon/RvCommon/generated/.gitignore
diff --git a/.gitignore b/.gitignore
index 83fa3abba..c9779a32d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,4 +39,6 @@ session_manager.mu
# See maya_tools.mu.in
maya_tools.mu
# See rvnuke_mode.mu.in
-rvnuke_mode.mu
\ No newline at end of file
+rvnuke_mode.mu
+# see generate_about_rv.py
+about_rv.cpp
\ No newline at end of file
diff --git a/src/lib/app/RvCommon/RvCommon/generated/.gitignore b/src/lib/app/RvCommon/RvCommon/generated/.gitignore
deleted file mode 100644
index a2e8001af..000000000
--- a/src/lib/app/RvCommon/RvCommon/generated/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-moc_*.cpp
-ui_*.h
-about_rv.cpp
-
From 779340f2ccc139be9f028550a3debc101638d096 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Tue, 2 Dec 2025 00:44:19 -0500
Subject: [PATCH 13/16] added otio
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 1 +
src/lib/app/RvCommon/generate_about_rv.py | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 9b662976e..566b2416d 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -304,6 +304,7 @@ SET(_versions_list
"bmd:${RV_DEPS_BMD_VERSION}"
"imgui:${RV_DEPS_IMGUI_VERSION}"
"numpy:${RV_DEPS_NUMPY_VERSION}"
+ "otio:${RV_DEPS_OTIO_VERSION}"
)
# Add commercial RV-specific SDK versions if they exist
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index 15631f758..cf36d06ba 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -69,6 +69,7 @@ def get_ver(key, default="Unknown"):
("Boost", get_ver("Boost"), "Boost Software License"),
("OpenImageIO", get_ver("OpenImageIO"), "Apache 2.0"),
("OpenColorIO", get_ver("OpenColorIO"), "BSD 3-Clause"),
+ ("OpenTimelineIO", get_ver("otio"), "Apache 2.0"),
]
# RV-specific proprietary components (only for commercial RV)
From 330ac865b91a8fcd09f5c09722db11cae2b91e5a Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Tue, 2 Dec 2025 01:41:38 -0500
Subject: [PATCH 14/16] fixed glitch
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 566b2416d..99ad84021 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -263,20 +263,9 @@ SET(_arch_name
${CMAKE_SYSTEM_PROCESSOR}
)
-# Gather dependency versions
-IF(RV_VFX_PLATFORM STRGREATER_EQUAL CY2024)
- SET(_qt_version
- "${RV_DEPS_QT6_VERSION}"
- )
-ELSE()
- SET(_qt_version
- "${RV_DEPS_QT5_VERSION}"
- )
-ENDIF()
-
# Create a JSON-like string with versions (using semicolon as separator for CMake list)
SET(_versions_list
- "Qt:${_qt_version}"
+ "Qt:${RV_DEPS_QT_VERSION}"
"CMake:${CMAKE_VERSION}"
"Python:${RV_DEPS_PYTHON3_VERSION}"
"PySide:${RV_DEPS_PYSIDE_VERSION}"
@@ -303,7 +292,7 @@ SET(_versions_list
"aja:${RV_DEPS_AJA_VERSION}"
"bmd:${RV_DEPS_BMD_VERSION}"
"imgui:${RV_DEPS_IMGUI_VERSION}"
- "numpy:${RV_DEPS_NUMPY_VERSION}"
+ "numpy:$ENV{RV_DEPS_NUMPY_VERSION}"
"otio:${RV_DEPS_OTIO_VERSION}"
)
From c78d4a802b1818eb2cf1c45afc524cfec42016f7 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Tue, 2 Dec 2025 12:13:04 -0500
Subject: [PATCH 15/16] added nanobind, pcre, expat, ndi.
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 8 +++++
src/lib/app/RvCommon/generate_about_rv.py | 42 +++++++++++++----------
2 files changed, 31 insertions(+), 19 deletions(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 99ad84021..739a14a09 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -294,6 +294,9 @@ SET(_versions_list
"imgui:${RV_DEPS_IMGUI_VERSION}"
"numpy:$ENV{RV_DEPS_NUMPY_VERSION}"
"otio:${RV_DEPS_OTIO_VERSION}"
+ "expat:${RV_DEPS_EXPAT_VERSION}"
+ "nanobind:${RV_DEPS_NANOBIND_VERSION}"
+ "pcre2:${RV_DEPS_PCRE2_VERSION}"
)
# Add commercial RV-specific SDK versions if they exist
@@ -317,6 +320,11 @@ IF(DEFINED RV_DEPS_X264_VERSION
)
LIST(APPEND _versions_list "x264:${RV_DEPS_X264_VERSION}")
ENDIF()
+IF(DEFINED RV_DEPS_NDI_VERSION
+ AND RV_DEPS_NDI_VERSION
+)
+ LIST(APPEND _versions_list "ndi:${RV_DEPS_NDI_VERSION}")
+ENDIF()
STRING(REPLACE ";" "," _versions_str "${_versions_list}")
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index cf36d06ba..acaedfc9c 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -56,23 +56,23 @@ def get_ver(key, default="Unknown"):
# Detect if we're on macOS
is_macos = "darwin" in platform.lower() or "macos" in platform.lower()
- # VFX Platform components (listed in order)
+ # VFX Platform components (alphabetical order)
# Note: PyQt is NOT used by RV (only PySide), so it's excluded from the list
vfx_deps = [
- ("Qt Framework", get_ver("Qt"), qt_license),
+ ("Boost", get_ver("Boost"), "Boost Software License"),
("CMake", get_ver("CMake"), "BSD 3-Clause"),
- ("Python", get_ver("Python"), "PSF License"),
- ("PySide", get_ver("PySide"), pyside_license),
- ("NumPy", get_ver("numpy", "1.24+"), "BSD 3-Clause"),
("Imath", get_ver("Imath"), "BSD 3-Clause"),
+ ("NumPy", get_ver("numpy", "1.24+"), "BSD 3-Clause"),
+ ("OpenColorIO", get_ver("OpenColorIO"), "BSD 3-Clause"),
("OpenEXR", get_ver("OpenEXR"), "BSD 3-Clause"),
- ("Boost", get_ver("Boost"), "Boost Software License"),
("OpenImageIO", get_ver("OpenImageIO"), "Apache 2.0"),
- ("OpenColorIO", get_ver("OpenColorIO"), "BSD 3-Clause"),
("OpenTimelineIO", get_ver("otio"), "Apache 2.0"),
+ ("PySide", get_ver("PySide"), pyside_license),
+ ("Python", get_ver("Python"), "PSF License"),
+ ("Qt Framework", get_ver("Qt"), qt_license),
]
- # RV-specific proprietary components (only for commercial RV)
+ # RV-specific proprietary components (only for commercial RV, alphabetical order)
rv_specific_deps = []
if is_commercial_rv:
# Apple ProRes is only available on macOS (and not on ARM64 currently)
@@ -83,32 +83,36 @@ def get_ver(key, default="Unknown"):
# Always add these for commercial RV (version will show "Not Used" if not available)
rv_specific_deps.extend(
[
- ("RED R3D SDK", get_ver("r3dsdk", "Not Used"), "RED Proprietary"),
("ARRI SDK", get_ver("arriraw", "Not Used"), "ARRI Proprietary"),
+ ("NDI SDK", get_ver("ndi", "Not Used"), "NDI Proprietary"),
+ ("RED R3D SDK", get_ver("r3dsdk", "Not Used"), "RED Proprietary"),
("x264", get_ver("x264", "Not Used"), "x264 Commercial License"),
]
)
- # Other third-party components
+ # Other third-party components (alphabetical order)
other_deps = [
+ ("AJA NTV2 SDK", get_ver("aja"), "MIT License"),
+ ("Blackmagic DeckLink SDK", get_ver("bmd"), "Proprietary"),
+ ("Boehm GC", get_ver("gc"), "MIT-style"),
+ ("dav1d", get_ver("dav1d"), "BSD 2-Clause"),
+ ("Dear ImGui", get_ver("imgui"), "MIT License"),
+ ("Expat", get_ver("expat"), "MIT License"),
("FFmpeg", get_ver("FFmpeg"), "LGPL v2.1+"),
+ ("GLEW", get_ver("GLEW"), "Modified BSD / MIT"),
("libjpeg-turbo", get_ver("jpegturbo"), "BSD-style"),
("libpng", get_ver("png"), "libpng License"),
+ ("LibRaw", get_ver("raw"), "LGPL v2.1 / CDDL"),
("libtiff", get_ver("tiff"), "libtiff License"),
+ ("libwebp", get_ver("webp"), "BSD 3-Clause"),
+ ("nanobind", get_ver("nanobind"), "BSD 3-Clause"),
("OpenJPEG", get_ver("openjpeg"), "BSD 2-Clause"),
("OpenJPH", get_ver("openjph"), "BSD 2-Clause"),
- ("libwebp", get_ver("webp"), "BSD 3-Clause"),
- ("LibRaw", get_ver("raw"), "LGPL v2.1 / CDDL"),
- ("dav1d", get_ver("dav1d"), "BSD 2-Clause"),
- ("zlib", get_ver("zlib"), "zlib License"),
("OpenSSL", get_ver("OpenSSL"), "Apache License 2.0"),
- ("GLEW", get_ver("GLEW"), "Modified BSD / MIT"),
- ("Dear ImGui", get_ver("imgui"), "MIT License"),
+ ("PCRE2", get_ver("pcre2"), "BSD License"),
("spdlog", get_ver("spdlog"), "MIT License"),
("yaml-cpp", get_ver("yaml-cpp"), "MIT License"),
- ("Boehm GC", get_ver("gc"), "MIT-style"),
- ("AJA NTV2 SDK", get_ver("aja"), "MIT License"),
- ("Blackmagic DeckLink SDK", get_ver("bmd"), "Proprietary"),
+ ("zlib", get_ver("zlib"), "zlib License"),
]
return vfx_deps, other_deps, rv_specific_deps
From 771d9e97247d0771bf00069230703cfa903a5fd9 Mon Sep 17 00:00:00 2001
From: Patrick Bergeron
Date: Tue, 2 Dec 2025 12:39:40 -0500
Subject: [PATCH 16/16] fixed as per code review
Signed-off-by: Patrick Bergeron
---
src/lib/app/RvCommon/CMakeLists.txt | 10 +-
src/lib/app/RvCommon/generate_about_rv.py | 159 +++++++++-------------
2 files changed, 69 insertions(+), 100 deletions(-)
diff --git a/src/lib/app/RvCommon/CMakeLists.txt b/src/lib/app/RvCommon/CMakeLists.txt
index 739a14a09..d3362ce3e 100644
--- a/src/lib/app/RvCommon/CMakeLists.txt
+++ b/src/lib/app/RvCommon/CMakeLists.txt
@@ -223,9 +223,6 @@ ELSE()
)
ENDIF()
-# Get CXX flags
-STRING(REPLACE ";" " " _cxx_flags_str "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
-
# Get VFX platform
IF(RV_VFX_PLATFORM)
SET(_vfx_platform_str
@@ -237,9 +234,6 @@ ELSE()
)
ENDIF()
-# Get build root
-GET_FILENAME_COMPONENT(_build_root ${CMAKE_BINARY_DIR} NAME)
-
# Get platform and arch
IF(RV_TARGET_DARWIN)
SET(_platform_name
@@ -331,8 +325,8 @@ STRING(REPLACE ";" "," _versions_str "${_versions_list}")
ADD_CUSTOM_COMMAND(
OUTPUT ${_about_rv_cpp}
COMMAND
- python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py ${_about_rv_cpp} "${_compiler_name}" "${CMAKE_BUILD_TYPE}" "${_cxx_flags_str}"
- "${_vfx_platform_str}" "${_build_root}" "${_platform_name}" "${_arch_name}" "${RV_UI_APPLICATION_NAME}" "${_versions_str}" "${RV_GIT_COMMIT_SHORT_HASH}"
+ python3 ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py ${_about_rv_cpp} "${_compiler_name}"
+ "${_vfx_platform_str}" "${_platform_name}" "${_arch_name}" "${RV_UI_APPLICATION_NAME}" "${_versions_str}" "${RV_GIT_COMMIT_SHORT_HASH}"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_about_rv.py
COMMENT "Generating about_rv.cpp with build information"
VERBATIM
diff --git a/src/lib/app/RvCommon/generate_about_rv.py b/src/lib/app/RvCommon/generate_about_rv.py
index acaedfc9c..efd58dcb1 100755
--- a/src/lib/app/RvCommon/generate_about_rv.py
+++ b/src/lib/app/RvCommon/generate_about_rv.py
@@ -6,23 +6,15 @@
#
# Generate about_rv.cpp with build and dependency information
+import argparse
import sys
-import subprocess
from datetime import datetime
from pathlib import Path
def get_git_info(git_hash_from_cmake=""):
- """Get git commit hash - prefer the one from CMake for consistency"""
- if git_hash_from_cmake:
- return git_hash_from_cmake
-
- # Fallback: try to get from git if not provided
- try:
- result = subprocess.run(["git", "log", "-1", "--pretty=format:%h"], capture_output=True, text=True, check=True)
- return result.stdout.strip()
- except (subprocess.CalledProcessError, FileNotFoundError, OSError):
- return "unknown"
+ """Get git commit hash from CMake"""
+ return git_hash_from_cmake if git_hash_from_cmake else "unknown"
def parse_versions(versions_str):
@@ -36,40 +28,35 @@ def parse_versions(versions_str):
return versions
-def get_dependencies_info(vfx_platform, versions, app_name, platform=""):
+def get_dependencies_info(versions, app_name, platform=""):
"""Generate dependency information using detected versions"""
- # Helper to get version or default
- def get_ver(key, default="Unknown"):
+ def get_version(key, default="Unknown"):
version = versions.get(key, default)
- # Strip FFmpeg's 'n' prefix from version tags (e.g., n6.1.2 -> 6.1.2)
+ # Strip FFmpeg's 'n' prefix (e.g., n6.1.2 -> 6.1.2)
if key == "FFmpeg" and version.startswith("n"):
version = version[1:]
return version
- # Determine Qt license based on application type
# OpenRV uses LGPL, commercial RV uses Qt Commercial
is_commercial_rv = app_name == "RV"
qt_license = "Qt Commercial" if is_commercial_rv else "LGPL v3"
pyside_license = "Qt Commercial" if is_commercial_rv else "LGPL v3"
- # Detect if we're on macOS
is_macos = "darwin" in platform.lower() or "macos" in platform.lower()
- # VFX Platform components (alphabetical order)
- # Note: PyQt is NOT used by RV (only PySide), so it's excluded from the list
vfx_deps = [
- ("Boost", get_ver("Boost"), "Boost Software License"),
- ("CMake", get_ver("CMake"), "BSD 3-Clause"),
- ("Imath", get_ver("Imath"), "BSD 3-Clause"),
- ("NumPy", get_ver("numpy", "1.24+"), "BSD 3-Clause"),
- ("OpenColorIO", get_ver("OpenColorIO"), "BSD 3-Clause"),
- ("OpenEXR", get_ver("OpenEXR"), "BSD 3-Clause"),
- ("OpenImageIO", get_ver("OpenImageIO"), "Apache 2.0"),
- ("OpenTimelineIO", get_ver("otio"), "Apache 2.0"),
- ("PySide", get_ver("PySide"), pyside_license),
- ("Python", get_ver("Python"), "PSF License"),
- ("Qt Framework", get_ver("Qt"), qt_license),
+ ("Boost", get_version("Boost"), "Boost Software License"),
+ ("CMake", get_version("CMake"), "BSD 3-Clause"),
+ ("Imath", get_version("Imath"), "BSD 3-Clause"),
+ ("NumPy", get_version("numpy", "1.24+"), "BSD 3-Clause"),
+ ("OpenColorIO", get_version("OpenColorIO"), "BSD 3-Clause"),
+ ("OpenEXR", get_version("OpenEXR"), "BSD 3-Clause"),
+ ("OpenImageIO", get_version("OpenImageIO"), "Apache 2.0"),
+ ("OpenTimelineIO", get_version("otio"), "Apache 2.0"),
+ ("PySide", get_version("PySide"), pyside_license),
+ ("Python", get_version("Python"), "PSF License"),
+ ("Qt Framework", get_version("Qt"), qt_license),
]
# RV-specific proprietary components (only for commercial RV, alphabetical order)
@@ -77,42 +64,42 @@ def get_ver(key, default="Unknown"):
if is_commercial_rv:
# Apple ProRes is only available on macOS (and not on ARM64 currently)
if is_macos:
- prores_ver = get_ver("prores", "Not Used")
+ prores_ver = get_version("prores", "Not Used")
rv_specific_deps.append(("Apple ProRes", prores_ver, "Apple Proprietary"))
# Always add these for commercial RV (version will show "Not Used" if not available)
rv_specific_deps.extend(
[
- ("ARRI SDK", get_ver("arriraw", "Not Used"), "ARRI Proprietary"),
- ("NDI SDK", get_ver("ndi", "Not Used"), "NDI Proprietary"),
- ("RED R3D SDK", get_ver("r3dsdk", "Not Used"), "RED Proprietary"),
- ("x264", get_ver("x264", "Not Used"), "x264 Commercial License"),
+ ("ARRI SDK", get_version("arriraw", "Not Used"), "ARRI Proprietary"),
+ ("NDI SDK", get_version("ndi", "Not Used"), "NDI Proprietary"),
+ ("RED R3D SDK", get_version("r3dsdk", "Not Used"), "RED Proprietary"),
+ ("x264", get_version("x264", "Not Used"), "x264 Commercial License"),
]
)
# Other third-party components (alphabetical order)
other_deps = [
- ("AJA NTV2 SDK", get_ver("aja"), "MIT License"),
- ("Blackmagic DeckLink SDK", get_ver("bmd"), "Proprietary"),
- ("Boehm GC", get_ver("gc"), "MIT-style"),
- ("dav1d", get_ver("dav1d"), "BSD 2-Clause"),
- ("Dear ImGui", get_ver("imgui"), "MIT License"),
- ("Expat", get_ver("expat"), "MIT License"),
- ("FFmpeg", get_ver("FFmpeg"), "LGPL v2.1+"),
- ("GLEW", get_ver("GLEW"), "Modified BSD / MIT"),
- ("libjpeg-turbo", get_ver("jpegturbo"), "BSD-style"),
- ("libpng", get_ver("png"), "libpng License"),
- ("LibRaw", get_ver("raw"), "LGPL v2.1 / CDDL"),
- ("libtiff", get_ver("tiff"), "libtiff License"),
- ("libwebp", get_ver("webp"), "BSD 3-Clause"),
- ("nanobind", get_ver("nanobind"), "BSD 3-Clause"),
- ("OpenJPEG", get_ver("openjpeg"), "BSD 2-Clause"),
- ("OpenJPH", get_ver("openjph"), "BSD 2-Clause"),
- ("OpenSSL", get_ver("OpenSSL"), "Apache License 2.0"),
- ("PCRE2", get_ver("pcre2"), "BSD License"),
- ("spdlog", get_ver("spdlog"), "MIT License"),
- ("yaml-cpp", get_ver("yaml-cpp"), "MIT License"),
- ("zlib", get_ver("zlib"), "zlib License"),
+ ("AJA NTV2 SDK", get_version("aja"), "MIT License"),
+ ("Blackmagic DeckLink SDK", get_version("bmd"), "Proprietary"),
+ ("Boehm GC", get_version("gc"), "MIT-style"),
+ ("dav1d", get_version("dav1d"), "BSD 2-Clause"),
+ ("Dear ImGui", get_version("imgui"), "MIT License"),
+ ("Expat", get_version("expat"), "MIT License"),
+ ("FFmpeg", get_version("FFmpeg"), "LGPL v2.1+"),
+ ("GLEW", get_version("GLEW"), "Modified BSD / MIT"),
+ ("libjpeg-turbo", get_version("jpegturbo"), "BSD-style"),
+ ("libpng", get_version("png"), "libpng License"),
+ ("LibRaw", get_version("raw"), "LGPL v2.1 / CDDL"),
+ ("libtiff", get_version("tiff"), "libtiff License"),
+ ("libwebp", get_version("webp"), "BSD 3-Clause"),
+ ("nanobind", get_version("nanobind"), "BSD 3-Clause"),
+ ("OpenJPEG", get_version("openjpeg"), "BSD 2-Clause"),
+ ("OpenJPH", get_version("openjph"), "BSD 2-Clause"),
+ ("OpenSSL", get_version("OpenSSL"), "Apache License 2.0"),
+ ("PCRE2", get_version("pcre2"), "BSD License"),
+ ("spdlog", get_version("spdlog"), "MIT License"),
+ ("yaml-cpp", get_version("yaml-cpp"), "MIT License"),
+ ("zlib", get_version("zlib"), "zlib License"),
]
return vfx_deps, other_deps, rv_specific_deps
@@ -121,10 +108,7 @@ def get_ver(key, default="Unknown"):
def generate_about_cpp(
output_file,
compiler,
- build_type,
- cxx_flags,
vfx_platform,
- build_root,
platform,
arch,
app_name,
@@ -135,7 +119,7 @@ def generate_about_cpp(
git_commit = get_git_info(git_hash)
versions = parse_versions(versions_str)
- vfx_deps, other_deps, rv_specific_deps = get_dependencies_info(vfx_platform, versions, app_name, platform)
+ vfx_deps, other_deps, rv_specific_deps = get_dependencies_info(versions, app_name, platform)
build_date = datetime.now().strftime("%B %d, %Y")
# Build the HTML content
@@ -282,37 +266,28 @@ def generate_about_cpp(
if __name__ == "__main__":
- print("=== generate_about_rv.py starting ===", flush=True)
- if len(sys.argv) < 9:
- print(
- "Usage: generate_about_rv.py "
- + " [versions] [git_hash]"
- )
- sys.exit(1)
-
- output_file = sys.argv[1]
- compiler = sys.argv[2]
- build_type = sys.argv[3]
- cxx_flags = sys.argv[4]
- vfx_platform = sys.argv[5]
- build_root = sys.argv[6]
- platform = sys.argv[7]
- arch = sys.argv[8]
- app_name = sys.argv[9] if len(sys.argv) > 9 else "Open RV"
- versions_str = sys.argv[10] if len(sys.argv) > 10 else ""
- git_hash = sys.argv[11] if len(sys.argv) > 11 else ""
-
- print(f"=== Calling generate_about_cpp for: {output_file} ===", flush=True)
+ parser = argparse.ArgumentParser(
+ description="Generate about_rv.cpp with build and dependency information"
+ )
+ parser.add_argument("output_file", help="Path to the output C++ file")
+ parser.add_argument("compiler", help="Compiler name and version")
+ parser.add_argument("vfx_platform", help="VFX Platform version (e.g., CY2024)")
+ parser.add_argument("platform", help="Target platform (e.g., macOS, Linux, Windows)")
+ parser.add_argument("arch", help="Target architecture (e.g., x86_64, arm64)")
+ parser.add_argument("app_name", nargs="?", default="Open RV", help="Application name")
+ parser.add_argument("versions", nargs="?", default="", help="Comma-separated dependency versions")
+ parser.add_argument("git_hash", nargs="?", default="", help="Git commit hash")
+
+ args = parser.parse_args()
+
+ print(f"=== generate_about_rv.py: generating {args.output_file} ===", flush=True)
generate_about_cpp(
- output_file,
- compiler,
- build_type,
- cxx_flags,
- vfx_platform,
- build_root,
- platform,
- arch,
- app_name,
- versions_str,
- git_hash,
+ args.output_file,
+ args.compiler,
+ args.vfx_platform,
+ args.platform,
+ args.arch,
+ args.app_name,
+ args.versions,
+ args.git_hash,
)