Opened 5 years ago

Closed 5 years ago

#59434 closed defect (fixed)

qt53-qtbase @5.3.2_2: build fails against icu @65.1_0: error: expected ';' at end of declaration list

Reported by: kencu (Ken) Owned by: kencu (Ken)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Port: qt5

Description

ICU auto-detection... ()
/opt/local/bin/clang++-mp-5.0 -c -pipe -stdlib=libc++ -arch x86_64 -Os -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -Wall -W -fPIE -DNS_BUILD_32_LIKE_64 -I../../../mkspecs/macx-clang -I. -o icu.o icu.cpp
In file included from icu.cpp:43:
In file included from /opt/local/include/unicode/ucol.h:17:
In file included from /opt/local/include/unicode/unorm.h:25:
In file included from /opt/local/include/unicode/unorm2.h:34:
/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]
    static void* U_EXPORT2 operator new(size_t, void*) = delete;
                                                         ^
/opt/local/include/unicode/localpointer.h:224:34: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
    LocalPointer(LocalPointer<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
                                 ^
/opt/local/include/unicode/localpointer.h:224:40: error: expected ';' at end of declaration list
    LocalPointer(LocalPointer<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
                                       ^
                                       ;
/opt/local/include/unicode/localpointer.h:405:30: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
    LocalArray(LocalArray<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
                             ^
/opt/local/include/unicode/localpointer.h:405:36: error: expected ';' at end of declaration list
    LocalArray(LocalArray<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
                                   ^
                                   ;
In file included from icu.cpp:43:
In file included from /opt/local/include/unicode/ucol.h:17:
In file included from /opt/local/include/unicode/unorm.h:25:
In file included from /opt/local/include/unicode/unorm2.h:36:
/opt/local/include/unicode/uset.h:330:1: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
U_DEFINE_LOCAL_OPEN_POINTER(LocalUSetPointer, USet, uset_close);
^
/opt/local/include/unicode/localpointer.h:568:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                    ^
In file included from icu.cpp:43:
In file included from /opt/local/include/unicode/ucol.h:17:
In file included from /opt/local/include/unicode/unorm.h:25:
In file included from /opt/local/include/unicode/unorm2.h:36:
/opt/local/include/unicode/uset.h:330:1: error: expected ';' at end of declaration list
/opt/local/include/unicode/localpointer.h:568:60: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                           ^
/opt/local/include/unicode/platform.h:529:23: note: expanded from macro 'U_NOEXCEPT'
#   define U_NOEXCEPT noexcept
                      ^
In file included from icu.cpp:43:
In file included from /opt/local/include/unicode/ucol.h:17:
In file included from /opt/local/include/unicode/unorm.h:25:
/opt/local/include/unicode/unorm2.h:261:1: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
U_DEFINE_LOCAL_OPEN_POINTER(LocalUNormalizer2Pointer, UNormalizer2, unorm2_close);
^
/opt/local/include/unicode/localpointer.h:568:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                    ^
In file included from icu.cpp:43:
In file included from /opt/local/include/unicode/ucol.h:17:
In file included from /opt/local/include/unicode/unorm.h:25:
/opt/local/include/unicode/unorm2.h:261:1: error: expected ';' at end of declaration list
/opt/local/include/unicode/localpointer.h:568:60: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                           ^
/opt/local/include/unicode/platform.h:529:23: note: expanded from macro 'U_NOEXCEPT'
#   define U_NOEXCEPT noexcept
                      ^
In file included from icu.cpp:43:
In file included from /opt/local/include/unicode/ucol.h:20:
In file included from /opt/local/include/unicode/uloc.h:27:
/opt/local/include/unicode/uenum.h:68:1: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
U_DEFINE_LOCAL_OPEN_POINTER(LocalUEnumerationPointer, UEnumeration, uenum_close);
^
/opt/local/include/unicode/localpointer.h:568:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                    ^
In file included from icu.cpp:43:
In file included from /opt/local/include/unicode/ucol.h:20:
In file included from /opt/local/include/unicode/uloc.h:27:
/opt/local/include/unicode/uenum.h:68:1: error: expected ';' at end of declaration list
/opt/local/include/unicode/localpointer.h:568:60: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                           ^
/opt/local/include/unicode/platform.h:529:23: note: expanded from macro 'U_NOEXCEPT'
#   define U_NOEXCEPT noexcept
                      ^
In file included from icu.cpp:43:
/opt/local/include/unicode/ucol.h:540:1: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
U_DEFINE_LOCAL_OPEN_POINTER(LocalUCollatorPointer, UCollator, ucol_close);
^
/opt/local/include/unicode/localpointer.h:568:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                    ^
In file included from icu.cpp:43:
/opt/local/include/unicode/ucol.h:540:1: error: expected ';' at end of declaration list
/opt/local/include/unicode/localpointer.h:568:60: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
                                                           ^
/opt/local/include/unicode/platform.h:529:23: note: expanded from macro 'U_NOEXCEPT'
#   define U_NOEXCEPT noexcept
                      ^
9 warnings and 6 errors generated.
make: *** [icu.o] Error 1
ICU disabled.
The ICU library support cannot be enabled.
 Turn on verbose messaging (-v) to ./configure to see the final report.
 If you believe this message is in error you may use the continue
 switch (-continue) to ./configure to continue.

Attachments (2)

qt53-qtbase-fail-1068-icu.log (271.6 KB) - added by kencu (Ken) 5 years ago.
qt53-qtbase-fail-clang9.log (5 bytes) - added by kencu (Ken) 5 years ago.
apologies; the previous was an error. The failure was actually qt53-qtwebkit

Download all attachments as: .zip

Change History (9)

Changed 5 years ago by kencu (Ken)

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

Oh, but much to my happy surprise, using the default clang-9.0 instead of clang-5.0, the ICU auto-detection works, and the build proceeds:

ICU auto-detection... ()
/opt/local/bin/clang++-mp-9.0 -c -pipe -stdlib=libc++ -arch x86_64 -Os -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -Wall -W -fPIE -DNS_BUILD_32_LIKE_64 -I../../../mkspecs/macx-clang -I. -o icu.o icu.cpp
/opt/local/bin/clang++-mp-9.0 -headerpad_max_install_names -stdlib=libc++ -arch x86_64 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -o icu icu.o   -licui18n -licuuc -licudata 
ICU enabled.

This would be due to the fact that ICU now requires c++11, and clang-9.0 defaults to (greater than) c++11, whereas clang-5.0 does not, and there is no -std=c++11 presently in the qt53-qtbase build.

Perhaps with luck, then, clang-9.0 might be able to complete this build of qt53-qtbase and we'll be in business.

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

removed. the failure was with qt53-qtwebkit, my apologies; it rolled right into that.

qt53-qtbase did complete with clang-9.0. So now will move on to qt53-qtwebkit fixes.

Last edited 5 years ago by kencu (Ken) (previous) (diff)

Changed 5 years ago by kencu (Ken)

Attachment: qt53-qtbase-fail-clang9.log added

apologies; the previous was an error. The failure was actually qt53-qtwebkit

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

Resolution: worksforme
Status: assignedclosed

Using the current default of clang-9.0, qt53-qtbase will build through to completion. On compilers that do not default to c++11, it will likely continue to fail in the icu detection code.

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

Port: qt5 added; qt53-qtbase removed
Resolution: worksforme
Status: closedreopened

This is still a problem; please see https://build.macports.org/builders/ports-10.15_x86_64-builder/builds/3629/steps/install-port/logs/stdio. The port already uses compiler.cxx_standard 2011 so it probably just needs to add configure.cxxflags-append -std=c++11.

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

Ah -- if only qt5 was so simple ... well, as Catalina users should be able to build qt53 if they darned-well want to, let me see if I can sort this out for those retro Catalina users out there (you know who you are!). Marcus showed the way not long ago with the qt4-build-with-clang-9.0-fixes, I think...

comment:6 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

There is a pull request that attempt to fix this problem.
I think it is safe to merge, but I would be happy to wait if Ken would like to take a look first.

comment:7 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Resolution: fixed
Status: reopenedclosed

In 66ad17ef2ac70cd97ae46cc40f8512ff9c87f01e/macports-ports (master):

qt5*-qtbase: fix ICU test

ICU requires C++11.
QtBase uses -std=c++XYZ in the build but not the configure phase.

Fixes #59434

Note: See TracTickets for help on using tickets.