Skip to content

Installing 0.7.8 on macOS 14.5 (Sonoma) error. #177

@joshuapinter

Description

@joshuapinter
gem install charlock_holmes
Building native extensions. This could take a while...
ERROR:  Error installing charlock_holmes:
	ERROR: Failed to build gem native extension.

    current directory: /Users/me/.rbenv/versions/3.3.3/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8/ext/charlock_holmes
/Users/me/.rbenv/versions/3.3.3/bin/ruby extconf.rb
checking for pkg-config for icu-i18n... not found
checking for pkg-config for icu-io... not found
checking for pkg-config for icu-uc... not found
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/me/.rbenv/versions/3.3.3/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8/ext/charlock_holmes
make DESTDIR\= sitearchdir\=./.gem.20240704-49730-lnpeup sitelibdir\=./.gem.20240704-49730-lnpeup clean

current directory: /Users/me/.rbenv/versions/3.3.3/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8/ext/charlock_holmes
make DESTDIR\= sitearchdir\=./.gem.20240704-49730-lnpeup sitelibdir\=./.gem.20240704-49730-lnpeup
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/me/.rbenv/versions/3.3.3/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/me/.rbenv/versions/3.3.3/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/me/.rbenv/versions/3.3.3/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/opt/icu4c/include/unicode/translit.h:26:
/opt/homebrew/opt/icu4c/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/opt/icu4c/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/opt/icu4c/include/unicode/uobject.h:151:51: error: expected ';' at end of declaration list
    static void U_EXPORT2 operator delete(void *p) noexcept;
                                                  ^
                                                  ;
/opt/homebrew/opt/icu4c/include/unicode/uobject.h:158:53: error: expected ';' at end of declaration list
    static void U_EXPORT2 operator delete[](void *p) noexcept;
                                                    ^
                                                    ;
/opt/homebrew/opt/icu4c/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/opt/icu4c/include/unicode/translit.h:27:
In file included from /opt/homebrew/opt/icu4c/include/unicode/unistr.h:36:
/opt/homebrew/opt/icu4c/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/opt/icu4c/include/unicode/char16ptr.h:93:19: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
    Char16Ptr() = delete;
                  ^
/opt/homebrew/opt/icu4c/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/opt/icu4c/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/opt/icu4c/include/unicode/translit.h:27:
In file included from /opt/homebrew/opt/icu4c/include/unicode/unistr.h:39:
/opt/homebrew/opt/icu4c/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/opt/icu4c/include/unicode/translit.h:27:
In file included from /opt/homebrew/opt/icu4c/include/unicode/unistr.h:40:
/opt/homebrew/opt/icu4c/include/unicode/bytestream.h:164:32: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  ByteSink(const ByteSink &) = delete;
                               ^
/opt/homebrew/opt/icu4c/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/opt/icu4c/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/opt/icu4c/include/unicode/bytestream.h:227:59: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
                                int32_t* result_capacity) override;
                                                          ^
/opt/homebrew/opt/icu4c/include/unicode/bytestream.h:256:28: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  CheckedArrayByteSink() = delete;
                           ^
/opt/homebrew/opt/icu4c/include/unicode/bytestream.h:257:56: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  CheckedArrayByteSink(const CheckedArrayByteSink &) = delete;
                                                       ^
/opt/homebrew/opt/icu4c/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/opt/icu4c/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/opt/icu4c/include/unicode/bytestream.h:298:22: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  StringByteSink() = delete;
                     ^
/opt/homebrew/opt/icu4c/include/unicode/bytestream.h:299:44: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  StringByteSink(const StringByteSink &) = delete;
                                           ^
/opt/homebrew/opt/icu4c/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/opt/icu4c/include/unicode/translit.h:27:
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:1529:44: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
              UnicodeString& target) const override;
                                           ^
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:1909:42: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
  UnicodeString &operator=(UnicodeString &&src) noexcept;
                                         ^
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:1909:48: error: expected ';' at end of declaration list
  UnicodeString &operator=(UnicodeString &&src) noexcept;
                                               ^
                                               ;
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:1916:34: error: expected ';' at end of declaration list
  void swap(UnicodeString &other) noexcept;
                                 ^
                                 ;
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:1925:45: error: expected ';' at end of declaration list
  swap(UnicodeString &s1, UnicodeString &s2) noexcept {
                                            ^
                                            ;
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:2459:64: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
                                    const UnicodeString& text) override;
                                                               ^
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:2466:37: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual UBool hasMetaData() const override;
                                    ^
/opt/homebrew/opt/icu4c/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/opt/icu4c/include/unicode/unistr.h:3309:31: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
  UnicodeString(UnicodeString &&src) noexcept;
                              ^
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:3309:37: error: expected ';' at end of declaration list
  UnicodeString(UnicodeString &&src) noexcept;
                                    ^
                                    ;
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:3341:40: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual UnicodeString *clone() const override;
                                       ^
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:3447:46: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
  virtual UClassID getDynamicClassID() const override;
                                             ^
