Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
f14a84d
update aja 17.1 to 17.6
mcoliver Jan 22, 2026
6f4a23d
libatomicops 7.7 -> 7.10
mcoliver Jan 22, 2026
e0d9d77
script to check for new dependency versions
mcoliver Jan 22, 2026
d508f64
dav1d 1.4.3 -> 1.5.3
mcoliver Jan 22, 2026
59b6747
17.6.0.hotfix1
mcoliver Jan 22, 2026
dd8e5eb
doctest 2.4.9 -> 2.4.12
mcoliver Jan 22, 2026
ec006de
expat 2.6.3 -> 2.7.3
mcoliver Jan 22, 2026
fc2f344
gc 8.2.2 -> 8.2.10
mcoliver Jan 22, 2026
0b32808
openjpeg 2.5.0 -> 2.5.4
mcoliver Jan 22, 2026
e67ea90
openjph 0.21.3 -> 0.26.0
mcoliver Jan 22, 2026
5b004cc
pcre2 10.43 -> 10.47
mcoliver Jan 22, 2026
02b1a14
libpng 1.6.48 -> 1.6.54
mcoliver Jan 22, 2026
247b0dd
spdlog 1.11 -> 1.17
mcoliver Jan 22, 2026
ef7c94f
webp 1.2.1 -> 1.6.0
mcoliver Jan 22, 2026
596bfbc
libraw 0.21.1 -> 0.22.0
mcoliver Jan 22, 2026
ae70a1a
update libraw hash for 0.22
mcoliver Jan 22, 2026
0dd0b2b
forgot to ruff format
mcoliver Jan 22, 2026
c3b2c76
cmake-format fix for ci
mcoliver Jan 22, 2026
e3a556f
openjph now but the libs on linux in lib64
mcoliver Jan 22, 2026
78ebf7d
hash updated
mcoliver Jan 22, 2026
7686944
add utf-8 compile flag for spdlog and oiio that lean on fmt
mcoliver Jan 22, 2026
b8a776d
add debug support for openjph
mcoliver Jan 22, 2026
495d2c7
fixed formatting
mcoliver Jan 22, 2026
c885428
format fixes
mcoliver Jan 22, 2026
429891c
Update aja.cmake
mcoliver Jan 23, 2026
fa2f1d8
Merge branch 'main' into dependency_updates
mcoliver Jan 23, 2026
2911647
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 23, 2026
9e49bc6
formatting fix
mcoliver Jan 23, 2026
cfa719b
Merge branch 'main' into dependency_updates
mcoliver Jan 26, 2026
0cd056c
fix windows debug version name
mcoliver Jan 28, 2026
dadd8d0
Merge branch 'dependency_updates' of github.com:mcoliver/OpenRV into …
mcoliver Jan 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions check_dependency_versions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
import re
import subprocess
import sys
import os


def get_latest_version(url):
try:
cmd = ["git", "ls-remote", "-t", "--refs", url]
result = subprocess.run(cmd, capture_output=True, text=True, timeout=15)
if result.returncode != 0:
return "Error"

lines = result.stdout.strip().split("\n")
tags = [line.split()[1].replace("refs/tags/", "") for line in lines if len(line.split()) >= 2]

if not tags:
return "No tags"

# Filter out unstable
stable_tags = [t for t in tags if not re.search(r"(rc|beta|alpha|dev|test|pre)", t, re.IGNORECASE)]
if not stable_tags:
stable_tags = tags

def parse_to_tuple(tag):
# Normalize: replace _ with .
norm = tag.replace("_", ".")
# Extract all digit sequences
parts = re.findall(r"\d+", norm)
return [int(p) for p in parts] if parts else [0]

# Heuristic: Prefer tags that look like multi-part versions (contain dots or underscores)
# over tags that are just a single number (often dates or old identifiers)
semver_ish = [t for t in stable_tags if "." in t or "_" in t]

# Exception: if it's just 'v1' or 'n2', we might want it if there's nothing better
if not semver_ish:
# Look for tags starting with v/n/R followed by a number
semver_ish = [t for t in stable_tags if re.match(r"^[vVnR]\d+", t)]

candidates = semver_ish if semver_ish else stable_tags

# If it's FFmpeg, prefer tags starting with 'n'
if "FFmpeg" in url:
n_tags = [t for t in candidates if t.startswith("n")]
if n_tags:
candidates = n_tags

candidates.sort(key=parse_to_tuple)

if candidates:
return candidates[-1]
return "Unknown"

except Exception:
return "Error"


