[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