Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
8f0792a
Add taglib compatibility header
rekhap2kandhavelan Jan 8, 2026
03052c7
Add include path for taglib compatibility header and resolve sssl pac…
rekhap2kandhavelan Jan 8, 2026
19b30cd
Update FakeGStreamer.cpp
rekhap2kandhavelan Jan 21, 2026
8b48ce8
Update scripts/install_gstreamer.sh
rekhap2kandhavelan Jan 21, 2026
71b8104
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 21, 2026
d2589b1
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 22, 2026
d1e5351
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 22, 2026
226ed3f
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 22, 2026
42fd35f
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 22, 2026
e8bd8c0
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 22, 2026
85ec78a
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 22, 2026
ca743e0
resolve conflict
rkandh015 Jan 22, 2026
6328160
Update CMakeLists.txt
rekhap2kandhavelan Jan 22, 2026
99b156d
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 22, 2026
025076e
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
1a7bf29
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
c6de14e
Update scripts/install_gstreamer.sh
rekhap2kandhavelan Jan 23, 2026
225061f
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 23, 2026
6a4b3b1
Update scripts/install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
d2d123b
Update scripts/install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
cc7ce25
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
3942ded
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
6045701
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
abe935b
Update test/utests/mocks/MockGstUtils.h
rekhap2kandhavelan Jan 23, 2026
6c7d6ad
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
95b6cc7
Addressed copilot review
rekhap2kandhavelan Jan 23, 2026
e044d63
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
a606813
Update scripts/install_gstreamer.sh
rekhap2kandhavelan Jan 23, 2026
a0d1955
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
f5926b2
Update CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
a356d1c
Update CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
3d04d8c
Update install_gstreamer.sh
rekhap2kandhavelan Jan 23, 2026
a14be93
Update install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
8133c5f
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
a248a60
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
344ec4a
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
004c310
Update test/utests/tests/GstPlayer/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
119dcf0
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
0565c4c
Update scripts/taglib_compat.h
rekhap2kandhavelan Jan 23, 2026
b613a33
Update test/utests/tests/PluginsTests/CMakeLists.txt
rekhap2kandhavelan Jan 23, 2026
2832cdd
Update scripts/install_subtec.sh
rekhap2kandhavelan Jan 23, 2026
2e288b7
Update test/utests/mocks/MockGStreamer.h
rekhap2kandhavelan Jan 23, 2026
6d327d1
Update test/utests/fakes/FakeGstUtils.cpp
rekhap2kandhavelan Jan 23, 2026
ba53f3e
Update test/utests/fakes/FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
fe65678
Update FakeGStreamer.cpp
rekhap2kandhavelan Jan 23, 2026
9f61afd
Update ClearKeyDrmSessionTests.cpp
rekhap2kandhavelan Jan 23, 2026
9e7b480
Update install_subtec.sh
rekhap2kandhavelan 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
19 changes: 16 additions & 3 deletions scripts/install_gstreamer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,22 @@ function install_gstpluginsgoodfn()
fi

echo "Building gst-plugins-good with --pkg-config path $PKG_CONFIG..."
meson --pkg-config-path="${PKG_CONFIG}" build
ninja -C build
sudo ninja -C build install

BUILD_DIR=".libs/gst-plugins-good-${DEFAULT_GSTVERSION}/build"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ABS_COMPAT="${SCRIPT_DIR}/taglib_compat.h"
Comment thread
rekhap2kandhavelan marked this conversation as resolved.

echo "Building gst-plugins-good in ${BUILD_DIR}"
if [ -d "${BUILD_DIR}" ]; then
echo "Existing build directory ${BUILD_DIR} detected; running 'meson setup' with --wipe (this will reset the build directory)."
meson setup "${BUILD_DIR}" --wipe --pkg-config-path="${PKG_CONFIG}" \
-Dcpp_args="-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST -include ${ABS_COMPAT}"
else
meson setup "${BUILD_DIR}" --pkg-config-path="${PKG_CONFIG}" \
-Dcpp_args="-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST -include ${ABS_COMPAT}"
Comment thread
rekhap2kandhavelan marked this conversation as resolved.
fi
ninja -C "${BUILD_DIR}" -v
sudo ninja -C "${BUILD_DIR}" install