def main():
filepath = "cmake/defaults/CYCOMMON.cmake"
if not os.path.exists(filepath):
print(f"File not found: {filepath}")
sys.exit(1)

with open(filepath, "r") as f:
content = f.read()

pkg_pattern = re.compile(r"^#\s+([a-zA-Z0-9_-]+)\s+(https?://\S+)", re.MULTILINE)
matches = pkg_pattern.findall(content)

GREEN = "\033[92m"
RESET = "\033[0m"

results = []

print(f"Analyzing {len(matches)} packages...")

for name, url in matches:
var_base = name.upper().replace("-", "_")
var_name = f"RV_DEPS_{var_base}_VERSION"

var_regex = re.compile(rf'SET\(\s*{re.escape(var_name)}\s+"([^"]+)"', re.MULTILINE | re.DOTALL)
versions_in_file = [v.strip() for v in var_regex.findall(content)]
current_display = ", ".join(versions_in_file) if versions_in_file else "Not Found"

latest_raw = get_latest_version(url)
display_latest = latest_raw

if latest_raw not in ["Error", "No tags", "Unknown"]:
# Strip prefixes for display/comparison
if display_latest.startswith(("v", "V")):
display_latest = display_latest[1:]
elif display_latest.startswith("R_"):
display_latest = display_latest[2:]
# ffmpeg n is kept

display_latest = display_latest.replace("_", ".")

is_match = display_latest in versions_in_file
results.append({"name": name, "current": current_display, "latest": display_latest, "match": is_match})

col_name = 15
col_curr = 25
col_late = 25

header = f"{'Package':<{col_name}} | {'Current Version':<{col_curr}} | {'Latest Tag':<{col_late}}"
print("\n" + header)
print("-" * len(header))

for r in results:
name = r["name"]
curr = r["current"]
late = r["latest"]

if r["match"]:
late_colored = f"{GREEN}{late}{RESET}"
padding = " " * (col_late - len(late))
late_display = f"{late_colored}{padding}"
else:
late_display = f"{late:<{col_late}}"

print(f"{name:<{col_name}} | {curr:<{col_curr}} | {late_display}")


if __name__ == "__main__":
main()
56 changes: 28 additions & 28 deletions cmake/defaults/CYCOMMON.cmake
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
# Common build dependencies for all CY20XX platforms aja https://github.com/aja-video/libajantv2
SET(RV_DEPS_AJA_VERSION
"17.1.0"
"17.6.0.hotfix1"
)
SET(RV_DEPS_AJA_DOWNLOAD_HASH
"b9d189f77e18dbdff7c39a339b1a5dd4"
"dba447ddd1b0ee84cee8441c0adba06a"
)

# atomic_ops https://github.com/ivmai/libatomic_ops
# atomic_ops https://github.com/bdwgc/libatomic_ops
SET(RV_DEPS_ATOMIC_OPS_VERSION
"7.7.0"
"7.10.0"
)
SET(RV_DEPS_ATOMIC_OPS_DOWNLOAD_HASH
"cc7fad1e71b3064abe1ea821ae9a9a6e"
"35e417e4e49cd97976ef14c50e06db9b"
)

# dav1d https://github.com/videolan/dav1d
SET(RV_DEPS_DAV1D_VERSION
"1.4.3"
"1.5.3"
)
SET(RV_DEPS_DAV1D_DOWNLOAD_HASH
"2c62106fda87a69122dc8709243a34e8"
"6a195752588586acf13349a1cceedab8"
)

# doctest https://github.com/doctest/doctest
SET(RV_DEPS_DOCTEST_VERSION
"2.4.9"
"2.4.12"
)
SET(RV_DEPS_DOCTEST_DOWNLOAD_HASH
"a7948b5ec1f69de6f84c7d7487aaf79b"
"92bcfd6352ebf6c741f9ffaa3cad8808"
)

# expat https://github.com/libexpat/libexpat
SET(RV_DEPS_EXPAT_VERSION
"2.6.3"
"2.7.3"
)
SET(RV_DEPS_EXPAT_DOWNLOAD_HASH
"985086e206a01e652ca460eb069e4780"
"e87e396c0062f9bb0f1b57c85f11dd0c"
)

# ffmpeg https://github.com/FFmpeg/FFmpeg
Expand Down Expand Up @@ -124,10 +124,10 @@ ENDIF()

# gc https://github.com/ivmai/bdwgc
SET(RV_DEPS_GC_VERSION
"8.2.2"
"8.2.10"
)
SET(RV_DEPS_GC_DOWNLOAD_HASH
"2ca38d05e1026b3426cf6c24ca3a7787"
"d394a9dd165e742283fb82b20d1b688c"
)

