Ubuntu 15.10でcore-image-satoなどを作ろうとすると、qemu-nativeのdo_configureでエラーになる。
DEBUG: Executing python function sysroot_cleansstate DEBUG: Python function sysroot_cleansstate finished DEBUG: Executing shell function autotools_preconfigure DEBUG: Shell function autotools_preconfigure finished DEBUG: Executing python function autotools_copy_aclocals DEBUG: Python function autotools_copy_aclocals finished DEBUG: Executing shell function do_configure ERROR: User requested feature sdl configure was not able to find it. Install SDL devel WARNING: exit code 1 from a shell command.
config.log
configureでのエラーの詳細をみるためconfig.logを開いてみるとdbus関連の関数が見つからないという。
/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-6.0.so: undefined reference to `dbus_watch_get_enabled@LIBDBUS_1_3' /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-6.0.so: undefined reference to `dbus_message_iter_recurse@LIBDBUS_1_3' /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-6.0.so: undefined reference to `dbus_connection_unref@LIBDBUS_1_3' ...(省略)...
原因
nativeではない方のqemuのbitbakeは問題なく通る。
Ubuntuのdbusのバージョンが1.8から1.10に上がったことで、DBusのABIに変更があったことが問題らしい。
dbusのレシピのバージョンを上げる
yocto環境のdbusのレシピを1.8.20から1.10.2に変更することで対応できるらしい。
すでにpatchは考案され、議論が進行中なので、メインラインに取り込まれるのは時間の問題だが、今すぐ試したいというせっかちな人のために一応人柱をやっておく。
この対策について
https://bugzilla.yoctoproject.org/show_bug.cgi?id=8553
ここによると、dbusのバージョンを上げる対策はリジェクトされたらしい。 dbusのバージョンを上げることでエラーを回避できるのはわかっているのだが、 他のディストリビューション環境では破綻すること、リリース前にdbusのバージョンを上げるのはデンジャラスだということが理由らしい。
どの道、このトピックについては有効期限付きのものだと思っていてほしい。
環境
作業環境はjethroのブランチをベースにする。
パッチのダウンロード及び取り込み
念の為、作業用に「dbus-patch-test」というブランチを作成し、下記の要領でパッチを取り込む。
$ cd ~/rpi2/poky $ wget http://patchwork.openembedded.org/patch/106579/raw -O dbus-upgrade-to-1.10.2.patch $ git checkout -b dbus-patch-test $ git apply dbus-upgrade-to-1.10.2.patch
bitbake
エラーが発生していたqemu-nativeをbitbakeしてみる。
$ cd ~/rpi2 $ source poky/oe-init-build-env build $ bitbake qemu-native
問題なく作成できた。
Build Configuration: BB_VERSION = "1.28.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-15.10" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi2" DISTRO = "poky" DISTRO_VERSION = "2.0" TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard vfpv4 cortexa7" TARGET_FPU = "vfp-vfpv4-neon" meta meta-yocto meta-yocto-bsp = "dbus-patch-test:fc45deac89ef63ca1c44e763c38ced7dfd72cbe1" meta-raspberrypi = "master:0776b86c6629b7294ff61e67609f2d4e10e9712c" NOTE: Preparing RunQueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks NOTE: Tasks Summary: Attempted 289 tasks of which 277 didn't need to be rerun and all succeeded.