This service is available only in Japanese-language.

パッケージに含まれるファイル内容の変更方法

Yoctoで構築されるパッケージの中で、下記ファイルの変更の必要があります。
この変更をRecipesに盛り込んで、Yocto構築時に自動的に変更を反映するにはどのようにしたらよいでしょうか。

Yocto

└ build

└ tmp

└ work

└ cortexa7hf-vfp-neon-poky-linux-gnueabi

└ gstreamer1.0-plugins-bad

└ 1.2.3-r0

└ git

└ ext

└ wayland

├ gstwaylandsink.c
└ gstwaylandsink.h

・変更要求のあったファイルとオリジナルのファイルの差分を作成します。
diff -Nru yocto.orig/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-bad/1.2.3-r0/git/ext/wayland/gstwaylandsink.c yocto/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-bad/1.2.3-r0/git/ext/wayland/gstwaylandsink.c > gst-plugins-bad-wayland.patch

diff -Nru yocto.orig/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-bad/1.2.3-r0/git/ext/wayland/gstwaylandsink.h yocto/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-bad/1.2.3-r0/git/ext/wayland/gstwaylandsink.h >> gst-plugins-bad-wayland.patch

・パッチファイルに記述されているパスを変更します。
yocto.orig/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-bad/1.2.3-r0/git/
-> a

yocto/build/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0-plugins-bad/1.2.3-r0/git/
-> b

diff -Nru a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
--- a/ext/wayland/gstwaylandsink.c 2016-07-15 11:04:58.257220500 +0900
+++ b/ext/wayland/gstwaylandsink.c 2016-07-11 09:02:55.000000000 +0900

・Recipes名gstreamer1.0-plugins-bad のRecipesがどこにあるか探します。
find yocto.orig/ | grep "gstreamer1.0-plugins-bad"
yocto.orig/meta-renesas/common/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bbappend
yocto.orig/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bbappend
yocto.orig/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
yocto.orig/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bb
yocto.orig/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb

yocto/build/conf/local.conf に以下の定義があります。
BB_GST_PLUGINS = "meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer"
MULTIMEDIA_BB = "${BB_MULTIMEDIA_KERNEL_MODULE}|${BB_MULTIMEDIA_USER_MODULE}|\
${BB_MULTIMEDIA_TEST_MODULE}|${BB_GST_PLUGINS}"

従って、以下のRecipesが有効になります。
yocto.orig/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bbappend

・作成したパッチファイルがgstreamer1.0-plugins-bad パッケージ構築時
 に反映されるようにRecipesを変更します。
diff -Nru yocto.orig/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bbappend yocto/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bbappend
--- yocto.orig/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bbappend 2016-04-13 02:38:55.000000000 +0900
+++ yocto/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.2.3.bbappend 2016-07-22 12:01:32.246552103 +0900
@@ -16,5 +16,9 @@
}
for wayland
+FILESEXTRAPATHS_prepend := '${THISDIR}/${PN}:'
+SRC_URI_append = " file://gst-plugins-bad-wayland.patch"
+
+
PACKAGECONFIG_remove_rcar-gen2 = "${@'orc' if '1' in '${USE_GLES_WAYLAND}' else ''}"
PACKAGECONFIG_append_rcar-gen2 = " faad ${@base_contains('USE_GLES_WAYLAND', '1', 'wayland', '', d)}"

・パッチフィルを格納するためパッケージ名のディレクトリを作成し、
 パッチファイルを格納します。
mkdir yocto/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad
cp gst-plugins-bad-wayland.patch yocto/meta-renesas/meta-rcar-gen2/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad

Yocto

└ meta-renesas

└ meta-rcar-gen2

└ recipes-multimedia

└ gstreamer

└ gstreamer1.0-plugins-bad

└ gst-plugins-bad-wayland.patch

・bitbake コマンドで作成したimage に変更が反映されます。