This service is available only in Japanese-language.

パッケージ

CVEチェックについて

ビルドするパッケージの脆弱性を"cve-check"をlocal.confに追加することでチェックする機能があると伺いました。
bitbake core-image-minimalを実行したところ、下記のようなメッセージが出力されるのですが何か不足していることがあるのでしょうか。

WARNING: cve-check-tool-native-5.6.4-r0 do_populate_cve_db: Error in executing cve-check-update
WARNING: cve-check-tool-native-5.6.4-r0 do_populate_cve_db: Failed to update cve-check-tool database, CVEs won't be checked

以上、よろしくお願いいたします。

特定のパッケージをIMAGE_INSTALL(or最終ビルドイメージにインストールさせている命令)させているレシピを特定したい

特定のパッケージをIMAGE_INSTALL(or最終ビルドイメージにインストールさせている命令)させているレシピを特定することは可能でしょうか?

通常だと、local.confでIMAGE_INSTALLするのが一般的だと思いますが、明示的にIMAGE_INSTALLしていなくても最終ビルドイメージにインストールされるものもあります。
そのようなパッケージはlocal.conf以外のどこかでINSTALL命令が書かれていると推測しますが、その命令文が書かれたレシピを特定したいです。

具体例では、、、
poky/meta/recipes-extended/procps にprocpsというレシピがあり、
Yoctoのsumoだと、local.confでIMAGE_INSTALL させていないのにprocpsが入ることを確認しています。一方で
Yoctoのdunfellだと、local.confでIMAGE_INSTALL させないとprocpsが入らなかったです。
sumoもdunfellもbitbake-layers show-recipes一覧表示をさせるとprocpsが表示されましたが、最終ビルドイメージにインストールされるかどうかという点で差異が出ました。
そこで、前者のsumoはどのファイルでprocpsをINSTALLさせているのか、特定してこの挙動の差を明らかにしたい、というのが本質問の意図です。

よろしくお願いいたします。

インストールされるコマンド一覧を知りたい

$ bitbake-layers show-recipes
で実行されるレシピ一覧は分かりますが、

実際にインストールされるコマンド一覧をbitbake前に表示させることは可能でしょうか?

レシピが一覧に入っていても、IMAGE_INSTALLしなければ最終的にイメージには組み込まれないと思っています(間違っていたらご指摘ください)。

Pythonライブラリcherootの追加

NXPのi.MX8M Plus EVKを使用しています。
Pythonのライブラリであるcherootを追加するため、以下の内容のpython3-cheroot.bbファイルを作成しました。

SUMMARY = "Highly-optimized, pure-python HTTP server"
HOMEPAGE = "https://cheroot.cherrypy.dev"
AUTHOR = "CherryPy Team <team@cherrypy.dev>"
LICENSE = ""
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c4e17b64eab9c128f786f44f0dfb570a"

SRC_URI = "https://files.pythonhosted.org/packages/99/c4/9b5ca09208047f2689c24ee63e...
SRC_URI[md5sum] = "70247d0948899f453b50e6181cddd0d7"
SRC_URI[sha256sum] = "366adf6e7cac9555486c2d1be6297993022eff6f8c4655c1443268cca3f08e25"

S = "${WORKDIR}/cheroot-8.6.0"

RDEPENDS_${PN} = "python-six python-jaraco-functools"

inherit setuptools3

これをsource/poky/meta/recipes-devtools/pythonフォルダ下に配置して、local.confに以下の行を追加しました。

IMAGE_INSTALL:append = " python3-cheroot"

これでOSイメージの構築を行った際、以下の様なエラーになります。

ERROR: python3-cheroot-1.0-r0 do_compile: 'python3 setup.py build ' execution failed.
ERROR: python3-cheroot-1.0-r0 do_compile: ExecutionError('/home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/temp/run.do_compile.119', 1, None, None)
ERROR: Logfile of failure stored in: /home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/temp/log.do_compile.119
Log data follows:
| DEBUG: Executing shell function do_compile
| WARNING: The wheel package is not available.
| /home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/recipe-sysroot-native/usr/bin/python3-native/python3: No module named pip

(中略)

| ERROR: 'python3 setup.py build ' execution failed.
| WARNING: /home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/temp/run.do_compile.119:175 exit 1 from 'exit 1'
| WARNING: Backtrace (BB generated script):
| #1: bbfatal_log, /home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/temp/run.do_compile.119, line 175
| #2: distutils3_do_compile, /home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/temp/run.do_compile.119, line 165
| #3: do_compile, /home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/temp/run.do_compile.119, line 154
| #4: main, /home/user/yocto/imx-5.15.5-1.0.0-build/build_fsl-imx-xwayland/tmp/work/cortexa53-crypto-poky-linux/python3-cheroot/1.0-r0/temp/run.do_compile.119, line 179
ERROR: Task (/home/user/yocto/imx-5.15.5-1.0.0-build/sources/poky/meta/recipes-devtools/python/python3-cheroot.bb:do_compile) failed with exit code '1'

他のPythonモジュールの追加は出来ているのですが、cherootは上記の様なエラーとなります。

エラーの原因・解決方法やPythonモジュールの追加方法等アドバイス頂けますでしょうか?
よろしくお願いします。

opencvにおけるpackageconfの無効化について

opencvのパッケージを最小限にするため,opencv_4.1.0.bbを参照しながらbbapendにて以下の記載をいたしました。
EXTRA_OECONF_append = " --disable-gapi --disable-python3 --disable-eigen --disable-jpeg --disable-tiff --disable-v4l --disable-libv4l --disable-gstreamer --disable-samples --disable-tbb --disable-gphoto2"

