Index | Thread | Search

From:
Jeremie Courreges-Anglas <jca@wxcvbn.org>
Subject:
devel/boost vs textproc/icu4c on sparc64
To:
Brad Smith <brad@comstyle.com>, Rafael Sadowski <rsadowski@openbsd.org>
Cc:
ports@openbsd.org, kmos@openbsd.org, ajacoutot@openbsd.org
Date:
Sun, 4 Aug 2024 20:59:06 +0200

Download raw body.

Thread
  • Jeremie Courreges-Anglas:

    devel/boost vs textproc/icu4c on sparc64

devel/boost currently fails to package on sparc64:

http://build-failures.rhaalovely.net/sparc64/2024-07-24/devel/boost.log

  checksumming|***********************************************************  | 97%
  Error: /usr/obj/ports/boost-1.84.0/fake-sparc64/usr/local/lib/libboost_locale-mt.a does not exist
  Error: /usr/obj/ports/boost-1.84.0/fake-sparc64/usr/local/lib/libboost_locale-mt.so.23.0 does not exist
  pkg_create: can't continue

Earlier in the build one can see that icu detection is broken.

/usr/ports/pobj/boost-1.84.0/boost_1_84_0/bin.v2/config.log says:

--8<--
gcc.compile.c++ bin.v2/libs/regex/build/gcc-8/release/link-static/pch-off/threading-multi/visibility-hidden/has_icu_test.o

    "c++"   -fvisibility-inlines-hidden -m64 -pthread -finline-functions -Wno-inline -Wall -fvisibility=hidden -O2 -pipe   -O2 -pipe   -DBOOST_ALL_NO_LIB=1 -DBOOST_COBALT_USE_STD_PMR=1 -DBOOST_HAS_ICU=1 -DNDEBUG   -I"." -I"/usr/local/include"  -c -o "bin.v2/libs/regex/build/gcc-8/release/link-static/pch-off/threading-multi/visibility-hidden/has_icu_test.o" "libs/regex/build/has_icu_test.cpp"

In file included from /usr/local/include/unicode/uset.h:36,
                 from /usr/local/include/unicode/unorm2.h:35,
                 from /usr/local/include/unicode/unorm.h:25,
                 from /usr/local/include/unicode/ucol.h:17,
                 from /usr/local/include/unicode/coll.h:62,
                 from libs/regex/build/has_icu_test.cpp:15:
/usr/local/include/unicode/localpointer.h:561:31: error: 'auto' parameter not permitted in this context
 template <typename Type, auto closeFunction>
                               ^~~~~~~~~~~~~
/usr/local/include/unicode/localpointer.h:573:76: error: template argument 2 is invalid
     explicit LocalOpenPointer(std::unique_ptr<Type, decltype(closeFunction)> &&p)
                                                                            ^
/usr/local/include/unicode/localpointer.h:583:78: error: template argument 2 is invalid
     LocalOpenPointer &operator=(std::unique_ptr<Type, decltype(closeFunction)> &&p) {
                                                                              ^
/usr/local/include/unicode/localpointer.h:599:59: error: template argument 2 is invalid
     operator std::unique_ptr<Type, decltype(closeFunction)> () && {
                                                           ^
/usr/local/include/unicode/localpointer.h:551:81: note: invalid template non-type parameter
     using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
                                                                                 ^
/usr/local/include/unicode/uset.h:358:1: note: in expansion of macro 'U_DEFINE_LOCAL_OPEN_POINTER'
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUSetPointer, USet, uset_close);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/unicode/localpointer.h:551:81: note: invalid template non-type parameter
     using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
                                                                                 ^
/usr/local/include/unicode/unorm2.h:286:1: note: in expansion of macro 'U_DEFINE_LOCAL_OPEN_POINTER'
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUNormalizer2Pointer, UNormalizer2, unorm2_close);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/unicode/localpointer.h:551:81: note: invalid template non-type parameter
     using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
                                                                                 ^
/usr/local/include/unicode/uenum.h:69:1: note: in expansion of macro 'U_DEFINE_LOCAL_OPEN_POINTER'
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUEnumerationPointer, UEnumeration, uenum_close);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/unicode/localpointer.h:551:81: note: invalid template non-type parameter
     using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
                                                                                 ^
/usr/local/include/unicode/ucol.h:553:1: note: in expansion of macro 'U_DEFINE_LOCAL_OPEN_POINTER'
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUCollatorPointer, UCollator, ucol_close);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/unicode/unistr.h:39,
                 from /usr/local/include/unicode/strenum.h:20,
                 from /usr/local/include/unicode/locid.h:40,
                 from /usr/local/include/unicode/coll.h:64,
                 from libs/regex/build/has_icu_test.cpp:15:
/usr/local/include/unicode/stringpiece.h:134:23: error: 'is_same_v' is not a member of 'std'
                 (std::is_same_v<decltype(T().data()), const char*>
                       ^~~~~~~~~
/usr/local/include/unicode/stringpiece.h:134:23: note: suggested alternative: 'is_same'
                 (std::is_same_v<decltype(T().data()), const char*>
                       ^~~~~~~~~
                       is_same
/usr/local/include/unicode/stringpiece.h:134:66: error: template argument 1 is invalid
                 (std::is_same_v<decltype(T().data()), const char*>
                                                                  ^
/usr/local/include/unicode/stringpiece.h:138:17: error: expected '>' before ')' token
                 ) &&
                 ^
/usr/local/include/unicode/stringpiece.h:138:17: error: expected unqualified-id before ')' token
...skipped <pbin.v2/libs/regex/build/gcc-8/release/link-static/pch-off/threading-multi/visibility-hidden>has_icu for lack of <pbin.v2/libs/regex/build/gcc-8/release/link-static/pch-off/threading-multi/visibility-hidden>has_icu_test.o...
...failed updating 1 target...
-->8--

(full config.log available at https://wxcvbn.org/~jca/tmp/boost-config.log.gz)

lang/gcc/8 doesn't seem able to use some icu4c headers by default.
No idea how to fix it.

One hackish workaround would be to just pretend we don't care about
boost_locale on architectures that use ports-gcc, and put the two
missing files files in a new PFRAG.locale.  Posting this here in the
hope that someone has a better idea.  The has_icu_test.cpp failure can
be reproduced on amd64 using COMPILER=ports-gcc and TOOLSET=gcc.

-- 
jca