Audacium / audacium

Free and open-source audio editor
https://audacium.github.io/audacium/
Other
702 stars 34 forks source link

conflicting decleration of c function in ffmpeg.h #101

Open silverhikari opened 2 years ago

silverhikari commented 2 years ago

Describe the bug when trying to build audacium on arch based distros, there seems to be a confliction deceleration of c functions in the ffmpeg.h which seems to be cause by the ffmpeg version update to n5.0

To Reproduce Steps to reproduce the behavior:

  1. attempt to build audacium
  2. build errors out Expected behavior builds successfully

Additional information (please complete the following information):

Additional context here is the error log https://paste.ee/p/QGMgZ

Fijxu commented 2 years ago

Same error here, this also affects tenacity

silverhikari commented 2 years ago

i can also hazard a guess that this is the same issue that #100 is having

AnErrupTion commented 2 years ago

Don't build on the experimental FFmpeg 5.0 branch, but build on master instead.

silverhikari commented 2 years ago

i am confused, i am building with the master branch, the ffmpeg that is installed on the system is 5.0, so do i build it with the 5.0 branch to get it to work?

AnErrupTion commented 2 years ago

Well, FFmpeg 5.0 is very experimental for now, so you shouldn't use it.

MurdoMaclachlan commented 2 years ago

I wouldn't call FFmpeg 5.0 experimental at all. It's a major release version and was released as stable back in January. They even added a note at the end of the release announcement: "We strongly recommend users, distributors, and system integrators to upgrade unless they use current git master." You don't strongly recommend people to update to very experimental versions.

AnErrupTion commented 2 years ago

I mean, Audacium's update to FFmpeg 5.0 is very experimental. It's on a separate branch too becacuse it doesn't work yet.

AnErrupTion commented 2 years ago

@silverhikari Do you have the ffmpeg package installed? This might be the cause of the error.

silverhikari commented 2 years ago

@AnErrupTion as stated above the version of ffmpeg installed is 5.0

silverhikari commented 2 years ago

there is a package for ffmpeg 4 called ffmpeg4.4 but it has a separate include path at /usr/include/ffmpeg4.4 so i am wondering if there is a way to redirect pkg-config to look for that path instead of the original ffmpeg path

ghost commented 2 years ago
usr/lib/ffmpeg4.4/pkgconfig/
usr/lib/ffmpeg4.4/pkgconfig/libavcodec.pc
usr/lib/ffmpeg4.4/pkgconfig/libavdevice.pc
usr/lib/ffmpeg4.4/pkgconfig/libavfilter.pc
usr/lib/ffmpeg4.4/pkgconfig/libavformat.pc
usr/lib/ffmpeg4.4/pkgconfig/libavutil.pc
usr/lib/ffmpeg4.4/pkgconfig/libpostproc.pc
usr/lib/ffmpeg4.4/pkgconfig/libswresample.pc
usr/lib/ffmpeg4.4/pkgconfig/libswscale.pc

the ffmpeg4.4 pkgconfig path

     PKG_CONFIG_PATH
             List of secondary directories where ‘.pc’ files are looked up.

     PKG_CONFIG_LIBDIR
             List of primary directories where ‘.pc’ files are looked up.

/usr/share/pkgconfig /usr/lib/pkgconfig

seems to be where pkgconfig files are stored

PKG_CONFIG_LIBDIR=/usr/lib/ffmpeg4.4/pkgconfig:/usr/lib/pkgconfig yay -S audacium

"Package xproto was not found in the pkg-config search path.
Perhaps you should add the directory containing `xproto.pc'
to the PKG_CONFIG_PATH environment variable"

So this isn't how one should override the config path with multiple paths clearly it is a disaster; I guess the way to do it would be to overlay the file system, but that requires root;

In general there probably is some kind of way to overlay the access to a file system without root(take a look at proot).

$ sudo mkdir /pkgconfig
$ sudo mount --bind /usr/lib/pkgconfig /pkgconfig
$ sudo mkdir /lower /workdir
$ sudo mount -t overlay overlay -o lowerdir=/usr/lib/ffmpeg4.4/pkgconfig:/pkgconfig,upperdir=/lower,workdir=/workdir /usr/lib/pkgconfig
$ yay -S audacium

:: audacium conflicts with audacity. Remove audacity? [y/N] Success, but requires root;

In general from what I remember proot has an option to fake bind mounts, and that's used on android for root less bind mounts+chroot jails, as well as launching binaries in environments where exec() was partially restricted.

AnErrupTion commented 2 years ago

@silverhikari You might want to try and uninstall the ffmpeg package, build audacium then reinstall the package if necessary, as this was the solution to the problem for a user at #100.

lunelovehearn commented 2 years ago

@silverhikari You might want to try and uninstall the ffmpeg package, build audacium then reinstall the package if necessary, as this was the solution to the problem for a user at #100.

removing ffmpeg breaks too many dependencies and packages on arch so its not a viable solution.