ports/188621: Cannot build net/opal when multimedia/ffmpeg is installed

Matthieu Volat mazhe at alkumuna.eu
Mon Apr 14 17:00:00 UTC 2014


>Number:         188621
>Category:       ports
>Synopsis:       Cannot build net/opal when multimedia/ffmpeg is installed
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Apr 14 17:00:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     Matthieu Volat
>Release:        10.0-RELEASE-p1
>Organization:
>Environment:
FreeBSD freedom.alkumuna.eu 10.0-RELEASE-p1 FreeBSD 10.0-RELEASE-p1 #0: Tue Apr  8 06:45:06 UTC 2014     root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
Hi,

When installed on a system where multimedia/ffmpeg is installed, net/opal will (rightly) pull multimedia/ffmpeg0 as a dependency, but will still mix up header files and build will fail :

[CC] rfc2190.cxx
In file included from In file included from rfc2429.cxx:23:
In file included from ./rfc2429.h:26:
./h263-1998.h:118:23: error: unknown type name 'CodecID'; did you mean
      'AVCodecID'?
    virtual bool Init(CodecID codecId);
                      ^~~~~~~
                      AVCodecID
/usr/local/include/libavcodec/avcodec.h:102:6: note: 'AVCodecID' declared here
enum AVCodecID {
     ^
rfc2190.cxx:22:
In file included from h263-1998.cxx:50:
./h263-1998.h:118:23: error: unknown type name 'CodecID'; did you mean
      'AVCodecID'?
    virtual bool Init(CodecID codecId);
                      ^~~~~~~
                      AVCodecID
/usr/local/include/libavcodec/avcodec.h:102:6: note: 'AVCodecID' declared here
enum AVCodecID {
     ^
In file included from ./rfc2190.h:25:
./h263-1998.h:118:23: error: unknown type name 'CodecID'; did you mean
      'AVCodecID'?
    virtual bool Init(CodecID codecId);
                      ^~~~~~~
                      AVCodecID
/usr/local/include/libavcodec/avcodec.h:102:6: note: 'AVCodecID' declared here
enum AVCodecID {
     ^
[CC] .common/dyna.cxx
rfc2190.cxx:181:7: warning: add explicit braces to avoid dangling else
      [-Wdangling-else]
      PTRACE(2, "RFC2190", "Mismatch between encoder length (" << newLe...
      ^
/usr/ports/net/opal/work/opal-3.10.10/include/codec/opalplugin.hpp:91:9: note: 
      expanded from macro 'PTRACE'
      } else (void)0
        ^
In file included from h263-1998.cxx:58:
./../common/dyna.h:91:19: error: unknown type name 'CodecID'; did you mean
      'AVCodecID'?
    FFMPEGLibrary(CodecID codec);
                  ^~~~~~~
rfc2429.cxx:512:9: warning: add explicit braces to avoid dangling else
      [-Wdangling-else]
        PTRACE(6, "H.263-RFC2429", "Header\tRLNUM: " << headerBits.GetBits(4));
        ^
/usr/ports/net/opal/work/opal-3.10.10/include/codec/opalplugin.hpp:91:9: note: 
      expanded from macro 'PTRACE'
      } else (void)0
        ^
                  AVCodecID
/usr/local/include/libavcodec/avcodec.h:102:6: note: 'AVCodecID' declared here
enum AVCodecID {
     ^
In file included from h263-1998.cxx:58:
./../common/dyna.h:96:38: error: ISO C++ forbids forward references to 'enum'
      types
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
./../common/dyna.h:120:13: error: field has incomplete type 'CodecID'
    CodecID m_codec;
            ^
./../common/dyna.h:96:38: note: forward declaration of 'CodecID'
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
rfc2429.cxx:539:5: warning: add 1 warning and 1 error generated.
explicit braces to avoid dangling else
      [-Wdangling-else]
    PTRACE(6, "H.263-RFC2429", "Header\tTRB: " << headerBits.GetBits (3...
    ^
/usr/ports/net/opal/work/opal-3.10.10/include/codec/opalplugin.hpp:91:9: note: 
      expanded from macro 'PTRACE'
      } else (void)0
        ^
gmake[7]: *** [/usr/ports/net/opal/work/opal-3.10.10/plugins/../lib_FreeBSD_amd64/plugins/h263_ffmpeg/rfc2190.o] Error 1
gmake[7]: *** Waiting for unfinished jobs....
In file included from ../common/dyna.cxx:40:
./common/dyna.h:91:19: error: unknown type name 'CodecID'; did you mean
      'AVCodecID'?
    FFMPEGLibrary(CodecID codec);
                  ^~~~~~~
                  AVCodecID
/usr/local/include/libavcodec/avcodec.h:102:6: note: 'AVCodecID' declared here
enum AVCodecID {
     ^
In file included from ../common/dyna.cxx:40:
./common/dyna.h:96:38: error: ISO C++ forbids forward references to 'enum'
      types
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
./common/dyna.h:120:13: error: field has incomplete type 'CodecID'
    CodecID m_codec;
            ^
./common/dyna.h:96:38: note: forward declaration of 'CodecID'
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
./common/dyna.cxx:179:38: warning: unused parameter 'avcl' [-Wunused-parameter]
static void logCallbackFFMPEG(void * avcl, int severity, const char* fm...
                                     ^
./common/dyna.cxx:213:16: error: out-of-line definition of 'FFMPEGLibrary' does
      not match any declaration in 'FFMPEGLibrary'
FFMPEGLibrary::FFMPEGLibrary(CodecID codec)
               ^~~~~~~~~~~~~
./common/dyna.cxx:213:38: error: variable has incomplete type 'CodecID'
FFMPEGLibrary::FFMPEGLibrary(CodecID codec)
                                     ^
./common/dyna.h:96:38: note: forward declaration of 'CodecID'
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
h263-1998.cxx:206:32: error: out-of-line definition of 'Init' does not match any
      declaration in 'H263_Base_EncoderContext'
bool H263_Base_EncoderContext::Init(CodecID codecId)
                               ^~~~
h263-1998.cxx:206:45: error: variable has incomplete type 'CodecID'
bool H263_Base_EncoderContext::Init(CodecID codecId)
                                            ^
./../common/dyna.h:96:38: note: forward declaration of 'CodecID'
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
2 warnings and 1 error generated.
gmake[7]: *** [/usr/ports/net/opal/work/opal-3.10.10/plugins/../lib_FreeBSD_amd64/plugins/h263_ffmpeg/rfc2429.o] Error 1
./common/dyna.cxx:351:57: error: variable has incomplete type 'enum CodecID'
AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum CodecID id)
                                                        ^
./common/dyna.h:96:38: note: forward declaration of 'CodecID'
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
./common/dyna.cxx:351:57: warning: unused parameter 'id' [-Wunused-parameter]
AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum CodecID id)
                                                        ^
./common/dyna.cxx:356:57: error: variable has incomplete type 'enum CodecID'
AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum CodecID id)
                                                        ^
./common/dyna.h:96:38: note: forward declaration of 'CodecID'
    AVCodec *AvcodecFindEncoder(enum CodecID id);
                                     ^
./common/dyna.cxx:356:57: warning: unused parameter 'id' [-Wunused-parameter]
AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum CodecID id)
                                                        ^
h263-1998.cxx:320:27: error: use of undeclared identifier 'CODEC_FLAG_H263P_UMV'
      m_context->flags |= CODEC_FLAG_H263P_UMV; 
                          ^
h263-1998.cxx:322:28: error: use of undeclared identifier 'CODEC_FLAG_H263P_UMV'
      m_context->flags &= ~CODEC_FLAG_H263P_UMV; 
                           ^
3 warnings and 7 errors generated.
gmake[7]: *** [/usr/ports/net/opal/work/opal-3.10.10/plugins/../lib_FreeBSD_amd64/plugins/h263_ffmpeg/dyna.o] Error 1
h263-1998.cxx:363:27: error: use of undeclared identifier
      'CODEC_FLAG_H263P_SLICE_STRUCT'
      m_context->flags |= CODEC_FLAG_H263P_SLICE_STRUCT; 
                          ^
h263-1998.cxx:365:28: error: use of undeclared identifier
      'CODEC_FLAG_H263P_SLICE_STRUCT'
      m_context->flags &= ~CODEC_FLAG_H263P_SLICE_STRUCT; 
                           ^
h263-1998.cxx:373:27: error: use of undeclared identifier 'CODEC_FLAG_H263P_AIV'
      m_context->flags |= CODEC_FLAG_H263P_AIV; 
                          ^
h263-1998.cxx:375:28: error: use of undeclared identifier 'CODEC_FLAG_H263P_AIV'
      m_context->flags &= ~CODEC_FLAG_H263P_AIV; 
                           ^
h263-1998.cxx:455:29: error: use of undeclared identifier 'CODEC_FLAG_H263P_UMV'
  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_H263P_UMV);
                            ^
h263-1998.cxx:454:62: note: expanded from macro 'CODEC_TRACER_FLAG'
    PTRACE(4, m_prefix, #flag " is " << ((m_context->flags & flag) ? "enable...
                                                             ^
/usr/ports/net/opal/work/opal-3.10.10/include/codec/opalplugin.hpp:89:42: note: 
      expanded from macro 'PTRACE'
        std::ostringstream strm; strm << args; \
                                         ^
h263-1998.cxx:456:29: error: use of undeclared identifier 'CODEC_FLAG_OBMC'
  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_OBMC);
                            ^
h263-1998.cxx:454:62: note: expanded from macro 'CODEC_TRACER_FLAG'
    PTRACE(4, m_prefix, #flag " is " << ((m_context->flags & flag) ? "enable...
                                                             ^
/usr/ports/net/opal/work/opal-3.10.10/include/codec/opalplugin.hpp:89:42: note: 
      expanded from macro 'PTRACE'
        std::ostringstream strm; strm << args; \
                                         ^
h263-1998.cxx:458:29: error: use of undeclared identifier
      'CODEC_FLAG_H263P_SLICE_STRUCT'
  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_H263P_SLICE_STRUCT)
                            ^
h263-1998.cxx:454:62: note: expanded from macro 'CODEC_TRACER_FLAG'
    PTRACE(4, m_prefix, #flag " is " << ((m_context->flags & flag) ? "enable...
                                                             ^
/usr/ports/net/opal/work/opal-3.10.10/include/codec/opalplugin.hpp:89:42: note: 
      expanded from macro 'PTRACE'
        std::ostringstream strm; strm << args; \
                                         ^
h263-1998.cxx:460:29: error: use of undeclared identifier 'CODEC_FLAG_H263P_AIV'
  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_H263P_AIV);
                            ^
h263-1998.cxx:454:62: note: expanded from macro 'CODEC_TRACER_FLAG'
    PTRACE(4, m_prefix, #flag " is " << ((m_context->flags & flag) ? "enable...
                                                             ^
/usr/ports/net/opal/work/opal-3.10.10/include/codec/opalplugin.hpp:89:42: note: 
      expanded from macro 'PTRACE'
        std::ostringstream strm; strm << args; \
                                         ^
h263-1998.cxx:524:72: error: use of undeclared identifier 'FF_I_TYPE'
  ...= (flags & PluginCodec_CoderForceIFrame) ? FF_I_TYPE : AV_PICTURE_TYPE_N...
                                                ^
h263-1998.cxx:606:24: error: use of undeclared identifier 'CODEC_FLAG_H263P_UMV'
  m_context->flags &= ~CODEC_FLAG_H263P_UMV;
                       ^
h263-1998.cxx:611:24: error: use of undeclared identifier 'CODEC_FLAG_H263P_AIV'
  m_context->flags &= ~CODEC_FLAG_H263P_AIV;
                       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
gmake[7]: *** [/usr/ports/net/opal/work/opal-3.10.10/plugins/../lib_FreeBSD_amd64/plugins/h263_ffmpeg/h263-1998.o] Error 1
gmake[7]: Leaving directory `/usr/ports/net/opal/work/opal-3.10.10/plugins/video/H.263-1998'
gmake[6]: *** [all] Error 2
gmake[6]: Leaving directory `/usr/ports/net/opal/work/opal-3.10.10/plugins'
gmake[5]: *** [subdirs] Error 2
gmake[5]: Leaving directory `/usr/ports/net/opal/work/opal-3.10.10'
gmake[4]: *** [opt] Error 2
gmake[4]: Leaving directory `/usr/ports/net/opal/work/opal-3.10.10'
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/net/opal
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/net/opal
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/net-im/ekiga
*** Error code 1

Stop.
make: stopped in /usr/ports/net-im/ekiga

>How-To-Repeat:
On a system without net/opal:
1. Install multimedia/ffmpeg
2. Check that opal build will have the FFMPEG and X.264 options
3. make build
>Fix:
Not trivial: I think the best way would be to patch files including ffmpeg headers to use the ffmpeg0 prefix before libav*.h

Another way would be to ensure -I${LOCALBASE}/include/ffmpeg0 is prepended before any other flag, but given the complexity of the build system, I'm not sure it is feasible...

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-ports-bugs mailing list