diff mbox series

[bug#64732,v4,1/2] gnu: Add python-ffmpeg-python.

Message ID 6c8737581d9018c48763b23d237978fb639c78c7.1691160970.git.poomklao@yahoo.com
State New
Headers show
Series [bug#64732,v4,1/2] gnu: Add python-ffmpeg-python. | expand

Commit Message

Parnikkapore Aug. 4, 2023, 2:56 p.m. UTC
* gnu/packages/python-xyz.scm (python-ffmpeg-python): New variable.
---

Here's a v4 that hardcodes and no longer propagates ffmpeg. One of the tests check the
command to be run, including the ffmpeg command used, so that test has to be patched too.

 gnu/packages/python-xyz.scm | 48 +++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)


base-commit: 1d837aaa32a3a2de8f4a1ac391f92effba50834e
diff mbox series

Patch

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 755b0af4b6..23d14db449 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -139,6 +139,7 @@ 
 ;;; Copyright © 2023 Dominik Delgado Steuter <d@delgado.nrw>
 ;;; Copyright © 2023 Ivan Vilata-i-Balaguer <ivan@selidor.net>
 ;;; Copyright © 2023 Ontje Lünsdorf <ontje.luensdorf@dlr.de>
+;;; Copyright © 2023 Parnikkapore <poomklao@yahoo.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -8918,6 +8919,53 @@  (define-public python-lfdfiles
 experimental data and metadata at the Laboratory for Fluorescence Dynamics.")
     (license license:bsd-3)))
 
+(define-public python-ffmpeg-python
+  ;; The latest release (0.2.0) is old and its test suite crashs on Python 3.10.
+  (let ((commit "df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6") (revision "0"))
+    (package
+      (name "python-ffmpeg-python")
+      (version (git-version "0.2.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/kkroening/ffmpeg-python.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1zj4ac37n4igfj21zy405mdlvbpv6jyb12wfpszf8zkhhj2qby4c"))))
+      (build-system python-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'hardcode-ffmpeg
+              (lambda* (#:key inputs #:allow-other-keys)
+                (define ffmpeg (search-input-file inputs "bin/ffmpeg"))
+                (substitute* "ffmpeg/_run.py"
+                  (("cmd='ffmpeg'")
+                   (string-append "cmd='" ffmpeg "'")))
+                (substitute* "ffmpeg/tests/test_ffmpeg.py"
+                  (("out_file.compile\\(\\) == \\['ffmpeg'")
+                   (string-append "out_file.compile() == ['" ffmpeg "'")))))
+            ;; Some tests fail with ffmpeg 5+
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "pytest" "-vv"
+                          "-k" "not test_pipe and not test__probe")))))))
+      (inputs (list ffmpeg))
+      (propagated-inputs (list python-future))
+      (native-inputs (list python-future python-numpy python-pytest
+                           python-pytest-mock python-pytest-runner))
+      (home-page "https://github.com/kkroening/ffmpeg-python")
+      (synopsis "Python bindings for FFmpeg - with complex filtering support")
+      (description
+       "ffmpeg-python allows you to write FFmpeg filtergraphs in familiar
+Python terms, taking care of running ffmpeg with the correct command-line
+arguments. It handles arbitrarily large (directed-acyclic) signal graphs.")
+      (license license:asl2.0))))
+
 (define-public python-imageio-ffmpeg
   (package
    (name "python-imageio-ffmpeg")