This service is available only in Japanese-language.

パッケージ

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

$ 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"

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

ライブラリの更新に応じた,参照アプリケーション用レシピのリビルドについて

自作ライブラリ(libaaa.so)用のレシピlibaaa.bbと,当該ライブラリおよびライブラリヘッダを参照するabc.bbがあります。
libaaaのソースコードやヘッダファイルを変更しbitbakeした際,abc.bbがライブラリの更新に応じリビルドされる必要があるところ,
なぜかabc.bbがリビルドされないことがございます。
なにか原因や解決法がございましたらご教示いただけますでしょうか。

前提:双方ともローカルのソースコードです(git管理されていません)
abc.bbには以下のように記載し,libaaaのリンクおよびヘッダファイル(例:aaa.h)の参照を可能にしています。
DEPENDS += "libaaa "
RDEPENDS_${PN} += "libaaa "

git://が使用できなくなった件について

gitでgit clone git://が使用できなくなった件について。
Yoctoでbitbakeする際、IMAGE_INSTALL_appendで指定したパッケージの一部がこのエラーに引っ掛かるのですが、
何か解決策はありませんでしょうか?

git://...ではなく、https://github.com/...からcloneしてくるように指定できればいいのですが...

---------------------------------
■Yoctoでfetchエラー発生
Fetcher failure for URL: 'git://github.com/*** Unable to fetch URL from any source.

■試しに手動でgit clone --> エラー
$ git clone git://github.com/***
Cloning into '***'...
fatal: remote error:
The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.

■エラーの件の情報 --> git://... が使用できなくなった模様
https://github.blog/2021-09-01-improving-git-protocol-security-github/#n...
https://naari.hatenablog.com/entry/2022/01/11/140137

■挙動
・recipe中のSRC_URIで指定されている git:// は特に問題なくfetchできていた
・local.conf で IMAGE_INSTALL_append したアプリの1つで上記エラー発生

ページ