This service is available only in Japanese-language.
Raspberry Pi CM3+ に GitHub で公開されているパッケージ pigpio をOSイメージに含めたく、recipetoolを使ってbbファイルを作成しました。
→recipetool create -o pigpio_git.bb --src-subdir=pigpio-experimental https://github.com/joan2937/pigpio.git
出来上がったファイルを独自レイヤーに移動して、以下のように改変しました。改変したのはそのままですと Makefile 中の prefix が /usr/local だったりとyoctoで用いるには不適当だと思ったためです。
--------
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""
SRC_URI = "git://github.com/joan2937/pigpio.git;protocol=https"
# Modify these as desired
PV = "1.0+git${SRCPV}"
SRCREV = "4b2a1efdab378fc9831a5a9e48de3291bf83634b"
S = "${WORKDIR}/git"
# NOTE: no Makefile found, unable to determine what needs to be done
inherit pkgconfig cmake python-dir
# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
EXTRA_OEMAKE += "'prefix = ${D}/usr/local'"
EXTRA_OEMAKE += "'exec_prefix = $(prefix)'"
EXTRA_OEMAKE += "'bindir = $(exec_prefix)/bin'"
EXTRA_OEMAKE += "'includedir = $(prefix)/include'"
EXTRA_OEMAKE += "'libdir = $(prefix)/lib'"
EXTRA_OEMAKE += "'mandir = $(prefix)/man'"
CFLAGS_prepend = "-I${S}/git -I${S}/recipe-sysroot/usr/include"
--------
cmakeを使用してビルドができるようでしたので、EXTRA_OEMAKE や CFLAGS_prepend を使って環境を書き換えて bitbake c0re-image-base を行いました。
すると、以下のエラーが発生しました。
--------
ERROR: pigpio-1.0+gitAUTOINC+4b2a1efdab-r0 do_compile: Function failed: do_compile (log file is located at /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/temp/log.do_compile.6596)
ERROR: Logfile of failure stored in: /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/temp/log.do_compile.6596
Log data follows:
| DEBUG: Executing shell function do_compile
| NOTE: VERBOSE=1 cmake --build /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/build --target all -- -j 2
| [1/23] /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc -Dpigpiod_if2_EXPORTS -O3 -Wall -pthread -fPIC -MD -MT CMakeFiles/pigpiod_if2.dir/pigpiod_if2.c.o -MF CMakeFiles/pigpiod_if2.dir/pigpiod_if2.c.o.d -o CMakeFiles/pigpiod_if2.dir/pigpiod_if2.c.o -c /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/git/pigpiod_if2.c
| FAILED: CMakeFiles/pigpiod_if2.dir/pigpiod_if2.c.o
| /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc -Dpigpiod_if2_EXPORTS -O3 -Wall -pthread -fPIC -MD -MT CMakeFiles/pigpiod_if2.dir/pigpiod_if2.c.o -MF CMakeFiles/pigpiod_if2.dir/pigpiod_if2.c.o.d -o CMakeFiles/pigpiod_if2.dir/pigpiod_if2.c.o -c /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/git/pigpiod_if2.c
| /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/git/pigpiod_if2.c:30:10: fatal error: stdio.h: No such file or directory
| #include <stdio.h>
| ^~~~~~~~~
| compilation terminated.
| [2/23] /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc -Dpigpiod_if2_EXPORTS -O3 -Wall -pthread -fPIC -MD -MT CMakeFiles/pigpiod_if2.dir/command.c.o -MF CMakeFiles/pigpiod_if2.dir/command.c.o.d -o CMakeFiles/pigpiod_if2.dir/command.c.o -c /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/git/command.c
| FAILED: CMakeFiles/pigpiod_if2.dir/command.c.o
| /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc -Dpigpiod_if2_EXPORTS -O3 -Wall -pthread -fPIC -MD -MT CMakeFiles/pigpiod_if2.dir/command.c.o -MF CMakeFiles/pigpiod_if2.dir/command.c.o.d -o CMakeFiles/pigpiod_if2.dir/command.c.o -c /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/git/command.c
| /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/git/command.c:32:10: fatal error: stdio.h: No such file or directory
| #include <stdio.h>
| ^~~~~~~~~
| compilation terminated.
| ninja: build stopped: subcommand failed.
| WARNING: /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/temp/run.do_compile.6596:1 exit 1 from 'eval ${DESTDIR:+DESTDIR=${DESTDIR} }VERBOSE=1 cmake --build '/opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/build' "$@" -- -j 2'
| ERROR: Function failed: do_compile (log file is located at /opt/rpi64/build/tmp/work/aarch64-poky-linux/pigpio/1.0+gitAUTOINC+4b2a1efdab-r0/temp/log.do_compile.6596)
ERROR: Task (/opt/rpi64/meta-local/recipes-support/pigpio/pigpio_git.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 4329 tasks of which 4328 didn't need to be rerun and 1 failed.
--------
単純に考えますと、ヘッダファイルが見つからないためですが、この場合、CFLAGS_prepend の改変が聞いていないと思われます。
このような場合、どのように対処すればよろしいでしょうか。
yakuhito
2020/1/28 (火) 10:51
Makefile の prefix を修正するパッチを作成することをお勧めします
Cmakeを使用している他のレシピなどを見ますと、prefixを修正するパッチを作成しているレシピを結構見かけます。
外部ソースをとりこんだレシピ化にrecipetoolを使用する例が最近インターフェイスに紹介されていましたが、devtool
を使用すると、パッチの作成まで可能ですので、こちらを使用してみては如何でしょうか。