Opened 19 months ago

Last modified 14 months ago

#71721 new defect

audiowmark: build failure if ffmpeg is active

Reported by: i0ntempest Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.10.5
Keywords: Cc: aeiouaeiouaeiouaeiouaeiouaeiou
Port: audiowmark

Description

Port specifies ffmpeg7 as dependency, but if ffmpeg is also active build will fail.

:info:build In file included from hls.cc:57:
:info:build ./hlsoutputstream.hh:79:64: error: unknown type name 'AVChannelLayout'
:info:build    79 |   AVFrame *alloc_audio_frame (AVSampleFormat sample_fmt, const AVChannelLayout *channel_layout, int sample_rate, int nb_samples, Error& err);
:info:build       |                                                                ^
:info:build hls.cc:92:14: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]
:info:build    92 |   char *argv[args.size() + 1];
:info:build       |              ^~~~~~~~~~~~~~~
:info:build hls.cc:92:14: note: function parameter 'args' with unknown value cannot be used in a constant expression
:info:build hls.cc:88:28: note: declared here
:info:build    88 | run (const vector<string>& args, vector<string> *pipe_out = nullptr)
:info:build       |                            ^
:info:build   CXX      testshortcode.o
:info:build   CXX      testmpegts.o
:info:build   CXX      testthreadpool.o
:info:build wmadd.cc:426:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]
:info:build   426 |         float out[out_count * n_channels];
:info:build       |                   ^~~~~~~~~~~~~~~~~~~~~~
:info:build wmadd.cc:486:9: note: in instantiation of member function 'BufferedResamplerImpl<Resampler>::write_frames' requested here
:info:build   486 |         delete resampler;
:info:build       |         ^
:info:build wmadd.cc:426:31: note: implicit use of 'this' pointer is only allowed within the evaluation of a call to a 'constexpr' member function
:info:build   426 |         float out[out_count * n_channels];
:info:build       |                               ^
:info:build wmadd.cc:426:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]
:info:build   426 |         float out[out_count * n_channels];
:info:build       |                   ^~~~~~~~~~~~~~~~~~~~~~
:info:build wmadd.cc:497:11: note: in instantiation of member function 'BufferedResamplerImpl<VResampler>::write_frames' requested here
:info:build   497 |           delete vresampler;
:info:build       |           ^
:info:build wmadd.cc:426:31: note: implicit use of 'this' pointer is only allowed within the evaluation of a call to a 'constexpr' member function
:info:build   426 |         float out[out_count * n_channels];
:info:build       |                               ^
:info:build   CXX      testrawconverter.o
:info:build   CXX      testwavformat.o
:info:build   CXX      testhls.o
:info:build 1 warning and 1 error generated.
:info:build make[2]: *** [hls.o] Error 1
:info:build make[2]: *** Waiting for unfinished jobs....
:info:build In file included from hlsoutputstream.cc:18:
:info:build ./hlsoutputstream.hh:79:64: error: unknown type name 'AVChannelLayout'
:info:build    79 |   AVFrame *alloc_audio_frame (AVSampleFormat sample_fmt, const AVChannelLayout *channel_layout, int sample_rate, int nb_samples, Error& err);
:info:build       |                                                                ^
:info:build hlsoutputstream.cc:118:3: error: use of undeclared identifier 'AVChannelLayout'; did you mean 'm_channel_layout'?
:info:build   118 |   AVChannelLayout channel_layout = { AVChannelOrder (0), };
:info:build       |   ^~~~~~~~~~~~~~~
:info:build       |   m_channel_layout
:info:build ./hlsoutputstream.hh:60:21: note: 'm_channel_layout' declared here
:info:build    60 |   std::string       m_channel_layout;
:info:build       |                     ^
:info:build hlsoutputstream.cc:118:18: error: expected ';' after expression
:info:build   118 |   AVChannelLayout channel_layout = { AVChannelOrder (0), };
:info:build       |                  ^
:info:build       |                  ;
:info:build hlsoutputstream.cc:118:19: error: use of undeclared identifier 'channel_layout'; did you mean 'm_channel_layout'?
:info:build   118 |   AVChannelLayout channel_layout = { AVChannelOrder (0), };
:info:build       |                   ^~~~~~~~~~~~~~
:info:build       |                   m_channel_layout
:info:build ./hlsoutputstream.hh:60:21: note: 'm_channel_layout' declared here
:info:build    60 |   std::string       m_channel_layout;
:info:build       |                     ^
:info:build hlsoutputstream.cc:118:38: error: use of undeclared identifier 'AVChannelOrder'
:info:build   118 |   AVChannelLayout channel_layout = { AVChannelOrder (0), };
:info:build       |                                      ^
:info:build hlsoutputstream.cc:119:39: error: use of undeclared identifier 'channel_layout'
:info:build   119 |   if (av_channel_layout_from_string (&channel_layout, m_channel_layout.c_str()) != 0)
:info:build       |                                       ^
:info:build hlsoutputstream.cc:121:37: error: no member named 'ch_layout' in 'AVCodecContext'
:info:build   121 |   av_channel_layout_uninit (&m_enc->ch_layout);
:info:build       |                              ~~~~~  ^
:info:build hlsoutputstream.cc:122:35: error: no member named 'ch_layout' in 'AVCodecContext'
:info:build   122 |   av_channel_layout_copy (&m_enc->ch_layout, &channel_layout);
:info:build       |                            ~~~~~  ^
:info:build hlsoutputstream.cc:122:47: error: use of undeclared identifier 'channel_layout'
:info:build   122 |   av_channel_layout_copy (&m_enc->ch_layout, &channel_layout);
:info:build       |                                               ^
:info:build hlsoutputstream.cc:123:17: error: no member named 'ch_layouts' in 'AVCodec'
:info:build   123 |   if ((*codec)->ch_layouts)
:info:build       |       ~~~~~~~~  ^
:info:build hlsoutputstream.cc:125:41: error: no member named 'ch_layout' in 'AVCodecContext'
:info:build   125 |       av_channel_layout_uninit (&m_enc->ch_layout);
:info:build       |                                  ~~~~~  ^
:info:build hlsoutputstream.cc:126:39: error: no member named 'ch_layout' in 'AVCodecContext'
:info:build   126 |       av_channel_layout_copy (&m_enc->ch_layout, &(*codec)->ch_layouts[0]);
:info:build       |                                ~~~~~  ^
:info:build hlsoutputstream.cc:126:61: error: no member named 'ch_layouts' in 'AVCodec'
:info:build   126 |       av_channel_layout_copy (&m_enc->ch_layout, &(*codec)->ch_layouts[0]);
:info:build       |                                                   ~~~~~~~~  ^
:info:build hlsoutputstream.cc:127:33: error: no member named 'ch_layouts' in 'AVCodec'
:info:build   127 |       for (int i = 0; (*codec)->ch_layouts[i].nb_channels; i++)
:info:build       |                       ~~~~~~~~  ^
:info:build hlsoutputstream.cc:129:53: error: no member named 'ch_layouts' in 'AVCodec'
:info:build   129 |           if (av_channel_layout_compare (&(*codec)->ch_layouts[i], &channel_layout) == 0) {
:info:build       |                                           ~~~~~~~~  ^
:info:build hlsoutputstream.cc:129:69: error: use of undeclared identifier 'channel_layout'
:info:build   129 |           if (av_channel_layout_compare (&(*codec)->ch_layouts[i], &channel_layout) == 0) {
:info:build       |                                                                     ^
:info:build hlsoutputstream.cc:130:47: error: no member named 'ch_layout' in 'AVCodecContext'
:info:build   130 |             av_channel_layout_uninit (&m_enc->ch_layout);
:info:build       |                                        ~~~~~  ^
:info:build hlsoutputstream.cc:131:45: error: no member named 'ch_layout' in 'AVCodecContext'
:info:build   131 |             av_channel_layout_copy (&m_enc->ch_layout, &(*codec)->ch_layouts[i]);
:info:build       |                                      ~~~~~  ^
:info:build hlsoutputstream.cc:131:67: error: no member named 'ch_layouts' in 'AVCodec'
:info:build   131 |             av_channel_layout_copy (&m_enc->ch_layout, &(*codec)->ch_layouts[i]);
:info:build       |                                                         ~~~~~~~~  ^
:info:build fatal error: too many errors emitted, stopping now [-ferror-limit=]
:info:build 20 errors generated.
:info:build make[2]: *** [hlsoutputstream.o] Error 1
:info:build 2 warnings generated.
:info:build In file included from testhls.cc:29:
:info:build ./hlsoutputstream.hh:79:64: error: unknown type name 'AVChannelLayout'
:info:build    79 |   AVFrame *alloc_audio_frame (AVSampleFormat sample_fmt, const AVChannelLayout *channel_layout, int sample_rate, int nb_samples, Error& err);
:info:build       |                                                                ^
:info:build 1 error generated.
:info:build make[2]: *** [testhls.o] Error 1
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_audiowmark/audiowmark/work/audiowmark-0.6.3/src'
:info:build make[1]: *** [all-recursive] Error 1
:info:build make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_audiowmark/audiowmark/work/audiowmark-0.6.3'
:info:build make: *** [all] Error 2
:info:build make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_audiowmark/audiowmark/work/audiowmark-0.6.3'
:info:build Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_audiowmark/audiowmark/work/audiowmark-0.6.3" && /usr/bin/make -j24 -w all 
:info:build Exit code: 2

Attachments (1)

main.log (300.9 KB) - added by i0ntempest 19 months ago.

Download all attachments as: .zip

Change History (6)

Changed 19 months ago by i0ntempest

Attachment: main.log added

comment:1 Changed 19 months ago by aeiouaeiouaeiouaeiouaeiouaeiou

I saw that ffms2 portfile contains a hack to force library linking:

configure.ldflags-prepend \
                    -L${prefix}/libexec/ffmpeg${ffmpeg_ver}/lib

Does it work with audiowmark as well?

comment:2 Changed 19 months ago by i0ntempest

Unfortunately no. I tested with these 3 lines added:

configure.cflags-prepend \
                    -I${prefix}/libexec/ffmpeg${ffmpeg_ver}/include
configure.cxxflags-prepend \
                    -I${prefix}/libexec/ffmpeg${ffmpeg_ver}/include
configure.ldflags-prepend \
                    -L${prefix}/libexec/ffmpeg${ffmpeg_ver}/lib

Problem persists.

comment:3 Changed 14 months ago by i0ntempest

Problem persists in 0.6.5

comment:4 Changed 14 months ago by ryandesign (Ryan Carsten Schmidt)

Traditionally, -I flags belong in CPPFLAGS, not CFLAGS nor CXXFLAGS.

comment:5 Changed 14 months ago by i0ntempest

Same thing happens even with it added to CPPFLAGS. Probably should bring it to upstream like I did last time for cmus https://github.com/cmus/cmus/issues/1366.

Note: See TracTickets for help on using tickets.