Opened 7 months ago

Closed 7 months ago

#69735 closed defect (fixed)

mkvtoolnix-legacy is broken on legacy systems

Reported by: barracuda156 Owned by: i0ntempest
Priority: Normal Milestone:
Component: ports Version: 2.9.3
Keywords: mountainlion, lion, snowleopard, leopard, tiger Cc:
Port: mkvtoolnix-legacy

Description

Perhaps if no testing was possible, older systems should have been kept at version which actually built. Now the port is broken: it fails even to configure.

--->  Configuring mkvtoolnix-legacy
Executing:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_mkvtoolnix-legacy/mkvtoolnix-legacy/work/mkvtoolnix-58.0.0" && ./configure --prefix=/opt/local --mandir=/opt/local/share/man --with-boost=/opt/local/libexec/boost/1.76 --with-extra-libs=/opt/local/lib --with-extra-includes=/opt/local/include --with-xsltproc=/opt/local/bin/xsltproc --with-docbook-xsl-root=/opt/local/share/xsl/docbook-xsl-nons --with-po4a=/opt/local/bin/po4a --with-po4a-translate=/opt/local/bin/po4a-translate --disable-qt6 --disable-update-check --disable-qt 
checking build system type... powerpc-apple-darwin10.0.0d2
checking host system type... powerpc-apple-darwin10.0.0d2
checking target system type... powerpc-apple-darwin10.0.0d2
checking for gcc... /opt/local/bin/gcc-mp-13
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether /opt/local/bin/gcc-mp-13 accepts -g... yes
checking for /opt/local/bin/gcc-mp-13 option to enable C11 features... none needed
checking whether /opt/local/bin/gcc-mp-13 and cc understand -c and -o together... yes
checking how to run the C preprocessor... /opt/local/bin/gcc-mp-13 -E
checking whether the compiler supports GNU C++... yes
checking whether /opt/local/bin/g++-mp-13 accepts -g... yes
checking for /opt/local/bin/g++-mp-13 option to enable C++11 features... none needed
checking how to run the C++ preprocessor... /opt/local/bin/g++-mp-13 -E
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for strip... strip
checking for ar... ar
checking for ld... ld
checking for strings... strings
checking for objdump... no
checking for pkg-config... /opt/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for grep that handles long lines and -e... /opt/local/bin/ggrep
checking for egrep... /opt/local/bin/ggrep -E
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/syscall.h... yes
checking for stropts.h... no
checking for syscall... yes
checking compiler type and version... gcc 13.2.0
checking for lld... no
checking for support for the "-std=c++17" flag... -std=c++17
checking for support for C++17 feature "attribute 'maybe_unused'"... yes
checking for support for C++17 feature "nested namespace definition"... yes
checking for support for C++17 feature "structured bindings"... yes
checking for support for C++17 feature "std::optional"... yes
checking for support for C++17 feature "std::gcd"... yes
checking for support for C++17 feature "constexpr if"... yes
checking for support for C++17 feature "file system library"... yes
checking for libraries to link against for the file system library... -lstdc++fs
checking whether the byte order is big-endian... yes
checking if being compiled with mingw32... no
checking for int64_t... yes
checking for uint64_t... yes
checking size of int... 4
checking size of long... 4
checking size of long long... 8
checking for iconv.h... yes
checking for iconv... yes
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for nl_langinfo... yes
checking for ogg_sync_init in -logg... yes
checking for ogg/ogg.h... yes
checking for vorbis_synthesis_init in -lvorbis... yes
checking for vorbis/codec.h... yes
checking for FLAC__stream_decoder_new in -lFLAC... yes
checking for FLAC__StreamMetadata_StreamInfo.sample_rate... yes
checking for FLAC__stream_decoder_skip_single_frame in -lFLAC... yes
checking for EBML... yes
checking for MATROSKA... yes
checking for PUGIXML... yes
configure: Using the system version of the pugixml library
checking nlohmann's json-cpp... yes
configure: Using the system version of nlohmann json-cpp
checking for utf8.h... no
configure: Using the internal version of UTF8-CPP
checking fmt... yes
checking for PCRE2... yes
checking for JPCRE2... no
configure: Using the internal version of jpcre2
checking for ZLIB... yes
checking for Qt 6... no: disabled by user request
checking for Qt 5... no: disabled by user request
checking for MAGIC... yes
checking for boostlib >= 1.66.0... yes
checking for boost/multiprecision/cpp_int.hpp... no
configure: error: Boost's multi-precision library is required but wasn't found
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_mkvtoolnix-legacy/mkvtoolnix-legacy/work/mkvtoolnix-58.0.0" && ./configure --prefix=/opt/local --mandir=/opt/local/share/man --with-boost=/opt/local/libexec/boost/1.76 --with-extra-libs=/opt/local/lib --with-extra-includes=/opt/local/include --with-xsltproc=/opt/local/bin/xsltproc --with-docbook-xsl-root=/opt/local/share/xsl/docbook-xsl-nons --with-po4a=/opt/local/bin/po4a --with-po4a-translate=/opt/local/bin/po4a-translate --disable-qt6 --disable-update-check --disable-qt 
Exit code: 1

On buildbots po4a is broken, so it does not reach to trying to install the port itself: https://build.macports.org/builders/ports-10.8_x86_64-builder/builds/170359/steps/install-dependencies/logs/dependencies

  1. S. For the reference, mkvtoolnix @41.0.0 was building fine.

Change History (7)

comment:1 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

Cc: i0ntempest removed
Owner: changed from ryandesign to i0ntempest

comment:2 Changed 7 months ago by i0ntempest

