diff mbox series

[bug#71246] gnu: audacity: Re-add fallback to locate ffmpeg via pkg-config.

Message ID 827569361fb106694e726de44b7b14b5d579facc.1716916125.git.kaelyn.alexi@protonmail.com
State New
Headers show
Series [bug#71246] gnu: audacity: Re-add fallback to locate ffmpeg via pkg-config. | expand

Commit Message

Kaelyn Takata May 28, 2024, 5:33 p.m. UTC
* gnu/packages/patches/audacity-ffmpeg-fallback.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it here.
* gnu/packages/audio.scm (audacity)[patches]: Use it here.

Change-Id: I848df8a9762216eb2b02afc3843e0e9806db14be
---
 gnu/local.mk                                  |  1 +
 gnu/packages/audio.scm                        |  1 +
 .../patches/audacity-ffmpeg-fallback.patch    | 61 +++++++++++++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 gnu/packages/patches/audacity-ffmpeg-fallback.patch


base-commit: 542b18709a46e361de8f25e3fece29860532743c

Comments

Kaelyn Takata May 28, 2024, 5:44 p.m. UTC | #1
Hi,

This patch re-introduces the gnu/packages/patches/audacity-ffmpeg-fallback.patch that was deleted by commit cf5f7a8bf9ca2288700fcf351bbca0fc341ec969, which upgraded audacity to 3.5.1. The issue with it applying to the new audacity version is that the "lib-ffmpeg-support" folder moved from under "libraries/" to be under "modules/mod-ffmpeg/"; I have simply restored the existing patch and fixed the paths to the files.

Starting with the upgrade to audacity 3.5.1 with the patch dropped, any file that depended on ffmpeg to be loaded--such as the .m4a files produced by the recording app on an Android phone--fails to load. I also tried setting the path to the ffmpeg library through the GUI and had it consistently fail for me, and such files still could not be loaded (I have a few screenshots of the error messages). Restoring this patch has restored the ability to load .m4a and other files which depend on ffmpeg to be loaded, and without any special hoops needed to set up ffmpeg through the UI first.

Cheers,
Kaelyn
Andy Tai May 28, 2024, 6:58 p.m. UTC | #2
Please go ahead and file Guix package definition patch to restore the
deleted ffmpeg patch

On Tue, May 28, 2024 at 10:44 AM Kaelyn <kaelyn.alexi@protonmail.com> wrote:
>
> Hi,
>
> This patch re-introduces the gnu/packages/patches/audacity-ffmpeg-fallback.patch that was deleted by commit cf5f7a8bf9ca2288700fcf351bbca0fc341ec969, which upgraded audacity to 3.5.1. The issue with it applying to the new audacity version is that the "lib-ffmpeg-support" folder moved from under "libraries/" to be under "modules/mod-ffmpeg/"; I have simply restored the existing patch and fixed the paths to the files.
>
> Starting with the upgrade to audacity 3.5.1 with the patch dropped, any file that depended on ffmpeg to be loaded--such as the .m4a files produced by the recording app on an Android phone--fails to load. I also tried setting the path to the ffmpeg library through the GUI and had it consistently fail for me, and such files still could not be loaded (I have a few screenshots of the error messages). Restoring this patch has restored the ability to load .m4a and other files which depend on ffmpeg to be loaded, and without any special hoops needed to set up ffmpeg through the UI first.
>
> Cheers,
> Kaelyn
Kaelyn Takata May 28, 2024, 7:21 p.m. UTC | #3
Hi,

On Tuesday, May 28th, 2024 at 11:58 AM, Andy Tai <atai@atai.org> wrote:

> 
> Please go ahead and file Guix package definition patch to restore the
> deleted ffmpeg patch

I apologize for not being clearer and including a proper reference; by "this patch", I meant https://issues.guix.gnu.org/71246.

Thanks,
Kaelyn

> On Tue, May 28, 2024 at 10:44 AM Kaelyn kaelyn.alexi@protonmail.com wrote:
> 
> > Hi,
> > 
> > This patch re-introduces the gnu/packages/patches/audacity-ffmpeg-fallback.patch that was deleted by commit cf5f7a8bf9ca2288700fcf351bbca0fc341ec969, which upgraded audacity to 3.5.1. The issue with it applying to the new audacity version is that the "lib-ffmpeg-support" folder moved from under "libraries/" to be under "modules/mod-ffmpeg/"; I have simply restored the existing patch and fixed the paths to the files.
> > 
> > Starting with the upgrade to audacity 3.5.1 with the patch dropped, any file that depended on ffmpeg to be loaded--such as the .m4a files produced by the recording app on an Android phone--fails to load. I also tried setting the path to the ffmpeg library through the GUI and had it consistently fail for me, and such files still could not be loaded (I have a few screenshots of the error messages). Restoring this patch has restored the ability to load .m4a and other files which depend on ffmpeg to be loaded, and without any special hoops needed to set up ffmpeg through the UI first.
> > 
> > Cheers,
> > Kaelyn
Andy Tai May 29, 2024, 6:02 a.m. UTC | #4
patch builds fine on x86-64
Ludovic Courtès May 31, 2024, 11:35 a.m. UTC | #5
Kaelyn Takata <kaelyn.alexi@protonmail.com> skribis:

> * gnu/packages/patches/audacity-ffmpeg-fallback.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it here.
> * gnu/packages/audio.scm (audacity)[patches]: Use it here.
>
> Change-Id: I848df8a9762216eb2b02afc3843e0e9806db14be

Hi! I added some of the info from your second message to the commit log
and committed.

Thanks!

Ludo’.
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 7e9e1ebcf0..a5f2b9ee9e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -960,6 +960,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
   %D%/packages/patches/ath9k-htc-firmware-gcc-compat.patch	\
   %D%/packages/patches/atlas-gfortran-compat.patch		\
+  %D%/packages/patches/audacity-ffmpeg-fallback.patch	\
   %D%/packages/patches/audiofile-fix-datatypes-in-tests.patch	\
   %D%/packages/patches/audiofile-fix-sign-conversion.patch	\
   %D%/packages/patches/audiofile-CVE-2015-7747.patch		\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index d30d561d2f..f5c8dbd151 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -934,6 +934,7 @@  (define-public audacity
        (file-name (git-file-name name version))
        (sha256
         (base32 "11sjyz6hxsr5dnndkkkiq7arjxvjl1sycl151xq3a3ggakgql3y1"))
+       (patches (search-patches "audacity-ffmpeg-fallback.patch"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
diff --git a/gnu/packages/patches/audacity-ffmpeg-fallback.patch b/gnu/packages/patches/audacity-ffmpeg-fallback.patch
new file mode 100644
index 0000000000..c845e10277
--- /dev/null
+++ b/gnu/packages/patches/audacity-ffmpeg-fallback.patch
@@ -0,0 +1,61 @@ 
+From 3c20057d0cbbbed453a692d4dd4589d865808024 Mon Sep 17 00:00:00 2001
+From: Liliana Marie Prikler <liliana.prikler@gmail.com>
+Date: Sat, 29 Jan 2022 10:44:44 +0100
+Subject: [PATCH] Add pkg-config fallback for locating ffmpeg.
+
+Audacity >=3.1.0 no longer links against ffmpeg, but instead dynamically loads
+it.  This dynamic loading mechanism fails to properly locate libraries outside
+of LD_LIBRARY_PATH.
+
+See <https://issues.guix.gnu.org/53591>.
+
+Bugs-added-by: Marius Bakke <marius@gnu.org>
+
+diff --git a/libraries/lib-ffmpeg-support/CMakeLists.txt b/libraries/lib-ffmpeg-support/CMakeLists.txt
+index b8803a1f5..f86559cca 100644
+--- a/modules/mod-ffmpeg/lib-ffmpeg-support/CMakeLists.txt
++++ b/modules/mod-ffmpeg/lib-ffmpeg-support/CMakeLists.txt
+@@ -1,5 +1,7 @@
+
+ if (${_OPT}use_ffmpeg)
++   pkg_check_modules(FFMPEG libavcodec libavformat libavutil)
++
+    set( SOURCES
+       FFmpegTypes.h
+
+@@ -107,6 +109,12 @@ if (${_OPT}use_ffmpeg)
+       list(APPEND DEFINITIONS PRIVATE _DARWIN_C_SOURCE )
+    endif()
+
++   if (FFMPEG_FOUND)
++      pkg_get_variable(LIBAVCODEC_LIBDIR libavcodec libdir)
++      list(APPEND DEFINITIONS PRIVATE
++                  "-DFFMPEG_PC_LIBDIR=\"${LIBAVCODEC_LIBDIR}\"")
++   endif()
++
+    audacity_library( lib-ffmpeg-support "${SOURCES}" "${LIBRARIES}"
+       "${DEFINITIONS}" ""
+    )
+diff --git a/libraries/lib-ffmpeg-support/FFmpegFunctions.cpp b/libraries/lib-ffmpeg-support/FFmpegFunctions.cpp
+index 55d6f676b..46640ef83 100644
+--- a/modules/mod-ffmpeg/lib-ffmpeg-support/FFmpegFunctions.cpp
++++ b/modules/mod-ffmpeg/lib-ffmpeg-support/FFmpegFunctions.cpp
+@@ -246,6 +246,18 @@ struct FFmpegFunctions::Private final
+       if (library->IsLoaded())
+          return library;
+
++#if defined(FFMPEG_PC_LIBDIR)
++      {
++         static const wxString libdir{FFMPEG_PC_LIBDIR};
++         const wxString fullName = wxFileName(libdir, libraryName).GetFullPath();
++
++         auto library = std::make_shared<wxDynamicLibrary>(fullName);
++
++         if (library->IsLoaded())
++            return library;
++      }
++#endif
++
+       return {};
+    }
+ };