# glew https://github.com/nigels-com/glew
Expand Down Expand Up @@ -184,18 +184,18 @@ SET(RV_DEPS_OIIO_DOWNLOAD_HASH

# openjpeg https://github.com/uclouvain/openjpeg
SET(RV_DEPS_OPENJPEG_VERSION
"2.5.0"
"2.5.4"
)
SET(RV_DEPS_OPENJPEG_DOWNLOAD_HASH
"5cbb822a1203dd75b85639da4f4ecaab"
"6160de075bb5191e482bc0f024b375e4"
)

# openjph https://github.com/aous72/OpenJPH
SET(RV_DEPS_OPENJPH_VERSION
"0.21.3"
"0.26.0"
)
SET(RV_DEPS_OPENJPH_DOWNLOAD_HASH
"d0a3fb5f643a8948d5874624ff94a229"
"469e12ba5e953ce7002d02f9486c8721"
)

# otio https://github.com/AcademySoftwareFoundation/OpenTimelineIO
Expand All @@ -205,38 +205,38 @@ SET(RV_DEPS_OTIO_VERSION

# pcre2 https://github.com/PCRE2Project/pcre2
SET(RV_DEPS_PCRE2_VERSION
"10.43"
"10.47"
)
SET(RV_DEPS_PCRE2_DOWNLOAD_HASH
"e4c3f2a24eb5c15bec8360e50b3f0137"
"b55ec5acca85ffddc7d81c23f22bf176"
)

# png https://github.com/glennrp/libpng
SET(RV_DEPS_PNG_VERSION
"1.6.48"
"1.6.54"
)
SET(RV_DEPS_PNG_DOWNLOAD_HASH
"be6cc9e411c26115db3b9eab1159a1d9"
"fbad637cfd2eeef6b35e5ec3af97621c"
)

# raw https://github.com/LibRaw/LibRaw Please check the libraw_version.h file for your version number to get the LIBRAW_SHLIB_CURRENT value
# https://github.com/LibRaw/LibRaw/blob/0.21-stable/libraw/libraw_version.h
SET(RV_DEPS_RAW_VERSION
"0.21.1"
"0.22.0"
)
SET(RV_DEPS_RAW_DOWNLOAD_HASH
"3ad334296a7a2c8ee841f353cc1b450b"
"1d2e307a1e6d7a34268fc421b17675fe"
)
SET(RV_DEPS_RAW_VERSION_LIB
"23"
"24"
)

# spdlog https://github.com/gabime/spdlog
SET(RV_DEPS_SPDLOG_VERSION
"1.11.0"
"1.17.0"
)
SET(RV_DEPS_SPDLOG_DOWNLOAD_HASH
"cd620e0f103737a122a3b6539bd0a57a"
"f0d8dd02539fe609bdfd42c0549fe28d"
)

# tiff https://gitlab.com/libtiff/libtiff
Expand All @@ -252,10 +252,10 @@ SET(RV_DEPS_TIFF_VERSION_LIB

# webp https://github.com/webmproject/libwebp
SET(RV_DEPS_WEBP_VERSION
"1.2.1"
"1.6.0"
)
SET(RV_DEPS_WEBP_DOWNLOAD_HASH
"ef5ac6de4b800afaebeb10df9ef189b2"
"d498caf9323a24ce3ed40b84c22a32cd"
)

# zlib https://github.com/madler/zlib
Expand Down
2 changes: 1 addition & 1 deletion cmake/dependencies/aja.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ SET(_download_hash
)

IF(RV_TARGET_WINDOWS)
RV_MAKE_STANDARD_LIB_NAME(ajantv2_vs143_MT "" "SHARED" "d")
RV_MAKE_STANDARD_LIB_NAME(ajantv2 "" "SHARED" "d")
ELSE()
RV_MAKE_STANDARD_LIB_NAME(ajantv2 "" "SHARED" "d")
ENDIF()
Expand Down
3 changes: 1 addition & 2 deletions cmake/dependencies/atomic_ops.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,8 @@ SET(_version
${RV_DEPS_ATOMIC_OPS_VERSION}
)

# Download a recent version that includes the feature we need (--disable-gpl) which hasn't been released nor tagged yet.
SET(_download_url
"https://github.com/ivmai/libatomic_ops/archive/044573903530c4a8e8318e20a830d4a0531b2035.zip"
"https://github.com/bdwgc/libatomic_ops/archive/refs/tags/v${_version}.zip"
)

SET(_download_hash
Expand Down
4 changes: 2 additions & 2 deletions cmake/dependencies/gc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ PROCESSORCOUNT(_cpu_count)
RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_GC" "${RV_DEPS_GC_VERSION}" "" "")

SET(_download_url
"https://github.com/ivmai/bdwgc/archive/refs/tags/v${_version}.zip"
"https://github.com/ivmai/bdwgc/archive/refs/tags/v${_version}.tar.gz"
)
SET(_download_hash
${RV_DEPS_GC_DOWNLOAD_HASH}
Expand Down Expand Up @@ -94,7 +94,7 @@ ENDIF()

EXTERNALPROJECT_ADD(
${_target}
DOWNLOAD_NAME ${_target}_${_version}.zip
DOWNLOAD_NAME ${_target}_${_version}.tar.gz
DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
SOURCE_DIR ${RV_DEPS_BASE_DIR}/${_target}/src
Expand Down
8 changes: 8 additions & 0 deletions cmake/dependencies/oiio.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ LIST(APPEND _configure_options "-DOIIO_BUILD_TOOLS=OFF" "-DOIIO_BUILD_TESTS=OFF"

IF(RV_TARGET_WINDOWS)
LIST(PREPEND _configure_options "-G ${CMAKE_GENERATOR}")
LIST(APPEND _configure_options "-DCMAKE_CXX_FLAGS=/utf-8")
ENDIF()

IF(NOT RV_TARGET_WINDOWS)
Expand Down Expand Up @@ -250,6 +251,13 @@ TARGET_INCLUDE_DIRECTORIES(
INTERFACE ${_include_dir}
)

IF(RV_TARGET_WINDOWS)
SET_TARGET_PROPERTIES(
oiio::oiio
PROPERTIES INTERFACE_COMPILE_OPTIONS "/utf-8"
)
ENDIF()

LIST(APPEND RV_DEPS_LIST oiio::oiio)

ADD_LIBRARY(oiio::utils SHARED IMPORTED GLOBAL)
Expand Down
25 changes: 16 additions & 9 deletions cmake/dependencies/openjph.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,7 @@ PROCESSORCOUNT(_cpu_count)

# version 2+ requires changes to IOjp2 project
RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_OPENJPH" "${RV_DEPS_OPENJPH_VERSION}" "make" "")
IF(RV_TARGET_LINUX)
# Overriding _lib_dir created in 'RV_CREATE_STANDARD_DEPS_VARIABLES' since this CMake-based project isn't using lib64
SET(_lib_dir
${_install_dir}/lib
)
ENDIF()

RV_SHOW_STANDARD_DEPS_VARIABLES()

SET(_download_url
Expand All @@ -27,17 +22,29 @@ SET(_download_url
SET(_download_hash
${RV_DEPS_OPENJPH_DOWNLOAD_HASH}
)
# https://github.com/aous72/OpenJPH/blob/8e597d11715552a6c63e3963d940fa29a4c5831b/src/core/CMakeLists.txt#L119
IF(CMAKE_BUILD_TYPE MATCHES "^Debug$")
IF(RV_TARGET_WINDOWS)
SET(RV_OPENJPH_DEBUG_POSTFIX
"d"
)
ELSE()
SET(RV_OPENJPH_DEBUG_POSTFIX
"_d"
)
ENDIF()
ENDIF()

IF(RV_TARGET_WINDOWS)
RV_MAKE_STANDARD_LIB_NAME("openjph.${_version_major}.${_version_minor}" "${RV_DEPS_OPENJPH_VERSION}" "SHARED" "")
RV_MAKE_STANDARD_LIB_NAME("openjph.${_version_major}.${_version_minor}${RV_OPENJPH_DEBUG_POSTFIX}" "${RV_DEPS_OPENJPH_VERSION}" "SHARED" "")
SET(_libname
"openjph.${_version_major}.${_version_minor}.lib"
"openjph.${_version_major}.${_version_minor}${RV_OPENJPH_DEBUG_POSTFIX}.lib"
)
SET(_implibpath
${_lib_dir}/${_libname}
)
ELSE()
RV_MAKE_STANDARD_LIB_NAME("openjph" "${RV_DEPS_OPENJPH_VERSION}" "SHARED" "")
RV_MAKE_STANDARD_LIB_NAME("openjph${RV_OPENJPH_DEBUG_POSTFIX}" "${RV_DEPS_OPENJPH_VERSION}" "SHARED" "")
ENDIF()
MESSAGE("****OPENJPH RV_MAKE_STANDARD_LIB_NAME IMPLIB _implibpath:${_implibpath} _implibname:${_implibname} _libname:${_libname} _libpath:${_libpath}")

Expand Down
Loading