# ARM vs x86 have different installation directories
if [ -d /usr/local/lib/gstreamer-1.0 ]; then
Expand Down
89 changes: 78 additions & 11 deletions scripts/install_subtec.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/usr/bin/env bash


function subtec_install_fn() {

# Need PLAYER_DIR passed in so we can find patch files
Expand Down Expand Up @@ -34,41 +33,109 @@ function subtec_install_fn() {
git apply -p1 ${1}/OSX/patches/subttxrend-app-ubuntu_24_04_build.patch
git apply -p1 ${1}/OSX/patches/websocket-ipplayer2-ubuntu_24_04_build.patch --directory websocket-ipplayer2-utils

echo "Patching subtec-app CMakeLists.txt (use gdbus-codegen)"
if [[ "$OSTYPE" == "darwin"* ]] ; then
SED_ARG="''" # macOS sed: -i ''
else
SED_ARG="" # GNU sed: -i
fi

echo "Patching subtec-app CMakeLists.txt with '$2'"
# Setup gdbus-codegen based on OS (standard D-Bus XML -> C generator). Documentation: https://developer.gnome.org/gio/stable/gdbus-codegen.html
if [[ "$OSTYPE" == "darwin"* ]] ; then
SED_ARG="''" # MacOS -i has different -i argument
# macOS: Use Homebrew GLib gdbus-codegen
if ! command -v brew >/dev/null 2>&1; then
echo "ERROR: Homebrew (brew) is not installed or not in PATH."
echo "Install Homebrew and then run: brew install glib"
popd >/dev/null
return 1
fi

if ! GLIB_PREFIX="$(brew --prefix glib 2>/dev/null)"; then
echo "ERROR: Failed to determine Homebrew prefix for glib."
echo "Run: brew install glib"
popd >/dev/null
return 1
fi

if [ -z "${GLIB_PREFIX}" ]; then
echo "ERROR: Homebrew reported an empty prefix for glib."
echo "Run: brew install glib"
popd >/dev/null
return 1
fi

export GDBUS_CODEGEN="${GLIB_PREFIX}/bin/gdbus-codegen"
export PATH="${GLIB_PREFIX}/bin:$PATH"
if [ ! -x "${GDBUS_CODEGEN}" ]; then
echo "ERROR: gdbus-codegen not found at ${GDBUS_CODEGEN}"
echo "Run: brew install glib"
popd >/dev/null
return 1
fi
else
# Linux: Install and use system gdbus-codegen
if ! command -v gdbus-codegen >/dev/null 2>&1; then
echo "Installing gdbus-codegen via package manager..."
if command -v apt-get >/dev/null 2>&1; then
sudo apt-get update && sudo apt-get install -y libglib2.0-dev
elif command -v yum >/dev/null 2>&1; then
sudo yum install -y glib2-devel
elif command -v dnf >/dev/null 2>&1; then
sudo dnf install -y glib2-devel
elif command -v pacman >/dev/null 2>&1; then
sudo pacman -S glib2
else
echo "ERROR: Could not detect package manager. Please install libglib2.0-dev or equivalent manually."
popd >/dev/null
return 1
fi
Comment thread
rekhap2kandhavelan marked this conversation as resolved.
fi

if ! command -v gdbus-codegen >/dev/null 2>&1; then
echo "ERROR: gdbus-codegen not found after installation."
popd >/dev/null
return 1
fi

export GDBUS_CODEGEN="gdbus-codegen"
fi
sed -i ${SED_ARG} 's:COMMAND gdbus-codegen --interface-prefix com.libertyglobal.rdk --generate-c-code SubtitleDbusInterface ${CMAKE_CURRENT_SOURCE_DIR}/api/dbus/SubtitleDbusInterface.xml:COMMAND '"${2}"'/glib/build/gio/gdbus-2.0/codegen/gdbus-codegen --interface-prefix com.libertyglobal.rdk --generate-c-code SubtitleDbusInterface ${CMAKE_CURRENT_SOURCE_DIR}/api/dbus/SubtitleDbusInterface.xml:g' subttxrend-dbus/CMakeLists.txt

sed -i ${SED_ARG} 's:COMMAND gdbus-codegen --interface-prefix com.libertyglobal.rdk --generate-c-code TeletextDbusInterface ${CMAKE_CURRENT_SOURCE_DIR}/api/dbus/TeletextDbusInterface.xml:COMMAND '"${2}"'/glib/build/gio/gdbus-2.0/codegen/gdbus-codegen --interface-prefix com.libertyglobal.rdk --generate-c-code TeletextDbusInterface ${CMAKE_CURRENT_SOURCE_DIR}/api/dbus/TeletextDbusInterface.xml:g' subttxrend-dbus/CMakeLists.txt
# Escape path for safe sed replacement
GDBUS_ESCAPED="$(printf '%s\n' "${GDBUS_CODEGEN}" | sed 's/[\/&]/\\&/g')"

# Replace the COMMAND lines to use the absolute Homebrew path
sed -i ${SED_ARG} "s:COMMAND gdbus-codegen --interface-prefix com.libertyglobal.rdk --generate-c-code SubtitleDbusInterface:COMMAND ${GDBUS_ESCAPED} --interface-prefix com.libertyglobal.rdk --generate-c-code SubtitleDbusInterface:g" subttxrend-dbus/CMakeLists.txt

sed -i ${SED_ARG} "s:COMMAND gdbus-codegen --interface-prefix com.libertyglobal.rdk --generate-c-code TeletextDbusInterface:COMMAND ${GDBUS_ESCAPED} --interface-prefix com.libertyglobal.rdk --generate-c-code TeletextDbusInterface:g" subttxrend-dbus/CMakeLists.txt

# Also handle case where it was previously patched to a local glib/build path
sed -i ${SED_ARG} "s:COMMAND .*glib/build/gio/gdbus-2.0/codegen/gdbus-codegen:COMMAND ${GDBUS_ESCAPED}:g" subttxrend-dbus/CMakeLists.txt

echo "subtec-app source prepared"
popd
popd >/dev/null || return 1
}

function subtec_install_build_fn() {

cd $LOCAL_DEPS_BUILD_DIR
cd "$LOCAL_DEPS_BUILD_DIR" || return 1

# OPTION_CLEAN == true
if [ $1 = true ] ; then
if [ "$1" = true ] ; then
echo "subtec clean"
rm -rf subtec-app
fi


# Install
if [ -d "subtec-app" ]; then
echo "subtec-app is already installed"
INSTALL_STATUS_ARR+=("subtec-app was already installed.")
else
# Tell installer where DEPs are so cmake can be patched
subtec_install_fn ${PLAYER_DIR} ${LOCAL_DEPS_BUILD_DIR}
subtec_install_fn "${PLAYER_DIR}" "${LOCAL_DEPS_BUILD_DIR}" || return 1
fi

# Build
cd subtec-app/subttxrend-app/x86_builder/
cd subtec-app/subttxrend-app/x86_builder/ || return 1

if [ ! -d build/install ] ; then
PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig:/usr/local/ssl/lib/pkgconfig:/opt/homebrew/lib/pkgconfig:$PKG_CONFIG_PATH ./build.sh fast
Expand Down
34 changes: 34 additions & 0 deletions scripts/taglib_compat.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

#pragma once
Comment thread
rekhap2kandhavelan marked this conversation as resolved.

#include <taglib/taglib.h>

// Determine if we are building against TagLib 2.x or later.
// Some TagLib distributions define TAGLIB_VERSION, others define
// TAGLIB_MAJOR_VERSION, so we support both here.
#ifndef TAGLIB_IS_V2_OR_LATER
#if (defined(TAGLIB_VERSION) && (TAGLIB_VERSION >= 0x020000)) || \
(defined(TAGLIB_MAJOR_VERSION) && (TAGLIB_MAJOR_VERSION >= 2))
#define TAGLIB_IS_V2_OR_LATER 1
#endif
#endif

#if defined(TAGLIB_IS_V2_OR_LATER)
namespace TagLib {
using uint = unsigned int;
}
Comment thread
rekhap2kandhavelan marked this conversation as resolved.
#endif

// TagLib 2.x: createFrame signature changed.
// Old code uses createFrame(ByteVector, TagLib::uint)
// New API expects createFrame(ByteVector, const Header*)
#if defined(TAGLIB_IS_V2_OR_LATER)
#ifndef GST_TAGLIB_CREATEFRAME_COMPAT
#define GST_TAGLIB_CREATEFRAME_COMPAT 1
Comment thread
rekhap2kandhavelan marked this conversation as resolved.
#ifdef createFrame
#undef createFrame
#endif
#define createFrame(DATA, VERSION) \
createFrame((DATA), (const TagLib::ID3v2::Header*)nullptr)
#endif
#endif
Comment thread
rekhap2kandhavelan marked this conversation as resolved.
Comment thread
rekhap2kandhavelan marked this conversation as resolved.
62 changes: 62 additions & 0 deletions test/utests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,66 @@

endfunction()


# ---- Make find_package(OpenSSL) use a Homebrew keg, not /lib & /include ----
# Honor *Root variables* for find_package (e.g., OpenSSL_ROOT):
if (POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif()

# If the user hasn't provided a root, pick one Homebrew keg.
if (APPLE AND NOT OPENSSL_ROOT_DIR AND NOT DEFINED ENV{OPENSSL_ROOT_DIR})
foreach(_ossl_ver "3.5" "3.4" "3")
if (EXISTS "/opt/homebrew/opt/openssl@${_ossl_ver}")
set(OPENSSL_ROOT_DIR "/opt/homebrew/opt/openssl@${_ossl_ver}" CACHE PATH "" FORCE)
break()
elseif (EXISTS "/usr/local/opt/openssl@${_ossl_ver}")
set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl@${_ossl_ver}" CACHE PATH "" FORCE)
break()
endif()
endforeach()
endif()

# Help CMake search that prefix first
if (OPENSSL_ROOT_DIR)
list(PREPEND CMAKE_PREFIX_PATH "${OPENSSL_ROOT_DIR}")
# Also set OpenSSL_ROOT (recognized due to CMP0074 NEW)
set(OpenSSL_ROOT "${OPENSSL_ROOT_DIR}" CACHE PATH "" FORCE)
endif()

# Ask for components so CMake tries to form imported targets
find_package(OpenSSL REQUIRED COMPONENTS Crypto SSL)

# --- Fallback: if imported targets are still missing, create them explicitly ---
if (NOT TARGET OpenSSL::Crypto OR NOT TARGET OpenSSL::SSL)
message(WARNING "FindOpenSSL did not define imported targets; creating fallback targets.")
if (NOT OPENSSL_INCLUDE_DIR OR NOT OPENSSL_CRYPTO_LIBRARY OR NOT OPENSSL_SSL_LIBRARY)
message(FATAL_ERROR
"OpenSSL variables are incomplete.\n"
"OPENSSL_ROOT_DIR='${OPENSSL_ROOT_DIR}'\n"
"OPENSSL_INCLUDE_DIR='${OPENSSL_INCLUDE_DIR}'\n"
"OPENSSL_CRYPTO_LIBRARY='${OPENSSL_CRYPTO_LIBRARY}'\n"
"OPENSSL_SSL_LIBRARY='${OPENSSL_SSL_LIBRARY}'\n"
"Tip: configure with -DOPENSSL_ROOT_DIR=<brew keg> and explicit *_LIBRARY paths."
)
endif()

Check failure on line 145 in test/utests/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / call-fossid-workflow / Fossid Annotate PR

FossID License Issue Detected

Source code with 'MIT' license found in local file 'test/utests/CMakeLists.txt' (Match: TileDB-Inc/TileDB/1.3.0, 13 lines, url: https://github.com/TileDB-Inc/TileDB/archive/refs/tags/1.3.0.tar.gz, file: cmake/Modules/FindOpenSSL_EP.cmake)

add_library(OpenSSL::Crypto UNKNOWN IMPORTED)
set_target_properties(OpenSSL::Crypto PROPERTIES
IMPORTED_LOCATION "${OPENSSL_CRYPTO_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
)

add_library(OpenSSL::SSL UNKNOWN IMPORTED)
set_target_properties(OpenSSL::SSL PROPERTIES
IMPORTED_LOCATION "${OPENSSL_SSL_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
)
endif()

# Diagnostics (helpful while debugging)
message(STATUS "OpenSSL include: ${OPENSSL_INCLUDE_DIR}")
message(STATUS "OpenSSL crypto : ${OPENSSL_CRYPTO_LIBRARY}")
message(STATUS "OpenSSL ssl : ${OPENSSL_SSL_LIBRARY}")

add_subdirectory(tests)
Loading
Loading