protobuf で ./tests.sh cpp を動かす
v.3.5.1でテストを動かす。
リリース済みのもので2018/5/4現在で最新のタグを引っ張ってくる。以下の手順で ./test.sh cpp
を回す。
brew upgrade gcc brew upgrade gawk ./tests.sh cpp
gccとgawkのbrew upgradeが必要だった。Macのgccは標準でclangだが、恐らくprotobufが見ているパスが異なるため、ちゃんと入れた。gawkは以下の記事と同じエラーが出たため記事の指示通りに対処した。
commit id: 92898e9e (2018/5/4現在のmaster) で動かす。
上の操作を行ったあと、masterブランチでも ./test.sh cpp
を試す。
Making check in . (CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /path/to/protobuf/missing autoheader) rm -f stamp-h1 touch config.h.in cd . && /bin/sh ./config.status config.h config.status: creating config.h /Applications/Xcode.app/Contents/Developer/usr/bin/make check-local Making lib/libgmock.a lib/libgmock_main.a in gmock make[3]: *** No rule to make target `lib/libgtest.la'. Stop. make[2]: *** [check-local] Error 2 make[1]: *** [check-am] Error 2 make: *** [check-recursive] Error 1 ++ cat src/test-suite.log ================================================ Protocol Buffers 3.5.1: src/test-suite.log ================================================ # TOTAL: 7 # PASS: 7 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 ++ false
原因がわからず、ディレクトリを眺めたら、"autogen.sh" が存在していたので
./autogen.sh ./configure ./test.sh
の実行によって、テストが進行するようになったが、以下で落ちた。
no_warning_test.cc:2:10: fatal error: 'google/protobuf/stubs/atomic_sequence_num.h' file not found #include <google/protobuf/stubs/atomic_sequence_num.h> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mv -f google/protobuf/.deps/protobuf_lite_arena_test-arena_test_util.Tpo google/protobuf/.deps/protobuf_lite_arena_test-arena_test_util.Po depbase=`echo google/protobuf/testing/zcgzip.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ g++ -std=c++11 -DHAVE_CONFIG_H -I. -I.. -Qunused-arguments -pthread -DHAVE_PTHREAD=1 -DHAVE_ZLIB=1 -Wall -Wno-sign-compare -O2 -g -DNDEBUG -MT google/protobuf/testing/zcgzip.o -MD -MP -MF $depbase.Tpo -c -o google/protobuf/testing/zcgzip.o google/protobuf/testing/zcgzip.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=`echo google/protobuf/testing/zcgunzip.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ g++ -std=c++11 -DHAVE_CONFIG_H -I. -I.. -Qunused-arguments -pthread -DHAVE_PTHREAD=1 -DHAVE_ZLIB=1 -Wall -Wno-sign-compare -O2 -g -DNDEBUG -MT google/protobuf/testing/zcgunzip.o -MD -MP -MF $depbase.Tpo -c -o google/protobuf/testing/zcgunzip.o google/protobuf/testing/zcgunzip.cc &&\ mv -f $depbase.Tpo $depbase.Po 1 error generated. make[2]: *** [no_warning_test-no_warning_test.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [check-am] Error 2 make: *** [check-recursive] Error 1 ++ cat src/test-suite.log ================================================ Protocol Buffers 3.5.1: src/test-suite.log ================================================ # TOTAL: 7 # PASS: 7 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 ++ false
何らかのヘッダがinstallされていない。以下を実行した後、再度試す。 master環境のヘッダがグローバルに入り込んでいいのかという問題はあるが、ひとまず置いておく。
make && make install