Opened 9 years ago

Closed 9 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) 9 years ago.

Download all attachments as: .zip

Change History (7)

Changed 9 years ago by mojca (Mojca Miklavec)

Attachment: mkvtoolnix-7.8.0.diff added

comment:1 in reply to:  description Changed 9 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 9 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 9 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 9 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 9 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 9 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.