warning_protobuf_comm
Ubuntu 20.04でのセットアップ(2023/12/20版)にて,src/libs のところでwarning_protobuf_comm のエラーが出て止まります.
過去のrcll-refbox のソースだと通る.
よくよく見てみると,src/libs の下にあったprotobuf_comm がなくなっている….
とすると,解は二つ考えられて,「protobuf_comm」を削除したけど,いくつかの場所に依存チェックのゴミが残っているのか,間違えてprotobuf_commを削除したから復活させるのか になるかと思います.
まずは,protobuf_comm をコピーして,makeしてみましょうか.
→ まだエラーが出る.
/etc/buildsys/protobuf.mk を比較してみようか.
新しい方
PROTOBUF_PROTOC = protoc ifneq ($(PKGCONFIG),) HAVE_PROTOBUF_LIB = $(if $(shell $(PKGCONFIG) --exists 'protobuf'; echo $${?/1/}),1,0) HAVE_PROTOBUF_COMP = $(if $(shell type -p $(PROTOBUF_PROTOC); echo $${?/1/}),1,0) ifeq ($(HAVE_PROTOBUF_LIB)$(HAVE_PROTOBUF_COMP),11) HAVE_PROTOBUF = 1 endif endif ifeq ($(HAVE_PROTOBUF),1) CFLAGS_PROTOBUF = -DHAVE_PROTOBUF $(shell $(PKGCONFIG) --cflags 'protobuf') LDFLAGS_PROTOBUF = $(shell $(PKGCONFIG) --libs 'protobuf') HAVE_PROTOBUF_COMM = $(if $(shell $(PKGCONFIG) --exists 'protobuf_comm'; echo $${?/1/}),1,0) CFLAGS_PROTOBUF_COMM = $(shell $(PKGCONFIG) --cflags 'protobuf_comm') LDFLAGS_PROTOBUF_COMM = $(shell $(PKGCONFIG) --libs 'protobuf_comm') PROTOBUF_LIBDIR = $(LIBDIR)/protobuf LIBDIRS_BASE += $(PROTOBUF_LIBDIR)
古い方
ifneq ($(PKGCONFIG),) HAVE_PROTOBUF = $(if $(shell $(PKGCONFIG) --exists 'protobuf'; echo $${?/1/}),1,0) endif ifeq ($(HAVE_PROTOBUF),1) CFLAGS_PROTOBUF = -DHAVE_PROTOBUF $(shell $(PKGCONFIG) --cflags 'protobuf') LDFLAGS_PROTOBUF = $(shell $(PKGCONFIG) --libs 'protobuf') PROTOBUF_PROTOC = protoc PROTOBUF_LIBDIR = $(LIBDIR)/protobuf LIBDIRS_BASE += $(PROTOBUF_LIBDIR)
なんか,違いますねぇ.
古い方の環境でも,pkg-config –cflags protobuf は反応しますが,pkg-config –cflags protobuf_comm は,not foundになりますね.
とすると,上記のHAVE_PROTOBUF_COMM のフラグは不要かなぁ.
古い方のファイルを使ってみたけど,やっぱり止まりますね.
とすると,warning_protobuf_comm で止めているところをつぶしていくとしますか.
まずは,src/libs/logging/Makefile
ifneq ($(HAVE_PROTOBUF_COMM),1) # WARN_TARGETS += warning_protobuf_comm endif
ついで,/src/libs/protobuf_clipsも同様.
--> Entering sub-directory mps_comm --- --- Compiling opcua/opc_utils.cpp (C++) /home/robotino/rcll-refbox/src/libs/mps_comm/opcua/opc_utils.cpp: In static member function ‘static bool llsfrb::mps_comm::OpcUtils::logNodeInfo(OpcUa::Node, std::shared_ptr<spdlog::logger>, int, int)’: /home/robotino/rcll-refbox/src/libs/mps_comm/opcua/opc_utils.cpp:606:56: error: ‘streamed’ is not a member of ‘fmt’ 606 | logger->info("{}>{}", std::string(lvl[0], ' '), fmt::streamed(node)); | ^~~~~~~~
このエラーは,btr2023の準備(gazeboを動かすまでの手順)にあったので,コメントアウト.
=== Linking lib libllsfrbwebview --- /usr/bin/ld: cannot find -lllsfrblogging
ん.なんだろ.さっきのlogginのところかなぁ.
仕方がない.順番に追いかけてみるか….
とりあえず,古いバージョンを取ってきたら,makeは通りました.
手元の古いバージョンは,
ryukoku@kwkm-System-Product-Name:~/rcll-refbox$ git show commit 1e90fa408a0c889f44aa9b635a1c6cd288b68474 (HEAD -> master, origin/master, origin/HEAD) Merge: 051ba416 c87dc82c Author: Daniel Swoboda <swoboda@kbsg.rwth-aachen.de> Date: Sat Apr 8 10:30:06 2023 +0200
とのこと.
Commits on Oct 30, 2023 の 7f6e2d49de15023eed4abbef7abdc9f817fa5858 は,makeが通った.
その次あたりからがprotobuf関係の変更っぽい.
ん.なんか,最新版の4つ手前までセーフっぽい?
cd ~/rcll-refbox git checkout d0bcd590ab140691645fe8b651a3d00afad39151 make clean all -j4
その次のa85a6806946a579460bd2b9c845ed3b56113340f でダメになったっぽい.
Merge pull request #179 from robocup-logistics/tviehmann/system-protobuf_comm switch to system protobuf_comm @TarikViehmann TarikViehmann committed last month
これですね.確かに,コメントもそんな感じですね.システムのprotobuf_commに変更したってさ….
Fedoraだといけるのかもしれないけど,Ubuntu 20.04だとダメってことかなぁ.
コメントを残す