Again I don't think 10.5 was ever supported because it never supported qt5. For 10.8-10.6, if the multiprecision library is the only problem then falling back one more version to v57 should work, since v58 introduced the requirement.

Is your configure log from 10.8? If it has boost 1.76 it should have boost/multiprecision/cpp_int.hpp.

comment:3 in reply to:  2 Changed 7 months ago by barracuda156

Replying to i0ntempest:

Again I don't think 10.5 was ever supported because it never supported qt5. For 10.8-10.6, if the multiprecision library is the only problem then falling back one more version to v57 should work, since v58 introduced the requirement.

Is your configure log from 10.8? If it has boost 1.76 it should have boost/multiprecision/cpp_int.hpp.

I do not have 10.8 at hand, the log is from 10.6.

I will look into multiprecision, I was not aware Boost lacks something on ppc. And I can try v57, if indeed Boost does not have that lib and it cannot be built on 32-bit.

UPD. It does have multiprecision.

Last edited 7 months ago by barracuda156 (previous) (diff)

comment:4 in reply to:  2 Changed 7 months ago by barracuda156

Replying to i0ntempest:

Again I don't think 10.5 was ever supported because it never supported qt5. For 10.8-10.6, if the multiprecision library is the only problem then falling back one more version to v57 should work, since v58 introduced the requirement.

Is your configure log from 10.8? If it has boost 1.76 it should have boost/multiprecision/cpp_int.hpp.

Ok, this is a bug in Boost, which was fixed in 1.81.

configure:11270: checking for boost/multiprecision/cpp_int.hpp
configure:11270: /opt/local/bin/g++-mp-13 -c -pipe -I/opt/local/libexec/boost/1.76/include -Os -std=c++17 -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -I/opt/local/include -I/opt/local/libexec/boost/1.76/include -isystem/opt/local/include/LegacySupport -I/opt/local/include -I/opt/local/include -I/opt/local/libexec/boost/1.76/include conftest.cpp >&5
In file included from /opt/local/lib/gcc13/gcc/powerpc-apple-darwin10/13.2.0/include/immintrin.h:29,
                 from /opt/local/libexec/boost/1.76/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp:68,
                 from /opt/local/libexec/boost/1.76/include/boost/multiprecision/cpp_int/add_unsigned.hpp:10,
                 from /opt/local/libexec/boost/1.76/include/boost/multiprecision/cpp_int/add.hpp:12,
                 from /opt/local/libexec/boost/1.76/include/boost/multiprecision/cpp_int.hpp:2286,
                 from conftest.cpp:67:
/opt/local/lib/gcc13/gcc/powerpc-apple-darwin10/13.2.0/include/mmintrin.h:52:2: error: #error "Please read comment above.  Use -DNO_WARN_X86_INTRINSICS to disable this error."
   52 | #error "Please read comment above.  Use -DNO_WARN_X86_INTRINSICS to disable this error."
      |  ^~~~~

Is it okay to switch to Boost 1.81? If not, then I need to backport a fix into 1.76.

comment:5 Changed 7 months ago by i0ntempest

I don't think there's an upper limit for boost version, but v58 being released before boost 1.81 may not be compatible. You can try.

comment:6 in reply to:  5 Changed 7 months ago by barracuda156

Replying to i0ntempest:

I don't think there's an upper limit for boost version, but v58 being released before boost 1.81 may not be compatible. You can try.

So Boost 1.81 seems to work, but the new libfmt does not, apparently:

:info:build In file included from /opt/local/include/fmt/format.h:49,
:info:build                  from src/common/common.h:39,
:info:build                  from src/common/common_pch.h:1:
:info:build /opt/local/include/fmt/core.h: In instantiation of 'constexpr fmt::v10::detail::value<Context> fmt::v10::detail::make_arg(T&) [with bool PACKED = true; Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; T = mtx::kax_analyzer_x; typename std::enable_if<PACKED, int>::type <anonymous> = 0]':
:info:build /opt/local/include/fmt/core.h:1842:51:   required from 'constexpr fmt::v10::format_arg_store<Context, Args>::format_arg_store(T& ...) [with T = {mtx::kax_analyzer_x}; Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; Args = {mtx::kax_analyzer_x}]'
:info:build /opt/local/include/fmt/core.h:1860:18:   required from 'constexpr fmt::v10::format_arg_store<Context, typename std::remove_cv<typename std::remove_reference<T>::type>::type ...> fmt::v10::make_format_args(T& ...) [with Context = basic_format_context<appender, char>; T = {mtx::kax_analyzer_x}]'
:info:build /opt/local/include/fmt/core.h:2835:44:   required from 'std::string fmt::v10::format(format_string<T ...>, T&& ...) [with T = {mtx::kax_analyzer_x&}; std::string = std::basic_string<char>; format_string<T ...> = basic_format_string<char, mtx::kax_analyzer_x&>]'
:info:build src/merge/mkvmerge.cpp:1650:24:   required from here
:info:build /opt/local/include/fmt/core.h:1600:63: error: 'fmt::v10::detail::type_is_unformattable_for<mtx::kax_analyzer_x, char> _' has incomplete type
:info:build  1600 |     type_is_unformattable_for<T, typename Context::char_type> _;
:info:build       |                                                               ^
:info:build compilation terminated due to -Wfatal-errors.

Did someone test this version or was it picked randomly?

It may need to use an older version of libfmt.

Version 0, edited 7 months ago by barracuda156 (next)

comment:7 Changed 7 months ago by barracuda156

Resolution: fixed
Status: assignedclosed

In 1a19f3ca05e3fd5db3676c59814362fc2616bad0/macports-ports (master):

mkvtoolnix-legacy: use Boost 1.81

Fixes: #69735

Note: See TracTickets for help on using tickets.