Opened 5 years ago

Closed 5 years ago

#59499 closed defect (fixed)

gstreamer010-gst-plugins-good @0.10.31_12 (gnome) Failed to build on Catalina

Reported by: s0nik42 Owned by: jmroot (Joshua Root)
Priority: Normal Milestone:
Component: ports Version: 2.6.2
Keywords: haspatch Cc: dbevans (David B. Evans), hapaguy (Brian Kurt Fujikawa), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), lbschenkel (Leonardo Brondani Schenkel)
Port: gstreamer010-gst-plugins-good, libxml2, icu

Description

First of all, sorry if I didn't report it properly, its my first Ticket on that system.

There is no way to install gstreamer010-gst-plugins-good even from a clean fresh install of macports on Catalina.

It seems to be related to the CXX tag.

libtool:   error: ignoring unknown tag CXX
libtool:   error: ignoring unknown tag disable-static
[...]
                                 ^/opt/local/include/unicode/localpointer.h
:71:51: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
    static void* U_EXPORT2 operator new(size_t) = delete;
                                                  ^
/opt/local/include/unicode/localpointer.h:72:53: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
    static void* U_EXPORT2 operator new[](size_t) = delete;
                                                    ^
/opt/local/include/unicode/localpointer.h:74:58: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
/opt/local/include/unicode/localpointer.h:224:40:     static void* U_EXPORT2 operator new(size_t, void*) = delete;
error:                                                          ^
expected ';' at end of declaration list
    LocalPointer(LocalPointer<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
                                       ^
[...]

I attached a patch that solve the issue for me. Xcode 11.0 (Build version 11A420a) Hope that help others

Julien

Attachments (2)

gstreamer010-gst-plugins-good.patch (396 bytes) - added by s0nik42 5 years ago.
Disable CXX
main.log (1.6 MB) - added by s0nik42 5 years ago.
main.log

Download all attachments as: .zip

Change History (11)

Changed 5 years ago by s0nik42

Disable CXX

comment:1 Changed 5 years ago by jmroot (Joshua Root)

Thanks for the report. Could you please attach the full main.log from the failed build?

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

I see at least 2 problems so far.

  1. /opt/local/include/unicode/localpointer.h is provided by port icu. icu was recently updated to a new version that requires C++11. So anything that uses icu now needs to use C++11 or newer (compiler.cxx_standard 2011 or newer).
  2. port gstreamer010-gst-plugins-good does not declare a dependency on port icu. But based on the output you've shown above, gstreamer010-gst-plugins-good appears to use icu, yet I can't find mention of that in the gstreamer010-gst-plugins-good source code. Perhaps seeing the main.log will help us understand what's really going on.

Changed 5 years ago by s0nik42

Attachment: main.log added

main.log

comment:3 Changed 5 years ago by s0nik42

main.log added

comment:4 Changed 5 years ago by hapaguy (Brian Kurt Fujikawa)

Cc: hapaguy added

comment:5 Changed 5 years ago by jmroot (Joshua Root)

Cc: ryandesign added
Port: libxml2 icu added

The failing command seems to be

:info:build libtool: compile:  /usr/bin/clang++ -DHAVE_CONFIG_H -I. -I../.. -I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -D_REENTRANT -I/opt/local/include/gstreamer-0.10 -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include/libxml2 -I../../gst-libs -D_REENTRANT -I/opt/local/include/gstreamer-0.10 -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include/libxml2 -DG_THREADS_MANDATORY -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT -Wall -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -g -I/opt/local/include/taglib -Wno-attributes -pipe -Os -stdlib=libc++ -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -arch x86_64 -MT libgsttaglib_la-gstid3v2mux.lo -MD -MP -MF .deps/libgsttaglib_la-gstid3v2mux.Tpo -c gstid3v2mux.cc  -fno-common -DPIC -o .libs/libgsttaglib_la-gstid3v2mux.o

and the error involves the libxml2 headers

:info:build In file included from gstid3v2mux.cc:51:
:info:build In file included from ./gstid3v2mux.h:24:
:info:build In file included from ./gsttaglibmux.h:24:
:info:build In file included from /opt/local/include/gstreamer-0.10/gst/gst.h:35:
:info:build In file included from /opt/local/include/gstreamer-0.10/gst/gstbin.h:27:
:info:build In file included from /opt/local/include/gstreamer-0.10/gst/gstelement.h:55:
:info:build In file included from /opt/local/include/gstreamer-0.10/gst/gstconfig.h:200:
:info:build In file included from /opt/local/include/libxml2/libxml/parser.h:810:
:info:build In file included from /opt/local/include/libxml2/libxml/encoding.h:31:
:info:build In file included from /opt/local/include/unicode/ucnv.h:53:
:info:build In file included from /opt/local/include/unicode/uenum.h:23:
:info:build /opt/local/include/unicode/localpointer.h:71:51: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
:info:build     static void* U_EXPORT2 operator new(size_t) = delete;
:info:build                                                   ^
:info:build /opt/local/include/unicode/localpointer.h:72:53: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
:info:build     static void* U_EXPORT2 operator new[](size_t) = delete;
:info:build                                                     ^
:info:build /opt/local/include/unicode/localpointer.h:74:58: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
:info:build     static void* U_EXPORT2 operator new(size_t, void*) = delete;
:info:build                                                          ^
:info:build /opt/local/include/unicode/localpointer.h:224:34: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
:info:build     LocalPointer(LocalPointer<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
:info:build                                  ^
:info:build /opt/local/include/unicode/localpointer.h:224:40: error: expected ';' at end of declaration list
:info:build     LocalPointer(LocalPointer<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
:info:build                                        ^
:info:build                                        ;
:info:build /opt/local/include/unicode/localpointer.h:405:30: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
:info:build     LocalArray(LocalArray<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
:info:build                              ^
:info:build /opt/local/include/unicode/localpointer.h:405:36: error: expected ';' at end of declaration list
:info:build     LocalArray(LocalArray<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
:info:build                                    ^
:info:build                                    ;

The icu headers' use of C++11 seems to be leaking in to something that is not trying to use icu at all, but just llibxml2's C API.

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

Cc: MarcusCalhoun-Lopez lbschenkel added; ryandesign removed

comment:7 Changed 5 years ago by lbschenkel (Leonardo Brondani Schenkel)

I don't have a Catalina (10.15) system, but I was trying to reproduce this in Mojave (10.14) and I couldn't even get to this point. gstreamer010-gst-plugins-base fails to build in my system:

libtool: link: /usr/bin/grep -E -e "^_*gst_plugin_desc.*" ".libs/libgstaudioresample.exp" > ".libs/libgstaudioresample.expT"
libtool: link: mv -f ".libs/libgstaudioresample.expT" ".libs/libgstaudioresample.exp"
libtool: link: sed -e 's,^,_,' < .libs/libgstaudioresample.exp > .libs/libgstaudioresample-symbols.expsym
libtool: link: /usr/bin/clang  -o .libs/libgstaudioresample.so -bundle  .libs/libgstaudioresample_la-gstaudioresample.o .libs/libgstaudioresample_la-speex_resampler_int.o .libs/libgstaudioresample_la-speex_resampler_float.o .libs/libgstaudioresample_la-speex_resampler_double.o   -L/opt/local/lib -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -lxml2 -lorc-0.4 -lorc-test-0.4  -Os -arch x86_64 -Wl,-headerpad_max_install_names -Wl,-syslibroot -Wl,/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -arch x86_64 -Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreFoundation   -Wl,-exported_symbols_list,.libs/libgstaudioresample-symbols.expsym
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstaudioresample_la-gstaudioresample.o
    .libs/libgstaudioresample_la-speex_resampler_int.o
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstaudioresample_la-gstaudioresample.o
    .libs/libgstaudioresample_la-speex_resampler_float.o
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstaudioresample_la-gstaudioresample.o
    .libs/libgstaudioresample_la-speex_resampler_double.o
ld: 3 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

comment:8 Changed 5 years ago by lbschenkel (Leonardo Brondani Schenkel)

This is so strange. I managed to skip building -base by setting the exact needed variants and forcing a binary installation, but then -gst-plugins-good fails to build due to a very similar reason:

duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstdeinterlace_la-gstdeinterlace.o
    .libs/libgstdeinterlace_la-tomsmocomp.o
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstdeinterlace_la-gstdeinterlace.o
    .libs/libgstdeinterlace_la-greedyh.o
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstdeinterlace_la-gstdeinterlace.o
    .libs/libgstdeinterlace_la-vfir.o
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstdeinterlace_la-gstdeinterlace.o
    .libs/libgstdeinterlace_la-linear.o
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstdeinterlace_la-gstdeinterlace.o
    .libs/libgstdeinterlace_la-linearblend.o
duplicate symbol _OrcTargetPowerPCFlags in:
    .libs/libgstdeinterlace_la-gstdeinterlace.o
    .libs/libgstdeinterlace_la-tmp-orc.o
ld: 6 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[4]: *** [libgstdeinterlace.la] Error 1

I also grepped for unicode in my build logs and there's no match to be found. So in my system (10.14 + XCode 11.0) the build process didn't pick up the ICU headers.

Version 0, edited 5 years ago by lbschenkel (Leonardo Brondani Schenkel) (next)

comment:9 Changed 5 years ago by jmroot (Joshua Root)

Owner: set to jmroot
Resolution: fixed
Status: newclosed

In 134cb9c9d05ee6e044dc330204d9dc33ee495f73/macports-ports (master):

libxml2: update to 2.9.10

Also, don't expose the ICU C++ API via libxml/encoding.h if the C++
version is too old.

Fixes: #59499
Fixes: #59519
Fixes: #59565
Fixes: #59567
Fixes: #59645
Fixes: #59721
Fixes: #59736

Note: See TracTickets for help on using tickets.