Loading pkgs/applications/video/shaka-packager/0001-Allow-external-declaration-of-packager-version.patch 0 → 100644 +32 −0 Original line number Diff line number Diff line From e243cc17f48c5e1b8db29cab85ca98b033d972fb Mon Sep 17 00:00:00 2001 From: Niklas Korz <niklas@niklaskorz.de> Date: Wed, 4 Sep 2024 14:51:30 +0200 Subject: [PATCH 1/3] Allow external declaration of packager version --- packager/version/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packager/version/CMakeLists.txt b/packager/version/CMakeLists.txt index fba4fb8282..ad56e0a23b 100644 --- a/packager/version/CMakeLists.txt +++ b/packager/version/CMakeLists.txt @@ -4,6 +4,7 @@ # license that can be found in the LICENSE file or at # https://developers.google.com/open-source/licenses/bsd +if(NOT DEFINED PACKAGER_VERSION) execute_process( COMMAND "${Python3_EXECUTABLE}" generate_version_string.py WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" @@ -14,6 +15,7 @@ execute_process( if(NOT STATUS EQUAL 0) message(FATAL_ERROR "Failed to generate Packager version") endif() +endif() add_library(version STATIC version.cc) target_compile_definitions(version PRIVATE -- 2.46.0 pkgs/applications/video/shaka-packager/0002-Unvendor-dependencies.patch 0 → 100644 +67 −0 Original line number Diff line number Diff line From 4c7743f4fd231648d7bd1513c9db71a651ef7553 Mon Sep 17 00:00:00 2001 From: Niklas Korz <niklas@niklaskorz.de> Date: Wed, 4 Sep 2024 14:52:23 +0200 Subject: [PATCH 2/3] Unvendor dependencies --- CMakeLists.txt | 24 ++++++++++++++++++++++++ packager/CMakeLists.txt | 1 - 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b96a2429e..181df0bf2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,8 @@ # Minimum CMake version. This must be in the root level CMakeLists.txt. cmake_minimum_required(VERSION 3.24) +set(CMAKE_CXX_STANDARD 17) + # These policy settings should be included before the project definition. include("packager/policies.cmake") @@ -28,6 +30,28 @@ enable_testing() option(SKIP_INTEGRATION_TESTS "Skip the packager integration tests" OFF) +find_package(absl REQUIRED) +find_package(MbedTLS REQUIRED) +find_package(GTest REQUIRED) +find_package(CURL REQUIRED) +find_package(LibXml2 REQUIRED) +find_package(PNG REQUIRED) +find_package(nlohmann_json REQUIRED) +find_package(Protobuf CONFIG REQUIRED) +find_package(webm REQUIRED) + +# Alias to same names as vendored dependencies +add_library(mbedtls ALIAS MbedTLS::mbedtls) +add_library(gmock ALIAS GTest::gmock) +add_library(gtest ALIAS GTest::gtest) +add_library(gtest_main ALIAS GTest::gtest_main) +add_library(libcurl ALIAS CURL::libcurl) +add_library(LibXml2 ALIAS LibXml2::LibXml2) +add_library(png_static ALIAS PNG::PNG) # not static but the expected library name +add_library(libprotobuf ALIAS protobuf::libprotobuf) +add_executable(protoc ALIAS protobuf::protoc) +add_library(webm ALIAS webm::webm) + # Subdirectories with their own CMakeLists.txt add_subdirectory(packager) add_subdirectory(link-test) diff --git a/packager/CMakeLists.txt b/packager/CMakeLists.txt index 7238d243bb..722217bbc4 100644 --- a/packager/CMakeLists.txt +++ b/packager/CMakeLists.txt @@ -78,7 +78,6 @@ add_subdirectory(media) add_subdirectory(hls) add_subdirectory(mpd) add_subdirectory(status) -add_subdirectory(third_party) add_subdirectory(tools) add_subdirectory(utils) add_subdirectory(version) -- 2.46.0 pkgs/applications/video/shaka-packager/0003-Fix-curl-deprecations.patch 0 → 100644 +25 −0 Original line number Diff line number Diff line From c8b0b467a140d8a67157f5cee26a8510444706be Mon Sep 17 00:00:00 2001 From: Niklas Korz <niklas@niklaskorz.de> Date: Wed, 4 Sep 2024 14:52:47 +0200 Subject: [PATCH 3/3] Fix curl deprecations --- packager/file/http_file.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packager/file/http_file.cc b/packager/file/http_file.cc index b50fef6f07..dca43e26ca 100644 --- a/packager/file/http_file.cc +++ b/packager/file/http_file.cc @@ -311,7 +311,7 @@ void HttpFile::SetupRequest() { curl_easy_setopt(curl, CURLOPT_POST, 1L); break; case HttpMethod::kPut: - curl_easy_setopt(curl, CURLOPT_PUT, 1L); + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); break; } -- 2.46.0 pkgs/applications/video/shaka-packager/default.nix +86 −43 Original line number Diff line number Diff line { lib, stdenv, fetchurl, runCommand, shaka-packager, fetchFromGitHub, testers, cmake, ninja, python3, nix-update-script, abseil-cpp, curl, gtest, nlohmann_json, libpng, libxml2, libwebm, mbedtls, mimalloc, protobuf, zlib, }: let sources = { "x86_64-linux" = { filename = "packager-linux-x64"; hash = "sha256-MoMX6PEtvPmloXJwRpnC2lHlT+tozsV4dmbCqweyyI0="; }; aarch64-linux = { filename = "packager-linux-arm64"; hash = "sha256-6+7SfnwVRsqFwI7/1F7yqVtkJVIoOFUmhoGU3P6gdQ0="; }; x86_64-darwin = { filename = "packager-osx-x64"; hash = "sha256-fFBtOp/Zb37LP7TWAEB0yp0xM88cMT9QS59EwW4MrAY="; }; }; source = sources."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); in stdenv.mkDerivation (finalAttrs: { pname = "shaka-packager"; version = "2.6.1"; version = "3.2.0"; src = fetchurl { url = "https://github.com/shaka-project/shaka-packager/releases/download/v${finalAttrs.version}/${source.filename}"; inherit (source) hash; src = fetchFromGitHub { owner = "shaka-project"; repo = "shaka-packager"; rev = "refs/tags/v${finalAttrs.version}"; hash = "sha256-L10IMsc4dTMa5zwYq612F4J+uKOmEEChY8k/m09wuNE="; }; dontUnpack = true; sourceRoot = "."; patches = [ # By default, the git commit hash and tag are used as version # and shaka-packager fails to build if these are not available. # This patch makes it possible to pass an external value as version. # The value itself is declared further below in `cmakeFlags`. ./0001-Allow-external-declaration-of-packager-version.patch # Dependencies are vendored as git submodules inside shaka-packager. # We want to reuse the dependencies from nixpkgs instead to avoid unnecessary # build overhead and to ensure they are up to date. # This patch disables the vendored dependencies (by excluding `third-party`), # finds them inside the build environment and aliases them so they can be accessed # without prefixing namespaces. # The last step is necessary to keep the patch size to a minimum, otherwise we'd have # to add the namespace identifiers everywhere a dependency is used. ./0002-Unvendor-dependencies.patch # As nixpkgs ships with a newer version of libcurl than the one vendored in shaka-packager, # we have to fix one deprecation. # See https://curl.se/libcurl/c/CURLOPT_PUT.html for further information. ./0003-Fix-curl-deprecations.patch ]; nativeBuildInputs = [ cmake ninja ]; installPhase = '' runHook preInstall buildInputs = [ python3 abseil-cpp curl gtest nlohmann_json libpng libxml2 libwebm mbedtls mimalloc (protobuf.override { # must be the same version as for shaka-packager inherit abseil-cpp; }) zlib ]; install -m755 -D $src $out/bin/packager cmakeFlags = [ "-DPACKAGER_VERSION=v${finalAttrs.version}-nixpkgs" # Targets are selected below in ninjaFlags "-DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON" ]; runHook postInstall ''; ninjaFlags = [ "mpd_generator" "packager" "pssh_box_py" ]; passthru.tests = { simple = runCommand "${finalAttrs.pname}-test" { } '' ${shaka-packager}/bin/packager -version | grep ${finalAttrs.version} > $out ''; passthru = { updateScript = nix-update-script { }; tests.version = testers.testVersion { package = finalAttrs.finalPackage; version = "v${finalAttrs.version}-nixpkgs-release"; }; }; meta = { meta = with lib; { description = "Media packaging framework for VOD and Live DASH and HLS applications"; homepage = "https://shaka-project.github.io/shaka-packager/html/"; license = lib.licenses.bsd3; changelog = "https://github.com/shaka-project/shaka-packager/releases/tag/v${finalAttrs.version}"; license = licenses.bsd3; mainProgram = "packager"; maintainers = [ ]; platforms = builtins.attrNames sources; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; maintainers = with maintainers; [ niklaskorz ]; platforms = platforms.all; }; }) pkgs/top-level/all-packages.nix +3 −1 Original line number Diff line number Diff line Loading @@ -31948,7 +31948,9 @@ with pkgs; mpvScripts = mpv-unwrapped.scripts; shaka-packager = callPackage ../applications/video/shaka-packager { }; shaka-packager = callPackage ../applications/video/shaka-packager { abseil-cpp = abseil-cpp_202401; }; mpvpaper = callPackage ../tools/wayland/mpvpaper { }; Loading
pkgs/applications/video/shaka-packager/0001-Allow-external-declaration-of-packager-version.patch 0 → 100644 +32 −0 Original line number Diff line number Diff line From e243cc17f48c5e1b8db29cab85ca98b033d972fb Mon Sep 17 00:00:00 2001 From: Niklas Korz <niklas@niklaskorz.de> Date: Wed, 4 Sep 2024 14:51:30 +0200 Subject: [PATCH 1/3] Allow external declaration of packager version --- packager/version/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packager/version/CMakeLists.txt b/packager/version/CMakeLists.txt index fba4fb8282..ad56e0a23b 100644 --- a/packager/version/CMakeLists.txt +++ b/packager/version/CMakeLists.txt @@ -4,6 +4,7 @@ # license that can be found in the LICENSE file or at # https://developers.google.com/open-source/licenses/bsd +if(NOT DEFINED PACKAGER_VERSION) execute_process( COMMAND "${Python3_EXECUTABLE}" generate_version_string.py WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" @@ -14,6 +15,7 @@ execute_process( if(NOT STATUS EQUAL 0) message(FATAL_ERROR "Failed to generate Packager version") endif() +endif() add_library(version STATIC version.cc) target_compile_definitions(version PRIVATE -- 2.46.0
pkgs/applications/video/shaka-packager/0002-Unvendor-dependencies.patch 0 → 100644 +67 −0 Original line number Diff line number Diff line From 4c7743f4fd231648d7bd1513c9db71a651ef7553 Mon Sep 17 00:00:00 2001 From: Niklas Korz <niklas@niklaskorz.de> Date: Wed, 4 Sep 2024 14:52:23 +0200 Subject: [PATCH 2/3] Unvendor dependencies --- CMakeLists.txt | 24 ++++++++++++++++++++++++ packager/CMakeLists.txt | 1 - 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b96a2429e..181df0bf2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,8 @@ # Minimum CMake version. This must be in the root level CMakeLists.txt. cmake_minimum_required(VERSION 3.24) +set(CMAKE_CXX_STANDARD 17) + # These policy settings should be included before the project definition. include("packager/policies.cmake") @@ -28,6 +30,28 @@ enable_testing() option(SKIP_INTEGRATION_TESTS "Skip the packager integration tests" OFF) +find_package(absl REQUIRED) +find_package(MbedTLS REQUIRED) +find_package(GTest REQUIRED) +find_package(CURL REQUIRED) +find_package(LibXml2 REQUIRED) +find_package(PNG REQUIRED) +find_package(nlohmann_json REQUIRED) +find_package(Protobuf CONFIG REQUIRED) +find_package(webm REQUIRED) + +# Alias to same names as vendored dependencies +add_library(mbedtls ALIAS MbedTLS::mbedtls) +add_library(gmock ALIAS GTest::gmock) +add_library(gtest ALIAS GTest::gtest) +add_library(gtest_main ALIAS GTest::gtest_main) +add_library(libcurl ALIAS CURL::libcurl) +add_library(LibXml2 ALIAS LibXml2::LibXml2) +add_library(png_static ALIAS PNG::PNG) # not static but the expected library name +add_library(libprotobuf ALIAS protobuf::libprotobuf) +add_executable(protoc ALIAS protobuf::protoc) +add_library(webm ALIAS webm::webm) + # Subdirectories with their own CMakeLists.txt add_subdirectory(packager) add_subdirectory(link-test) diff --git a/packager/CMakeLists.txt b/packager/CMakeLists.txt index 7238d243bb..722217bbc4 100644 --- a/packager/CMakeLists.txt +++ b/packager/CMakeLists.txt @@ -78,7 +78,6 @@ add_subdirectory(media) add_subdirectory(hls) add_subdirectory(mpd) add_subdirectory(status) -add_subdirectory(third_party) add_subdirectory(tools) add_subdirectory(utils) add_subdirectory(version) -- 2.46.0
pkgs/applications/video/shaka-packager/0003-Fix-curl-deprecations.patch 0 → 100644 +25 −0 Original line number Diff line number Diff line From c8b0b467a140d8a67157f5cee26a8510444706be Mon Sep 17 00:00:00 2001 From: Niklas Korz <niklas@niklaskorz.de> Date: Wed, 4 Sep 2024 14:52:47 +0200 Subject: [PATCH 3/3] Fix curl deprecations --- packager/file/http_file.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packager/file/http_file.cc b/packager/file/http_file.cc index b50fef6f07..dca43e26ca 100644 --- a/packager/file/http_file.cc +++ b/packager/file/http_file.cc @@ -311,7 +311,7 @@ void HttpFile::SetupRequest() { curl_easy_setopt(curl, CURLOPT_POST, 1L); break; case HttpMethod::kPut: - curl_easy_setopt(curl, CURLOPT_PUT, 1L); + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); break; } -- 2.46.0
pkgs/applications/video/shaka-packager/default.nix +86 −43 Original line number Diff line number Diff line { lib, stdenv, fetchurl, runCommand, shaka-packager, fetchFromGitHub, testers, cmake, ninja, python3, nix-update-script, abseil-cpp, curl, gtest, nlohmann_json, libpng, libxml2, libwebm, mbedtls, mimalloc, protobuf, zlib, }: let sources = { "x86_64-linux" = { filename = "packager-linux-x64"; hash = "sha256-MoMX6PEtvPmloXJwRpnC2lHlT+tozsV4dmbCqweyyI0="; }; aarch64-linux = { filename = "packager-linux-arm64"; hash = "sha256-6+7SfnwVRsqFwI7/1F7yqVtkJVIoOFUmhoGU3P6gdQ0="; }; x86_64-darwin = { filename = "packager-osx-x64"; hash = "sha256-fFBtOp/Zb37LP7TWAEB0yp0xM88cMT9QS59EwW4MrAY="; }; }; source = sources."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); in stdenv.mkDerivation (finalAttrs: { pname = "shaka-packager"; version = "2.6.1"; version = "3.2.0"; src = fetchurl { url = "https://github.com/shaka-project/shaka-packager/releases/download/v${finalAttrs.version}/${source.filename}"; inherit (source) hash; src = fetchFromGitHub { owner = "shaka-project"; repo = "shaka-packager"; rev = "refs/tags/v${finalAttrs.version}"; hash = "sha256-L10IMsc4dTMa5zwYq612F4J+uKOmEEChY8k/m09wuNE="; }; dontUnpack = true; sourceRoot = "."; patches = [ # By default, the git commit hash and tag are used as version # and shaka-packager fails to build if these are not available. # This patch makes it possible to pass an external value as version. # The value itself is declared further below in `cmakeFlags`. ./0001-Allow-external-declaration-of-packager-version.patch # Dependencies are vendored as git submodules inside shaka-packager. # We want to reuse the dependencies from nixpkgs instead to avoid unnecessary # build overhead and to ensure they are up to date. # This patch disables the vendored dependencies (by excluding `third-party`), # finds them inside the build environment and aliases them so they can be accessed # without prefixing namespaces. # The last step is necessary to keep the patch size to a minimum, otherwise we'd have # to add the namespace identifiers everywhere a dependency is used. ./0002-Unvendor-dependencies.patch # As nixpkgs ships with a newer version of libcurl than the one vendored in shaka-packager, # we have to fix one deprecation. # See https://curl.se/libcurl/c/CURLOPT_PUT.html for further information. ./0003-Fix-curl-deprecations.patch ]; nativeBuildInputs = [ cmake ninja ]; installPhase = '' runHook preInstall buildInputs = [ python3 abseil-cpp curl gtest nlohmann_json libpng libxml2 libwebm mbedtls mimalloc (protobuf.override { # must be the same version as for shaka-packager inherit abseil-cpp; }) zlib ]; install -m755 -D $src $out/bin/packager cmakeFlags = [ "-DPACKAGER_VERSION=v${finalAttrs.version}-nixpkgs" # Targets are selected below in ninjaFlags "-DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON" ]; runHook postInstall ''; ninjaFlags = [ "mpd_generator" "packager" "pssh_box_py" ]; passthru.tests = { simple = runCommand "${finalAttrs.pname}-test" { } '' ${shaka-packager}/bin/packager -version | grep ${finalAttrs.version} > $out ''; passthru = { updateScript = nix-update-script { }; tests.version = testers.testVersion { package = finalAttrs.finalPackage; version = "v${finalAttrs.version}-nixpkgs-release"; }; }; meta = { meta = with lib; { description = "Media packaging framework for VOD and Live DASH and HLS applications"; homepage = "https://shaka-project.github.io/shaka-packager/html/"; license = lib.licenses.bsd3; changelog = "https://github.com/shaka-project/shaka-packager/releases/tag/v${finalAttrs.version}"; license = licenses.bsd3; mainProgram = "packager"; maintainers = [ ]; platforms = builtins.attrNames sources; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; maintainers = with maintainers; [ niklaskorz ]; platforms = platforms.all; }; })
pkgs/top-level/all-packages.nix +3 −1 Original line number Diff line number Diff line Loading @@ -31948,7 +31948,9 @@ with pkgs; mpvScripts = mpv-unwrapped.scripts; shaka-packager = callPackage ../applications/video/shaka-packager { }; shaka-packager = callPackage ../applications/video/shaka-packager { abseil-cpp = abseil-cpp_202401; }; mpvpaper = callPackage ../tools/wayland/mpvpaper { };