From 83b327fd220ae7e506954672754fc91dfbb628ad Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 1 Aug 2024 20:57:16 +0100 Subject: [PATCH 1/5] ccextractor: move to `pkgs/by-name` --- .../default.nix => by-name/cc/ccextractor/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{applications/video/ccextractor/default.nix => by-name/cc/ccextractor/package.nix} (100%) diff --git a/pkgs/applications/video/ccextractor/default.nix b/pkgs/by-name/cc/ccextractor/package.nix similarity index 100% rename from pkgs/applications/video/ccextractor/default.nix rename to pkgs/by-name/cc/ccextractor/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b210c70cadb08..4c1f991e3d1db 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3528,8 +3528,6 @@ with pkgs; fedora-backgrounds = callPackage ../data/misc/fedora-backgrounds { }; - ccextractor = callPackage ../applications/video/ccextractor { }; - cconv = callPackage ../tools/text/cconv { }; go-check = callPackage ../development/tools/check { }; From c3a8cb1e7b6f40aa8603569cb80cc416df07b038 Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 1 Aug 2024 21:01:29 +0100 Subject: [PATCH 2/5] ccextractor: format with `nixfmt-rfc-style` --- pkgs/by-name/cc/ccextractor/package.nix | 69 +++++++++++++++---------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/pkgs/by-name/cc/ccextractor/package.nix b/pkgs/by-name/cc/ccextractor/package.nix index 3391210462c30..87cd3d6fc8ae1 100644 --- a/pkgs/by-name/cc/ccextractor/package.nix +++ b/pkgs/by-name/cc/ccextractor/package.nix @@ -1,15 +1,16 @@ -{ lib -, stdenv -, fetchFromGitHub -, pkg-config -, cmake -, libiconv -, zlib -, enableOcr ? true -, makeWrapper -, tesseract4 -, leptonica -, ffmpeg_4 +{ + lib, + stdenv, + fetchFromGitHub, + pkg-config, + cmake, + libiconv, + zlib, + enableOcr ? true, + makeWrapper, + tesseract4, + leptonica, + ffmpeg_4, }: stdenv.mkDerivation rec { @@ -23,26 +24,42 @@ stdenv.mkDerivation rec { sha256 = "sha256-usVAKBkdd8uz9cD5eLd0hnwGonOJLscRdc+iWDlNXVc="; }; - postPatch = '' - # https://github.com/CCExtractor/ccextractor/issues/1467 - sed -i '/allheaders.h/a#include ' src/lib_ccx/ocr.c - '' + lib.optionalString stdenv.isDarwin '' - substituteInPlace src/CMakeLists.txt \ - --replace 'add_definitions(-DGPAC_CONFIG_LINUX)' 'add_definitions(-DGPAC_CONFIG_DARWIN)' - ''; + postPatch = + '' + # https://github.com/CCExtractor/ccextractor/issues/1467 + sed -i '/allheaders.h/a#include ' src/lib_ccx/ocr.c + '' + + lib.optionalString stdenv.isDarwin '' + substituteInPlace src/CMakeLists.txt \ + --replace 'add_definitions(-DGPAC_CONFIG_LINUX)' 'add_definitions(-DGPAC_CONFIG_DARWIN)' + ''; cmakeDir = "../src"; - nativeBuildInputs = [ pkg-config cmake makeWrapper ]; + nativeBuildInputs = [ + pkg-config + cmake + makeWrapper + ]; - buildInputs = [ zlib ] + buildInputs = + [ zlib ] ++ lib.optional (!stdenv.isLinux) libiconv - ++ lib.optionals enableOcr [ leptonica tesseract4 ffmpeg_4 ]; + ++ lib.optionals enableOcr [ + leptonica + tesseract4 + ffmpeg_4 + ]; - cmakeFlags = [ - # file RPATH_CHANGE could not write new RPATH: - "-DCMAKE_SKIP_BUILD_RPATH=ON" - ] ++ lib.optionals enableOcr [ "-DWITH_OCR=on" "-DWITH_HARDSUBX=on" ]; + cmakeFlags = + [ + # file RPATH_CHANGE could not write new RPATH: + "-DCMAKE_SKIP_BUILD_RPATH=ON" + ] + ++ lib.optionals enableOcr [ + "-DWITH_OCR=on" + "-DWITH_HARDSUBX=on" + ]; postInstall = lib.optionalString enableOcr '' wrapProgram "$out/bin/ccextractor" \ From b546361c0024f925c6691adaa063366f78515db3 Mon Sep 17 00:00:00 2001 From: Emily Date: Sat, 13 Jul 2024 10:45:31 +0100 Subject: [PATCH 3/5] ccextractor: modernize --- pkgs/by-name/cc/ccextractor/package.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/cc/ccextractor/package.nix b/pkgs/by-name/cc/ccextractor/package.nix index 87cd3d6fc8ae1..f1f0309e6b730 100644 --- a/pkgs/by-name/cc/ccextractor/package.nix +++ b/pkgs/by-name/cc/ccextractor/package.nix @@ -13,15 +13,15 @@ ffmpeg_4, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "ccextractor"; version = "0.93"; src = fetchFromGitHub { owner = "CCExtractor"; - repo = pname; - rev = "v${version}"; - sha256 = "sha256-usVAKBkdd8uz9cD5eLd0hnwGonOJLscRdc+iWDlNXVc="; + repo = "ccextractor"; + rev = "v${finalAttrs.version}"; + hash = "sha256-usVAKBkdd8uz9cD5eLd0hnwGonOJLscRdc+iWDlNXVc="; }; postPatch = @@ -74,15 +74,15 @@ stdenv.mkDerivation rec { closed captions data. CCExtractor is portable, small, and very fast. It works on Linux, Windows, and OSX. ''; - platforms = platforms.unix; + platforms = lib.platforms.unix; # undefined reference to `png_do_expand_palette_rgba8_neon' # undefined reference to `png_riffle_palette_neon' # undefined reference to `png_do_expand_palette_rgb8_neon' # undefined reference to `png_init_filter_functions_neon' # during Linking C executable ccextractor broken = stdenv.isAarch64; - license = licenses.gpl2Only; + license = lib.licenses.gpl2Only; maintainers = [ ]; mainProgram = "ccextractor"; }; -} +}) From 98002580a9da497482cd644f45d1563d23bdf5d7 Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 1 Aug 2024 21:08:15 +0100 Subject: [PATCH 4/5] ccextractor: adopt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I did once try to use this program (although it didn’t work, if I recall correctly), so I guess I have no excuse not to… If someone else stepped up to maintain this that would be better, though. --- pkgs/by-name/cc/ccextractor/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/cc/ccextractor/package.nix b/pkgs/by-name/cc/ccextractor/package.nix index f1f0309e6b730..fb03095555630 100644 --- a/pkgs/by-name/cc/ccextractor/package.nix +++ b/pkgs/by-name/cc/ccextractor/package.nix @@ -82,7 +82,7 @@ stdenv.mkDerivation (finalAttrs: { # during Linking C executable ccextractor broken = stdenv.isAarch64; license = lib.licenses.gpl2Only; - maintainers = [ ]; + maintainers = [ lib.maintainers.emily ]; mainProgram = "ccextractor"; }; }) From 9562b3d2af281ad1786d854caa68458ff0459fba Mon Sep 17 00:00:00 2001 From: Emily Date: Sat, 13 Jul 2024 10:45:31 +0100 Subject: [PATCH 5/5] ccextractor: 0.93 -> 0.94-unstable-2024-08-12 Includes fixes for Tesseract 5 and FFmpeg 7. --- pkgs/by-name/cc/ccextractor/package.nix | 141 +++++++++---- .../remove-default-commit-hash.patch | 14 ++ .../remove-vendored-libraries.patch | 187 ++++++++++++++++++ .../cc/ccextractor/use-rsmpeg-0.15.patch | 43 ++++ 4 files changed, 349 insertions(+), 36 deletions(-) create mode 100644 pkgs/by-name/cc/ccextractor/remove-default-commit-hash.patch create mode 100644 pkgs/by-name/cc/ccextractor/remove-vendored-libraries.patch create mode 100644 pkgs/by-name/cc/ccextractor/use-rsmpeg-0.15.patch diff --git a/pkgs/by-name/cc/ccextractor/package.nix b/pkgs/by-name/cc/ccextractor/package.nix index fb03095555630..0ddfdfe3f3c8c 100644 --- a/pkgs/by-name/cc/ccextractor/package.nix +++ b/pkgs/by-name/cc/ccextractor/package.nix @@ -2,72 +2,146 @@ lib, stdenv, fetchFromGitHub, + writeTextFile, + pkg-config, cmake, - libiconv, + ninja, + cargo, + rustc, + corrosion, + rustPlatform, + + gpac, + protobufc, + libpng, zlib, + utf8proc, + freetype, + ffmpeg_7, + libarchive, + curl, + libiconv, + enableOcr ? true, - makeWrapper, - tesseract4, leptonica, - ffmpeg_4, + tesseract, }: stdenv.mkDerivation (finalAttrs: { pname = "ccextractor"; - version = "0.93"; + version = "0.94-unstable-2024-08-12"; src = fetchFromGitHub { owner = "CCExtractor"; repo = "ccextractor"; - rev = "v${finalAttrs.version}"; - hash = "sha256-usVAKBkdd8uz9cD5eLd0hnwGonOJLscRdc+iWDlNXVc="; + rev = "92f2ce0fa026b01fb07db6751210e6bd8c8944d3"; + hash = "sha256-bp7T9uJK4bauR2Co4lKqqnM6oGa3WZ+1toEKmzOx4mI="; }; - postPatch = - '' - # https://github.com/CCExtractor/ccextractor/issues/1467 - sed -i '/allheaders.h/a#include ' src/lib_ccx/ocr.c - '' - + lib.optionalString stdenv.isDarwin '' - substituteInPlace src/CMakeLists.txt \ - --replace 'add_definitions(-DGPAC_CONFIG_LINUX)' 'add_definitions(-DGPAC_CONFIG_DARWIN)' - ''; + patches = [ + ./remove-default-commit-hash.patch + ./remove-vendored-libraries.patch + ] ++ finalAttrs.cargoDeps.patches; cmakeDir = "../src"; + cargoRoot = "src/rust"; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit (finalAttrs) src; + sourceRoot = "${finalAttrs.src.name}/${finalAttrs.cargoRoot}"; + patches = [ ./use-rsmpeg-0.15.patch ]; + patchFlags = [ "-p3" ]; + hash = "sha256-jh8hHKAad+tCJGwuGdoJp/TMm/IsMrZmz8aag9lj0BA="; + }; + nativeBuildInputs = [ pkg-config cmake - makeWrapper + ninja + cargo + rustc + corrosion + rustPlatform.cargoSetupHook + rustPlatform.bindgenHook ]; buildInputs = - [ zlib ] - ++ lib.optional (!stdenv.isLinux) libiconv + [ + gpac + protobufc + libpng + zlib + utf8proc + freetype + ffmpeg_7 + libarchive + curl + libiconv + ] ++ lib.optionals enableOcr [ leptonica - tesseract4 - ffmpeg_4 + tesseract ]; cmakeFlags = [ - # file RPATH_CHANGE could not write new RPATH: - "-DCMAKE_SKIP_BUILD_RPATH=ON" + # The tests are all part of one `cargo test` invocation, so let’s + # get the output from it. + (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" "--verbose") + + # TODO: This (and the corresponding patch) should probably be + # removed for the next stable release. + (lib.cmakeFeature "GIT_COMMIT_HASH" finalAttrs.src.rev) ] ++ lib.optionals enableOcr [ - "-DWITH_OCR=on" - "-DWITH_HARDSUBX=on" + (lib.cmakeBool "WITH_OCR" true) + (lib.cmakeBool "WITH_HARDSUBX" true) ]; - postInstall = lib.optionalString enableOcr '' - wrapProgram "$out/bin/ccextractor" \ - --set TESSDATA_PREFIX "${tesseract4}/share/" + env = { + FFMPEG_INCLUDE_DIR = "${lib.getDev ffmpeg_7}/include"; + + # Upstream’s FFmpeg binding crate needs an explicit path to a shared + # object to do dynamic linking. The key word is *an* explicit path; + # they don’t support passing more than one. This linker script hack + # pulls in all the FFmpeg libraries they bind to. + # + # See: + FFMPEG_DLL_PATH = + let + ffmpegLibNames = [ + "avcodec" + "avdevice" + "avfilter" + "avformat" + "avutil" + "swresample" + "swscale" + ]; + ffmpegLibDir = "${lib.getLib ffmpeg_7}/lib"; + ffmpegLibExt = stdenv.hostPlatform.extensions.library; + ffmpegLibPath = ffmpegLibName: "${ffmpegLibDir}/lib${ffmpegLibName}.${ffmpegLibExt}"; + ffmpegLinkerScript = writeTextFile { + name = "ccextractor-ffmpeg-linker-script"; + destination = "/lib/ffmpeg.ld"; + text = "INPUT(${lib.concatMapStringsSep " " ffmpegLibPath ffmpegLibNames})"; + }; + in + "${ffmpegLinkerScript}/lib/ffmpeg.ld"; + }; + + doCheck = true; + + postPatch = lib.optionalString enableOcr '' + substituteInPlace src/lib_ccx/ocr.c \ + --replace-fail 'getenv("TESSDATA_PREFIX")' '"${tesseract}/share"' ''; - meta = with lib; { - homepage = "https://www.ccextractor.org"; + meta = { + homepage = "https://www.ccextractor.org/"; + changelog = "${finalAttrs.src.meta.homepage}/blob/${finalAttrs.src.rev}/docs/CHANGES.TXT"; description = "Tool that produces subtitles from closed caption data in videos"; longDescription = '' A tool that analyzes video files and produces independent subtitle files from @@ -75,12 +149,7 @@ stdenv.mkDerivation (finalAttrs: { It works on Linux, Windows, and OSX. ''; platforms = lib.platforms.unix; - # undefined reference to `png_do_expand_palette_rgba8_neon' - # undefined reference to `png_riffle_palette_neon' - # undefined reference to `png_do_expand_palette_rgb8_neon' - # undefined reference to `png_init_filter_functions_neon' - # during Linking C executable ccextractor - broken = stdenv.isAarch64; + sourceProvenance = [ lib.sourceTypes.fromSource ]; license = lib.licenses.gpl2Only; maintainers = [ lib.maintainers.emily ]; mainProgram = "ccextractor"; diff --git a/pkgs/by-name/cc/ccextractor/remove-default-commit-hash.patch b/pkgs/by-name/cc/ccextractor/remove-default-commit-hash.patch new file mode 100644 index 0000000000000..07872941084ef --- /dev/null +++ b/pkgs/by-name/cc/ccextractor/remove-default-commit-hash.patch @@ -0,0 +1,14 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index d7fdda02e3...2738cab631 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -24,9 +24,6 @@ + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +-ELSE(EXISTS "${BASE_PROJ_DIR}/.git") +- set(GIT_BRANCH "Unknown") +- set(GIT_COMMIT_HASH "Unknown") + ENDIF(EXISTS "${BASE_PROJ_DIR}/.git") + + #Get the date diff --git a/pkgs/by-name/cc/ccextractor/remove-vendored-libraries.patch b/pkgs/by-name/cc/ccextractor/remove-vendored-libraries.patch new file mode 100644 index 0000000000000..122707c7f21ee --- /dev/null +++ b/pkgs/by-name/cc/ccextractor/remove-vendored-libraries.patch @@ -0,0 +1,187 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 2738cab631...5bb2b7d17a 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -48,93 +48,20 @@ + include_directories(${PROJECT_SOURCE_DIR}) + include_directories(${PROJECT_SOURCE_DIR}/lib_ccx) + include_directories(${PROJECT_SOURCE_DIR}/lib_ccx/zvbi) +-include_directories(${PROJECT_SOURCE_DIR}/thirdparty) +-include_directories(${PROJECT_SOURCE_DIR}/thirdparty/protobuf-c) + include_directories(${PROJECT_SOURCE_DIR}/thirdparty/lib_hash) +-include_directories(${PROJECT_SOURCE_DIR}/thirdparty/libpng) + +-# Check if the operating system is macOS (Darwin) +-if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +- if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm64") +- # ARM Macs +- include_directories("/opt/homebrew/include") +- include_directories(${PROJECT_SOURCE_DIR}/thirdparty/libpng/arm) +- aux_source_directory(${PROJECT_SOURCE_DIR}/thirdparty/libpng/arm SOURCEFILE) +- else() +- include_directories("/usr/local/include") +- endif() +-endif() +- +-include_directories(${PROJECT_SOURCE_DIR}/thirdparty/zlib) +-include_directories(${PROJECT_SOURCE_DIR}/thirdparty/freetype/include) + aux_source_directory(${PROJECT_SOURCE_DIR}/thirdparty/lib_hash/ SOURCEFILE) +-aux_source_directory(${PROJECT_SOURCE_DIR}/thirdparty/libpng/ SOURCEFILE) +-aux_source_directory(${PROJECT_SOURCE_DIR}/thirdparty/protobuf-c/ SOURCEFILE) +-aux_source_directory(${PROJECT_SOURCE_DIR}/thirdparty/zlib/ SOURCEFILE) + aux_source_directory(${PROJECT_SOURCE_DIR}/lib_ccx/zvbi/ SOURCEFILE) + +-set(UTF8PROC_SOURCE ${PROJECT_SOURCE_DIR}/thirdparty/utf8proc/utf8proc.c) ++set(UTF8PROC_SOURCE) + +-set(FREETYPE_SOURCE +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/autofit/autofit.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftbase.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftbbox.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftbdf.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftbitmap.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftcid.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftfntfmt.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftfstype.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftgasp.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftglyph.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftgxval.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftinit.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftlcdfil.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftmm.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftotval.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftpatent.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftpfr.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftstroke.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftsynth.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftsystem.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/fttype1.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/base/ftwinfnt.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/bdf/bdf.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/bzip2/ftbzip2.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/cache/ftcache.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/cff/cff.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/cid/type1cid.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/gzip/ftgzip.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/lzw/ftlzw.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/pcf/pcf.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/pfr/pfr.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/psaux/psaux.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/pshinter/pshinter.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/psnames/psnames.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/raster/raster.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/sfnt/sfnt.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/smooth/smooth.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/truetype/truetype.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/type1/type1.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/type42/type42.c +- ${PROJECT_SOURCE_DIR}/thirdparty/freetype/winfonts/winfnt.c +- ) ++set(FREETYPE_SOURCE) + #Windows specific libraries and linker flags + if(WIN32) + include_directories ("${PROJECT_SOURCE_DIR}/thirdparty/win_spec_incld/") + include_directories ("${PROJECT_SOURCE_DIR}/thirdparty/win_iconv/") + aux_source_directory ("${PROJECT_SOURCE_DIR}/thirdparty/win_iconv/" SOURCEFILE) + set (EXTRA_LIBS ${EXTRA_LIBS} ws2_32 winmm Bcrypt) +-else (WIN32) +- # Adding some platform specific library path +- if(UNIX AND NOT APPLE) +- link_directories (/usr/local/lib) +- endif() +- +- if(APPLE) +- # Homebrew library paths +- link_directories(/usr/local/lib) +- link_directories(/opt/homebrew/lib) +- endif() + endif(WIN32) + + if(MSVC) +@@ -212,9 +139,6 @@ + pkg_check_modules (NANOMSG REQUIRED libnanomsg) + set (EXTRA_LIBS ${EXTRA_LIBS} ${NANOMSG_STATIC_LIBRARIES}) + +- include_directories ("${PROJECT_SOURCE_DIR}/thirdparty/protobuf-c/") +- aux_source_directory ("${PROJECT_SOURCE_DIR}/thirdparty/protobuf-c/" SOURCEFILE) +- + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_SHARING") + endif (PKG_CONFIG_FOUND AND WITH_SHARING) + +diff --git a/src/lib_ccx/CMakeLists.txt b/src/lib_ccx/CMakeLists.txt +index 4f329bcaab...a334d20c4d 100644 +--- a/src/lib_ccx/CMakeLists.txt ++++ b/src/lib_ccx/CMakeLists.txt +@@ -13,9 +13,39 @@ + find_package(PkgConfig) + pkg_check_modules (GPAC REQUIRED gpac) + ++set (REQUIRES_PRIVATE "libpng libprotobuf-c") ++ ++if (WITH_FFMPEG) ++ set (REQUIRES_PRIVATE "${REQUIRES_PRIVATE} libavutil") ++endif (WITH_FFMPEG) ++ ++if (WITH_HARDSUBX) ++ set (REQUIRES_PRIVATE "${REQUIRES_PRIVATE} libavcodec libavformat libswscale tesseract lept") ++endif (WITH_HARDSUBX) ++ + set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${GPAC_INCLUDE_DIRS}) + set (EXTRA_LIBS ${EXTRA_LIBS} ${GPAC_LIBRARIES}) + ++pkg_check_modules (PROTOBUFC REQUIRED libprotobuf-c) ++set (EXTRA_LIBS ${EXTRA_LIBS} ${PROTOBUFC_LIBRARIES}) ++set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${PROTOBUFC_INCLUDE_DIRS}/protobuf-c) ++ ++pkg_check_modules (LIBPNG REQUIRED libpng) ++set (EXTRA_LIBS ${EXTRA_LIBS} ${LIBPNG_LIBRARIES}) ++set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${LIBPNG_INCLUDE_DIRS}) ++ ++pkg_check_modules (ZLIB REQUIRED zlib) ++set (EXTRA_LIBS ${EXTRA_LIBS} ${ZLIB_LIBRARIES}) ++set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${ZLIB_INCLUDE_DIRS}) ++ ++pkg_check_modules (UTF8PROC REQUIRED libutf8proc) ++set (EXTRA_LIBS ${EXTRA_LIBS} ${UTF8PROC_LIBRARIES}) ++set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${UTF8PROC_INCLUDE_DIRS}) ++ ++pkg_check_modules (FREETYPE REQUIRED freetype2) ++set (EXTRA_LIBS ${EXTRA_LIBS} ${FREETYPE_LIBRARIES}) ++set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${FREETYPE_INCLUDE_DIRS}) ++ + if (WITH_FFMPEG) + find_package(PkgConfig) + +@@ -94,7 +124,7 @@ + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDISABLE_RUST") + endif (WITHOUT_RUST) + +-file (GLOB HeaderFiles *.h) ++file (GLOB_RECURSE HeaderFiles *.h) + file (WRITE ccx.pc "prefix=${CMAKE_INSTALL_PREFIX}\n" + "includedir=\${prefix}/include\n" + "libdir=\${prefix}/lib\n\n" +@@ -102,8 +132,8 @@ + "Description: Closed Caption Extraction library\n" + "Version: 0.75\n" + "Cflags: -I\${includedir}/\n" +- "Libs: -L\${libdir} -lccx -lpng\n" +- "Libs.private: -lpng\n" ++ "Libs: -L\${libdir} -lccx\n" ++ "Requires.private: ${REQUIRES_PRIVATE}\n" + ) + + install (TARGETS ccx DESTINATION lib) +diff --git a/src/lib_ccx/params.c b/src/lib_ccx/params.c +index eb1562e50c...984070a285 100644 +--- a/src/lib_ccx/params.c ++++ b/src/lib_ccx/params.c +@@ -14,7 +14,7 @@ + #include "../lib_hash/sha2.h" + #include + #include +-#include ++#include + + #ifdef ENABLE_OCR + #include diff --git a/pkgs/by-name/cc/ccextractor/use-rsmpeg-0.15.patch b/pkgs/by-name/cc/ccextractor/use-rsmpeg-0.15.patch new file mode 100644 index 0000000000000..89af3884639d9 --- /dev/null +++ b/pkgs/by-name/cc/ccextractor/use-rsmpeg-0.15.patch @@ -0,0 +1,43 @@ +diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock +index 5c49573775..3e855aa637 100644 +--- a/src/rust/Cargo.lock ++++ b/src/rust/Cargo.lock +@@ -665,11 +665,10 @@ + + [[package]] + name = "rsmpeg" +-version = "0.14.2+ffmpeg.6.1" ++version = "0.15.1+ffmpeg.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "927012cd6ae43519f519741f4a69602ce3a47cf84750784da124dffd03527cc0" ++checksum = "d3ffbead667d06e0c77c4363f83d49a3481cc3838bc9a61882aa07b01e3f63e1" + dependencies = [ +- "libc", + "paste", + "rusty_ffmpeg", + "thiserror", +@@ -711,9 +710,9 @@ + + [[package]] + name = "rusty_ffmpeg" +-version = "0.13.3+ffmpeg.6.1" ++version = "0.14.1+ffmpeg.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "716adffa5f909c8533611b1dab9ab5666bece35687845865b75ed6a990fc239c" ++checksum = "40f4db8e3e23d4a3044d53a41aba5324eae70d3e7fe82375ce833521533bc315" + dependencies = [ + "bindgen 0.69.4", + "camino", +diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml +index 4c1e73dcf0..68502915dc 100644 +--- a/src/rust/Cargo.toml ++++ b/src/rust/Cargo.toml +@@ -15,7 +15,7 @@ + env_logger = "0.8.4" + iconv = "0.1.1" + palette = "0.6.0" +-rsmpeg = { version = "0.14.1", optional = true, features = [ ++rsmpeg = { version = "0.15.1", optional = true, features = [ + "link_system_ffmpeg", + ] } + tesseract-sys = { version = "0.5.14", optional = true, default-features = false }