构建机器时安装错误的文件

发布于 2025-01-19 00:26:17 字数 2742 浏览 1 评论 0原文

我有 3 层:

meta-a:

meta-a
└── recipes-my
    └── mypgk
        ├── mypgk_1.0.bb
        └── mypkg_rel
            ├── config.conf
            └── mypkg.service
  • mypgk_1.0.bb:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}_rel:"  
SRC_URI = "file://config.conf mypkg.service"

meta-b:

meta-b
└── recipes-my
    └── mypgk
        ├── mypgk_1.0.bbappend
        └── mypkg
            └── config.conf
  • mypgk_1.0.bbappend strong>:
FILESEXTRAPATHS_prepend_${MACHINE} := "${YOCTOROOT}/meta-a/recipes-my/${PN}/${PN}_rel:"  
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"  
SRC_URI += "file://config.conf "

我还有一个 meta-c 层。

  • meta-c 依赖于 meta-b
  • meta-b 依赖于 meta-a

层优先级:

  • meta-a = 14
  • meta-b = 15
  • meta-c = 16

每层定义一个机器 (machinea< /code>, machineb, machinec)

当我构建 machinea 时,来自 config.conf 文件元-a 已安装。

当我构建 machineb 时,会安装 meta-b 中的 config.conf 文件。

当我构建 machinec 时,会安装来自 meta-a 的 config.conf 文件,而不是安装 meta-b 中具有更高优先级的文件。

当我构建 machinec 时,我希望按原样来自 meta-bmypkg,为什么 bitbake 使用其他 config.conf > 文件?

如果我在 meta-b 中将 config.conf 重命名为 config_b.conf (相应地更改 .bbappend),一切都会按预期进行。

编辑:

关于mypgkmeta-c内容为空,我希望它继承meta-b。< br> 在 meta-c layer.conf 我有这个:

LAYERDEPENDS_c = "b"

mypgk_1.0.bbmeta-a 中定义是:

FILESEXTRAPATHS_prepend_$(MACHINE) := "${THISDIR}/${PN}_rel:"

SRC_URI = "file://config.conf "

SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = " mypkg.service"

do_install() {
         install -m 755 -d ${D}${bindir}
         install -m 755 -d ${D}${sysconfdir}
         install -m 644 ${WORKDIR}/config.conf ${D}${sysconfdir}/config.conf

         install -d ${D}${systemd_system_unitdir}
         install -m 644 ${WORKDIR}/mypkg.service ${D}${systemd_system_unitdir}/mypkg.service
}

编辑2:
还将 recipes-my/*meta-b 复制到 meta-c/ 不起作用,并且 config.confmeta-a 的 code> 已安装

I have 3 layers:

meta-a:

meta-a
└── recipes-my
    └── mypgk
        ├── mypgk_1.0.bb
        └── mypkg_rel
            ├── config.conf
            └── mypkg.service
  • mypgk_1.0.bb:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}_rel:"  
SRC_URI = "file://config.conf mypkg.service"

meta-b:

meta-b
└── recipes-my
    └── mypgk
        ├── mypgk_1.0.bbappend
        └── mypkg
            └── config.conf
  • mypgk_1.0.bbappend:
FILESEXTRAPATHS_prepend_${MACHINE} := "${YOCTOROOT}/meta-a/recipes-my/${PN}/${PN}_rel:"  
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"  
SRC_URI += "file://config.conf "

I also have a meta-c layer.

  • meta-c depends on meta-b,
  • meta-b depends on meta-a.

Layers priority:

  • meta-a = 14
  • meta-b = 15
  • meta-c = 16

Every layer defines a machine (machinea, machineb, machinec)

When I build machinea, the config.conf file from meta-a is installed.

When I build machineb, the config.conf file from meta-b is installed.

When I build machinec, the config.conf file from meta-a is installed instead the one in meta-b which have a higher priority.

When I build machinec I want mypkg from meta-b as-is, why bitbake use the other config.conf file?

If I rename config.conf to config_b.conf (changing .bbappend accordingly) in meta-b everything works as axpected.

EDIT:

meta-c content regarding mypgk is empty, i want it to inherit from meta-b.
in meta-c layer.conf i have this:

LAYERDEPENDS_c = "b"

mypgk_1.0.bb defined in meta-a is:

FILESEXTRAPATHS_prepend_$(MACHINE) := "${THISDIR}/${PN}_rel:"

SRC_URI = "file://config.conf "

SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = " mypkg.service"

do_install() {
         install -m 755 -d ${D}${bindir}
         install -m 755 -d ${D}${sysconfdir}
         install -m 644 ${WORKDIR}/config.conf ${D}${sysconfdir}/config.conf

         install -d ${D}${systemd_system_unitdir}
         install -m 644 ${WORKDIR}/mypkg.service ${D}${systemd_system_unitdir}/mypkg.service
}

EDIT 2:
also copying recipes-my/* from meta-b to meta-c/ doesn't work and config.conf from meta-a is installed

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空心空情空意 2025-01-26 00:26:17

问题是添加到 FILESEXTRAPATHS 的目录顺序。
修改 meta-b 中的 mypgk_1.0.bbappend 来:

FILESEXTRAPATHS_append_${MACHINE} := "${YOCTOROOT}/meta-a/recipes-my/${PN}/${PN}_rel:"  
FILESEXTRAPATHS_prepend_${MACHINE} := "${THISDIR}/${PN}:" 

解决了问题

the issue was the order of direictories added to FILESEXTRAPATHS.
modifing mypgk_1.0.bbappend in meta-b to:

FILESEXTRAPATHS_append_${MACHINE} := "${YOCTOROOT}/meta-a/recipes-my/${PN}/${PN}_rel:"  
FILESEXTRAPATHS_prepend_${MACHINE} := "${THISDIR}/${PN}:" 

solved the issue

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文