[MacPorts] #63297: cmus @2.9.1+aac: configure failed: checking for header <mp4v2/mp4v2.h>... no

MacPorts noreply at macports.org
Tue Aug 3 05:38:29 UTC 2021


#63297: cmus @2.9.1+aac: configure failed: checking for header <mp4v2/mp4v2.h>...
no
--------------------------+----------------------
  Reporter:  ryandesign   |      Owner:  g5pw
      Type:  defect       |     Status:  assigned
  Priority:  Normal       |  Milestone:
 Component:  ports        |    Version:  2.7.99
Resolution:               |   Keywords:
      Port:  cmus, mp4v2  |
--------------------------+----------------------
Changes (by ryandesign):

 * cc: mkuron (added)
 * port:  cmus => cmus, mp4v2


Comment:

 > {{{
 > checking for header <mp4v2/mp4v2.h>... no
 > }}}

 This is because after cmus was updated to 2.1.9, mp4v2 was
 [https://github.com/macports/macports-ports/pull/11139 updated] to version
 4.1.6 of the TechSmith fork. The problem remains if I upgrade mp4v2 to
 5.0.1. If I [wiki:howto/InstallingOlderPort backdate] mp4v2 to the
 original 2.0.0, cmus 2.9.1 builds fine. It also builds fine if I use
 version 4.1.3 of the TechSmith fork, but not 4.1.4 or later.

 TechSmith introduced a backward-incompatible change in their mp4v2 4.1.4.
 Specifically, they added a second argument to the `MP4Read` function, and
 defined that second argument to have a default value of `nullptr`, which
 is a C++ keyword, even though this is supposed to be a C library. This of
 course breaks other programs that try to use libmp4v2 from C code, like
 cmus.

 The cmus configure script checks for the presence of headers by doing a
 trial compilation including that header. If we try that manually, we see
 the problem:

 {{{
 $ echo '#include <mp4v2/mp4v2.h>' | cc -I/opt/local/include -c -x c -
 In file included from <stdin>:1:
 In file included from /opt/local/include/mp4v2/mp4v2.h:58:
 /opt/local/include/mp4v2/file.h:336:34: error: use of undeclared
 identifier 'nullptr'
     ShouldParseAtomCallback cb = nullptr );
                                  ^
 1 error generated.
 }}}

 I filed a cmus issue: [https://github.com/cmus/cmus/issues/1112 mp4v2 not
 found if using TechSmith mp4v2 4.1.4 or later].

 There also existed a related cmus issue:
 [https://github.com/cmus/cmus/issues/1076 Segmentation fault when opening
 any m4a/m4b/mp4 file].

 An upstream issue has been filed:
 [https://github.com/TechSmith/mp4v2/issues/47 Version 4.1.4/4.1.5 breaks
 applications written in C (such as cmus)]. The developers have not
 responded. This is troubling. It suggests they don't care about
 maintaining backward compatibility and calls into question whether we
 should be using this fork in MacPorts. If we do want to continue using it,
 we have to audit and fix all the other ports that use mp4v2 too.

-- 
Ticket URL: <https://trac.macports.org/ticket/63297#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list