当該記載は,用意されているPACKAGECONFを参照し,例えば--disable-tiff指定により,cmakeのオプションから-DWITH_TIFF=ONがきえ,-DWITH_TIFF=OFFが追加されることを期待しての記載でした。

しかしbitbake -e opencvを実行し確認したところ,-DWITH_TIFF=ONのままとなっていました。

なお,opencv_4.1.0.bbには以下の様な記載があり,当該configを利用して-DWITH_TIFF=OFFにしたいと考えております。
PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff,"

上記件,おそらくEXTRA_OECONFやPACKAGECONFIG周りの理解が誤っているのかと思うのですが,
なにか正しい記載方法がございましたらご教示いただけますと幸いです。

RDEPENDSとaptのインストール時の依存関係について

bitbakeのレシピとapt-get install時の関係性について質問させていただきたいと思います。

オリジナルライブラリlibaaaのパッケージ(libaaa)と,libaaaを呼び出す実行ファイルを含むパッケージ(bbb)があるものとします。
bbbのレシピには以下の記載があります。
DEPENDS += "libaaa "
RDEPENDS += "libaaa "

さらに,下記のようにリビジョンのアップデートがあったものとします。
変更前 libaaa PR="220804a" bbb PR="220804b"
変更後 libaaa PR="220804c" bbb PR="220804d"

bitbakeにより作成されるlibaaa_1.0-r220804a_armhf.deb等のdebは,上記4種類ともaptのリポジトリに存在するものとします。
apt-get install bbb=1.0-r220804dをインストール(アップデート)した時,
自動的にlibaaa PR="220804c"がインストールされるようにしたいのですが,
現在RDEPENDSの記載がlibaaaのみなので,予めlibaaa PR="220804a" がインストールされている場合,何も発生しません。
この際,libaaa PR="220804c"がインストールされるよう,レシピの方を修正したいのですが,
正しい記載をご教示いただけますでしょうか。

また,可能であればレシピに"220804c"といった文字列を記載するのではなく,同時にbitbakeしたライブラリのリビジョンを自動指定する方法等,
メンテナンス工数を削減する方法がございましたらご教示いただけますと幸いです。

重複ファイルの削除方法

例えば、util-linux と procps を組み込んだ場合
/bin/kill.util-linux
/bin/kill.procps
の両方が組み込まれます。
/bin/kill は /bin/kill.procps へのリンクなので、/bin/kill.util-linux は不要です。
この不要ファイルを削除するにはどうすれば良いでしょうか?

ROOTFS_POSTPROCESS_COMMAND で、重複ファイルを一つ一つ調べて消すといったことはしたくなく。

opkg の削除方法

/usr/lib/opkg/ を削除したいのですが、
https://stackoverflow.com/questions/41020460/how-to-remove-opkg-from-a-y...
のような方法でなく、
スマートな方法あるでしょうか?

OpenCVをCMakeオプション付きでビルドしたい

OpenCVをyoctoに入れる際に、local.confに以下を追記しています。

IMAGE_INSTALL_append += " opencv"
PREFERRED_VERSION_opencv = "4.1.0%"

ただ、この場合だとCMakeでオプション無でビルドしたのと同等になってしまうのではと考えています。

YoctoにOpenCVを導入する場合、CMakeのオプション付きでビルドしたのと同等になるような手法はございますか?

extlinux.confへの追記方法について

extlinux.confを用いて,uImageやデバイスツリーが破損した時の対策を実装しようとしています。
具体的にはuImageとデバイスツリーのバックアップファイルを予めbootfsに格納しておき,extlinux.confにラベル等を追記しておくことで実現しようとしています。
使用しているOSはOpenSTLinuxです。

st-machine-extlinux-config-stm32mp.incを編集すればよいかと考えているのですが,extlinux.confにラベルを追記する方法が不明です。

以下のように記載することで,別のファイルとしてabc_extlinux.confは生成できたのですが,
これでは目的を満たせないと思われるため,extlinux.confへの追記を行いたいです。

・st-machine-extlinux-config-stm32mp.incへの追記内容
UBOOT_EXTLINUX_TARGETS_EXTRA_CONFIG_target-nand += "abc"
UBOOT_EXTLINUX_TARGETS_EXTRA_CONFIG[abc] += "abc-examples"

・生成されたに種類のファイルの内容
# cat /boot/nand0_extlinux/abc_extlinux.conf
# Generic Distro Configuration file generated by OpenEmbedded
menu title Select the boot mode
TIMEOUT 20
DEFAULT OpenSTLinux
LABEL OpenSTLinux
KERNEL /uImage
FDTDIR /
APPEND ubi.mtd=UBI rootfstype=ubifs root=ubi0:rootfs rootwait rw console=ttySTM0,115200
KERNEL /uImage
FDTDIR /
APPEND ubi.mtd=UBI rootfstype=ubifs root=ubi0:rootfs rootwait rw console=ttySTM0,115200

# cat /boot/nand0_extlinux/extlinux.conf
# Generic Distro Configuration file generated by OpenEmbedded
TIMEOUT 20
LABEL OpenSTLinux
KERNEL /uImage
FDTDIR /
APPEND ubi.mtd=UBI rootfstype=ubifs root=ubi0:rootfs rootwait rw console=ttySTM0,115200

また,以下の追記も試行しましたが,abc_extlinux.confにはLabel=backup...が追記されるものの,extlinux.confに変化はございませんでした。
UBOOT_EXTLINUX_LABELS_target-nand += "backup"

上記,なにか良い解決策はございますでしょうか。
よろしければご教示いただけますと幸いです。

ページ