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のマシンにコピーしちゃいます(こんな解決方法でええんかなぁ.)
(途中でストップ)
コメントを残す