произошла ошибка при установке гема semacode (0.7.5)

Проблема при установке гема семакода из гемфайла. есть способ решить эту проблему? Я запускаю установку пакета. Это проблема с моей машиной или с драгоценным камнем? Эта проблема впервые возникла на моем компьютере, когда я попытался запустить приложение локально.

Использование семакода 0.7.5 из https://github.com/toretore/semacode.git ( у мастера @ 4e31e0b)

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.



make "DESTDIR=" clean

.rbenv/versions/2.3.5/lib/ruby/gems/2.3.0/bundler/gems/semacode-4e31e0b79a1a/ext
make "DESTDIR="
compiling reedsol.c
compiling semacode.c
semacode.c:61:3: error: implicit declaration of function 'iec16022init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  iec16022init(&semacode->width, &semacode->height, message);
  ^
semacode.c:96:28: warning: 'bzero' call operates on objects of type 'semacode_t' (aka 'struct semacode_t') while the size is based on a different type 'semacode_t *' (aka 'struct
semacode_t *') [-Wsizeof-pointer-memaccess]
    bzero(semacode, sizeof(semacode));
          ~~~~~~~~         ^~~~~~~~
semacode.c:96:28: note: did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?
    bzero(semacode, sizeof(semacode));
                           ^~~~~~~~
semacode.c:129:27: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
  encode_string(semacode, StringValueLen(message), StringValuePtr(message));
  ~~~~~~~~~~~~~           ^~~~~~~~~~~~~~~~~~~~~~~
./semacode.h:26:27: note: expanded from macro 'StringValueLen'
#define StringValueLen(s) RSTRING_LEN(RB_STRING_VALUE(s))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     RSTRING_EMBED_LEN(str) : \
     ^~~~~~~~~~~~~~~~~~~~~~

     (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
semacode.c:129:27: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
  encode_string(semacode, StringValueLen(message), StringValuePtr(message));
  ~~~~~~~~~~~~~           ^~~~~~~~~~~~~~~~~~~~~~~
./semacode.h:26:27: note: expanded from macro 'StringValueLen'
#define StringValueLen(s) RSTRING_LEN(RB_STRING_VALUE(s))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-2.3.0/ruby/ruby.h:995:28: note: expanded from macro 'RSTRING_LEN'
     RSTRING(str)->as.heap.len)
     ~~~~~~~~~~~~~~~~~~~~~~^~~
semacode.c:239:20: warning: equality comparison result unused [-Wunused-comparison]
    semacode->data == NULL;
    ~~~~~~~~~~~~~~~^~~~~~~
semacode.c:239:20: note: use '=' to turn this equality comparison into an assignment
    semacode->data == NULL;
                   ^~
                   =
semacode.c:243:44: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
  DATA_PTR(self) = encode_string(semacode, StringValueLen(message), StringValuePtr(message));
                   ~~~~~~~~~~~~~           ^~~~~~~~~~~~~~~~~~~~~~~
./semacode.h:26:27: note: expanded from macro 'StringValueLen'
#define StringValueLen(s) RSTRING_LEN(RB_STRING_VALUE(s))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.rbenv/versions/2.3.5/include/ruby-2.3.0/ruby/ruby.h:994:6: note: expanded from macro 'RSTRING_LEN'
     RSTRING_EMBED_LEN(str) : \
     ^~~~~~~~~~~~~~~~~~~~~~
.rbenv/versions/2.3.5/include/ruby-2.3.0/ruby/ruby.h:990:6: note: expanded from macro 'RSTRING_EMBED_LEN'
     (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
semacode.c:243:44: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
  DATA_PTR(self) = encode_string(semacode, StringValueLen(message), StringValuePtr(message));
                   ~~~~~~~~~~~~~           ^~~~~~~~~~~~~~~~~~~~~~~
./semacode.h:26:27: note: expanded from macro 'StringValueLen'
#define StringValueLen(s) RSTRING_LEN(RB_STRING_VALUE(s))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.rbenv/versions/2.3.5/include/ruby-2.3.0/ruby/ruby.h:995:28: note: expanded from macro 'RSTRING_LEN'
     RSTRING(str)->as.heap.len)
     ~~~~~~~~~~~~~~~~~~~~~~^~~
6 warnings and 1 error generated.
make: *** [semacode.o] Error 1

make failed, exit code 2

Gem files will remain installed in .rbenv/versions/2.3.5/lib/ruby/gems/2.3.0/bundler/gems/semacode-4e31e0b79a1a for inspection.
Results logged to .rbenv/versions/2.3.5/lib/ruby/gems/2.3.0/bundler/gems/extensions/x86_64-darwin-19/2.3.0-static/semacode-4e31e0b79a1a/gem_make.out

An error occurred while installing semacode (0.7.5), and Bundler cannot continue.

In Gemfile:
  semacode

person s.matty    schedule 16.10.2020    source источник
comment
Какая версия инструментов командной строки Xcode у вас установлена? gcc -v вернет что-то вроде v11.x или v12.x. Я видел некоторые похожие проблемы в macOS, которые начались только после выпуска версии 12. Если у вас версия 12, вы можете попробовать вернуться к версии 11.5 с и повторите попытку установки гема.   -  person anothermh    schedule 17.10.2020
comment
Apple clang версии 12.0.0 (clang-1200.0.32.2)   -  person s.matty    schedule 17.10.2020
comment
Спасибо, переход на более раннюю версию Xcode решил проблему. Ваше здоровье!   -  person s.matty    schedule 18.10.2020


Ответы (2)


Попробуй это

gem install semacode -v 0.7.5 -- --with-cflags="-Wno-error=implicit-function-declaration"

Вот дополнительная информация:

Clang теперь сообщает об ошибке, когда вы используете функцию без явного объявления при построении кода C или Objective-C для macOS (установлен флаг -Werror = неявное объявление функции). Это дополнительное обнаружение ошибок объединяет поведение Clang для 64-разрядных целей iOS / tvOS и macOS для этой диагностики. (49917738)

https://developer.apple.com/documentation/xcode-release-notes/xcode-12-release-notes

person Huy Vo    schedule 18.10.2020
comment
Отлично! Эти флаги также можно использовать с Bundler: bundle config build.semacode-ruby19 --with-cflags="-Wno-error=implicit-function-declaration" - person mekdigital; 10.07.2021

Я видел некоторые похожие проблемы в macOS, которые начались только после выпуска версии 12. Если у вас версия 12, вы можете попробовать перейти на версию 11.5 со страницы download.developer.apple.com/Developer_Tools/… и повторить установку гема.

кредиты - @anothermh

person s.matty    schedule 18.10.2020