为什么我无法从Yocto食谱中将文件复制到rootFS中

时间:2019-01-08 22:18:58

标签: yocto bitbake rootfs

我提出了一个较新版本的Linux(我们在较旧的buildroot系统上运行3.14),并尝试添加一个较旧版本的mplayer作为解决方法,直到我们的应用程序可以更新以与较新的版本一起使用。 /替代视频播放器。我添加了一个新配方,并将该配方添加到了我的版本中,但是似乎无法获得可以正常运行的do_install。

仅出于一些背景信息,我正在运行Poky的Pyro版本。目标是i.MX6。

这是我写的原始食谱。


    DESCRIPTION = "Load an older version of mplayer as a workaround until a new media player can be used."
    PRIORITY = "optional"
    LICENSE = "CLOSED"

    FILES_${PN} += "/usr/bin/mplayer \
        /usr/lib/libbz2.so.1.0.6 \
        /usr/lib/libfribidi.so.0.3.5"

    SRC_URI = "file://mplayer \
        file://libbz2.so.1.0.6 \
        file://libfribidi.so.0.3.5"

    do_install() {
        ln -s /usr/lib/libbz2.so.1.0.6 ${D}/usr/lib/libbz2.so
        ln -s /usr/lib/libfribidi.so.0.3.5 ${D}/usr/lib/libfribidi.so
    }

我还尝试了一个精简版本,该版本只能复制到旧的mplayer可执行文件上。请注意,我没有使用install,因为这提示了“ QA问题:已被剥离”错误,即使在我的local.conf中添加“ INSANE_SKIP_qwt_append =”已经剥离”也无法解决该问题。


    DESCRIPTION = "Load an older version of mplayer as a workaround until a new media player can be used."
    PRIORITY = "optional"
    LICENSE = "CLOSED"

    FILES_${PN} += "/usr/bin/mplayer"

    SRC_URI = "file://mplayer"

    do_install() {
        cp ${WORKDIR}/mplayer ${D}${base_bindir}/mplayer
    }

在原始配方中,我看到它无法创建链接。将其更改为相对路径(添加-r)没有区别。


    | ln: failed to create symbolic link '/home/gen-ccm-root/workdir/tools/poky/build-dev/tmp/work/armv7ahf-neon-poky-linux-gnueabi/temp-mplayer/1.0-r0/image/usr/lib/libbz2.so': No such file or directory
    | WARNING: exit code 1 from a shell command.
    | ERROR: Function failed: do_install (log file is located at /home/gen-ccm-root/workdir/tools/poky/build-dev/tmp/work/armv7ahf-neon-poky-linux-gnueabi/temp-mplayer/1.0-r0/temp/log.do_install.31008)
    ERROR: Task (/home/gen-ccm-root/workdir/tools/poky/meta-markem-imaje-private-bsp/recipes-core/temp-mplayer/temp-mplayer_1.0.bb:do_install) failed with exit code '1'

在精简版中,我看到以下内容:


    | DEBUG: Executing shell function do_install
    | cp: cannot create regular file '/home/gen-ccm-root/workdir/tools/poky/build-dev/tmp/work/armv7ahf-neon-poky-linux-gnueabi/temp-mplayer/1.0-r0/image/bin/mplayer': No such file or directory
    | WARNING: exit code 1 from a shell command.
    | ERROR: Function failed: do_install (log file is located at /home/gen-ccm-root/workdir/tools/poky/build-dev/tmp/work/armv7ahf-neon-poky-linux-gnueabi/temp-mplayer/1.0-r0/temp/log.do_install.30663)
    ERROR: Task (/home/gen-ccm-root/workdir/tools/poky/meta-markem-imaje-private-bsp/recipes-core/temp-mplayer/temp-mplayer_1.0.bb:do_install) failed with exit code '1'
    NOTE: Tasks Summary: Attempted 2721 tasks of which 2718 didn't need to be rerun and 1 failed.

我不太担心添加ldconfig调用(又是另一天的问题),但是至少希望文件出现在RootFS中,或者至少成功创建映像。如果删除此食谱,则可以构建可用映像并将其刻录到SD卡中,因此我可以确定问题出在此食谱中。

我已经看到了一个问题:Bitbake not installing my file in the rootfs image,并将其用作构建此食谱的基础,但是我显然错过了一些东西。

1 个答案:

答案 0 :(得分:1)

原始配方不会将文件复制到目标位置。您首先需要复制它们,然后创建符号链接。

第二个配方将文件复制到不存在的目录中。首先创建它。