Opened 3 years ago

Closed 7 months ago

#63418 closed defect (fixed)

mkvtoolnix @41.0.0_1: fatal error: static_assert failed due to requirement 'sizeof(char) == 0' "If you want to output boost::optional, include header <boost/optional/optional_io.hpp>"

Reported by: sambthompson (Sam Thompson) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.7.1
Keywords: elcapitan Cc:
Port: mkvtoolnix

Description

Trying to upgrade from 41.0.0_0 to _1; (seems to be the boost pg change). Calls for boost 1.76 and successfully installs it, but the mkvtoolnix build fails at:

... If you want to output boost::optional, include header <boost/optional/optional_io.hpp> ...

Log attached. Not sure if related, but based on notes in the portfile about being limited to 41.00 due to:

    # mkvtoolnix 42.0.0 and later do not build on macOS 10.12 or earlier
    # (at least not with the versions of libc++ included on those systems) because:
    # The following features of the C++11/C++14/C++17 standards are not supported by /usr/bin/clang++:
    #   * std::optional (C++17)

However, not sure if boost is relying on the underlying std library feature?

Attachments (2)

main.log (1.7 MB) - added by sambthompson (Sam Thompson) 3 years ago.
mkvtoolnix upgrade main.log
trace.log (99.8 KB) - added by sambthompson (Sam Thompson) 3 years ago.
Log of install with trace option

Download all attachments as: .zip

Change History (8)

Changed 3 years ago by sambthompson (Sam Thompson)

Attachment: main.log added

mkvtoolnix upgrade main.log

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

Cc: ryandesign removed
Keywords: elcapitan added; boost optional removed
Owner: set to ryandesign
Status: newassigned
Summary: mkvtoolnix @ 41.0.0_1 fails to build on 10.11.6 with boost 1.76mkvtoolnix @41.0.0_1: fatal error: static_assert failed due to requirement 'sizeof(char) == 0' "If you want to output boost::optional, include header <boost/optional/optional_io.hpp>"

This is probably fallout from the recent reorganization (splitting) of boost ports. We probably just need to tell the build where boost is located now.

Changed 3 years ago by sambthompson (Sam Thompson)

Attachment: trace.log added

Log of install with trace option

comment:2 Changed 3 years ago by sambthompson (Sam Thompson)

Additional data points on this. After inadvertently uninstalling mkvtoolnix, I tried a fresh install with trace on and the GUI variant suppressed, and it the build and install was successful:

% sudo port -t install mkvtoolnix -qtgui

The trace showed masses of boost include files were accessed:

Warning: The following files inside the MacPorts prefix not installed by a port were accessed:
  /opt/local/etc/xml/catalog
  /opt/local/include/boost/algorithm/string.hpp
  /opt/local/include/boost/algorithm/string/case_conv.hpp
...
  /opt/local/include/boost/variant/variant_fwd.hpp
  /opt/local/include/boost/variant/visitor_ptr.hpp

Not sure if this warning suggests there's an issue with the port install, since I have boost showing as installed:

% sudo port installed | grep boost
  boost @1.76_0 (active)
  boost176 @1.76.0_3+clang13+no_single+no_static+python39 (active)

With the trace, but not the variant suppression:

% sudo port -t install mkvtoolnix

This also succeeded, but I got an additional set of warnings on non-port accessed files during configuration phase as well:

Warning: The following files inside the MacPorts prefix not installed by a port were accessed:
  /opt/local/libexec/qt5/include/QtCore/QCoreApplication
  /opt/local/libexec/qt5/include/QtCore/QObject
...
  /opt/local/libexec/qt5/include/QtCore/qwineventnotifier.h
  /opt/local/libexec/qt5/include/QtCore/qxmlstream.h
  /opt/local/libexec/qt5/lib/QtConcurrent.framework/Versions/Current/QtConcurrent
  /opt/local/libexec/qt5/lib/QtCore.framework/Versions/Current/QtCore
  /opt/local/libexec/qt5/lib/QtGui.framework/Versions/Current/QtGui
  /opt/local/libexec/qt5/lib/QtMultimedia.framework/Versions/Current/QtMultimedia
  /opt/local/libexec/qt5/lib/QtNetwork.framework/Versions/Current/QtNetwork
  /opt/local/libexec/qt5/lib/QtWidgets.framework/Versions/Current/QtWidgets

Again, I have qt5 installed:

% sudo port installed | grep qt5
  qscintilla-qt5 @2.13.1_0 (active)
  qt511-qtbase @5.11.3_7+openssl (active)
  qt511-qtdeclarative @5.11.3_0 (active)
  qt511-qtmacextras @5.11.3_0 (active)
  qt511-qtmultimedia @5.11.3_0 (active)
  qt511-qtsvg @5.11.3_0 (active)
  qt511-qttools @5.11.3_1 (active)
  qt511-qttranslations @5.11.3_0 (active)
  qt511-qtxmlpatterns @5.11.3_0 (active)
  wireshark2 @2.6.19_2+cares+chmodbpf+geoip+gnutls+kerberos5+libgcrypt+libsmi+portaudio+qt5+zlib (active)

Not sure if that offers any insights, but hope so. Trace from second run attached.

Last edited 3 years ago by sambthompson (Sam Thompson) (previous) (diff)

comment:3 Changed 21 months ago by sambthompson (Sam Thompson)

Recent port upgrade (41.0.0_4+qtgui -> 41.0.0_5+qtgui) seems to not show this issue anymore, and this ticket could be closed? Assume it was fixed by commit 1ddea5e back in July 2022.

comment:4 Changed 19 months ago by sambthompson (Sam Thompson)

OK, broken again with change of default clang from 14 to 16 (per ticket:65895). Need to patch boost176 to get it building again, per this comment: ticket:67324#comment:2

comment:5 Changed 15 months ago by sambthompson (Sam Thompson)

As #67324 is fixed and closed (thanks to mascguy), this is also fixed and can be closed, too. Thanks.

comment:6 Changed 7 months ago by i0ntempest

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.