- https://github.com/Linaro/documentation/blob/master/Reference-Platform/CECommon/OE.md が基本手順
- 必要に応じてconf/site.conf, auto.confを編集
- 後述
- 通常はlocal.confを編集するが、こちらはシンボリックリンクになっていて代わりにsite.conf, auto.confを編集する。
- bblayers.confもシンボリックリンクだがこれに相当するものは見つからないのでレイヤーについては直接記述することになる。
- rpb-console-imageをビルドする
- setup-environmentではMACHINEにhikey(not hikey32)を指定(ここでdragon-410cを指定すればdragon用になるはず)
- イメージ選択は推奨(rpbだったかな?egl, waylandとかがついていないもの)
- これで一旦ビルドを通す。
私の場合はDL_DIR, SSTATE_DIRを追加しました。なくても問題ないです。
sakate@walle:~/prj/hikey/oe-rpb/build-rpb$ cat conf/site.conf
SCONF_VERSION = "1"
# Where to store sources
DL_DIR = "/home/sakate/share/poky/downloads"
# Where to save shared state
SSTATE_DIR = "/home/sakate/share/poky/sstate-cache"
TMPDIR = "/home/sakate/prj/hikey/oe-rpb/build-rpb/tmp-rpb"
# Go through the Firewall
#HTTP_PROXY = "http://:/"
- とりあえず適当にros関連のレシピを追加してみただけで、ros-commである必要はない。
- 実験段階では直接パッケージを指定したビルドをするのでそれが通ってから追加すれば良い。
- すなわち、この修正は現段階では不要。
sakate@walle:~/prj/hikey/oe-rpb/build-rpb$ cat conf/auto.conf
DISTRO ?= "rpb"
MACHINE ?= "hikey"
SDKMACHINE ?= "x86_64"
# Extra options that can be changed by the user
INHERIT += "rm_work"
IMAGE_INSTALL = "packagegroup-core-boot"
IMAGE_INSTALL += "ros-comm"
cd $BUILDDIR/../layers/
git clone https://github.com/bmwcarit/meta-ros.git
cd $BUILDDIR
bitbake-layers add-layer $BUILDDIR/../layers/meta-ros
bitbake console-bridge
などでレシピを指定すればビルド可能。- 修正無しではこれはQAの段階で失敗する。
- レシピそのものではなくレシピがダウンロードしたソースコード(今回はMakefile)に修正を加える必要がある。
- 今回は
devtool modify
を使用する。
cd $BUILDDIR
devtool modify console-bridge
- これでたぶん
$BUILDDIR/workspace/sources/console-bridge
にソースが展開される。 - CMakeLists.txtを修正
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ab0ad99..6547bc2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,7 +34,7 @@ add_library(${PROJECT_NAME} src/console.cpp)
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
install(TARGETS ${PROJECT_NAME}
- DESTINATION lib/)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY include/
DESTINATION include
@@ -52,7 +52,7 @@ if (NOT MSVC)
set(pkg_conf_file "console_bridge.pc")
configure_file("${pkg_conf_file}.in" "${CMAKE_BINARY_DIR}/${pkg_conf_file}" @
ONLY)
install(FILES "${CMAKE_BINARY_DIR}/${pkg_conf_file}"
- DESTINATION lib/pkgconfig/ COMPONENT pkgconfig)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ COMPONENT pkgconfig)
endif()
SET_DIRECTORY_PROPERTIES(PROPERTIES
- 完了後、再度
bitbake console-bridge
でビルドできるかどうかを確認する。bitbake -c clean console-bridge
でクリーンする必要があるかもしれない。- ちなみに
devtool build console-bridge
でもビルドの確認はできるがQAまでやってくれないので、bitbakeでの確認が必要。
-
他のレシピをビルドしようとすると、こいつに依存しているためかこいつのビルドが通る必要がある。
-
これも同様にQAの問題でビルドが通らない。原因はslackで議論したように、lib64とlibの名前不一致問題が原因。
- 一部のROSのパッケージのMakeでlibを直打ちしている箇所が混ざっていて、これが問題。
- ただ、これをどこで修正すればよいのかわからないのが、困っているところ。
-
console-bridgeと同様にdevtoolを使って実験を進めていく。
-
ビルドが通ったように見えてQAのWarningが出ることがあるので、うまく行ったかどうかを確認するときはビルド前にcleanが必要。
-
tmp-rpb-glibc/work/aarch64-linaro-linux/cpp-common/0.5.8-r0/cpp-common-0.5.8/install_manifest.txt
の内容。2箇所libが混ざっている。- これを生成している箇所を特定できれば修正できると思われる。
/opt/ros/indigo/lib/pkgconfig/cpp_common.pc
/opt/ros/indigo/share/cpp_common/cmake/cpp_commonConfig.cmake
/opt/ros/indigo/share/cpp_common/cmake/cpp_commonConfig-version.cmake
/opt/ros/indigo/share/cpp_common/package.xml
/opt/ros/indigo/lib/libcpp_common.so
/opt/ros/indigo/include/ros/macros.h
/opt/ros/indigo/include/ros/debug.h
/opt/ros/indigo/include/ros/header.h
/opt/ros/indigo/include/ros/types.h
/opt/ros/indigo/include/ros/datatypes.h
/opt/ros/indigo/include/ros/cpp_common_decl.h
/opt/ros/indigo/include/ros/exception.h
/opt/ros/indigo/include/ros/platform.h