brianmario / charlock_holmes

Character encoding detection, brought to you by ICU
MIT License
1.03k stars 140 forks source link

Build error with ICU 75 #172

Closed TheEssem closed 2 weeks ago

TheEssem commented 2 months ago

When attempting to build this gem on EndeavourOS Linux using Ruby version 3.3.1 and ICU version 75.1, I get the following error output:

Installing charlock_holmes 0.7.7 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/esm/.rbenv/versions/3.3.1/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.7/ext/charlock_holmes
/home/esm/.rbenv/versions/3.3.1/bin/ruby extconf.rb
checking for pkg-config for icu-i18n... [" ", "", "-licui18n -licuuc -licudata"]
checking for pkg-config for icu-io... [" ", "", "-licuio -licui18n -licuuc -licudata"]
checking for pkg-config for icu-uc... [" ", "", "-licuuc -licudata"]
checking for -licui18n... yes
checking for unicode/ucnv.h... yes
checking for -lz... yes
checking for -licuuc... yes
checking for -licudata... yes
creating Makefile

current directory: /home/esm/.rbenv/versions/3.3.1/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.7/ext/charlock_holmes
make DESTDIR\= sitearchdir\=./.gem.20240520-393985-1pblvv sitelibdir\=./.gem.20240520-393985-1pblvv clean

