Bug#1092317: hfst ftbfs with icu-76.1

Matthias Klose doko at debian.org
Tue Jan 7 12:12:47 GMT 2025


Package: src:hfst
Version: 3.16.1-3
Severity: important
User: debian-devel at lists.debian.org
Usertags: icu76

The package fails to build with icu 76.1-2 from experimental.  The most 
likely reason is that it's not built for the default C++17 standards, 
and manually specifies an earlier standard.

The build log shows the package building with -std=c++11, and failing.

[...]
Making all in python
make[3]: Entering directory '/<<PKGBUILDDIR>>/python'
/usr/bin/python3 setup.py build
/usr/lib/python3/dist-packages/setuptools/dist.py:330: InformationOnly: 
Normalizing '3.16.0_beta' to '3.16.0b0'
   self.metadata.version = self._normalize_version(self.metadata.version)
file libhfst.py (for module libhfst) not found
file libhfst.py (for module libhfst) not found
libhfst.i:1528: Warning 321: 'compile' conflicts with a built-in name in 
python
libhfst.i:1590: Warning 321: 'set' conflicts with a built-in name in python
libhfst.i:1672: Warning 321: 'compile' conflicts with a built-in name in 
python
In file included from /usr/include/unicode/unistr.h:37,
                  from 
/<<PKGBUILDDIR>>/libhfst/src/parsers/../implementations/optimized-lookup/transducer.h:39,
                  from 
/<<PKGBUILDDIR>>/libhfst/src/parsers/../implementations/ConvertTransducerFormat.h:39,
                  from 
/<<PKGBUILDDIR>>/libhfst/src/parsers/../implementations/HfstBasicTransducer.h:31,
                  from 
/<<PKGBUILDDIR>>/libhfst/src/parsers/LexcCompiler.h:35,
                  from /<<PKGBUILDDIR>>/libhfst/src/HfstTransducer.h:21,
                  from libhfst_wrap.cpp:3981:
/usr/include/unicode/char16ptr.h:317:10: error: ‘is_convertible_v’ is 
not a member of ‘std’; did you mean ‘is_convertible’?
   317 |     std::is_convertible_v<T, std::u16string_view>
       |          ^~~~~~~~~~~~~~~~
       |          is_convertible
/usr/include/unicode/char16ptr.h:317:28: error: expected 
primary-expression before ‘,’ token
   317 |     std::is_convertible_v<T, std::u16string_view>
       |                            ^
/usr/include/unicode/char16ptr.h:331:13: error: ‘u16string_view’ in 
namespace ‘std’ does not name a type; did you mean ‘u16string’?
   331 | inline std::u16string_view toU16StringView(std::u16string_view 
sv) { return sv; }
       |             ^~~~~~~~~~~~~~
       |             u16string
/usr/include/unicode/char16ptr.h:339:13: error: ‘u16string_view’ in 
namespace ‘std’ does not name a type; did you mean ‘u16string’?
   339 | inline std::u16string_view 
