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だとダメってことかなぁ.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*