FawkesOnComputer(Fedora33)の下準備

fawkes-robotino-2019を動かすために,最新情報に更新.
FawkesOnComputer(Fedora25-27)を参考にFedora33で作業.
とりあえず仮想マシンで作ってみます.

まずは,Fedora 33 Workstation のダウンロードからFedora-Workstation-Live-x86_64-33-1.2.isoをダウンロード.
インストールメディアを作るのであれば,Fedora Media Write を落として実行.
言語はEnglish,

sudo dnf update
sudo dnf install openssh-server
sudo systemctl enable sshd.service
sudo dnf groupinstall development-tools development-libs
# ここから refboxのdocker情報より.
sudo dnf install -y --nodocs avahi-devel boost-devel clips-devel clipsmm-devel \
         freeopcua-devel gcc-c++ gecode-devel git glibmm24-devel gtkmm30-devel \
         make mongo-cxx-driver-devel ncurses-devel openssh-clients openssl-devel \
         protobuf-compiler protobuf-devel which yaml-cpp-devel libmicrohttpd-devel \
         rapidjson-devel apr-util-devel
sudo dnf install -y --nodocs rpm-build
sudo dnf clean all
git clone https://github.com/robocup-logistics/rcll-refbox
cd rcll-refbox
make -j4 USE_AVAHI=0 FAIL_ON_WARNING=1
# ↑ これでRefBox が使えるようになります.
# 「gcc: fatal error: Terminated signal terminated program cc1plus」のエラーが出た場合は,
# 仮想マシンのメモリ容量を確認しましょう.2GBだと少ないかも.4GBぐらいは欲しいところ.

cd
sudo dnf install fawkes-devenv
sudo dnf copr enable thofmann/ros
sudo dnf update
sudo dnf install ros-desktop
source /usr/lib64/ros/setup.bash
# wget https://files.fawkesrobotics.org/releases/fawkes-robotino-2016-2.tar.bz2
# tar xvf fawkes-robotino-2016-2.tar.bz2
wget https://files.fawkesrobotics.org/releases/fawkes-robotino-2019.tar.gz
tar xvf fawkes-robotino-2019.tar.gz
cd fawkes-robotino-2019
make

Fawkes-robotino2019の確認と同じエラーが出ますね.
fawkes-robotino-2019/etc/buildsys/config.mk に以下を追加しましょう.

CFLAGS_EXTRA += -Wno-stringop-truncation
        [LUA] fawkes/src/libs/logging/fawkeslogging_tolua.cpp

ここで止まる….なんだろなぁ….
make -j2 とかで「おれはここを抑えるから,お前等は気にせずに進め!」とCPU1つを犠牲にすると,

/home/ryukoku/fawkes-robotino-2019/fawkes/src/libs/protobuf_comm/peer.cpp:416:92: error: ‘_1’ was not declared in this scope
  416 |   resolve_retry_timer_.async_wait(boost::bind(&ProtobufBroadcastPeer::retry_resolve, this, _1));

で,エラーが出ます.
BTR2017を見ると,

1334
diff -r btr2017/fawkes-robotino/fawkes/src/libs/protobuf_comm/peer.cpp btr2018/fawkes-robotino/fawkes/src/libs/protobuf_comm/peer.cpp

なんか差分に挙がっていますね.元のバージョンの書き方に戻してみましょうか.
415行目と416行目をコメントアウト.一応,makeは通りました(ええのかなぁ).
先ほどのfawkeslogging_tolua.cpp に戻って,ディレクトリを見てみると,

-rw-rw-r--. 1 ryukoku ryukoku    0 Jan  3 17:08 fawkeslogging_tolua.pkg

という変なファイルができていますね(サイズ0だからできていないといった方が正しいかも).
ここがあやしい原因っぽい.
fawkes-robotino-2019/fawkes/etc/buildsys/lua.mk を見ると,

.SECONDEXPANSION:
%_tolua.cpp: $$(TOLUA_$$(call nametr,$$*))
        $(SILENT) echo -e "$(INDENT_PRINT)[LUA] $(PARENTDIR)$(TBOLDGRAY)$(@F)$(TNORMAL)"
        $(SILENT)cat $(addprefix $(SRCDIR)/,$(subst $(SRCDIR)/,,$(filter %.tolua,$^))) > $(patsubst %.cpp,%.pkg,$@)
        $(SILENT)$(TOLUAPP) -L "$(FAWKES_BASEDIR)/src/lua/fawkes/toluaext.lua" -n $(TOLUA_PKGPREFIX_$(call nametr,$*))$(notdir $*) $(patsubst %.cpp,%.pkg,$@) | \
        sed -e 's/^\(.*Generated automatically .*\) on .*$$/\1/' | \
        awk '/^#if defined/ { f=1 }; f { t = t "\n" $$0 }; !f {print}; f && /^#endif/ {print "extern \"C\" {" t "\n}\n"; f=0}' | \
        awk '/^\*\/$$/ { print; while ((getline line < "$(BASEDIR)/doc/headers/lichead_c.GPL_WRE") > 0) print line; print "\n#include <core/exception.h>" }; ! /^\*\/$$/ { print }' \
        > $@

  endif # HAVE_TOLUA is 1

ここですね.
「cat $(addprefix $(SRCDIR)/,$(subst $(SRCDIR)/,,$(filter %.tolua,$^))) > $(patsubst %.cpp,%.pkg,$@)」でうまく動いていないようなので,ここをechoで見てみましょうか.

	$(SILENT) echo -e "$(addprefix $(SRCDIR)/,$(subst $(SRCDIR)/,,$(filter %.tolua,$^))) > $(patsubst %.cpp,%.pkg,$@)"

実行してみると,

            [LUA] fawkes/src/libs/logging/fawkeslogging_tolua.cpp
 > /home/ryukoku/fawkes-robotino-2019/fawkes/src/libs/logging/fawkeslogging_tolua.pkg

ん,リダイレクトの左辺,何もないような?
fawkes-robotino-2016にも同じ部分があるのでmakeしてみたら,こちらも同様に止まりました.
2016は以前にmakeしていますので,toluaか何かの環境がかわって,挙動が変わったのが原因のようですね.
さてさて,どうしたら良いのだろうか.

        $(SILENT)cat $(addprefix $(SRCDIR)/,$(subst $(SRCDIR)/,,$(filter %.tolua,$^))) $(addprefix $(SRCDIR)/,$(subst $(SRCDIR)/,,$(filter %.tolua,$(shell find $(SRCDIR)|grep \\.tolua)))) $(addprefix $(SRCDIR)/,$(subst $(SRCDIR)/,,$(filter %.tolua,$^)))> $(patsubst %.cpp,%.pkg,$@)

こんなんでどうかなぁ.だめだった…
Ubuntu 18.04では動作したんだけどなぁ.
というわけで,Ubuntu 18.04で作成された $(patsubst %.cpp,%.pkg,$@)ファイルをFedoraのマシンにコピーしちゃいます(こんな解決方法でええんかなぁ.)
(途中でストップ)

コメントを残す

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

*