资讯详情

NXP官方yocto学习(五)recipes菜谱

菜谱设计成软件包,菜谱文件名遵循惯例<>.bb,其中packagename软件包的名称是菜谱构建的。下划线(_)将版本字符串与包名分开,将版本字符串与修改分开。不要在食谱的任何其他地方使用下划线,比如分隔包名。连字符可用于包名和包版,但应避免后者。连字符不得包含连字符。菜谱名称的例子如下:

avahi_0.6.31.bb

linux-yocto_3.14.bb

wpa-supplicant_2.2.bb

菜谱文件名字段packagename、version和revision分别被BitBake赋值到变量PN、PV和PR。

上面的包通常是下载相应版本的压缩包,但当需要下载源代码包并切换到相应的分支时,包从软件配置管理(Software Configuration Management,SCM)当系统分支中获得且版本与标签无关时,有关菜谱名称的具体问题。

菜谱应该被命名成<packagename>_<scm>.bb,其中scm例如,版本系统的名称,或者。然后,菜谱应该显式地设置PV为PV="<version> git${SRCREV}",其中version是最现在的发布或标签点,SRCREV修订应从软件配置管理中获得。

以python-cryptoplus_git.bb为例:

require python-cryptoplus.inc  inherit setuptools 

当用include当可选包含指令时,BitBake尽量定位包含文件的文件,但即使找不到文件,也会悄悄继续操作。相反,使用required必须包括实现指令的使得BitBake退出错误信息。

类是带有.bbclass文件名元数据层的文件名后缀classes子目录中的元数据文件。inherit只使用类名,它是没有后缀的类文件名的基本名称。它只能用于食谱、附加文件和其他类别的文件。

python-cryptoplus.inc

DESCRIPTION = "PyCryptoPlus is an extension to the Python Crypto module" HOMEPAGE = "https://github.com/doegox/python-cryptoplus" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=51c9a5b8457c0adeb11e1946915de2f2"  SRC_URI = "git://github.com/doegox/python-cryptoplus;protocol=http" SRCREV = "a5a1f8aecce4ddf476b2d80b586822d9e91eeb7d" S = "${WORKDIR}/git"   do_compile[noexec] = "1"  BBCLASSEXTEND = "native nativesdk"

(Descriptive Metadata)提供关于食谱及其构建的软件包的信息。 ·SUMMARY(摘要):简短描述一行(最多80个字符长度)。 ·DESCRIPTION(描述):扩展(可能多行长度),包及其提供的细节描述。 ·AUTHOR(作者):以AUTHOR="Santa Claus<santa@northpole.com>"作者的名字和邮箱地址,形式的软件包(不是菜谱)。这可以是多个作者的列表。 ·HOMEPAGE(主页):以http://开头的URL,这里托管软件包。 ·BUGTRACKER(缺陷跟踪):以http://开头的URL,缺陷跟踪系统指向项目。

包数据库(package database)额外的维护信息。但并非所有的包管理系统都支持这些设置。

这部分元数据允许构建系统自动跟踪开源许可要求。这些信息对所有包都是强制性的。

·LICENSE(许可):本软件包的许可(或多个许可)名称。在大多数情况下,只适用一个许可证,但一些开源软件包使用多个许可证。这些可以是允许包用户从许可证中选择一个双许可证,或者在软件包的部分授权不同的多个许可证。双重许可通过管道符号(|)指定连接许可名称。许可是通过的&指定连接许可名称。构建系统还支持复杂的逻辑许可算术,如GLv2&(LGPLv2.1|MPL-1.1|BSD)。 ·LIC_FILES_CHECKSUM:该变量允许跟踪许可文件本身的变化。变量包括、许可文件和各自验证的空间分隔列表。软件包源文件获取并解压后,构建系统通过计算和验证许可文件或许可文件的部分,并与提供的验证和比较来验证许可证。

·PROVIDES(提供):一个或多个额外包名的空格分隔列表通常用于抽象配置。 ·DEPENDS(依赖):在这个包可以构建之前必须构建的空格分隔列表。

