me
/
guix
Archived
1
0
Fork 0

gnu: ccextractor: Update to 0.94 and fix build.

* gnu/packages/gstreamer.scm (ccextractor): Update to 0.94.
[source]: Apply patches.  Add FIXME comment.
[build-system]: Switch to gnu-build-system.
[arguments]: Delete #tests? argument.  Delete trailing #t and use gexps.
Adjust configure flags accordingly, removing WITH_SHARING (doesn't exist for
Autoconf) and adding '--without-rust'.  Override check phase.
[native-inputs]: Remove labels.  Remove python-wrapper and perl.
[propagated-inputs]: Remove labels.  Remove nanomsg and zlib.  Replace
leptonica with leptonica-1.80.  replace tesseract-ocr with tesseract-ocr-4.
* gnu/packages/patches/ccextractor-add-missing-header.patch: New file.
* gnu/packages/patches/ccextractor-autoconf-tesseract.patch: Likewise.
* gnu/packages/patches/ccextractor-fix-ocr.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): Register them.
master
Maxim Cournoyer 2023-03-17 10:09:17 -04:00
parent 8832acc24e
commit 2dc2722dc0
No known key found for this signature in database
GPG Key ID: 1260E46482E63562
5 changed files with 139 additions and 38 deletions

View File

@ -966,6 +966,9 @@ dist_patch_DATA = \
%D%/packages/patches/calibre-remove-test-sqlite.patch \ %D%/packages/patches/calibre-remove-test-sqlite.patch \
%D%/packages/patches/calibre-remove-test-unrar.patch \ %D%/packages/patches/calibre-remove-test-unrar.patch \
%D%/packages/patches/catdoc-CVE-2017-11110.patch \ %D%/packages/patches/catdoc-CVE-2017-11110.patch \
%D%/packages/patches/ccextractor-add-missing-header.patch \
%D%/packages/patches/ccextractor-autoconf-tesseract.patch \
%D%/packages/patches/ccextractor-fix-ocr.patch \
%D%/packages/patches/chez-scheme-bin-sh.patch \ %D%/packages/patches/chez-scheme-bin-sh.patch \
%D%/packages/patches/circos-remove-findbin.patch \ %D%/packages/patches/circos-remove-findbin.patch \
%D%/packages/patches/cdparanoia-fpic.patch \ %D%/packages/patches/cdparanoia-fpic.patch \

View File

