summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-02-07 16:46:49 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-02-08 09:36:26 -0500
commitd09b1805aa2ea6350c9bc96c5393fc5bd043ae37 (patch)
treec001adda65e9014e1f8c4cbb07bb992597453c16
parent57c8ba22cf2fbab742730b3df7531f161af08fcb (diff)
downloadguix-d09b1805aa2ea6350c9bc96c5393fc5bd043ae37.tar.gz
gnu: ffmpeg-jami: Really honor custom configuration flags.
Because the substitute-keyword-arguments pattern was (#:configure-flags '())
rather than (#:configure-flags _ '()), the replacement was not triggered.

* gnu/packages/jami.scm (%ffmpeg-default-configure-flags): Comment that the
fnnvcodec-related options are left out.
(%ffmpeg-linux-x86-configure-flags): Delete variable.
(ffmpeg-compose-configure-flags): Streamline and use gexps.
(ffmpeg-jami) [arguments]: Fix configure-flags pattern, and adjust to use
gexps.  Add the "--disable-static" and "--enable-shared" flags to produce
shared objects with the correct RUNPATH.
-rw-r--r--gnu/packages/jami.scm42
1 files changed, 12 insertions, 30 deletions
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index e425a6547a..a98e64bb86 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -147,7 +147,9 @@
 ;; from the jami/daemon/contrib/src/ffmpeg/rules.mak file.  We try to keep it
 ;; as close to the official Jami package as possible, to provide all the
 ;; codecs and extra features that are expected (see:
-;; https://review.jami.net/plugins/gitiles/jami-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak)
+;; https://review.jami.net/plugins/gitiles/jami-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak).
+;; An exception are the ffnvcodec-related switches, which is not packaged in
+;; Guix and would not work with Mesa.
 (define %ffmpeg-default-configure-flags
   '("--disable-everything"
     "--enable-zlib"
@@ -339,34 +341,12 @@
     "--enable-encoder=mjpeg_vaapi"
     "--enable-encoder=hevc_vaapi"))
 
-;; ffnvcodec is not supported on ARM; enable it only for the i386 and x86_64
-;; architectures.
-(define %ffmpeg-linux-x86-configure-flags
-  '("--arch=x86"
-    "--enable-cuvid"
-    "--enable-ffnvcodec"
-    "--enable-nvdec"
-    "--enable-nvenc"
-    "--enable-hwaccel=h264_nvdec"
-    "--enable-hwaccel=hevc_nvdec"
-    "--enable-hwaccel=vp8_nvdec"
-    "--enable-hwaccel=mjpeg_nvdec"
-    "--enable-encoder=h264_nvenc"
-    "--enable-encoder=hevc_nvenc"))
-
-;; This procedure composes the configure flags list for ffmpeg-jami.
 (define (ffmpeg-compose-configure-flags)
-  (define (system=? s)
-    (string-prefix? s (%current-system)))
-
-  `(,@%ffmpeg-default-configure-flags
-    ,@(if (string-contains (%current-system) "linux")
-          (if (or (system=? "i686")
-                  (system=? "x86_64"))
-              (append %ffmpeg-linux-configure-flags
-                      %ffmpeg-linux-x86-configure-flags)
-              %ffmpeg-linux-configure-flags)
-          '())))
+  "Compose the configure flag lists of ffmpeg-jami."
+  #~(append '#$%ffmpeg-default-configure-flags
+            (if (string-contains #$(%current-system) "linux")
+                '#$%ffmpeg-linux-configure-flags
+                '())))
 
 (define-public ffmpeg-jami
   (package
@@ -384,8 +364,10 @@
                 "0yq0jcdc4qm5znrzylj3dsicrkk2n3n8bv28vr0a506fb7iglbpg"))))
     (arguments
      (substitute-keyword-arguments (package-arguments ffmpeg-5)
-       ((#:configure-flags '())
-        (ffmpeg-compose-configure-flags))
+       ((#:configure-flags _ '())
+        #~(cons* "--disable-static"
+                 "--enable-shared"
+                 #$(ffmpeg-compose-configure-flags)))
        ((#:phases phases)
         #~(modify-phases #$phases
             (add-after 'unpack 'apply-patches