/opt/homebrew/opt/icu4c/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/opt/icu4c/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/opt/icu4c/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/opt/icu4c/include/unicode/unistr.h:3634:63: error: expected ';' at end of declaration list
  void copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) noexcept;
                                                              ^
                                                              ;
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:2998:7: error: delegating constructors are permitted only in C++11
      UnicodeString(ConstChar16Ptr(text)) {}
      ^~~~~~~~~~~~~
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:3048:7: error: delegating constructors are permitted only in C++11
      UnicodeString(ConstChar16Ptr(text), textLength) {}
      ^~~~~~~~~~~~~
/opt/homebrew/opt/icu4c/include/unicode/unistr.h:3129:7: error: delegating constructors are permitted only in C++11
      UnicodeString(Char16Ptr(buffer), buffLength, buffCapacity) {}
      ^~~~~~~~~~~~~
/opt/homebrew/opt/icu4c/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)
               ^~~~~~~~
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/opt/icu4c/include/unicode/translit.h:29:
In file included from /opt/homebrew/opt/icu4c/include/unicode/utrans.h:22:
In file included from /opt/homebrew/opt/icu4c/include/unicode/uenum.h:25:
/opt/homebrew/opt/icu4c/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/opt/icu4c/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/opt/icu4c/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/opt/icu4c/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/opt/icu4c/include/unicode/localpointer.h:224:40: error: expected ';' at end of declaration list
    LocalPointer(LocalPointer<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
                                       ^
                                       ;
/opt/homebrew/opt/icu4c/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/opt/icu4c/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/opt/icu4c/include/unicode/translit.h:29:
In file included from /opt/homebrew/opt/icu4c/include/unicode/utrans.h:22:
/opt/homebrew/opt/icu4c/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/opt/icu4c/include/unicode/localpointer.h:556:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) noexcept \
                                                    ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/opt/icu4c/include/unicode/translit.h:29:
In file included from /opt/homebrew/opt/icu4c/include/unicode/utrans.h:22:
/opt/homebrew/opt/icu4c/include/unicode/uenum.h:69:1: error: expected ';' at end of declaration list
/opt/homebrew/opt/icu4c/include/unicode/localpointer.h:556:60: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) noexcept \
                                                           ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/opt/icu4c/include/unicode/translit.h:29:
In file included from /opt/homebrew/opt/icu4c/include/unicode/utrans.h:23:
/opt/homebrew/opt/icu4c/include/unicode/uset.h:360:1: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
U_DEFINE_LOCAL_OPEN_POINTER(LocalUSetPointer, USet, uset_close);
^
/opt/homebrew/opt/icu4c/include/unicode/localpointer.h:556:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) noexcept \
                                                    ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/opt/icu4c/include/unicode/translit.h:29:
In file included from /opt/homebrew/opt/icu4c/include/unicode/utrans.h:23:
/opt/homebrew/opt/icu4c/include/unicode/uset.h:360:1: error: expected ';' at end of declaration list
/opt/homebrew/opt/icu4c/include/unicode/localpointer.h:556:60: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) noexcept \
                                                           ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/opt/icu4c/include/unicode/translit.h:29:
/opt/homebrew/opt/icu4c/include/unicode/utrans.h:258:1: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
U_DEFINE_LOCAL_OPEN_POINTER(LocalUTransliteratorPointer, UTransliterator, utrans_close);
^
/opt/homebrew/opt/icu4c/include/unicode/localpointer.h:556:53: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) noexcept \
                                                    ^
In file included from transliterator.cpp:5:
In file included from /opt/homebrew/opt/icu4c/include/unicode/translit.h:29:
/opt/homebrew/opt/icu4c/include/unicode/utrans.h:258:1: error: expected ';' at end of declaration list
/opt/homebrew/opt/icu4c/include/unicode/localpointer.h:556:60: note: expanded from macro 'U_DEFINE_LOCAL_OPEN_POINTER'
        LocalPointerClassName(LocalPointerClassName &&src) noexcept \
                                                           ^
In file included from transliterator.cpp:5:
/opt/homebrew/opt/icu4c/include/unicode/translit.h:1530:52: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    virtual UClassID getDynamicClassID(void) const override = 0;
                                                   ^
36 warnings and 19 errors generated.
make: *** [transliterator.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/me/.rbenv/versions/3.3.3/lib/ruby/gems/3.3.0/gems/charlock_holmes-0.7.8 for inspection.
Results logged to /Users/me/.rbenv/versions/3.3.3/lib/ruby/gems/3.3.0/extensions/arm64-darwin-23/3.3.0/charlock_holmes-0.7.8/gem_make.out

0.7.7 appears to be fine but 0.7.8 causes this issue. After a few attempts to fix it I just pinned our Gemfile with version 0.7.7.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions