Opened 5 years ago

Closed 4 years ago

Last modified 4 years ago

#60148 closed update (fixed)

mkvtoolnix: Update to version 45

Reported by: mf2k (Frank Schima) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: mkvtoolnix

Description (last modified by mf2k (Frank Schima))

$ port livecheck mkvtoolnix
mkvtoolnix seems to have been updated (port version: 41.0.0, new version: 45.0.0)

Attachments (2)

Portfile-mkvtoolnix.diff (1.7 KB) - added by mf2k (Frank Schima) 4 years ago.
patch-Rakefile.diff (488 bytes) - added by mf2k (Frank Schima) 4 years ago.

Download all attachments as: .zip

Change History (16)

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

When I tried to update to 42 or newer, it would not compile on High Sierra anymore. Since that is still a recent OS, I would like to have the port continue to use the old version on High Sierra and older. (Or, if you know how to fix the build failure on High Sierra, that would be even better.)

comment:2 Changed 5 years ago by mf2k (Frank Schima)

I don't run older versions of macOS and have no interest in them. Please add a sub-port for the current version for older OSes and update to the latest.

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

Instead of adding a subport, I would rather the port just install the latest version that's compatible with whatever OS the user has. But I'm not working on updating this port right now. If someone else wants to do the work that's great.

comment:4 Changed 5 years ago by kencu (Ken)

I have not yet worked out what the full deal is here, but the configuration fails during c++17 feature tests. In particular, it failed looking for a value operator. Digging in on that a bit, that is marked as being unavailable on macOS prior to 10.14 in the optional include file, and that is driven by this:

/opt/local/libexec/llvm-9.0/include/c++/v1/__config

down around line 1172, that macOS availability functionality can be disabled like this:

#  ifdef __APPLE__
//#    define _LIBCPP_USE_AVAILABILITY_APPLE
#  endif

and that turns off the entire libcpp availability macro infrastructure.

I assume this infrastructure is looking at the libc++ versions that are included by default with various versions of macOS, and using availability macros based on that default libc++.

10.6.8 with MacPort's libcxx has a libc++ that corresponds to clang-5.0 at present (it could be clang-7.0's pretty easily) -- I'm not 100% sure where 10.13 and 10.14 fall into that mixture. Disabling those availability tests might cause troubles on systems that have default libc++.dylibs installed perhaps.

The mkvtoolnix applications then build through it seems, but the install phase fails with some kind of an error generating the docs I think:

runtime error: file /opt/local/share/xsl/docbook-xsl-nons/lib/lib.xsl line 57 element call-template
xsltApplySequenceConstructor: A potential infinite template recursion was detected.
You can adjust xsltMaxDepth (--maxdepth) in order to raise the maximum number of nested template calls and variables/params (currently set to 3000).

and I don't as yet know how to fix that.

comment:5 Changed 5 years ago by kencu (Ken)

Ah, not so hard to do, in the end:

$ port -v installed mkvtoolnix
The following ports are currently installed:
  mkvtoolnix @43.0.0_0 (active) platform='darwin 10' archs='x86_64' date='2020-03-02T20:24:51-0800'

just had to bump up the maximum recursion a bit by modifying the Rakefile to add the "--maxdepth 5000":

  runq "xsltproc", t.source, "#{c(:XSLTPROC)} #{c(:XSLTPROC_FLAGS)} --maxdepth 5000 -o #{t.name} #{stylesheet} #{t.sources.join(" ")}", :filter_output => filter

comment:6 Changed 4 years ago by mf2k (Frank Schima)

Summary: mkvtoolnix: Update to version 43mkvtoolnix: Update to version 45

comment:7 Changed 4 years ago by mf2k (Frank Schima)

Description: modified (diff)

comment:8 Changed 4 years ago by mf2k (Frank Schima)

Updated ticket to current version 45.

Changed 4 years ago by mf2k (Frank Schima)

Attachment: Portfile-mkvtoolnix.diff added

Changed 4 years ago by mf2k (Frank Schima)

Attachment: patch-Rakefile.diff added

comment:9 Changed 4 years ago by mf2k (Frank Schima)

I've attached a diff to update to the latest version. It also disables update checking. See #55574. Can I commit this please?

comment:10 Changed 4 years ago by mf2k (Frank Schima)

@ryandesign: BTW, it also did not build on Catalina for me. I had to add a patch which I suspect will work for High Sierra (and below) too.

comment:11 Changed 4 years ago by mf2k (Frank Schima)

Resolution: fixed
Status: assignedclosed

In e360c0eff9282f726d7a7b853342d66dd3e031dd/macports-ports (master):

mkvtoolnix: Update to version 45.0.0

  • Set --maxdepth 6000 to fix problem building docs with xsltproc
  • Disable update checking
  • Fix minor lint issue

Fixes: #55574
Fixes: #60148

comment:12 Changed 4 years ago by mf2k (Frank Schima)

In 90bab9ec1ee473a67be6b49d6ab803f95cab3b73/macports-ports (master):

mkvtoolnix: Update to version 45.0.0

  • Set --maxdepth 6000 to fix problem building docs with xsltproc
  • Disable update checking
  • Fix minor lint issue

Fixes: #55574
Fixes: #60148

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

In ddc0c43995376e97045411f117380f8bb3ae441a/macports-ports (master):

mkvtoolnix: Downgrade to 41.0.0 on <= macOS 10.13

42.0.0 and later do not build with the libc++ that ships with macOS
10.13 and earlier.

See: #60148

Also stop using the github portgroup since the project is no longer
hosted there.

comment:14 Changed 4 years ago by kencu (Ken)

it looks like, on 10.6.8 at least, I should disable the os-based test in __config --- clearly there the os doesn't match the libc++ version installed.

And this brings up the idea of a general plan for how to install a newer libc++ version on older systems -- replace the existing (easy), or parallel installation (harder, but doable if we can set the dyld_library_path reliably, which we already started to do for gcc libstdc++)...

Note: See TracTickets for help on using tickets.