toU16StringView(std::basic_string_view<uint16_t> sv) {
       |             ^~~~~~~~~~~~~~
       |             u16string
/usr/include/unicode/char16ptr.h:360:36: error: ‘enable_if_t’ in 
namespace ‘std’ does not name a template type
   360 |           typename = typename 
std::enable_if_t<!std::is_pointer_v<std::remove_reference_t<T>>>>
       |                                    ^~~~~~~~~~~
/usr/include/unicode/char16ptr.h:360:36: note: ‘std::enable_if_t’ is 
only available from C++14 onwards
/usr/include/unicode/char16ptr.h:360:47: error: expected ‘>’ before ‘<’ 
token
   360 |           typename = typename 
std::enable_if_t<!std::is_pointer_v<std::remove_reference_t<T>>>>
       |                                               ^
/usr/include/unicode/char16ptr.h:361:13: error: ‘u16string_view’ in 
namespace ‘std’ does not name a type; did you mean ‘u16string’?
   361 | inline std::u16string_view toU16StringViewNullable(const T& text) {
       |             ^~~~~~~~~~~~~~
       |             u16string
/usr/include/unicode/char16ptr.h:370:36: error: ‘enable_if_t’ in 
namespace ‘std’ does not name a template type
   370 |           typename = typename 
std::enable_if_t<std::is_pointer_v<std::remove_reference_t<T>>>,
       |                                    ^~~~~~~~~~~
/usr/include/unicode/char16ptr.h:370:36: note: ‘std::enable_if_t’ is 
only available from C++14 onwards
/usr/include/unicode/char16ptr.h:370:47: error: expected ‘>’ before ‘<’ 
token
   370 |           typename = typename 
std::enable_if_t<std::is_pointer_v<std::remove_reference_t<T>>>,
       |                                               ^
/usr/include/unicode/char16ptr.h:372:13: error: ‘u16string_view’ in 
namespace ‘std’ does not name a type; did you mean ‘u16string’?
   372 | inline std::u16string_view toU16StringViewNullable(const T& text) {
       |             ^~~~~~~~~~~~~~
       |             u16string
In file included from /usr/include/unicode/unistr.h:40:
/usr/include/unicode/stringpiece.h:134:29: error: ‘enable_if_t’ in 
namespace ‘std’ does not name a template type
   134 |             typename = std::enable_if_t<
       |                             ^~~~~~~~~~~
/usr/include/unicode/stringpiece.h:134:24: note: ‘std::enable_if_t’ is 
only available from C++14 onwards
   134 |             typename = std::enable_if_t<
       |                        ^~~
/usr/include/unicode/stringpiece.h:134:40: error: expected ‘>’ before 
‘<’ token
   134 |             typename = std::enable_if_t<
       |                                        ^
/usr/include/unicode/stringpiece.h:185:19: error: expected type-specifier
   185 |   inline operator std::string_view() const {
       |                   ^~~
/usr/include/unicode/unistr.h:346:40: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
   346 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                        ^~~~~~~~~~~
/usr/include/unicode/unistr.h:346:35: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
   346 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                   ^~~
/usr/include/unicode/unistr.h:346:51: error: expected ‘>’ before ‘<’ token
   346 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                   ^
/usr/include/unicode/unistr.h:381:40: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
   381 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                        ^~~~~~~~~~~
/usr/include/unicode/unistr.h:381:35: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
   381 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                   ^~~
/usr/include/unicode/unistr.h:381:51: error: expected ‘>’ before ‘<’ token
   381 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                   ^
/usr/include/unicode/unistr.h:1959:40: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
  1959 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                        ^~~~~~~~~~~
/usr/include/unicode/unistr.h:1959:35: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
  1959 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                   ^~~
/usr/include/unicode/unistr.h:1959:51: error: expected ‘>’ before ‘<’ token
  1959 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                   ^
/usr/include/unicode/unistr.h:2226:40: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
  2226 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                        ^~~~~~~~~~~
/usr/include/unicode/unistr.h:2226:35: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
  2226 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                   ^~~
/usr/include/unicode/unistr.h:2226:51: error: expected ‘>’ before ‘<’ token
  2226 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                   ^
/usr/include/unicode/unistr.h:2299:40: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
  2299 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                        ^~~~~~~~~~~
/usr/include/unicode/unistr.h:2299:35: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
  2299 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                   ^~~
/usr/include/unicode/unistr.h:2299:51: error: expected ‘>’ before ‘<’ token
  2299 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                   ^
/usr/include/unicode/unistr.h:3035:19: error: expected type-specifier
  3035 |   inline operator std::u16string_view() const {
       |                   ^~~
/usr/include/unicode/unistr.h:3273:40: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
  3273 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                        ^~~~~~~~~~~
/usr/include/unicode/unistr.h:3273:35: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
  3273 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                   ^~~
/usr/include/unicode/unistr.h:3273:51: error: expected ‘>’ before ‘<’ token
  3273 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                   ^
/usr/include/unicode/unistr.h:3599:40: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
  3599 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                        ^~~~~~~~~~~
/usr/include/unicode/unistr.h:3599:35: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
  3599 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                   ^~~
/usr/include/unicode/unistr.h:3599:51: error: expected ‘>’ before ‘<’ token
  3599 |   template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                   ^
/usr/include/unicode/unistr.h:3755:60: error: ‘std::u16string_view’ has 
not been declared
  3755 |   static UnicodeString 
readOnlyAliasFromU16StringView(std::u16string_view text);
       | 
^~~~~~~~~~~~~~
/usr/include/unicode/unistr.h:3871:64: error: ‘std::u16string_view’ has 
not been declared
  3871 |   UnicodeString& doReplace(int32_t start, int32_t length, 
std::u16string_view src);
       | 
^~~~~~~~~~~~~~
/usr/include/unicode/unistr.h:3875:32: error: ‘std::u16string_view’ has 
not been declared
  3875 |   UnicodeString& doAppend(std::u16string_view src);
       |                                ^~~~~~~~~~~~~~
/usr/include/unicode/unistr.h: In member function ‘bool 
icu_76::UnicodeString::operator==(const S&) const’:
/usr/include/unicode/unistr.h:348:10: error: ‘u16string_view’ is not a 
member of ‘std’; did you mean ‘u16string’?
   348 |     std::u16string_view sv(internal::toU16StringView(text));
       |          ^~~~~~~~~~~~~~
       |          u16string
/usr/include/unicode/unistr.h:350:46: error: ‘sv’ was not declared in 
this scope
   350 |     return !isBogus() && (len = length()) == sv.length() && 
doEquals(sv.data(), len);
       |                                              ^~
/usr/include/unicode/unistr.h: In member function 
‘icu_76::UnicodeString& icu_76::UnicodeString::operator=(const S&)’:
/usr/include/unicode/unistr.h:1962:45: error: ‘toU16StringView’ is not a 
member of ‘icu_76::internal’
  1962 |     return doReplace(0, length(), internal::toU16StringView(src));
       |                                             ^~~~~~~~~~~~~~~
/usr/include/unicode/unistr.h: In member function 
‘icu_76::UnicodeString& icu_76::UnicodeString::operator+=(const S&)’:
/usr/include/unicode/unistr.h:2228:31: error: ‘toU16StringView’ is not a 
member of ‘icu_76::internal’
  2228 |     return doAppend(internal::toU16StringView(src));
       |                               ^~~~~~~~~~~~~~~
/usr/include/unicode/unistr.h: In member function 
‘icu_76::UnicodeString& icu_76::UnicodeString::append(const S&)’:
/usr/include/unicode/unistr.h:2301:31: error: ‘toU16StringView’ is not a 
member of ‘icu_76::internal’
  2301 |     return doAppend(internal::toU16StringView(src));
       |                               ^~~~~~~~~~~~~~~
/usr/include/unicode/unistr.h: In constructor 
‘icu_76::UnicodeString::UnicodeString(const S&)’:
/usr/include/unicode/unistr.h:3276:24: error: ‘toU16StringViewNullable’ 
is not a member of ‘icu_76::internal’
  3276 |     doAppend(internal::toU16StringViewNullable(text));
       |                        ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/unistr.h: In static member function ‘static 
icu_76::UnicodeString icu_76::UnicodeString::readOnlyAlias(const S&)’:
/usr/include/unicode/unistr.h:3601:53: error: ‘toU16StringView’ is not a 
member of ‘icu_76::internal’
  3601 |     return 
readOnlyAliasFromU16StringView(internal::toU16StringView(text));
       |                                                     ^~~~~~~~~~~~~~~
/usr/include/unicode/unistr.h: At global scope:
/usr/include/unicode/unistr.h:4116:38: error: ‘enable_if_t’ in namespace 
‘std’ does not name a template type
  4116 | template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                      ^~~~~~~~~~~
/usr/include/unicode/unistr.h:4116:33: note: ‘std::enable_if_t’ is only 
available from C++14 onwards
  4116 | template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                 ^~~
/usr/include/unicode/unistr.h:4116:49: error: expected ‘>’ before ‘<’ token
  4116 | template<typename S, typename = 
std::enable_if_t<ConvertibleToU16StringView<S>>>
       |                                                 ^
/usr/include/unicode/unistr.h: In function ‘icu_76::UnicodeString 
icu_76::operator+(const UnicodeString&, const S&)’:
/usr/include/unicode/unistr.h:4118:46: error: ‘toU16StringView’ is not a 
member of ‘icu_76::internal’
  4118 |   return unistr_internalConcat(s1, internal::toU16StringView(s2));
       |                                              ^~~~~~~~~~~~~~~
/usr/include/unicode/unistr.h:4118:10: error: there are no arguments to 
‘unistr_internalConcat’ that depend on a template parameter, so a 
declaration of ‘unistr_internalConcat’ must be available [-fpermissive]
  4118 |   return unistr_internalConcat(s1, internal::toU16StringView(s2));
       |          ^~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/unistr.h:4118:10: note: (if you use ‘-fpermissive’, 
G++ will accept your code, but allowing the use of an undeclared name is 
deprecated)
/usr/include/unicode/unistr.h: At global scope:
/usr/include/unicode/unistr.h:4125:53: error: ‘std::u16string_view’ has 
not been declared
  4125 | unistr_internalConcat(const UnicodeString &s1, 
std::u16string_view s2);
       |                                                     ^~~~~~~~~~~~~~
In file included from libhfst_wrap.cpp:4008:
hfst_lookup_extensions.cpp:51:140: warning: dynamic exception 
specifications are deprecated in C++11 [-Wdeprecated]
    51 | HfstOneLevelPaths lookup_vector(const hfst::HfstTransducer * 
tr, bool fd, const StringVector& s, int limit = -1, double time_cutoff = 
0.0) throw(TransducerIsCyclicException, FunctionNotImplementedException)
       | 
  
    ^~~~~
hfst_lookup_extensions.cpp:69:139: warning: dynamic exception 
specifications are deprecated in C++11 [-Wdeprecated]
    69 | HfstOneLevelPaths lookup_string(const hfst::HfstTransducer * 
tr, bool fd, const std::string& s, int limit = -1, double time_cutoff = 
0.0) throw(TransducerIsCyclicException, FunctionNotImplementedException)
       | 
  
   ^~~~~
error: command '/usr/bin/x86_64-linux-gnu-g++' failed with exit code 1
make[3]: *** [Makefile:685: %_wrap.cpp.cpp] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/python'
make[2]: *** [Makefile:500: all-recursive] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: *** [Makefile:411: all] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>'



More information about the debian-science-maintainers mailing list