current directory: /home/esm/.rbenv/versions/3.3.1/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.7/ext/charlock_holmes
make DESTDIR\= sitearchdir\=./.gem.20240520-393985-1pblvv sitelibdir\=./.gem.20240520-393985-1pblvv
compiling converter.c
converter.c: In function ‘_init_charlock_converter’:
converter.c:53:6: warning: old-style function definition [-Wold-style-definition]
   53 | void _init_charlock_converter() {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~
At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
compiling encoding_detector.c
encoding_detector.c: In function ‘rb_encdec_binarymatch’:
encoding_detector.c:50:14: warning: old-style function definition [-Wold-style-definition]
   50 | static VALUE rb_encdec_binarymatch() {
      |              ^~~~~~~~~~~~~~~~~~~~~
encoding_detector.c: In function ‘_init_charlock_encoding_detector’:
encoding_detector.c:366:6: warning: old-style function definition [-Wold-style-definition]
  366 | void _init_charlock_encoding_detector()
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
compiling ext.c
ext.c: In function ‘Init_charlock_holmes’:
ext.c:9:6: warning: old-style function definition [-Wold-style-definition]
    9 | void Init_charlock_holmes() {
      |      ^~~~~~~~~~~~~~~~~~~~
At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
compiling transliterator.cpp
In file included from /usr/include/unicode/unistr.h:39,
                 from /usr/include/unicode/translit.h:27,
                 from transliterator.cpp:5:
/usr/include/unicode/stringpiece.h:133:29: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type
  133 |             typename = std::enable_if_t<
      |                             ^~~~~~~~~~~
/usr/include/unicode/stringpiece.h:133:24: note: ‘std::enable_if_t’ is only available from C++14 onwards
  133 |             typename = std::enable_if_t<
      |                        ^~~
/usr/include/unicode/stringpiece.h:133:40: error: expected ‘>’ before ‘<’ token
  133 |             typename = std::enable_if_t<
      |                                        ^
In file included from /usr/include/unicode/uenum.h:25,
                 from /usr/include/unicode/utrans.h:22,
                 from /usr/include/unicode/translit.h:29:
/usr/include/unicode/localpointer.h:561:26: error: parameter declared ‘auto’
  561 | template <typename Type, auto closeFunction>
      |                          ^~~~
/usr/include/unicode/localpointer.h:573:76: error: template argument 2 is invalid
  573 |     explicit LocalOpenPointer(std::unique_ptr<Type, decltype(closeFunction)> &&p)
      |                                                                            ^
/usr/include/unicode/localpointer.h:583:78: error: template argument 2 is invalid
  583 |     LocalOpenPointer &operator=(std::unique_ptr<Type, decltype(closeFunction)> &&p) {
      |                                                                              ^
/usr/include/unicode/localpointer.h:599:59: error: template argument 2 is invalid
  599 |     operator std::unique_ptr<Type, decltype(closeFunction)> () && {
      |                                                           ^
/usr/include/unicode/uenum.h:69:1: note: invalid template non-type parameter
   69 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUEnumerationPointer, UEnumeration, uenum_close);
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/uset.h:358:1: note: invalid template non-type parameter
  358 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUSetPointer, USet, uset_close);
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/unicode/utrans.h:258:1: note: invalid template non-type parameter
  258 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUTransliteratorPointer, UTransliterator, utrans_close);
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:240: transliterator.o] Error 1

It seems like the related upstream commits are probably unicode-org/icu@d0672fa and unicode-org/icu@6fa113e?

kescherCode commented 2 months ago

@TheEssem In case you're encountering this while running Mastodon on a system with ICU 75, forking this library to remove transliterator.cpp (and its reference in ext.c) entirely fixes the issue temporarily until this library is updated.

renchap commented 2 weeks ago

Does using BUNDLE_BUILD__CHARLOCK_HOLMES="--with-cxxflags=-std=c++17" solve the issue for you, using the latest 0.7.8 charlock_holmes gem?

jagthedrummer commented 2 weeks ago

I just ran into this error and the fix mentioned by @renchap did the trick.

Just doing this failed with the error in the original issue:

bundle install

But this worked:

BUNDLE_BUILD__CHARLOCK_HOLMES="--with-cxxflags=-std=c++17" bundle install
jagthedrummer commented 2 weeks ago

Actually, after looking back at the error I was getting I'm not sure that it's exactly the same one. Here's what I was seeing, just in case it helps anybody else find this issue/fix:

Installing charlock_holmes 0.7.8 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8/ext/charlock_holmes
/Users/jgreen/.asdf/installs/ruby/3.3.2/bin/ruby extconf.rb
checking for pkg-config for icu-i18n... ["-I/opt/homebrew/Cellar/icu4c/74.2/include ", "-L/opt/homebrew/Cellar/icu4c/74.2/lib", "-licui18n -licuuc
-licudata"]
checking for pkg-config for icu-io... ["-I/opt/homebrew/Cellar/icu4c/74.2/include ", "-L/opt/homebrew/Cellar/icu4c/74.2/lib", "-licuio -licui18n -licuuc
-licudata"]
checking for pkg-config for icu-uc... ["-I/opt/homebrew/Cellar/icu4c/74.2/include ", "-L/opt/homebrew/Cellar/icu4c/74.2/lib", "-licuuc -licudata"]
checking for -licui18n... yes
checking for unicode/ucnv.h... yes
checking for -lz... yes
checking for -licuuc... yes
checking for -licudata... yes
creating Makefile

current directory: /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8/ext/charlock_holmes
make DESTDIR\= sitearchdir\=./.gem.20240701-74827-mdklv sitelibdir\=./.gem.20240701-74827-mdklv clean

current directory: /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8/ext/charlock_holmes
make DESTDIR\= sitearchdir\=./.gem.20240701-74827-mdklv sitelibdir\=./.gem.20240701-74827-mdklv
compiling converter.c
converter.c:23:12: warning: implicit conversion loses integer precision: 'long' to 'int32_t' (aka 'int') [-Wshorten-64-to-32]
        src_len = RSTRING_LEN(rb_txt);
                ~ ^~~~~~~~~~~~~~~~~~~
/Users/jgreen/.asdf/installs/ruby/3.3.2/include/ruby-3.3.0/ruby/internal/core/rstring.h:46:27: note: expanded from macro 'RSTRING_LEN'
#define RSTRING_LEN       RSTRING_LEN
                          ^
1 warning generated.
compiling encoding_detector.c
encoding_detector.c:183:71: warning: implicit conversion loses integer precision: 'long' to 'int32_t' (aka 'int') [-Wshorten-64-to-32]
                ucsdet_setDeclaredEncoding(detector->csd, RSTRING_PTR(rb_enc_hint), RSTRING_LEN(rb_enc_hint), &status);
                ~~~~~~~~~~~~~~~~~~~~~~~~~~                                          ^~~~~~~~~~~~~~~~~~~~~~~~
/Users/jgreen/.asdf/installs/ruby/3.3.2/include/ruby-3.3.0/ruby/internal/core/rstring.h:46:27: note: expanded from macro 'RSTRING_LEN'
#define RSTRING_LEN       RSTRING_LEN
                          ^
encoding_detector.c:232:71: warning: implicit conversion loses integer precision: 'long' to 'int32_t' (aka 'int') [-Wshorten-64-to-32]
                ucsdet_setDeclaredEncoding(detector->csd, RSTRING_PTR(rb_enc_hint), RSTRING_LEN(rb_enc_hint), &status);
                ~~~~~~~~~~~~~~~~~~~~~~~~~~                                          ^~~~~~~~~~~~~~~~~~~~~~~~
/Users/jgreen/.asdf/installs/ruby/3.3.2/include/ruby-3.3.0/ruby/internal/core/rstring.h:46:27: note: expanded from macro 'RSTRING_LEN'
#define RSTRING_LEN       RSTRING_LEN
                          ^
2 warnings generated.
compiling ext.c
compiling transliterator.cpp
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/translit.h:26:
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/uobject.h:134:54: error: expected ';' at end of declaration list
    static void * U_EXPORT2 operator new(size_t size) noexcept;
                                                     ^
                                                     ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/uobject.h:141:56: error: expected ';' at end of declaration list
    static void * U_EXPORT2 operator new[](size_t size) noexcept;
                                                       ^
                                                       ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/uobject.h:151:51: error: expected ';' at end of declaration list
    static void U_EXPORT2 operator delete(void *p) noexcept;
                                                  ^
                                                  ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/uobject.h:158:53: error: expected ';' at end of declaration list
    static void U_EXPORT2 operator delete[](void *p) noexcept;
                                                    ^
                                                    ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/uobject.h:166:67: error: expected ';' at end of declaration list
    static inline void * U_EXPORT2 operator new(size_t, void *ptr) noexcept { return ptr; }
                                                                  ^
                                                                  ;
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/translit.h:27:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:36:
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/char16ptr.h:42:30: warning: 'final' keyword is a C++11 extension [-Wc++11-extensions]
class U_COMMON_API Char16Ptr final {
                             ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/char16ptr.h:93:19: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
    Char16Ptr() = delete;
                  ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/char16ptr.h:149:35: warning: 'final' keyword is a C++11 extension [-Wc++11-extensions]
class U_COMMON_API ConstChar16Ptr final {
                                  ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/char16ptr.h:201:24: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
    ConstChar16Ptr() = delete;
                       ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/translit.h:27:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:39:
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/stringpiece.h:133:22: warning: default template arguments for a function template are a C++11 extension
[-Wc++11-extensions]
            typename = typename std::enable_if<
                     ^ ~~~~~~~~~~~~~~~~~~~~~~~~
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/translit.h:27:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:40:
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:164:32: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  ByteSink(const ByteSink &) = delete;
                               ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:165:43: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  ByteSink &operator=(const ByteSink &) = delete;
                                          ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:209:53: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual void Append(const char* bytes, int32_t n) override;
                                                    ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:227:59: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
                                int32_t* result_capacity) override;
                                                          ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:256:28: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  CheckedArrayByteSink() = delete;
                           ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:257:56: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  CheckedArrayByteSink(const CheckedArrayByteSink &) = delete;
                                                       ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:258:67: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  CheckedArrayByteSink &operator=(const CheckedArrayByteSink &) = delete;
                                                                  ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:294:52: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual void Append(const char* data, int32_t n) override { dest_->append(data, n); }
                                                   ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:298:22: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  StringByteSink() = delete;
                     ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:299:44: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  StringByteSink(const StringByteSink &) = delete;
                                           ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/bytestream.h:300:55: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  StringByteSink &operator=(const StringByteSink &) = delete;
                                                      ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/translit.h:27:
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:1529:44: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
              UnicodeString& target) const override;
                                           ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:1909:42: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
  UnicodeString &operator=(UnicodeString &&src) noexcept;
                                         ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:1909:48: error: expected ';' at end of declaration list
  UnicodeString &operator=(UnicodeString &&src) noexcept;
                                               ^
                                               ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:1916:34: error: expected ';' at end of declaration list
  void swap(UnicodeString &other) noexcept;
                                 ^
                                 ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:1925:45: error: expected ';' at end of declaration list
  swap(UnicodeString &s1, UnicodeString &s2) noexcept {
                                            ^
                                            ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:2459:64: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
                                    const UnicodeString& text) override;
                                                               ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:2466:37: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual UBool hasMetaData() const override;
                                    ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:2481:65: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual void copy(int32_t start, int32_t limit, int32_t dest) override;
                                                                ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3309:31: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
  UnicodeString(UnicodeString &&src) noexcept;
                              ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3309:37: error: expected ';' at end of declaration list
  UnicodeString(UnicodeString &&src) noexcept;
                                    ^
                                    ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3341:40: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual UnicodeString *clone() const override;
                                       ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3447:46: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual UClassID getDynamicClassID() const override;
                                             ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3458:37: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual int32_t getLength() const override;
                                    ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3465:52: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual char16_t getCharAt(int32_t offset) const override;
                                                   ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3472:53: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual UChar32 getChar32At(int32_t offset) const override;
                                                    ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3634:63: error: expected ';' at end of declaration list
  void copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) noexcept;
                                                              ^
                                                              ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:2998:7: error: delegating constructors are permitted only in C++11
      UnicodeString(ConstChar16Ptr(text)) {}
      ^~~~~~~~~~~~~
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3048:7: error: delegating constructors are permitted only in C++11
      UnicodeString(ConstChar16Ptr(text), textLength) {}
      ^~~~~~~~~~~~~
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3129:7: error: delegating constructors are permitted only in C++11
      UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {}
      ^~~~~~~~~~~~~
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:4595:16: error: out-of-line definition of 'operator=' does not match any declaration in
'icu_74::UnicodeString'
UnicodeString::operator= (char16_t ch)
               ^~~~~~~~
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:4742:12: error: call to member function 'doReplace' is ambiguous
    return doReplace(start, _length, nullptr, 0, 0);
           ^~~~~~~~~
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3574:18: note: candidate function
  UnicodeString& doReplace(int32_t start,
                 ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3580:18: note: candidate function
  UnicodeString& doReplace(int32_t start,
                 ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:4748:10: error: call to member function 'doReplace' is ambiguous
{ return doReplace(start, limit - start, nullptr, 0, 0); }
         ^~~~~~~~~
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3574:18: note: candidate function
  UnicodeString& doReplace(int32_t start,
                 ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3580:18: note: candidate function
  UnicodeString& doReplace(int32_t start,
                 ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:4753:10: error: call to member function 'doReplace' is ambiguous
  return doReplace(0, start, nullptr, 0, 0);
         ^~~~~~~~~
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3574:18: note: candidate function
  UnicodeString& doReplace(int32_t start,
                 ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/unistr.h:3580:18: note: candidate function
  UnicodeString& doReplace(int32_t start,
                 ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/translit.h:29:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/utrans.h:22:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/uenum.h:25:
/opt/homebrew/Cellar/icu4c/74.2/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/homebrew/Cellar/icu4c/74.2/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/homebrew/Cellar/icu4c/74.2/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/homebrew/Cellar/icu4c/74.2/include/unicode/localpointer.h:224:34: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
    LocalPointer(LocalPointer<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
                                 ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/localpointer.h:224:40: error: expected ';' at end of declaration list
    LocalPointer(LocalPointer<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
                                       ^
                                       ;
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/localpointer.h:399:30: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
    LocalArray(LocalArray<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
                             ^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/localpointer.h:399:36: error: expected ';' at end of declaration list
    LocalArray(LocalArray<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
                                   ^
                                   ;
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/translit.h:29:
In file included from /opt/homebrew/Cellar/icu4c/74.2/include/unicode/utrans.h:22:
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/uenum.h:69:1: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
U_DEFINE_LOCAL_OPEN_POINTER(LocalUEnumerationPointer, UEnumeration, uenum_close);
^
/opt/homebrew/Cellar/icu4c/74.2/include/unicode/localpointer.h:556:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) noexcept \
                                                    ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
33 warnings and 20 errors generated.
make: *** [transliterator.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8 for inspection.
Results logged to /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/extensions/arm64-darwin-23/3.3.0/charlock_holmes-0.7.8/gem_make.out

  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:125:in `run'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:51:in `block in make'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:43:in `each'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:43:in `make'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/ext_conf_builder.rb:42:in `build'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:193:in `build_extension'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:227:in `block in build_extensions'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:224:in `each'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/ext/builder.rb:224:in `build_extensions'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/3.3.0/rubygems/installer.rb:852:in `build_extensions'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/rubygems_gem_installer.rb:72:in `build_extensions'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/rubygems_gem_installer.rb:28:in `install'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/source/rubygems.rb:200:in `install'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/installer/gem_installer.rb:54:in `install'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/installer/parallel_installer.rb:156:in `do_install'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/installer/parallel_installer.rb:147:in `block in worker_pool'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/worker.rb:62:in `apply_func'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/worker.rb:57:in `block in process_queue'
  <internal:kernel>:187:in `loop'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/worker.rb:54:in `process_queue'
  /Users/jgreen/.asdf/installs/ruby/3.3.2/lib/ruby/gems/3.3.0/gems/bundler-2.4.10/lib/bundler/worker.rb:90:in `block (2 levels) in create_threads'

An error occurred while installing charlock_holmes (0.7.8), and Bundler cannot continue.

In Gemfile:
  bullet_train-incoming_webhooks was resolved to 1.7.14, which depends on
    bullet_train-api was resolved to 1.7.14, which depends on
      bullet_train was resolved to 1.7.14, which depends on
        extended_email_reply_parser was resolved to 0.5.1, which depends on
          charlock_holmes
TheEssem commented 2 weeks ago

It looks like 0.7.8 solved the issue on my end, no extra flags needed.