From 1db80805914347ca964c1357fa0e38665ea4bddb Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 29 Apr 2022 17:08:04 -0400 Subject: gnu: ocrodjvu: Use a Python 3 compatible fork. * gnu/packages/djvu.scm (ocrodjvu)[source]: Update URL to Python 3 fork. [inputs]: Use new style. Remove python2-subprocess32. Replace all other Python 2 inputs by their Python 3 equivalent. Add python-future and python-regex. [arguments]: Use gexps, and adjust accordingly, using this-package-input and search-input-file. --- gnu/packages/djvu.scm | 166 ++++++++++++++++++++++++++------------------------ 1 file changed, 85 insertions(+), 81 deletions(-) (limited to 'gnu/packages/djvu.scm') diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm index 07c77f318e..0fc2f6dfb9 100644 --- a/gnu/packages/djvu.scm +++ b/gnu/packages/djvu.scm @@ -24,6 +24,7 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system python) @@ -398,85 +399,88 @@ and background layers of images, which can then be encoded into a DjVu file.") (license license:gpl2))) (define-public ocrodjvu - (package - (name "ocrodjvu") - (version "0.12") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/jwilk/ocrodjvu/releases/download/" version - "/ocrodjvu-" version ".tar.xz")) - (sha256 - (base32 "09w9rqr7z2jd5kwp178zz2yrsc82mxs7gksipg92znxzgzhmw2ng")))) - (build-system gnu-build-system) - (native-inputs - (list libxml2 python2-nose python2-pillow)) - (inputs - `(("djvulibre" ,djvulibre) - ("ocrad" ,ocrad) - ("python" ,python-2) - ("python2-djvulibre" ,python2-djvulibre) - ("python2-html5lib" ,python2-html5lib) - ("python2-lxml" ,python2-lxml) - ("python2-pyicu" ,python2-pyicu) - ("python2-subprocess32" ,python2-subprocess32) - ("tesseract-ocr" ,tesseract-ocr))) - (arguments - `(#:modules ((guix build gnu-build-system) - ((guix build python-build-system) #:prefix python:) - (guix build utils)) - #:imported-modules (,@%gnu-build-system-modules - (guix build python-build-system)) - #:test-target "test" - #:phases - (modify-phases %standard-phases - (delete 'configure) - (add-before 'check 'disable-failing-test - (lambda _ - (substitute* "tests/test_ipc.py" - ;; test_wait_signal gets stuck forever - (("yield self\\._test_signal, name") - "return True") - ;; test_path fails to find a file it should have created - (("path = os\\.getenv\\('PATH'\\)\\.split\\(':'\\)") - "return True")) - ;; Disable tests with tesseract. They can't work without - ;; the language files that must downloaded by the final user - ;; as they are not packaged in Guix. - (substitute* "tests/ocrodjvu/test.py" - (("engines = stdout\\.getvalue\\(\\)\\.splitlines\\(\\)") - "engines = ['ocrad']")) - (substitute* "tests/ocrodjvu/test_integration.py" - (("engines = 'tesseract', 'cuneiform', 'gocr', 'ocrad'") - "engines = 'ocrad'")))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (invoke "make" - "DESTDIR=" - (string-append "PREFIX=" out) - "install")))) - (add-after 'install 'wrap-python - (assoc-ref python:%standard-phases 'wrap)) - (add-after 'wrap-python 'wrap-path - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (djvulibre (assoc-ref inputs "djvulibre")) - (ocrad (assoc-ref inputs "ocrad")) - (tesseract (assoc-ref inputs "tesseract-ocr"))) - (for-each (lambda (file) - (wrap-program (string-append out "/bin/" file) - `("PATH" ":" prefix - (,(string-append djvulibre "/bin:" - ocrad "/bin:" - tesseract "/bin"))))) - '("djvu2hocr" - "hocr2djvused" - "ocrodjvu")))))))) - (synopsis "Program to perform OCR on DjVu files") - (description - "@code{ocrodjvu} is a wrapper for OCR systems, that allows you to perform + (let ((revision "0") + (commit "0dd3364462fc77d5674b4457fcc8230835323c30")) + (package + (name "ocrodjvu") + (version (git-version "0.12" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + ;; Use the following fork repository, as upstream + ;; doesn't seem too concerned with Python 3 + ;; compatibility. + (url "https://github.com/rmast/ocrodjvu") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0x64hg9ysrk8sismxb4jgk0sq7r9j90v2i9765xhmxpiy6f0lpni")))) + (build-system gnu-build-system) + (native-inputs + (list libxml2 python-nose python-pillow)) + (inputs + (list djvulibre + ocrad + python-djvulibre + python-future + python-html5lib + python-lxml + python-pyicu + python-regex + python-wrapper + tesseract-ocr)) + (arguments + (list + #:modules '((guix build gnu-build-system) + ((guix build python-build-system) #:prefix python:) + (guix build utils)) + #:imported-modules `(,@%gnu-build-system-modules + (guix build python-build-system)) + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-before 'check 'disable-failing-test + (lambda _ + (substitute* "tests/test_ipc.py" + ;; test_wait_signal gets stuck forever + (("yield self\\._test_signal, name") + "return True") + ;; test_path fails to find a file it should have created + (("path = os\\.getenv\\('PATH'\\)\\.split\\(':'\\)") + "return True")) + ;; Disable tests with tesseract. They can't work without + ;; the language files that must downloaded by the final user + ;; as they are not packaged in Guix. + (substitute* "tests/ocrodjvu/test.py" + (("engines = stdout\\.getvalue\\(\\)\\.splitlines\\(\\)") + "engines = ['ocrad']")) + (substitute* "tests/ocrodjvu/test_integration.py" + (("engines = 'tesseract', 'cuneiform', 'gocr', 'ocrad'") + "engines = 'ocrad'")))) + (replace 'install + (lambda _ + (invoke "make" "install" + "DESTDIR=" (string-append "PREFIX=" #$output)))) + (add-after 'install 'wrap-python + (assoc-ref python:%standard-phases 'wrap)) + (add-after 'wrap-python 'wrap-path + (lambda* (#:key outputs #:allow-other-keys) + (for-each (lambda (file) + (wrap-program (search-input-file outputs file) + `("PATH" ":" prefix + (,(string-append + #$(this-package-input "djvulibre") "/bin:" + #$(this-package-input "ocrad") "/bin:" + #$(this-package-input "tesseract-ocr") + "/bin"))))) + '("bin/djvu2hocr" + "bin/hocr2djvused" + "bin/ocrodjvu"))))))) + (synopsis "Program to perform OCR on DjVu files") + (description + "@code{ocrodjvu} is a wrapper for OCR systems, that allows you to perform OCR on DjVu files.") - (home-page "https://jwilk.net/software/ocrodjvu") - (license license:gpl2))) + (home-page "https://jwilk.net/software/ocrodjvu") + (license license:gpl2)))) -- cgit v1.2.3