@ -10,6 +10,7 @@
;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com> ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -32,7 +33,6 @@
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system meson) #:use-module (guix build-system meson)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
@ -171,49 +171,48 @@ module for the DMA capture of the video flow.")
(define-public ccextractor (define-public ccextractor
(package (package
(name "ccextractor") (name "ccextractor")
(version "0.88") (version "0.94")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (uri (git-reference
(git-reference (url "https://github.com/CCExtractor/ccextractor")
(url "https://github.com/CCExtractor/ccextractor") (commit (string-append "v" version))))
(commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
;; FIXME: Delete the 'src/thirdparty directory and unbundle the
;; libraries it contains, such as freetype, libpng, zlib, and others.
(patches (search-patches "ccextractor-add-missing-header.patch"
"ccextractor-autoconf-tesseract.patch"
"ccextractor-fix-ocr.patch"))
(sha256 (sha256
(base32 "1sya45hvv4d46bk7541yimmafgvgyhkpsvwfz9kv6pm4yi1lz6nb")))) (base32 "1hrk4xlzkvk9pnv0yr4whcsh8h4fzk42mrf30dsr3xzh1lgpfslg"))))
(build-system cmake-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; No target (list #:configure-flags
#:configure-flags #~(list "--enable-ffmpeg"
(list "--enable-ocr"
"-DWITH_FFMPEG=ON" "--enable-hardsubx"
"-DWITH_OCR=ON" ;; Disable Rust support, as there's no rust source included
"-DWITH_SHARING=ON" ;; and cargo wants to fetch the crates from the network
"-DWITH_HARDSUBX=ON") ;; (see:
#:phases ;; https://github.com/CCExtractor/ccextractor/issues/1502).
(modify-phases %standard-phases "--without-rust")
;; The package is in a sub-dir of this repo. #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'chdir (add-after 'unpack 'chdir
(lambda _ (lambda _
(chdir "src") (chdir "linux")))
#t)) (add-after 'chdir 'patch-pre-build.sh
(add-after 'chdir 'fix-build-errors (lambda _
(lambda _ (substitute* "pre-build.sh"
(substitute* "CMakeLists.txt" (("/usr/bin/env") (which "env")))))
(("libnanomsg") (replace 'check
"nanomsg")) (lambda* (#:key tests? #:allow-other-keys)
#t))))) (when tests?
(native-inputs ;; There is no test suite; simply run the binary
`(("perl" ,perl) ;; to validate there are no obvious problems.
("pkg-config" ,pkg-config) (invoke "./ccextractor" "--help")))))))
("python" ,python-wrapper))) (native-inputs (list autoconf automake pkg-config))
(inputs (inputs (list ffmpeg-3.4 leptonica-1.80 tesseract-ocr-4))
`(("ffmeg" ,ffmpeg-3.4)
("nanomsg" ,nanomsg)
("leptonica" ,leptonica)
("ocr" ,tesseract-ocr)
("zlib" ,zlib)))
(synopsis "Closed Caption Extractor") (synopsis "Closed Caption Extractor")
(description "CCExtractor is a tool that analyzes video files and produces (description "CCExtractor is a tool that analyzes video files and produces
independent subtitle files from the closed captions data. It is portable, small, independent subtitle files from the closed captions data. It is portable, small,

View File

@ -0,0 +1,33 @@
Upstream status: https://github.com/CCExtractor/ccextractor/pull/1505
From 272e0e1410135c3a5de105cecce400c7b2a9ed5b Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Fri, 17 Mar 2023 09:49:29 -0400
Subject: [PATCH] linux/Makefile.am: Add missing generated header.
This header is generated by the pre-build.sh script. The compilation
fails if it is missing.
* linux/Makefile.am (ccextractor_SOURCES): Add
../src/lib_ccx/compile_info_real.h.
---
linux/Makefile.am | 1 +
1 file changed, 1 insertion(+)
diff --git a/linux/Makefile.am b/linux/Makefile.am
index fddc26a5..f83f1eff 100644
--- a/linux/Makefile.am
+++ b/linux/Makefile.am
@@ -118,6 +118,7 @@ ccextractor_SOURCES = \
../src/lib_ccx/bitstream.h \
../src/lib_ccx/ccx_common_option.c \
../src/lib_ccx/ccx_common_common.c \
+ ../src/lib_ccx/compile_info_real.h \
../src/lib_ccx/utility.c \
../src/lib_ccx/activity.c \
../src/lib_ccx/asf_functions.c \
base-commit: cb496a711923c984251483776e652ca9c027513c
--
2.39.1

View File

@ -0,0 +1,37 @@
Upstream status: https://github.com/CCExtractor/ccextractor/pull/1504
From f587050c2b5805ff5feb667736381dcc9991a5d3 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Fri, 17 Mar 2023 00:57:13 -0400
Subject: [PATCH] linux/configure.ac: Fix tesseract conditional problem.
For tesseract-ocr's stock pkg-config, it would produce an error due to
unquoted whitespace:
$ test ! -z `pkg-config --libs-only-l --silence-errors tesseract`
bash: test: syntax error: `-larchive' unexpected
* linux/configure.ac: Use a positive test, and double-quote the $() command
substitution.
---
linux/configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux/configure.ac b/linux/configure.ac
index 45fc11f3..118ee7fa 100644
--- a/linux/configure.ac
+++ b/linux/configure.ac
@@ -149,7 +149,7 @@ AS_IF([ (test x$ocr = xtrue || test x$hardsubx = xtrue) && test ! $HAS_LEPT -gt
AM_CONDITIONAL(HARDSUBX_IS_ENABLED, [ test x$hardsubx = xtrue ])
AM_CONDITIONAL(OCR_IS_ENABLED, [ test x$ocr = xtrue || test x$hardsubx = xtrue ])
AM_CONDITIONAL(FFMPEG_IS_ENABLED, [ test x$ffmpeg = xtrue ])
-AM_CONDITIONAL(TESSERACT_PRESENT, [ test ! -z `pkg-config --libs-only-l --silence-errors tesseract` ])
+AM_CONDITIONAL(TESSERACT_PRESENT, [ test -n "$(pkg-config --libs-only-l --silence-errors tesseract)" ])
AM_CONDITIONAL(TESSERACT_PRESENT_RPI, [ test -d "/usr/include/tesseract" && test `ls -A /usr/include/tesseract | wc -l` -gt 0 ])
AM_CONDITIONAL(SYS_IS_LINUX, [ test `uname -s` = "Linux"])
AM_CONDITIONAL(SYS_IS_MAC, [ test `uname -s` = "Darwin"])
base-commit: cb496a711923c984251483776e652ca9c027513c
--
2.39.1

View File

@ -0,0 +1,29 @@
Extracted from upstream commit 0264e7da2be67182deb031228eb07e6ed4943c81.
diff --git a/src/lib_ccx/ocr.c b/src/lib_ccx/ocr.c
index 31cc1c5c..73bd4818 100644
--- a/src/lib_ccx/ocr.c
+++ b/src/lib_ccx/ocr.c
@@ -331,6 +331,11 @@ char *ocr_bitmap(void *arg, png_color *palette, png_byte *alpha, unsigned char *
}
BOX *crop_points = ignore_alpha_at_edge(copy->alpha, copy->data, w, h, color_pix, &color_pix_out);
+
+ l_int32 x, y, _w, _h;
+
+ boxGetGeometry(crop_points, &x, &y, &_w, &_h);
+
// Converting image to grayscale for OCR to avoid issues with transparency
cpix_gs = pixConvertRGBToGray(cpix, 0.0, 0.0, 0.0);
@@ -426,8 +431,8 @@ char *ocr_bitmap(void *arg, png_color *palette, png_byte *alpha, unsigned char *
{
for (int j = x1; j <= x2; j++)
{
- if (copy->data[(crop_points->y + i) * w + (crop_points->x + j)] != firstpixel)
- histogram[copy->data[(crop_points->y + i) * w + (crop_points->x + j)]]++;
+ if (copy->data[(y + i) * w + (x + j)] != firstpixel)
+ histogram[copy->data[(y + i) * w + (x + j)]]++;
}
}
/* sorted in increasing order of intensity */