💨

mac で fast_trie がエラーでインストールできない

2020/12/17に公開
3

先日 mac で bundle install を実行したところ以下のようなエラーが出ました。

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

ちゃんと確認した感じ fast_trie というパッケージをインストールする際に発生しているようです。ちゃんとエラーを確認すると…

compiling trie.c
trie.c:84:8: error: implicit declaration of function 'trie_has_key' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    if(trie_has_key(trie, (TrieChar*)RSTRING_PTR(key)))

のようなエラーが出ています。
これは C99 という ISO で定められたC言語の規格に違反している際に出るエラーです。これは構文エラーではないのでビルドすることはできます。
以前は出てなかったのですが、xcodeをアップデートした際にコンパイラがアップデートしてこのようなエラーが出るようになったと思われます。

本当はこういったエラーがないバージョンに上げる必要がありますが、すぐに対応が厳し場合もあると思います。(fast_trieは数年更新されていない)
そういった場合は一旦このエラーを無視してビルドすることもできます。
--with-cflags=-Wno-error=implicit-function-declaration というオプションを付かけることで無視することができます。

$ bundle config --local build.fast_trie --with-cflags=-Wno-error=implicit-function-declaration
$ bundle install

同様の現象が thin という gem でも発生しました。
こちらも同様に対応することが可能です。

Discussion

kon_yukon_yu

$ bundle config --local build.fast_tire --with-cflags=-Wno-error=implicit-function-declaration
ではなくて

fast_trie をTypo 大埔とTypoしていたので修正 しているように見えます。
bundle config --local build.fast_trie --with-cflags=-Wno-error=implicit-function-declaration
ではないでしょうか?