Updating world just tried to pull in media-sound/cmus-2.4.3 to my system, which - however - doesn't seem to play nicely with media-video/ffmpeg-0.7.8. Here's what happens when trying to build it: ffmpeg.c:59:0: warning: "AV_DICT_IGNORE_SUFFIX" redefined /usr/include/libavutil/dict.h:29:0: note: this is the location of the previous definition ffmpeg.c: In function 'ffmpeg_open': ffmpeg.c:183:2: warning: 'av_open_input_file' is deprecated (declared at /usr/include/libavformat/avformat.h:1170) ffmpeg.c: In function 'ffmpeg_read_comments': ffmpeg.c:451:2: warning: 'AVMetadataTag' is deprecated (declared at /usr/include/libavutil/dict.h:36) ffmpeg.c:453:2: warning: 'av_metadata_get' is deprecated (declared at /usr/include/libavformat/avformat.h:145) ffmpeg.c:453:51: error: 'AV_DICT_IGNORE_SUFFIX' undeclared (first use in this function) ffmpeg.c:453:51: note: each undeclared identifier is reported only once for each function it appears in make: *** [ffmpeg.lo] Error 1 make: *** Waiting for unfinished jobs.... Looking into work/cmus-v2.4.3/ffmpeg.c, I find the following stuff that checks for the installed version of libavutil: #if (LIBAVUTIL_VERSION_INT < ((51<<16)+(5<<8)+0)) #define AV_DICT_IGNORE_SUFFIX AV_METADATA_IGNORE_SUFFIX #define av_dict_get av_metadata_get #define AVDictionaryEntry AVMetadataTag #endif If I just take these lines out, cmus builds find, with just a few warnings, but nothing serious: CC ffmpeg.lo ffmpeg.c: In function 'ffmpeg_open': ffmpeg.c:177:2: warning: 'av_open_input_file' is deprecated (declared at /usr/include/libavformat/avformat.h:1170) LD ffmpeg.so CC pulse.lo LD pulse.so CC alsa.lo CC mixer_alsa.lo LD alsa.so HOSTCC Doc/ttman.o Doc/ttman.c: In function 'output_buf': Doc/ttman.c:582:8: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result HOSTLD Doc/ttman MAN Doc/cmus.1 MAN Doc/cmus-remote.1 MAN Doc/cmus-tutorial.7 Now, obviously the libavutil version check seems to be the culprit here. But...: 1) Is this already being done wrong by the code supplied by the cmus guys? 2) Or are we probably patching our ffmpeg, which in effect conflicts with the cmus guys' version check, which - of course - assumes an unmodifed ffmpeg? 3) If I weren't on a business trip right now (and thus busy ;-)) I'd - given enough time - assume that I could find these things out and probably even fix it correctly, but under my current circumstances I thought I'd probably just report it and let someone else take a look. ;-) Reproducible: Always
The problem is that it's the right version check for libav; however, ffmpeg upstream uses different API versioning scheme which makes it a hassle supporting old and new versions of both ffmpeg and libav.
Just to note, it probably builds fine with ffmpeg-0.8.7, but I haven't explicitly tested that.
(In reply to comment #2) > Just to note, it probably builds fine with ffmpeg-0.8.7, but I haven't > explicitly tested that. I guess the necessary changes have been made in v0.8.7. I have not even tested excessively but this works for me on x86: #Change necessary use flag: echo "media-video/ffmpeg sdl -openssl" >> /etc/portage/package.use #Unmasking ffmpeg-0.9 echo "=media-video/ffmpeg-0.9 **" >> /etc/portage/package.keywords FYI: This is the same combo you get on x86_64 already with ACCEPT_KEYWORDS="~amd64". Therefor I had to specify the "!openssl" use for media-video/ffmpeg as well. # Emerge and feel lucky emerge -av ffmpeg cmus Don't forget to run revdep-rebuild ;)
I bumped the dep on virtual to require newer version of ffmpeg when stabilising it. -> bug is fixed.