diff options
Diffstat (limited to 'external/poky/meta/recipes-bsp/u-boot')
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch | 59 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch | 143 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/files/remove-redundant-yyloc-global.patch | 27 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/libubootenv_0.2.bb | 27 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot-common.inc | 23 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot-common_2018.07.inc | 18 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.07.bb | 34 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb | 29 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot-tools.inc | 66 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot-tools_2020.01.bb | 2 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot.inc | 133 | ||||
-rw-r--r-- | external/poky/meta/recipes-bsp/u-boot/u-boot_2020.01.bb (renamed from external/poky/meta/recipes-bsp/u-boot/u-boot_2018.07.bb) | 2 |
12 files changed, 262 insertions, 301 deletions
diff --git a/external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch b/external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch deleted file mode 100644 index fed3c3dc..00000000 --- a/external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 7346c1e192d63cd35f99c7e845e53c5d4d0bdc24 Mon Sep 17 00:00:00 2001 -From: Teddy Reed <teddy.reed@gmail.com> -Date: Sat, 9 Jun 2018 11:45:20 -0400 -Subject: [PATCH] vboot: Do not use hashed-strings offset - -The hashed-strings signature property includes two uint32_t values. -The first is unneeded as there should never be a start offset into the -strings region. The second, the size, is needed because the added -signature node appends to this region. - -See tools/image-host.c, where a static 0 value is used for the offset. - -Signed-off-by: Teddy Reed <teddy.reed@gmail.com> -Reviewed-by: Simon Glass <sjg@chromium.org> - -Upstream-Status: Backport[http://git.denx.de/?p=u-boot.git;a=commit; - h=7346c1e192d63cd35f99c7e845e53c5d4d0bdc24] - -CVE: CVE-2018-1000205 - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - common/image-sig.c | 7 +++++-- - tools/image-host.c | 1 + - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/common/image-sig.c b/common/image-sig.c -index 8d2fd10..5a269d3 100644 ---- a/common/image-sig.c -+++ b/common/image-sig.c -@@ -377,8 +377,11 @@ int fit_config_check_sig(const void *fit, int noffset, int required_keynode, - /* Add the strings */ - strings = fdt_getprop(fit, noffset, "hashed-strings", NULL); - if (strings) { -- fdt_regions[count].offset = fdt_off_dt_strings(fit) + -- fdt32_to_cpu(strings[0]); -+ /* -+ * The strings region offset must be a static 0x0. -+ * This is set in tool/image-host.c -+ */ -+ fdt_regions[count].offset = fdt_off_dt_strings(fit); - fdt_regions[count].size = fdt32_to_cpu(strings[1]); - count++; - } -diff --git a/tools/image-host.c b/tools/image-host.c -index 8e43671..be2d59b 100644 ---- a/tools/image-host.c -+++ b/tools/image-host.c -@@ -135,6 +135,7 @@ static int fit_image_write_sig(void *fit, int noffset, uint8_t *value, - - ret = fdt_setprop(fit, noffset, "hashed-nodes", - region_prop, region_proplen); -+ /* This is a legacy offset, it is unused, and must remain 0. */ - strdata[0] = 0; - strdata[1] = cpu_to_fdt32(string_size); - if (!ret) { --- -2.7.4 - diff --git a/external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch b/external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch deleted file mode 100644 index bb79af1c..00000000 --- a/external/poky/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 72239fc85f3eda078547956608c063ab965e90e9 Mon Sep 17 00:00:00 2001 -From: Teddy Reed <teddy.reed@gmail.com> -Date: Sat, 9 Jun 2018 11:38:05 -0400 -Subject: [PATCH] vboot: Add FIT_SIGNATURE_MAX_SIZE protection - -This adds a new config value FIT_SIGNATURE_MAX_SIZE, which controls the -max size of a FIT header's totalsize field. The field is checked before -signature checks are applied to protect from reading past the intended -FIT regions. - -This field is not part of the vboot signature so it should be sanity -checked. If the field is corrupted then the structure or string region -reads may have unintended behavior, such as reading from device memory. -A default value of 256MB is set and intended to support most max storage -sizes. - -Suggested-by: Simon Glass <sjg@chromium.org> -Signed-off-by: Teddy Reed <teddy.reed@gmail.com> -Reviewed-by: Simon Glass <sjg@chromium.org> - -Upstream-Status: Backport[http://git.denx.de/?p=u-boot.git;a=commit; - h=72239fc85f3eda078547956608c063ab965e90e9] - -CVE: CVE-2018-1000205 - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - Kconfig | 10 ++++++++++ - common/image-sig.c | 5 +++++ - test/py/tests/test_vboot.py | 33 +++++++++++++++++++++++++++++++++ - tools/Makefile | 1 + - 4 files changed, 49 insertions(+) - -diff --git a/Kconfig b/Kconfig -index 5a82c95..c8b86cd 100644 ---- a/Kconfig -+++ b/Kconfig -@@ -267,6 +267,16 @@ config FIT_SIGNATURE - format support in this case, enable it using - CONFIG_IMAGE_FORMAT_LEGACY. - -+config FIT_SIGNATURE_MAX_SIZE -+ hex "Max size of signed FIT structures" -+ depends on FIT_SIGNATURE -+ default 0x10000000 -+ help -+ This option sets a max size in bytes for verified FIT uImages. -+ A sane value of 256MB protects corrupted DTB structures from overlapping -+ device memory. Assure this size does not extend past expected storage -+ space. -+ - config FIT_VERBOSE - bool "Show verbose messages when FIT images fail" - help -diff --git a/common/image-sig.c b/common/image-sig.c -index f65d883..8d2fd10 100644 ---- a/common/image-sig.c -+++ b/common/image-sig.c -@@ -156,6 +156,11 @@ static int fit_image_setup_verify(struct image_sign_info *info, - { - char *algo_name; - -+ if (fdt_totalsize(fit) > CONFIG_FIT_SIGNATURE_MAX_SIZE) { -+ *err_msgp = "Total size too large"; -+ return 1; -+ } -+ - if (fit_image_hash_get_algo(fit, noffset, &algo_name)) { - *err_msgp = "Can't get hash algo property"; - return -1; -diff --git a/test/py/tests/test_vboot.py b/test/py/tests/test_vboot.py -index ee939f2..3d25ec3 100644 ---- a/test/py/tests/test_vboot.py -+++ b/test/py/tests/test_vboot.py -@@ -26,6 +26,7 @@ Tests run with both SHA1 and SHA256 hashing. - - import pytest - import sys -+import struct - import u_boot_utils as util - - @pytest.mark.boardspec('sandbox') -@@ -105,6 +106,26 @@ def test_vboot(u_boot_console): - util.run_and_log(cons, [mkimage, '-F', '-k', tmpdir, '-K', dtb, - '-r', fit]) - -+ def replace_fit_totalsize(size): -+ """Replace FIT header's totalsize with something greater. -+ -+ The totalsize must be less than or equal to FIT_SIGNATURE_MAX_SIZE. -+ If the size is greater, the signature verification should return false. -+ -+ Args: -+ size: The new totalsize of the header -+ -+ Returns: -+ prev_size: The previous totalsize read from the header -+ """ -+ total_size = 0 -+ with open(fit, 'r+b') as handle: -+ handle.seek(4) -+ total_size = handle.read(4) -+ handle.seek(4) -+ handle.write(struct.pack(">I", size)) -+ return struct.unpack(">I", total_size)[0] -+ - def test_with_algo(sha_algo): - """Test verified boot with the given hash algorithm. - -@@ -146,6 +167,18 @@ def test_vboot(u_boot_console): - util.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', tmpdir, - '-k', dtb]) - -+ # Replace header bytes -+ bcfg = u_boot_console.config.buildconfig -+ max_size = int(bcfg.get('config_fit_signature_max_size', 0x10000000), 0) -+ existing_size = replace_fit_totalsize(max_size + 1) -+ run_bootm(sha_algo, 'Signed config with bad hash', 'Bad Data Hash', False) -+ cons.log.action('%s: Check overflowed FIT header totalsize' % sha_algo) -+ -+ # Replace with existing header bytes -+ replace_fit_totalsize(existing_size) -+ run_bootm(sha_algo, 'signed config', 'dev+', True) -+ cons.log.action('%s: Check default FIT header totalsize' % sha_algo) -+ - # Increment the first byte of the signature, which should cause failure - sig = util.run_and_log(cons, 'fdtget -t bx %s %s value' % - (fit, sig_node)) -diff --git a/tools/Makefile b/tools/Makefile -index 5dd33ed..0c3341e 100644 ---- a/tools/Makefile -+++ b/tools/Makefile -@@ -133,6 +133,7 @@ ifdef CONFIG_FIT_SIGNATURE - # This affects include/image.h, but including the board config file - # is tricky, so manually define this options here. - HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE -+HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE_MAX_SIZE=$(CONFIG_FIT_SIGNATURE_MAX_SIZE) - endif - - ifdef CONFIG_SYS_U_BOOT_OFFS --- -2.7.4 - diff --git a/external/poky/meta/recipes-bsp/u-boot/files/remove-redundant-yyloc-global.patch b/external/poky/meta/recipes-bsp/u-boot/files/remove-redundant-yyloc-global.patch new file mode 100644 index 00000000..2a184e57 --- /dev/null +++ b/external/poky/meta/recipes-bsp/u-boot/files/remove-redundant-yyloc-global.patch @@ -0,0 +1,27 @@ +From 018921ee79d3f30893614b3b2b63b588d8544f73 Mon Sep 17 00:00:00 2001 +From: Peter Robinson <pbrobinson@gmail.com> +Date: Thu, 30 Jan 2020 09:37:15 +0000 +Subject: [PATCH] Remove redundant YYLOC global declaration + +Same as the upstream fix for building dtc with gcc 10. + +Signed-off-by: Peter Robinson <pbrobinson@gmail.com> +--- + scripts/dtc/dtc-lexer.l | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l +index fd825ebba6..24af549977 100644 +--- a/scripts/dtc/dtc-lexer.l ++++ b/scripts/dtc/dtc-lexer.l +@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n + #include "srcpos.h" + #include "dtc-parser.tab.h" + +-YYLTYPE yylloc; + extern bool treesource_error; + + /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ +-- +2.26.2 + diff --git a/external/poky/meta/recipes-bsp/u-boot/libubootenv_0.2.bb b/external/poky/meta/recipes-bsp/u-boot/libubootenv_0.2.bb new file mode 100644 index 00000000..ea29b668 --- /dev/null +++ b/external/poky/meta/recipes-bsp/u-boot/libubootenv_0.2.bb @@ -0,0 +1,27 @@ +SUMMARY = "U-Boot libraries and tools to access environment" + +DESCRIPTION = "This package contains tools and libraries to read \ +and modify U-Boot environment. \ +It provides a hardware-independent replacement for fw_printenv/setenv utilities \ +provided by U-Boot" + +HOMEPAGE = "https://github.com/sbabic/libubootenv" +LICENSE = "LGPL-2.1" +LIC_FILES_CHKSUM = "file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c" +SECTION = "libs" + +PV = "0.2+git${SRCPV}" +SRC_URI = "git://github.com/sbabic/libubootenv;protocol=https" +SRCREV = "f4b9cde3815abe84a98079cedd515283ea08c16b" + +S = "${WORKDIR}/git" + +inherit cmake lib_package + +EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release" + +DEPENDS = "zlib" +PROVIDES += "u-boot-fw-utils" +RPROVIDES_${PN}-bin += "u-boot-fw-utils" + +BBCLASSEXTEND = "native" diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot-common.inc b/external/poky/meta/recipes-bsp/u-boot/u-boot-common.inc new file mode 100644 index 00000000..4a17894c --- /dev/null +++ b/external/poky/meta/recipes-bsp/u-boot/u-boot-common.inc @@ -0,0 +1,23 @@ +HOMEPAGE = "http://www.denx.de/wiki/U-Boot/WebHome" +DESCRIPTION = "U-Boot, a boot loader for Embedded boards based on PowerPC, \ +ARM, MIPS and several other processors, which can be installed in a boot \ +ROM and used to initialize and test the hardware or to download and run \ +application code." +SECTION = "bootloaders" +DEPENDS += "flex-native bison-native" + +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e" +PE = "1" + +# We use the revision in order to avoid having to fetch it from the +# repo during parse +SRCREV = "303f8fed261020c1cb7da32dad63b610bf6873dd" + +SRC_URI = "git://git.denx.de/u-boot.git \ + file://remove-redundant-yyloc-global.patch \ + " + +S = "${WORKDIR}/git" +B = "${WORKDIR}/build" +do_configure[cleandirs] = "${B}" diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot-common_2018.07.inc b/external/poky/meta/recipes-bsp/u-boot/u-boot-common_2018.07.inc deleted file mode 100644 index 22b44dcc..00000000 --- a/external/poky/meta/recipes-bsp/u-boot/u-boot-common_2018.07.inc +++ /dev/null @@ -1,18 +0,0 @@ -HOMEPAGE = "http://www.denx.de/wiki/U-Boot/WebHome" -SECTION = "bootloaders" -DEPENDS += "flex-native bison-native" - -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e" -PE = "1" - -# We use the revision in order to avoid having to fetch it from the -# repo during parse -SRCREV = "8c5d4fd0ec222701598a27b26ab7265d4cee45a3" - -SRC_URI = "git://git.denx.de/u-boot.git \ - file://CVE-2018-1000205-1.patch \ - file://CVE-2018-1000205-2.patch \ -" - -S = "${WORKDIR}/git" diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.07.bb b/external/poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.07.bb deleted file mode 100644 index 52c13e75..00000000 --- a/external/poky/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.07.bb +++ /dev/null @@ -1,34 +0,0 @@ -require u-boot-common_${PV}.inc - -SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities" -DEPENDS += "mtd-utils" - -INSANE_SKIP_${PN} = "already-stripped" -EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" V=1' -EXTRA_OEMAKE_class-cross = 'HOSTCC="${CC} ${CFLAGS} ${LDFLAGS}" V=1' - -inherit uboot-config - -do_compile () { - oe_runmake ${UBOOT_MACHINE} - oe_runmake envtools -} - -do_install () { - install -d ${D}${base_sbindir} - install -d ${D}${sysconfdir} - install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv - install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv - install -m 0644 ${S}/tools/env/fw_env.config ${D}${sysconfdir}/fw_env.config -} - -do_install_class-cross () { - install -d ${D}${bindir_cross} - install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_printenv - install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv -} - -SYSROOT_DIRS_append_class-cross = " ${bindir_cross}" - -PACKAGE_ARCH = "${MACHINE_ARCH}" -BBCLASSEXTEND = "cross" diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb b/external/poky/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb deleted file mode 100644 index 08bff1d1..00000000 --- a/external/poky/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb +++ /dev/null @@ -1,29 +0,0 @@ -require u-boot-common_${PV}.inc - -SUMMARY = "U-Boot bootloader image creation tool" -DEPENDS += "openssl" - -EXTRA_OEMAKE_class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1' -EXTRA_OEMAKE_class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1' -EXTRA_OEMAKE_class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1' - -do_compile () { - oe_runmake sandbox_defconfig - - # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and - # generating it requires bin2header tool, which for target build - # is built with target tools and thus cannot be executed on host. - sed -i "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" .config - - oe_runmake cross_tools NO_SDL=1 -} - -do_install () { - install -d ${D}${bindir} - install -m 0755 tools/mkimage ${D}${bindir}/uboot-mkimage - ln -sf uboot-mkimage ${D}${bindir}/mkimage -} - -RDEPENDS_${PN} += "dtc" - -BBCLASSEXTEND = "native nativesdk" diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot-tools.inc b/external/poky/meta/recipes-bsp/u-boot/u-boot-tools.inc new file mode 100644 index 00000000..8ae290ac --- /dev/null +++ b/external/poky/meta/recipes-bsp/u-boot/u-boot-tools.inc @@ -0,0 +1,66 @@ +SUMMARY = "U-Boot bootloader tools" +DEPENDS += "openssl" + +PROVIDES = "${MLPREFIX}u-boot-mkimage ${MLPREFIX}u-boot-mkenvimage" +PROVIDES_class-native = "u-boot-mkimage-native u-boot-mkenvimage-native" + +PACKAGES += "${PN}-mkimage ${PN}-mkenvimage" + +# Required for backward compatibility with "u-boot-mkimage-xxx.bb" +RPROVIDES_${PN}-mkimage = "u-boot-mkimage" +RREPLACES_${PN}-mkimage = "u-boot-mkimage" +RCONFLICTS_${PN}-mkimage = "u-boot-mkimage" + +EXTRA_OEMAKE_class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1' +EXTRA_OEMAKE_class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1' +EXTRA_OEMAKE_class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1' + +SED_CONFIG_EFI = '-e "s/CONFIG_EFI_LOADER=.*/# CONFIG_EFI_LOADER is not set/"' +SED_CONFIG_EFI_x86 = '' +SED_CONFIG_EFI_x86-64 = '' +SED_CONFIG_EFI_arm = '' +SED_CONFIG_EFI_armeb = '' +SED_CONFIG_EFI_aarch64 = '' + +do_compile () { + oe_runmake -C ${S} sandbox_defconfig O=${B} + + # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and + # generating it requires bin2header tool, which for target build + # is built with target tools and thus cannot be executed on host. + sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config + + oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B} +} + +do_install () { + install -d ${D}${bindir} + + # mkimage + install -m 0755 tools/mkimage ${D}${bindir}/uboot-mkimage + ln -sf uboot-mkimage ${D}${bindir}/mkimage + + # mkenvimage + install -m 0755 tools/mkenvimage ${D}${bindir}/uboot-mkenvimage + ln -sf uboot-mkenvimage ${D}${bindir}/mkenvimage + + # dumpimage + install -m 0755 tools/dumpimage ${D}${bindir}/uboot-dumpimage + ln -sf uboot-dumpimage ${D}${bindir}/dumpimage + + # fit_check_sign + install -m 0755 tools/fit_check_sign ${D}${bindir}/uboot-fit_check_sign + ln -sf uboot-fit_check_sign ${D}${bindir}/fit_check_sign +} + +ALLOW_EMPTY_${PN} = "1" +FILES_${PN} = "" +FILES_${PN}-mkimage = "${bindir}/uboot-mkimage ${bindir}/mkimage ${bindir}/uboot-dumpimage ${bindir}/dumpimage ${bindir}/uboot-fit_check_sign ${bindir}/fit_check_sign" +FILES_${PN}-mkenvimage = "${bindir}/uboot-mkenvimage ${bindir}/mkenvimage" + +RDEPENDS_${PN}-mkimage += "dtc" +RDEPENDS_${PN} += "${PN}-mkimage ${PN}-mkenvimage" +RDEPENDS_${PN}_class-native = "" + +BBCLASSEXTEND = "native nativesdk" + diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot-tools_2020.01.bb b/external/poky/meta/recipes-bsp/u-boot/u-boot-tools_2020.01.bb new file mode 100644 index 00000000..7eaf721c --- /dev/null +++ b/external/poky/meta/recipes-bsp/u-boot/u-boot-tools_2020.01.bb @@ -0,0 +1,2 @@ +require u-boot-common.inc +require u-boot-tools.inc diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot.inc b/external/poky/meta/recipes-bsp/u-boot/u-boot.inc index 48fbc572..23cc795c 100644 --- a/external/poky/meta/recipes-bsp/u-boot/u-boot.inc +++ b/external/poky/meta/recipes-bsp/u-boot/u-boot.inc @@ -1,17 +1,17 @@ SUMMARY = "Universal Boot Loader for embedded devices" PROVIDES = "virtual/bootloader" -B = "${WORKDIR}/build" - PACKAGE_ARCH = "${MACHINE_ARCH}" -inherit uboot-config uboot-extlinux-config uboot-sign deploy +DEPENDS += "kern-tools-native" + +inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1 python3native -DEPENDS += "swig-native python-native" +DEPENDS += "swig-native" EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" V=1' EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"' -EXTRA_OEMAKE += 'PYTHON=nativepython STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}' +EXTRA_OEMAKE += 'STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}' PACKAGECONFIG ??= "openssl" # u-boot will compile its own tools during the build, with specific @@ -60,12 +60,56 @@ UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}" UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}" UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}" +# Default name of u-boot initial env, but enable individual recipes to change +# this value. +UBOOT_INITIAL_ENV ?= "${PN}-initial-env" + # U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf # to find EXTLINUX conf file. UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux" UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf" UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${PR}" +# returns all the elements from the src uri that are .cfg files +def find_cfgs(d): + sources=src_patches(d, True) + sources_list=[] + for s in sources: + if s.endswith('.cfg'): + sources_list.append(s) + + return sources_list + +do_configure () { + if [ -n "${UBOOT_CONFIG}" ]; then + unset i j + for config in ${UBOOT_MACHINE}; do + i=$(expr $i + 1); + for type in ${UBOOT_CONFIG}; do + j=$(expr $j + 1); + if [ $j -eq $i ]; then + oe_runmake -C ${S} O=${B}/${config} ${config} + if [ -n "${@' '.join(find_cfgs(d))}" ]; then + merge_config.sh -m -O ${B}/${config} ${B}/${config}/.config ${@" ".join(find_cfgs(d))} + oe_runmake -C ${S} O=${B}/${config} oldconfig + fi + fi + done + unset j + done + unset i + DEVTOOL_DISABLE_MENUCONFIG=true + else + if [ -n "${UBOOT_MACHINE}" ]; then + oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE} + else + oe_runmake -C ${S} O=${B} oldconfig + fi + merge_config.sh -m .config ${@" ".join(find_cfgs(d))} + cml1_do_configure + fi +} + do_compile () { if [ "${@bb.utils.filter('DISTRO_FEATURES', 'ld-is-gold', d)}" ]; then sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' ${S}/config.mk @@ -81,7 +125,7 @@ do_compile () { echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion fi - if [ -n "${UBOOT_CONFIG}" ] + if [ -n "${UBOOT_CONFIG}" -o -n "${UBOOT_DELTA_CONFIG}" ] then unset i j k for config in ${UBOOT_MACHINE}; do @@ -90,7 +134,6 @@ do_compile () { j=$(expr $j + 1); if [ $j -eq $i ] then - oe_runmake -C ${S} O=${B}/${config} ${config} oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET} for binary in ${UBOOT_BINARIES}; do k=$(expr $k + 1); @@ -98,6 +141,13 @@ do_compile () { cp ${B}/${config}/${binary} ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} fi done + + # Generate the uboot-initial-env + if [ -n "${UBOOT_INITIAL_ENV}" ]; then + oe_runmake -C ${S} O=${B}/${config} u-boot-initial-env + cp ${B}/${config}/u-boot-initial-env ${B}/${config}/u-boot-initial-env-${type} + fi + unset k fi done @@ -105,8 +155,12 @@ do_compile () { done unset i else - oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE} oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_TARGET} + + # Generate the uboot-initial-env + if [ -n "${UBOOT_INITIAL_ENV}" ]; then + oe_runmake -C ${S} O=${B} u-boot-initial-env + fi fi } @@ -120,19 +174,32 @@ do_install () { j=$(expr $j + 1); if [ $j -eq $i ] then - install -d ${D}/boot - install -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} + install -D -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type} ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY} + + # Install the uboot-initial-env + if [ -n "${UBOOT_INITIAL_ENV}" ]; then + install -D -m 644 ${B}/${config}/u-boot-initial-env-${type} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${type} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV} + fi fi done unset j done unset i else - install -d ${D}/boot - install -m 644 ${B}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE} + install -D -m 644 ${B}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE} ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY} + + # Install the uboot-initial-env + if [ -n "${UBOOT_INITIAL_ENV}" ]; then + install -D -m 644 ${B}/u-boot-initial-env ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV}-${MACHINE} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${D}/${sysconfdir}/${UBOOT_INITIAL_ENV} + fi fi if [ -n "${UBOOT_ELF}" ] @@ -201,7 +268,17 @@ do_install () { } -FILES_${PN} = "/boot ${sysconfdir}" +PACKAGE_BEFORE_PN += "${PN}-env" + +RPROVIDES_${PN}-env += "u-boot-default-env" +ALLOW_EMPTY_${PN}-env = "1" +FILES_${PN}-env = " \ + ${@ '${sysconfdir}/${UBOOT_INITIAL_ENV}*' if d.getVar('UBOOT_INITIAL_ENV') else ''} \ + ${sysconfdir}/fw_env.config \ +" + +FILES_${PN} = "/boot ${datadir}" +RDEPENDS_${PN} += "${PN}-env" do_deploy () { if [ -n "${UBOOT_CONFIG}" ] @@ -212,25 +289,47 @@ do_deploy () { j=$(expr $j + 1); if [ $j -eq $i ] then - install -d ${DEPLOYDIR} - install -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} + install -D -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} cd ${DEPLOYDIR} ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}-${type} ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK} ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}-${type} ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY} + + # Deploy the uboot-initial-env + if [ -n "${UBOOT_INITIAL_ENV}" ]; then + install -D -m 644 ${B}/${config}/u-boot-initial-env-${type} ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} + cd ${DEPLOYDIR} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${MACHINE}-${type} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${type} + fi fi done unset j done unset i else - install -d ${DEPLOYDIR} - install -m 644 ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE} + install -D -m 644 ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE} + cd ${DEPLOYDIR} rm -f ${UBOOT_BINARY} ${UBOOT_SYMLINK} ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK} ln -sf ${UBOOT_IMAGE} ${UBOOT_BINARY} + + # Deploy the uboot-initial-env + if [ -n "${UBOOT_INITIAL_ENV}" ]; then + install -D -m 644 ${B}/u-boot-initial-env ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} + cd ${DEPLOYDIR} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${UBOOT_INITIAL_ENV}-${MACHINE} + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${PV}-${PR} ${UBOOT_INITIAL_ENV} + fi + fi + + if [ -e ${WORKDIR}/fw_env.config ] ; then + install -D -m 644 ${WORKDIR}/fw_env.config ${DEPLOYDIR}/fw_env.config-${MACHINE}-${PV}-${PR} + cd ${DEPLOYDIR} + ln -sf fw_env.config-${MACHINE}-${PV}-${PR} fw_env.config-${MACHINE} + ln -sf fw_env.config-${MACHINE}-${PV}-${PR} fw_env.config fi if [ -n "${UBOOT_ELF}" ] diff --git a/external/poky/meta/recipes-bsp/u-boot/u-boot_2018.07.bb b/external/poky/meta/recipes-bsp/u-boot/u-boot_2020.01.bb index 37c21dca..02d67c0d 100644 --- a/external/poky/meta/recipes-bsp/u-boot/u-boot_2018.07.bb +++ b/external/poky/meta/recipes-bsp/u-boot/u-boot_2020.01.bb @@ -1,4 +1,4 @@ -require u-boot-common_${PV}.inc +require u-boot-common.inc require u-boot.inc DEPENDS += "bc-native dtc-native" |