Opened 10 years ago

Closed 10 years ago

#47578 closed update (fixed)

mkvtoolnix: upgrade to 7.8.0

Reported by: mojca (Mojca Miklavec) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: haspatch Cc:
Port: mkvtoolnix

Description

I'm attaching a patch for upgrading mkvtoolnix to 7.8.0. I would appreciate if someone on 10.9 or later could test it. (We should probably replace the ruby patches with some reinplace.)

I wasn't even able to build it with gcc because of

In file included from src/common/utf8_codecvt_facet.cpp:22:0:
src/common/../../lib/boost/utf8_codecvt_facet/utf8_codecvt_facet.cpp:174:5: error: 'int mtx::utf8_codecvt_facet::do_length' is not a static member of 'struct mtx::utf8_codecvt_facet'
     BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &,
     ^
compilation terminated due to -Wfatal-errors.

I'll try a libc++ MP installation next.

Please also see #40231. It's not entirely clear to me what's still needed to close that ticket (migrating libstdc++ users to libc++ or building against a different instance of boost and icu is a different issue from fixing clang build issues per se).

Attachments (1)

mkvtoolnix-7.8.0.diff (1023 bytes) - added by mojca (Mojca Miklavec) 10 years ago.

Download all attachments as: .zip

Change History (7)

Changed 10 years ago by mojca (Mojca Miklavec)

Attachment: mkvtoolnix-7.8.0.diff added

comment:1 in reply to:  description Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to mojca@…:

I'm attaching a patch for upgrading mkvtoolnix to 7.8.0. I would appreciate if someone on 10.9 or later could test it.

It fails on 10.10:

In file included from src/common/utf8_codecvt_facet.cpp:22:
src/common/../../lib/boost/utf8_codecvt_facet/utf8_codecvt_facet.cpp:174:5: fatal error: unknown type name 'BOOST_CODECVT_DO_LENGTH_CONST'
    BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &,
    ^
1 error generated.

I don't see any occurrences of BOOST_CODECVT_DO_LENGTH_CONST in the boost port. Maybe this was removed from boost at some point.

comment:2 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

BOOST_CODECVT_DO_LENGTH_CONST was defined in utf8_codecvt_facet.hpp in boost 1.57.0 but this macro was eliminated for boost 1.58.0.

comment:3 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Here is the upstream bug report and the rather larger than expected commit that fixed it in which they (surprisingly!) decided to include a copy of the old utf8_codecvt_facet.hpp in the mkvtoolnix codebase rather than adapt to the new way.

comment:4 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Having incorporated a cleaned-up version of that patch without the extraneous whitespace changes into the port, it then fails with missing libmatroska symbols:

Undefined symbols for architecture x86_64:
  "libmatroska::KaxCodecDelay::ClassInfos", referenced from:
      kax_reader_c::read_headers_tracks(mm_io_c*, libebml::EbmlElement*, long long) in libmtxinput.a(r_matroska.o)
      generic_packetizer_c::set_codec_delay(basic_timecode_c<long long> const&) in libmtxmerge.a(generic_packetizer.o)
      generic_packetizer_c::set_headers() in libmtxmerge.a(generic_packetizer.o)
  "libmatroska::KaxSeekPreRoll::ClassInfos", referenced from:
      kax_reader_c::read_headers_tracks(mm_io_c*, libebml::EbmlElement*, long long) in libmtxinput.a(r_matroska.o)
      generic_packetizer_c::set_track_seek_pre_roll(basic_timecode_c<long long> const&) in libmtxmerge.a(generic_packetizer.o)
      generic_packetizer_c::set_headers() in libmtxmerge.a(generic_packetizer.o)
  "libmatroska::KaxDiscardPadding::ClassInfos", referenced from:
      cluster_helper_c::render() in libmtxmerge.a(cluster_helper.o)
      kax_reader_c::process_block_group_common(libmatroska::KaxBlockGroup*, packet_t*) in libmtxinput.a(r_matroska.o)
ld: symbol(s) not found for architecture x86_64

I'll see if updating libmatroska will help.

comment:5 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Keywords: haspatch added
Owner: changed from macports-tickets@… to ryandesign@…
Status: newassigned

Yes, these symbols were added in libmatroska 1.4.1; we had 1.4.0 in MacPorts. Updated libmatroska to 1.4.1 in r135607. Reported this issue to the developers of mkvtoolnix in https://github.com/mbunkus/mkvtoolnix/issues/1177. I will still update libmatroska to 1.4.2 before updating mkvtoolnix, but libmatroska 1.4.2 uses a different build system so I need to investigate that first.

comment:6 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign@… removed
Resolution: fixed
Status: assignedclosed

Fortunately the build system has moved from manually-created Makefiles to autotools. libmatroska's dependency libebml has been similarly changed. Updated libebml to 1.3.1 in r135609. Updated libmatroska to 1.4.2 in r135612. Updated mkvtoolnix to 7.8.0 in r135614.

Note: See TracTickets for help on using tickets.