protobuf で ./tests.sh cpp を動かす

v.3.5.1でテストを動かす。

リリース済みのもので2018/5/4現在で最新のタグを引っ張ってくる。以下の手順で ./test.sh cpp を回す。

brew upgrade gcc
brew upgrade gawk
./tests.sh cpp

gccgawkbrew upgradeが必要だった。Macgccは標準でclangだが、恐らくprotobufが見ているパスが異なるため、ちゃんと入れた。gawkは以下の記事と同じエラーが出たため記事の指示通りに対処した。

dyld: Library not loaded: /usr/local/opt/mpfr/lib/libmpfr.4.dylib Referenced from: /usr/local/bin/awk Reason: image not found - Qiita

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