·PN:包名。这个变量值是由BitBake从菜谱文件的基本名称中获取。对于大多数包来说,这是正确和足够的。有些包可能需要调整这个值。例如,交叉工具链应用-例如gcc-cross,目标架构被添加到他们的名字中。 ·PV:包版,是由BitBake从食谱文件的基本名称中获得。这个值是正确的,足够的,除了直接从源仓库建造的包。对于从软件配置管理中构建的包,8.1.1小节解释了如何正确设置PV。 ·PR:包修订。默认修订是r0。在过去,BitBake要求您在每次食谱变更时添加修改,以触发重建。然而,新的签名处理器现在计算包含函数的菜谱元数据的签名。现在,构建系统完全依赖于签名来重建。 为了正确命名包,添加包PR值可能仍然是必要的,因为它使包管理器能够正确升级包的维护数据库。在过去,维护是通过使用的PRINC但是这个方法已经证明是易于出错的,所以PRINC已经被弃用并且被PR service所替代。PR service是基于签名来计算PR的修订服务器。

        ·SRC_URI:用于从其下载源代码、补丁和其他文件的URI空格分隔列表。         ·SRCREV:用于从源代码控制管理系统下载所用的源修订。         ·SRCDATE:源代码日期。这个变量仅仅当源是从软件配置管理中获取而来时才适用。         ·S:在构建环境中的、构建系统把未解压的源代码放在其中的目录位置。默认位置依赖于菜谱名和版本:${WORKDIR}/${PN}-${PV}。默认位置对于几乎所有从文件包中构建的包来说都是合适的。对于直接从软件配置管理中构建的包来说,你需要显式地设置这个变量,例如用于GIT仓库的${WORKDIR}/git。         ·B:在构建环境中的、构建系统把在构建中创建的对象放入其中的目录位置。默认是与S相同的:${WORKDIR}/${PN}-${PV}。很多软件包是在树(in tree)中或者在位置(in location)中被构建的,把对象放在源树中。用GNU Autotools来构建包的菜谱、Linux内核和交叉工具链应用分离源和构建目录。

        ·LDFLAGS:传到链接器的选项。默认设置依赖于构建系统在构建什么:当为目标构建时,它是TARGET_LDFLAGS;当为构建主机构建时,它是BUILD_LDFLAGS;当为主机构建SDK时,它是BUILDSDK_LDFLAGS。你通常不完全覆盖这个变量而是向其增加选项。

        以android-tools-avbtool.bb为例:

inherit deploy

DESCRIPTION = "Android Verify Boot sign tool from Android external/avb"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
SRC_URI = " \
        git://android.googlesource.com/platform/external/avb;protocol=https \
        file://0001-security-boot-add-avbtool-support-hsm.patch \
        file://tmp.patch \
"
SRCREV = "c68f082d910b674f9e5ecf05ebe77432dbbfe0b6"

SRC_URI[sha256sum] = "833893127582352d05d925e36a2ba82d7837105ec8915cd82c7ba9abdddcf680"
SRC_URI[md5sum] = "1935b6e637d9413cc48115e7602dec4f"
S = "${WORKDIR}/git"

do_compile () {
}

do_install () {
}

do_deploy () {
    install -d ${DEPLOYDIR}
    install -m 755 ${S}/avbtool -t ${DEPLOYDIR}
}

addtask deploy before do_build after do_compile
[wangyb@wangyb-VirtualBox:android-tools]$ ls android-tools-avbtool
0001-security-boot-add-avbtool-support-hsm.patch  tmp.patch

        编译时源码下载位置:downloads/git2/android.googlesource.com.platform.external.avb

[wangyb@wangyb-VirtualBox:android.googlesource.com.platform.external.avb]$ ls -a
.   Android.bp  avbtool.py    .clang-format  examples  .gitignore  libavb_ab   libavb_user  METADATA                MODULE_LICENSE_BSD  OWNERS         pylintrc   test          tools
..  avbtool     boot_control  docs           .git      libavb      libavb_atx  LICENSE      MODULE_LICENSE_APACHE2  MODULE_LICENSE_MIT  PREUPLOAD.cfg  README.md  TEST_MAPPING

        使用时切换分支到:c68f082d910b674f9e5ecf05ebe77432dbbfe0b6

commit c68f082d910b674f9e5ecf05ebe77432dbbfe0b6
Author: David Zeuthen <zeuthen@google.com>
Date:   Fri Mar 31 17:22:35 2017 -0400

    avbtool: Drop dependency on Crypto.PublicKey.RSA.
    
    Apparently this is not supported by the Android builders. Instead use
    'openssl rsa' to extract the modulus, exponent, and key size. It's not
    very pretty but it works.
    
    Bug: 36809096
    Test: All unit tests pass.
    Test: Manually tested on UEFI-based bootloader.
    Change-Id: If3f363d356968dda49856aed9308db48f9daf351

标签: 2472d05po光电传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台