Невозможно установить драгоценный камень экономки на OS X El Capitan

Попытка установить драгоценный камень после обновления OSX El Capitan:

    $ gem install thrift
    Building native extensions.  This could take a while...
    ERROR:  Error installing thrift:
        ERROR: Failed to build gem native extension.

        /Users/foo/.rvm/rubies/ruby-2.1.4/bin/ruby -r ./siteconf20160402-32256-7dzqel.rb extconf.rb
    checking for strlcpy() in string.h... yes
    creating Makefile

    make "DESTDIR=" clean

    make "DESTDIR="
    compiling binary_protocol_accelerated.c
    compiling bytes.c
    compiling compact_protocol.c
    compact_protocol.c:442:41: error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
        rb_exc_raise(get_protocol_exception(INT2FIX(-1), rb_str_new2(buf)));
                                            ^~~~~~~~~~~

Сбой компиляции compact_protocol.c: 442: 41: ошибка: смещение отрицательного значащего значения undefined [-Werror, -Wshift-negative-value]

Ответы

Ответ 1

У меня есть решение для вас! Будем надеяться.

У этой же проблемы на днях.

Проблема заключается в компиляторе clang, с которым поставляется El Capitan. Я уверен, что это замалчивает другие проблемы, но это один из пунктов, с которыми у меня было много проблем.

Попробуйте запустить следующую команду и дайте мне знать, как это происходит!

gem install thrift -- --with-cppflags=\"-D_FORTIFY_SOURCE=0 -Wno-shift-negative-value\"

Ответ 2

Вам нужно избежать двойных кавычек.

$bundle config build.thrift "--with-cppflags = \" - D_FORTIFY_SOURCE = 0 -Wno-shift-negative-value\ "

$cat ~/.bundle/config

BUNDLE_BUILD__THRIFT: --with-cppflags =" - D_FORTIFY_SOURCE = 0 -Wno-shift-negative-value"

Ответ 3

Попробуйте это

gem install thrift -v '0.9.0' -- --with-cppflags='-D_FORTIFY_SOURCE=0'