diff options
127 files changed, 1781 insertions, 2455 deletions
diff --git a/meta-selftest/recipes-test/ext-dtb/bbb-dtbs-as-ext.bb b/meta-selftest/recipes-test/ext-dtb/bbb-dtbs-as-ext.bb new file mode 100644 index 0000000000..5055d03e54 --- /dev/null +++ b/meta-selftest/recipes-test/ext-dtb/bbb-dtbs-as-ext.bb | |||
@@ -0,0 +1,29 @@ | |||
1 | SUMMARY = "Boeaglebone Devicetrees" | ||
2 | DESCRIPTION = "Handle the dtc files of the beaglebone-yocto via devicetree.bbclass just for testing purpose" | ||
3 | SECTION = "kernel" | ||
4 | LICENSE = "MIT" | ||
5 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" | ||
6 | |||
7 | inherit devicetree | ||
8 | |||
9 | COMPATIBLE_MACHINE = "^(beaglebone-yocto)$" | ||
10 | |||
11 | # Take a copy of a small devicetree from the kernel's source directory for handling it externally | ||
12 | # Borrowed an example DTB overlay from | ||
13 | # https://raw.githubusercontent.com/beagleboard/linux/refs/heads/5.10/arch/arm/boot/dts/overlays/BBORG_RELAY-00A2.dts | ||
14 | SRC_URI = "\ | ||
15 | file://am335x-bonegreen-ext.dts \ | ||
16 | file://BBORG_RELAY-00A2.dts \ | ||
17 | " | ||
18 | |||
19 | # The am335x-bonegreen-ext.dts needs also the ti directories | ||
20 | DT_INCLUDE:append = " ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts/ti/omap" | ||
21 | |||
22 | # Sym-links are handled as extra configuration nodes in FIT images. | ||
23 | do_install:append() { | ||
24 | ln -sf am335x-bonegreen-ext.dtb "${D}/boot/devicetree/am335x-bonegreen-ext-alias.dtb" | ||
25 | } | ||
26 | |||
27 | do_deploy:append() { | ||
28 | ln -sf am335x-bonegreen-ext.dtb "${DEPLOYDIR}/devicetree/am335x-bonegreen-ext-alias.dtb" | ||
29 | } | ||
diff --git a/meta-selftest/recipes-test/ext-dtb/files/BBORG_RELAY-00A2.dts b/meta-selftest/recipes-test/ext-dtb/files/BBORG_RELAY-00A2.dts new file mode 100644 index 0000000000..9530fa50fe --- /dev/null +++ b/meta-selftest/recipes-test/ext-dtb/files/BBORG_RELAY-00A2.dts | |||
@@ -0,0 +1,49 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0-only | ||
2 | /* | ||
3 | * Copyright (C) 2015 Robert Nelson <robertcnelson@gmail.com> | ||
4 | * Copyright (C) 2019 Amilcar Lucas <amilcar.lucas@iav.de> | ||
5 | */ | ||
6 | |||
7 | /dts-v1/; | ||
8 | /plugin/; | ||
9 | |||
10 | &{/chosen} { | ||
11 | overlays { | ||
12 | BBORG_RELAY-00A2.kernel = __TIMESTAMP__; | ||
13 | }; | ||
14 | }; | ||
15 | |||
16 | &ocp { | ||
17 | P9_41_pinmux { pinctrl-0 = <&P9_41_gpio_pin>;}; | ||
18 | P9_42_pinmux { pinctrl-0 = <&P9_42_gpio_pin>;}; | ||
19 | P9_30_pinmux { pinctrl-0 = <&P9_30_gpio_pin>;}; | ||
20 | P9_27_pinmux { pinctrl-0 = <&P9_27_gpio_pin>;}; | ||
21 | }; | ||
22 | |||
23 | // relay1 | ||
24 | &bone_led_P9_41 { | ||
25 | status = "okay"; | ||
26 | label = "relay1"; | ||
27 | default-state = "keep"; | ||
28 | }; | ||
29 | |||
30 | // relay2 | ||
31 | &bone_led_P9_42 { | ||
32 | status = "okay"; | ||
33 | label = "relay2"; | ||
34 | default-state = "keep"; | ||
35 | }; | ||
36 | |||
37 | // realy3 | ||
38 | &bone_led_P9_30 { | ||
39 | status = "okay"; | ||
40 | label = "relay3"; | ||
41 | default-state = "keep"; | ||
42 | }; | ||
43 | |||
44 | // realy4 | ||
45 | &bone_led_P9_27 { | ||
46 | status = "okay"; | ||
47 | label = "relay4"; | ||
48 | default-state = "keep"; | ||
49 | }; | ||
diff --git a/meta-selftest/recipes-test/ext-dtb/files/am335x-bonegreen-ext.dts b/meta-selftest/recipes-test/ext-dtb/files/am335x-bonegreen-ext.dts new file mode 100644 index 0000000000..a0b39337a9 --- /dev/null +++ b/meta-selftest/recipes-test/ext-dtb/files/am335x-bonegreen-ext.dts | |||
@@ -0,0 +1,14 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0-only | ||
2 | /* | ||
3 | * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/ | ||
4 | */ | ||
5 | /dts-v1/; | ||
6 | |||
7 | #include "am33xx.dtsi" | ||
8 | #include "am335x-bone-common.dtsi" | ||
9 | #include "am335x-bonegreen-common.dtsi" | ||
10 | |||
11 | / { | ||
12 | model = "TI AM335x BeagleBone Green External"; | ||
13 | compatible = "ti,am335x-bone-green", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx"; | ||
14 | }; | ||
diff --git a/meta/classes-recipe/barebox.bbclass b/meta/classes-recipe/barebox.bbclass index 200ba08326..a562dce169 100644 --- a/meta/classes-recipe/barebox.bbclass +++ b/meta/classes-recipe/barebox.bbclass | |||
@@ -12,7 +12,7 @@ PROVIDES += "virtual/bootloader" | |||
12 | 12 | ||
13 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 13 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
14 | 14 | ||
15 | DEPENDS += "bison-native flex-native" | 15 | DEPENDS += "bison-native flex-native lz4-native" |
16 | 16 | ||
17 | S = "${WORKDIR}/barebox-${PV}" | 17 | S = "${WORKDIR}/barebox-${PV}" |
18 | B = "${WORKDIR}/build" | 18 | B = "${WORKDIR}/build" |
diff --git a/meta/classes-recipe/devicetree.bbclass b/meta/classes-recipe/devicetree.bbclass index 1806cb62cb..2a2ac93e9b 100644 --- a/meta/classes-recipe/devicetree.bbclass +++ b/meta/classes-recipe/devicetree.bbclass | |||
@@ -109,7 +109,11 @@ def devicetree_compile(dtspath, includes, d): | |||
109 | ppargs.append("-I{0}".format(i)) | 109 | ppargs.append("-I{0}".format(i)) |
110 | ppargs += ["-o", "{0}.pp".format(dts), dtspath] | 110 | ppargs += ["-o", "{0}.pp".format(dts), dtspath] |
111 | bb.note("Running {0}".format(" ".join(ppargs))) | 111 | bb.note("Running {0}".format(" ".join(ppargs))) |
112 | subprocess.run(ppargs, check = True) | 112 | try: |
113 | subprocess.run(ppargs, check=True, capture_output=True) | ||
114 | except subprocess.CalledProcessError as e: | ||
115 | bb.fatal(f"Command '{' '.join(ppargs)}' failed with return code {e.returncode}\nstdout: {e.stdout.decode()}\nstderr: {e.stderr.decode()}\ndtspath: {os.path.abspath(dtspath)}") | ||
116 | |||
113 | 117 | ||
114 | # determine if the file is an overlay or not (using the preprocessed file) | 118 | # determine if the file is an overlay or not (using the preprocessed file) |
115 | isoverlay = devicetree_source_is_overlay("{0}.pp".format(dts)) | 119 | isoverlay = devicetree_source_is_overlay("{0}.pp".format(dts)) |
@@ -125,7 +129,11 @@ def devicetree_compile(dtspath, includes, d): | |||
125 | dtcargs += ["-o", "{0}.{1}".format(dtname, "dtbo" if isoverlay else "dtb")] | 129 | dtcargs += ["-o", "{0}.{1}".format(dtname, "dtbo" if isoverlay else "dtb")] |
126 | dtcargs += ["-I", "dts", "-O", "dtb", "{0}.pp".format(dts)] | 130 | dtcargs += ["-I", "dts", "-O", "dtb", "{0}.pp".format(dts)] |
127 | bb.note("Running {0}".format(" ".join(dtcargs))) | 131 | bb.note("Running {0}".format(" ".join(dtcargs))) |
128 | subprocess.run(dtcargs, check = True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) | 132 | try: |
133 | subprocess.run(dtcargs, check=True, capture_output=True) | ||
134 | except subprocess.CalledProcessError as e: | ||
135 | bb.fatal(f"Command '{' '.join(dtcargs)}' failed with return code {e.returncode}\nstdout: {e.stdout.decode()}\nstderr: {e.stderr.decode()}\ndtname: {dtname}") | ||
136 | |||
129 | 137 | ||
130 | python devicetree_do_compile() { | 138 | python devicetree_do_compile() { |
131 | import re | 139 | import re |
@@ -144,14 +152,16 @@ python devicetree_do_compile() { | |||
144 | } | 152 | } |
145 | 153 | ||
146 | devicetree_do_install() { | 154 | devicetree_do_install() { |
147 | for DTB_FILE in `ls *.dtb *.dtbo`; do | 155 | for dtb_file in *.dtb *.dtbo; do |
148 | install -Dm 0644 ${B}/${DTB_FILE} ${D}/boot/devicetree/${DTB_FILE} | 156 | [ -e "$dtb_file" ] || continue |
157 | install -Dm 0644 "${B}/$dtb_file" "${D}/boot/devicetree/$dtb_file" | ||
149 | done | 158 | done |
150 | } | 159 | } |
151 | 160 | ||
152 | devicetree_do_deploy() { | 161 | devicetree_do_deploy() { |
153 | for DTB_FILE in `ls *.dtb *.dtbo`; do | 162 | for dtb_file in *.dtb *.dtbo; do |
154 | install -Dm 0644 ${B}/${DTB_FILE} ${DEPLOYDIR}/devicetree/${DTB_FILE} | 163 | [ -e "$dtb_file" ] || continue |
164 | install -Dm 0644 "${B}/$dtb_file" "${DEPLOYDIR}/devicetree/$dtb_file" | ||
155 | done | 165 | done |
156 | } | 166 | } |
157 | addtask deploy before do_build after do_install | 167 | addtask deploy before do_build after do_install |
diff --git a/meta/classes-recipe/kernel-fit-extra-artifacts.bbclass b/meta/classes-recipe/kernel-fit-extra-artifacts.bbclass new file mode 100644 index 0000000000..385fe9895a --- /dev/null +++ b/meta/classes-recipe/kernel-fit-extra-artifacts.bbclass | |||
@@ -0,0 +1,19 @@ | |||
1 | # | ||
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: MIT | ||
5 | # | ||
6 | |||
7 | # Generate and deploy additional artifacts required for FIT image creation. | ||
8 | # To use this class, add it to the KERNEL_CLASSES variable. | ||
9 | |||
10 | inherit kernel-uboot | ||
11 | |||
12 | kernel_do_deploy:append() { | ||
13 | # Provide the kernel artifacts to post processing recipes e.g. for creating a FIT image | ||
14 | uboot_prep_kimage "$deployDir" | ||
15 | # For x86 a setup.bin needs to be include"d in a fitImage as well | ||
16 | if [ -e ${KERNEL_OUTPUT_DIR}/setup.bin ]; then | ||
17 | install -D "${B}/${KERNEL_OUTPUT_DIR}/setup.bin" "$deployDir/" | ||
18 | fi | ||
19 | } | ||
diff --git a/meta/classes-recipe/kernel-fit-image.bbclass b/meta/classes-recipe/kernel-fit-image.bbclass new file mode 100644 index 0000000000..d2eebb88bc --- /dev/null +++ b/meta/classes-recipe/kernel-fit-image.bbclass | |||
@@ -0,0 +1,190 @@ | |||
1 | |||
2 | inherit kernel-arch kernel-artifact-names uboot-config deploy | ||
3 | require conf/image-fitimage.conf | ||
4 | |||
5 | S = "${WORKDIR}/sources" | ||
6 | UNPACKDIR = "${S}" | ||
7 | |||
8 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
9 | |||
10 | # This bbclass requires KERNEL_CLASSES += "kernel-fit-extra-artifacts" | ||
11 | EXCLUDE_FROM_WORLD = "1" | ||
12 | |||
13 | DEPENDS += "\ | ||
14 | u-boot-tools-native dtc-native \ | ||
15 | ${@'kernel-signing-keys-native' if d.getVar('FIT_GENERATE_KEYS') == '1' else ''} \ | ||
16 | " | ||
17 | |||
18 | python () { | ||
19 | image = d.getVar('INITRAMFS_IMAGE') | ||
20 | if image and d.getVar('INITRAMFS_IMAGE_BUNDLE') != '1': | ||
21 | if d.getVar('INITRAMFS_MULTICONFIG'): | ||
22 | mc = d.getVar('BB_CURRENT_MC') | ||
23 | d.appendVarFlag('do_compile', 'mcdepends', ' mc:' + mc + ':${INITRAMFS_MULTICONFIG}:${INITRAMFS_IMAGE}:do_image_complete') | ||
24 | else: | ||
25 | d.appendVarFlag('do_compile', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete') | ||
26 | |||
27 | #check if there are any dtb providers | ||
28 | providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb") | ||
29 | if providerdtb: | ||
30 | d.appendVarFlag('do_compile', 'depends', ' virtual/dtb:do_populate_sysroot') | ||
31 | d.setVar('EXTERNAL_KERNEL_DEVICETREE', "${RECIPE_SYSROOT}/boot/devicetree") | ||
32 | } | ||
33 | |||
34 | do_configure[noexec] = "1" | ||
35 | |||
36 | UBOOT_MKIMAGE_KERNEL_TYPE ?= "kernel" | ||
37 | KERNEL_IMAGEDEST ?= "/boot" | ||
38 | |||
39 | python do_compile() { | ||
40 | import shutil | ||
41 | import oe.fitimage | ||
42 | |||
43 | itsfile = "fit-image.its" | ||
44 | fitname = "fitImage" | ||
45 | kernel_deploydir = d.getVar('DEPLOY_DIR_IMAGE') | ||
46 | kernel_deploysubdir = d.getVar('KERNEL_DEPLOYSUBDIR') | ||
47 | if kernel_deploysubdir: | ||
48 | kernel_deploydir = os.path.join(kernel_deploydir, kernel_deploysubdir) | ||
49 | |||
50 | # Collect all the its nodes before the its file is generated and mkimage gets executed | ||
51 | root_node = oe.fitimage.ItsNodeRootKernel( | ||
52 | d.getVar("FIT_DESC"), d.getVar("FIT_ADDRESS_CELLS"), | ||
53 | d.getVar('HOST_PREFIX'), d.getVar('UBOOT_ARCH'), d.getVar("FIT_CONF_PREFIX"), | ||
54 | oe.types.boolean(d.getVar('UBOOT_SIGN_ENABLE')), d.getVar("UBOOT_SIGN_KEYDIR"), | ||
55 | d.getVar("UBOOT_MKIMAGE"), d.getVar("UBOOT_MKIMAGE_DTCOPTS"), | ||
56 | d.getVar("UBOOT_MKIMAGE_SIGN"), d.getVar("UBOOT_MKIMAGE_SIGN_ARGS"), | ||
57 | d.getVar('FIT_HASH_ALG'), d.getVar('FIT_SIGN_ALG'), d.getVar('FIT_PAD_ALG'), | ||
58 | d.getVar('UBOOT_SIGN_KEYNAME'), | ||
59 | oe.types.boolean(d.getVar('FIT_SIGN_INDIVIDUAL')), d.getVar('UBOOT_SIGN_IMG_KEYNAME') | ||
60 | ) | ||
61 | |||
62 | # Prepare a kernel image section. | ||
63 | shutil.copyfile(os.path.join(kernel_deploydir, "linux.bin"), "linux.bin") | ||
64 | with open(os.path.join(kernel_deploydir, "linux_comp")) as linux_comp_f: | ||
65 | linux_comp = linux_comp_f.read() | ||
66 | root_node.fitimage_emit_section_kernel("kernel-1", "linux.bin", linux_comp, | ||
67 | d.getVar('UBOOT_LOADADDRESS'), d.getVar('UBOOT_ENTRYPOINT'), | ||
68 | d.getVar('UBOOT_MKIMAGE_KERNEL_TYPE'), d.getVar("UBOOT_ENTRYSYMBOL")) | ||
69 | |||
70 | # Prepare a DTB image section | ||
71 | kernel_devicetree = d.getVar('KERNEL_DEVICETREE') | ||
72 | external_kernel_devicetree = d.getVar("EXTERNAL_KERNEL_DEVICETREE") | ||
73 | if kernel_devicetree: | ||
74 | for dtb in kernel_devicetree.split(): | ||
75 | # In deploy_dir the DTBs are without sub-directories also with KERNEL_DTBVENDORED = "1" | ||
76 | dtb_name = os.path.basename(dtb) | ||
77 | |||
78 | # Skip DTB if it's also provided in EXTERNAL_KERNEL_DEVICETREE directory | ||
79 | if external_kernel_devicetree: | ||
80 | ext_dtb_path = os.path.join(external_kernel_devicetree, dtb_name) | ||
81 | if os.path.exists(ext_dtb_path) and os.path.getsize(ext_dtb_path) > 0: | ||
82 | continue | ||
83 | |||
84 | # Copy the dtb or dtbo file into the FIT image assembly directory | ||
85 | shutil.copyfile(os.path.join(kernel_deploydir, dtb_name), dtb_name) | ||
86 | root_node.fitimage_emit_section_dtb(dtb_name, dtb_name, | ||
87 | d.getVar("UBOOT_DTB_LOADADDRESS"), d.getVar("UBOOT_DTBO_LOADADDRESS")) | ||
88 | |||
89 | if external_kernel_devicetree: | ||
90 | # iterate over all .dtb and .dtbo files in the external kernel devicetree directory | ||
91 | # and copy them to the FIT image assembly directory | ||
92 | for dtb_name in sorted(os.listdir(external_kernel_devicetree)): | ||
93 | if dtb_name.endswith('.dtb') or dtb_name.endswith('.dtbo'): | ||
94 | dtb_path = os.path.join(external_kernel_devicetree, dtb_name) | ||
95 | |||
96 | # For symlinks, add a configuration node that refers to the DTB image node to which the symlink points | ||
97 | symlink_target = oe.fitimage.symlink_points_below(dtb_name, external_kernel_devicetree) | ||
98 | if symlink_target: | ||
99 | root_node.fitimage_emit_section_dtb_alias(dtb_name, symlink_target, True) | ||
100 | # For real DTB files add an image node and a configuration node | ||
101 | else: | ||
102 | shutil.copyfile(dtb_path, dtb_name) | ||
103 | root_node.fitimage_emit_section_dtb(dtb_name, dtb_name, | ||
104 | d.getVar("UBOOT_DTB_LOADADDRESS"), d.getVar("UBOOT_DTBO_LOADADDRESS"), True) | ||
105 | |||
106 | # Prepare a u-boot script section | ||
107 | fit_uboot_env = d.getVar("FIT_UBOOT_ENV") | ||
108 | if fit_uboot_env: | ||
109 | root_node.fitimage_emit_section_boot_script("bootscr-"+fit_uboot_env , fit_uboot_env) | ||
110 | |||
111 | # Prepare a setup section (For x86) | ||
112 | setup_bin_path = os.path.join(kernel_deploydir, "setup.bin") | ||
113 | if os.path.exists(setup_bin_path): | ||
114 | shutil.copyfile(setup_bin_path, "setup.bin") | ||
115 | root_node.fitimage_emit_section_setup("setup-1", "setup.bin") | ||
116 | |||
117 | # Prepare a ramdisk section. | ||
118 | initramfs_image = d.getVar('INITRAMFS_IMAGE') | ||
119 | if initramfs_image and d.getVar("INITRAMFS_IMAGE_BUNDLE") != '1': | ||
120 | # Find and use the first initramfs image archive type we find | ||
121 | found = False | ||
122 | for img in d.getVar("FIT_SUPPORTED_INITRAMFS_FSTYPES").split(): | ||
123 | initramfs_path = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), "%s.%s" % (d.getVar('INITRAMFS_IMAGE_NAME'), img)) | ||
124 | if os.path.exists(initramfs_path): | ||
125 | bb.note("Found initramfs image: " + initramfs_path) | ||
126 | found = True | ||
127 | root_node.fitimage_emit_section_ramdisk("ramdisk-1", initramfs_path, | ||
128 | initramfs_image, | ||
129 | d.getVar("UBOOT_RD_LOADADDRESS"), | ||
130 | d.getVar("UBOOT_RD_ENTRYPOINT")) | ||
131 | break | ||
132 | else: | ||
133 | bb.note("Did not find initramfs image: " + initramfs_path) | ||
134 | |||
135 | if not found: | ||
136 | bb.fatal("Could not find a valid initramfs type for %s, the supported types are: %s" % (d.getVar('INITRAMFS_IMAGE_NAME'), d.getVar('FIT_SUPPORTED_INITRAMFS_FSTYPES'))) | ||
137 | |||
138 | # Generate the configuration section | ||
139 | root_node.fitimage_emit_section_config(d.getVar("FIT_CONF_DEFAULT_DTB")) | ||
140 | |||
141 | # Write the its file | ||
142 | root_node.write_its_file(itsfile) | ||
143 | |||
144 | # Assemble the FIT image | ||
145 | root_node.run_mkimage_assemble(itsfile, fitname) | ||
146 | |||
147 | # Sign the FIT image if required | ||
148 | root_node.run_mkimage_sign(fitname) | ||
149 | } | ||
150 | do_compile[depends] += "virtual/kernel:do_deploy" | ||
151 | |||
152 | do_install() { | ||
153 | install -d "${D}/${KERNEL_IMAGEDEST}" | ||
154 | install -m 0644 "${B}/fitImage" "${D}/${KERNEL_IMAGEDEST}/fitImage" | ||
155 | } | ||
156 | |||
157 | FILES:${PN} = "${KERNEL_IMAGEDEST}" | ||
158 | |||
159 | |||
160 | do_deploy() { | ||
161 | deploy_dir="${DEPLOYDIR}" | ||
162 | if [ -n "${KERNEL_DEPLOYSUBDIR}" ]; then | ||
163 | deploy_dir="${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}" | ||
164 | fi | ||
165 | install -d "$deploy_dir" | ||
166 | install -m 0644 "${B}/fitImage" "$deploy_dir/fitImage" | ||
167 | install -m 0644 "${B}/fit-image.its" "$deploy_dir/fit-image.its" | ||
168 | |||
169 | if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then | ||
170 | ln -snf fit-image.its "$deploy_dir/fitImage-its-${KERNEL_FIT_NAME}.its" | ||
171 | if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then | ||
172 | ln -snf fit-image.its "$deploy_dir/fitImage-its-${KERNEL_FIT_LINK_NAME}" | ||
173 | fi | ||
174 | fi | ||
175 | |||
176 | if [ -n "${INITRAMFS_IMAGE}" ]; then | ||
177 | ln -snf fit-image-its "$deploy_dir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its" | ||
178 | if [ -n "${KERNEL_FIT_LINK_NAME}" ]; then | ||
179 | ln -snf fit-image.its "$deploy_dir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}" | ||
180 | fi | ||
181 | |||
182 | if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then | ||
183 | ln -snf fitImage "$deploy_dir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT}" | ||
184 | if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then | ||
185 | ln -snf fitImage "$deploy_dir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}" | ||
186 | fi | ||
187 | fi | ||
188 | fi | ||
189 | } | ||
190 | addtask deploy after do_compile before do_build | ||
diff --git a/meta/classes-recipe/kernel-fitimage.bbclass b/meta/classes-recipe/kernel-fitimage.bbclass deleted file mode 100644 index 07786647e1..0000000000 --- a/meta/classes-recipe/kernel-fitimage.bbclass +++ /dev/null | |||
@@ -1,839 +0,0 @@ | |||
1 | # | ||
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: MIT | ||
5 | # | ||
6 | |||
7 | inherit kernel-uboot kernel-artifact-names uboot-config | ||
8 | require conf/image-fitimage.conf | ||
9 | |||
10 | def get_fit_replacement_type(d): | ||
11 | kerneltypes = d.getVar('KERNEL_IMAGETYPES') or "" | ||
12 | replacementtype = "" | ||
13 | if 'fitImage' in kerneltypes.split(): | ||
14 | uarch = d.getVar("UBOOT_ARCH") | ||
15 | if uarch == "arm64": | ||
16 | replacementtype = "Image" | ||
17 | elif uarch == "riscv": | ||
18 | replacementtype = "Image" | ||
19 | elif uarch == "mips": | ||
20 | replacementtype = "vmlinuz.bin" | ||
21 | elif uarch == "x86": | ||
22 | replacementtype = "bzImage" | ||
23 | elif uarch == "microblaze": | ||
24 | replacementtype = "linux.bin" | ||
25 | else: | ||
26 | replacementtype = "zImage" | ||
27 | return replacementtype | ||
28 | |||
29 | KERNEL_IMAGETYPE_REPLACEMENT ?= "${@get_fit_replacement_type(d)}" | ||
30 | DEPENDS:append = " ${@'u-boot-tools-native dtc-native' if 'fitImage' in (d.getVar('KERNEL_IMAGETYPES') or '').split() else ''}" | ||
31 | |||
32 | python __anonymous () { | ||
33 | # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal | ||
34 | # to kernel.bbclass . We have to override it, since we pack zImage | ||
35 | # (at least for now) into the fitImage . | ||
36 | typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE") or "" | ||
37 | if 'fitImage' in typeformake.split(): | ||
38 | d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('fitImage', d.getVar('KERNEL_IMAGETYPE_REPLACEMENT'))) | ||
39 | |||
40 | image = d.getVar('INITRAMFS_IMAGE') | ||
41 | if image and not bb.utils.to_boolean(d.getVar('INITRAMFS_IMAGE_BUNDLE')): | ||
42 | if d.getVar('INITRAMFS_MULTICONFIG'): | ||
43 | mc = d.getVar('BB_CURRENT_MC') | ||
44 | d.appendVarFlag('do_assemble_fitimage_initramfs', 'mcdepends', ' mc:' + mc + ':${INITRAMFS_MULTICONFIG}:${INITRAMFS_IMAGE}:do_image_complete') | ||
45 | else: | ||
46 | d.appendVarFlag('do_assemble_fitimage_initramfs', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete') | ||
47 | |||
48 | #check if there are any dtb providers | ||
49 | providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb") | ||
50 | if providerdtb: | ||
51 | d.appendVarFlag('do_assemble_fitimage', 'depends', ' virtual/dtb:do_populate_sysroot') | ||
52 | d.appendVarFlag('do_assemble_fitimage_initramfs', 'depends', ' virtual/dtb:do_populate_sysroot') | ||
53 | d.setVar('EXTERNAL_KERNEL_DEVICETREE', "${RECIPE_SYSROOT}/boot/devicetree") | ||
54 | } | ||
55 | |||
56 | # | ||
57 | # Emit the fitImage ITS header | ||
58 | # | ||
59 | # $1 ... .its filename | ||
60 | fitimage_emit_fit_header() { | ||
61 | cat << EOF >> $1 | ||
62 | /dts-v1/; | ||
63 | |||
64 | / { | ||
65 | description = "${FIT_DESC}"; | ||
66 | #address-cells = <${FIT_ADDRESS_CELLS}>; | ||
67 | EOF | ||
68 | } | ||
69 | |||
70 | # | ||
71 | # Emit the fitImage section bits | ||
72 | # | ||
73 | # $1 ... .its filename | ||
74 | # $2 ... Section bit type: imagestart - image section start | ||
75 | # confstart - configuration section start | ||
76 | # sectend - section end | ||
77 | # fitend - fitimage end | ||
78 | # | ||
79 | fitimage_emit_section_maint() { | ||
80 | case $2 in | ||
81 | imagestart) | ||
82 | cat << EOF >> $1 | ||
83 | |||
84 | images { | ||
85 | EOF | ||
86 | ;; | ||
87 | confstart) | ||
88 | cat << EOF >> $1 | ||
89 | |||
90 | configurations { | ||
91 | EOF | ||
92 | ;; | ||
93 | sectend) | ||
94 | cat << EOF >> $1 | ||
95 | }; | ||
96 | EOF | ||
97 | ;; | ||
98 | fitend) | ||
99 | cat << EOF >> $1 | ||
100 | }; | ||
101 | EOF | ||
102 | ;; | ||
103 | esac | ||
104 | } | ||
105 | |||
106 | # | ||
107 | # Emit the fitImage ITS kernel section | ||
108 | # | ||
109 | # $1 ... .its filename | ||
110 | # $2 ... Image counter | ||
111 | # $3 ... Path to kernel image | ||
112 | # $4 ... Compression type | ||
113 | fitimage_emit_section_kernel() { | ||
114 | |||
115 | kernel_csum="${FIT_HASH_ALG}" | ||
116 | kernel_sign_algo="${FIT_SIGN_ALG}" | ||
117 | kernel_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}" | ||
118 | |||
119 | ENTRYPOINT="${UBOOT_ENTRYPOINT}" | ||
120 | if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then | ||
121 | ENTRYPOINT=`${HOST_PREFIX}nm vmlinux | \ | ||
122 | awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'` | ||
123 | fi | ||
124 | |||
125 | cat << EOF >> $1 | ||
126 | kernel-$2 { | ||
127 | description = "Linux kernel"; | ||
128 | data = /incbin/("$3"); | ||
129 | type = "${UBOOT_MKIMAGE_KERNEL_TYPE}"; | ||
130 | arch = "${UBOOT_ARCH}"; | ||
131 | os = "linux"; | ||
132 | compression = "$4"; | ||
133 | load = <${UBOOT_LOADADDRESS}>; | ||
134 | entry = <$ENTRYPOINT>; | ||
135 | hash-1 { | ||
136 | algo = "$kernel_csum"; | ||
137 | }; | ||
138 | }; | ||
139 | EOF | ||
140 | |||
141 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$kernel_sign_keyname" ] ; then | ||
142 | sed -i '$ d' $1 | ||
143 | cat << EOF >> $1 | ||
144 | signature-1 { | ||
145 | algo = "$kernel_csum,$kernel_sign_algo"; | ||
146 | key-name-hint = "$kernel_sign_keyname"; | ||
147 | }; | ||
148 | }; | ||
149 | EOF | ||
150 | fi | ||
151 | } | ||
152 | |||
153 | # | ||
154 | # Emit the fitImage ITS DTB section | ||
155 | # | ||
156 | # $1 ... .its filename | ||
157 | # $2 ... Image counter | ||
158 | # $3 ... Path to DTB image | ||
159 | fitimage_emit_section_dtb() { | ||
160 | |||
161 | dtb_csum="${FIT_HASH_ALG}" | ||
162 | dtb_sign_algo="${FIT_SIGN_ALG}" | ||
163 | dtb_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}" | ||
164 | |||
165 | dtb_loadline="" | ||
166 | dtb_ext=${DTB##*.} | ||
167 | if [ "${dtb_ext}" = "dtbo" ]; then | ||
168 | if [ -n "${UBOOT_DTBO_LOADADDRESS}" ]; then | ||
169 | dtb_loadline="load = <${UBOOT_DTBO_LOADADDRESS}>;" | ||
170 | fi | ||
171 | elif [ -n "${UBOOT_DTB_LOADADDRESS}" ]; then | ||
172 | dtb_loadline="load = <${UBOOT_DTB_LOADADDRESS}>;" | ||
173 | fi | ||
174 | cat << EOF >> $1 | ||
175 | fdt-$2 { | ||
176 | description = "Flattened Device Tree blob"; | ||
177 | data = /incbin/("$3"); | ||
178 | type = "flat_dt"; | ||
179 | arch = "${UBOOT_ARCH}"; | ||
180 | compression = "none"; | ||
181 | $dtb_loadline | ||
182 | hash-1 { | ||
183 | algo = "$dtb_csum"; | ||
184 | }; | ||
185 | }; | ||
186 | EOF | ||
187 | |||
188 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$dtb_sign_keyname" ] ; then | ||
189 | sed -i '$ d' $1 | ||
190 | cat << EOF >> $1 | ||
191 | signature-1 { | ||
192 | algo = "$dtb_csum,$dtb_sign_algo"; | ||
193 | key-name-hint = "$dtb_sign_keyname"; | ||
194 | }; | ||
195 | }; | ||
196 | EOF | ||
197 | fi | ||
198 | } | ||
199 | |||
200 | # | ||
201 | # Emit the fitImage ITS u-boot script section | ||
202 | # | ||
203 | # $1 ... .its filename | ||
204 | # $2 ... Image counter | ||
205 | # $3 ... Path to boot script image | ||
206 | fitimage_emit_section_boot_script() { | ||
207 | |||
208 | bootscr_csum="${FIT_HASH_ALG}" | ||
209 | bootscr_sign_algo="${FIT_SIGN_ALG}" | ||
210 | bootscr_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}" | ||
211 | |||
212 | cat << EOF >> $1 | ||
213 | bootscr-$2 { | ||
214 | description = "U-boot script"; | ||
215 | data = /incbin/("$3"); | ||
216 | type = "script"; | ||
217 | arch = "${UBOOT_ARCH}"; | ||
218 | compression = "none"; | ||
219 | hash-1 { | ||
220 | algo = "$bootscr_csum"; | ||
221 | }; | ||
222 | }; | ||
223 | EOF | ||
224 | |||
225 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$bootscr_sign_keyname" ] ; then | ||
226 | sed -i '$ d' $1 | ||
227 | cat << EOF >> $1 | ||
228 | signature-1 { | ||
229 | algo = "$bootscr_csum,$bootscr_sign_algo"; | ||
230 | key-name-hint = "$bootscr_sign_keyname"; | ||
231 | }; | ||
232 | }; | ||
233 | EOF | ||
234 | fi | ||
235 | } | ||
236 | |||
237 | # | ||
238 | # Emit the fitImage ITS setup section | ||
239 | # | ||
240 | # $1 ... .its filename | ||
241 | # $2 ... Image counter | ||
242 | # $3 ... Path to setup image | ||
243 | fitimage_emit_section_setup() { | ||
244 | |||
245 | setup_csum="${FIT_HASH_ALG}" | ||
246 | setup_sign_algo="${FIT_SIGN_ALG}" | ||
247 | setup_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}" | ||
248 | |||
249 | cat << EOF >> $1 | ||
250 | setup-$2 { | ||
251 | description = "Linux setup.bin"; | ||
252 | data = /incbin/("$3"); | ||
253 | type = "x86_setup"; | ||
254 | arch = "${UBOOT_ARCH}"; | ||
255 | os = "linux"; | ||
256 | compression = "none"; | ||
257 | load = <0x00090000>; | ||
258 | entry = <0x00090000>; | ||
259 | hash-1 { | ||
260 | algo = "$setup_csum"; | ||
261 | }; | ||
262 | }; | ||
263 | EOF | ||
264 | |||
265 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$setup_sign_keyname" ] ; then | ||
266 | sed -i '$ d' $1 | ||
267 | cat << EOF >> $1 | ||
268 | signature-1 { | ||
269 | algo = "$setup_csum,$setup_sign_algo"; | ||
270 | key-name-hint = "$setup_sign_keyname"; | ||
271 | }; | ||
272 | }; | ||
273 | EOF | ||
274 | fi | ||
275 | } | ||
276 | |||
277 | # | ||
278 | # Emit the fitImage ITS ramdisk section | ||
279 | # | ||
280 | # $1 ... .its filename | ||
281 | # $2 ... Image counter | ||
282 | # $3 ... Path to ramdisk image | ||
283 | fitimage_emit_section_ramdisk() { | ||
284 | |||
285 | ramdisk_csum="${FIT_HASH_ALG}" | ||
286 | ramdisk_sign_algo="${FIT_SIGN_ALG}" | ||
287 | ramdisk_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}" | ||
288 | ramdisk_loadline="" | ||
289 | ramdisk_entryline="" | ||
290 | |||
291 | if [ -n "${UBOOT_RD_LOADADDRESS}" ]; then | ||
292 | ramdisk_loadline="load = <${UBOOT_RD_LOADADDRESS}>;" | ||
293 | fi | ||
294 | if [ -n "${UBOOT_RD_ENTRYPOINT}" ]; then | ||
295 | ramdisk_entryline="entry = <${UBOOT_RD_ENTRYPOINT}>;" | ||
296 | fi | ||
297 | |||
298 | cat << EOF >> $1 | ||
299 | ramdisk-$2 { | ||
300 | description = "${INITRAMFS_IMAGE}"; | ||
301 | data = /incbin/("$3"); | ||
302 | type = "ramdisk"; | ||
303 | arch = "${UBOOT_ARCH}"; | ||
304 | os = "linux"; | ||
305 | compression = "none"; | ||
306 | $ramdisk_loadline | ||
307 | $ramdisk_entryline | ||
308 | hash-1 { | ||
309 | algo = "$ramdisk_csum"; | ||
310 | }; | ||
311 | }; | ||
312 | EOF | ||
313 | |||
314 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$ramdisk_sign_keyname" ] ; then | ||
315 | sed -i '$ d' $1 | ||
316 | cat << EOF >> $1 | ||
317 | signature-1 { | ||
318 | algo = "$ramdisk_csum,$ramdisk_sign_algo"; | ||
319 | key-name-hint = "$ramdisk_sign_keyname"; | ||
320 | }; | ||
321 | }; | ||
322 | EOF | ||
323 | fi | ||
324 | } | ||
325 | |||
326 | # | ||
327 | # echoes symlink destination if it points below directory | ||
328 | # | ||
329 | # $1 ... file that's a potential symlink | ||
330 | # $2 ... expected parent directory | ||
331 | symlink_points_below() { | ||
332 | file="$2/$1" | ||
333 | dir=$2 | ||
334 | |||
335 | if ! [ -L "$file" ]; then | ||
336 | return | ||
337 | fi | ||
338 | |||
339 | realpath="$(realpath --relative-to=$dir $file)" | ||
340 | if [ -z "${realpath%%../*}" ]; then | ||
341 | return | ||
342 | fi | ||
343 | |||
344 | echo "$realpath" | ||
345 | } | ||
346 | |||
347 | # | ||
348 | # Emit the fitImage ITS configuration section | ||
349 | # | ||
350 | # $1 ... .its filename | ||
351 | # $2 ... Linux kernel ID | ||
352 | # $3 ... DTB image name | ||
353 | # $4 ... ramdisk ID | ||
354 | # $5 ... u-boot script ID | ||
355 | # $6 ... config ID | ||
356 | # $7 ... default flag | ||
357 | # $8 ... default DTB image name | ||
358 | fitimage_emit_section_config() { | ||
359 | |||
360 | conf_csum="${FIT_HASH_ALG}" | ||
361 | conf_sign_algo="${FIT_SIGN_ALG}" | ||
362 | conf_padding_algo="${FIT_PAD_ALG}" | ||
363 | if [ "${UBOOT_SIGN_ENABLE}" = "1" ] ; then | ||
364 | conf_sign_keyname="${UBOOT_SIGN_KEYNAME}" | ||
365 | fi | ||
366 | |||
367 | its_file="$1" | ||
368 | kernel_id="$2" | ||
369 | dtb_image="$3" | ||
370 | ramdisk_id="$4" | ||
371 | bootscr_id="$5" | ||
372 | config_id="$6" | ||
373 | default_flag="$7" | ||
374 | default_dtb_image="$8" | ||
375 | |||
376 | # Test if we have any DTBs at all | ||
377 | sep="" | ||
378 | conf_desc="" | ||
379 | conf_node="${FIT_CONF_PREFIX}" | ||
380 | kernel_line="" | ||
381 | fdt_line="" | ||
382 | ramdisk_line="" | ||
383 | bootscr_line="" | ||
384 | setup_line="" | ||
385 | default_line="" | ||
386 | compatible_line="" | ||
387 | |||
388 | dtb_image_sect=$(symlink_points_below $dtb_image "${EXTERNAL_KERNEL_DEVICETREE}") | ||
389 | if [ -z "$dtb_image_sect" ]; then | ||
390 | dtb_image_sect=$dtb_image | ||
391 | fi | ||
392 | |||
393 | dtb_path="${EXTERNAL_KERNEL_DEVICETREE}/${dtb_image_sect}" | ||
394 | if [ -f "$dtb_path" ] || [ -L "$dtb_path" ]; then | ||
395 | compat=$(fdtget -t s "$dtb_path" / compatible | sed 's/ /", "/g') | ||
396 | if [ -n "$compat" ]; then | ||
397 | compatible_line="compatible = \"$compat\";" | ||
398 | fi | ||
399 | fi | ||
400 | |||
401 | dtb_image=$(echo $dtb_image | tr '/' '_') | ||
402 | dtb_image_sect=$(echo "${dtb_image_sect}" | tr '/' '_') | ||
403 | |||
404 | # conf node name is selected based on dtb ID if it is present, | ||
405 | # otherwise its selected based on kernel ID | ||
406 | if [ -n "$dtb_image" ]; then | ||
407 | conf_node=$conf_node$dtb_image | ||
408 | else | ||
409 | conf_node=$conf_node$kernel_id | ||
410 | fi | ||
411 | |||
412 | if [ -n "$kernel_id" ]; then | ||
413 | conf_desc="Linux kernel" | ||
414 | sep=", " | ||
415 | kernel_line="kernel = \"kernel-$kernel_id\";" | ||
416 | fi | ||
417 | |||
418 | if [ -n "$dtb_image" ]; then | ||
419 | conf_desc="$conf_desc${sep}FDT blob" | ||
420 | sep=", " | ||
421 | fdt_line="fdt = \"fdt-$dtb_image_sect\";" | ||
422 | fi | ||
423 | |||
424 | if [ -n "$ramdisk_id" ]; then | ||
425 | conf_desc="$conf_desc${sep}ramdisk" | ||
426 | sep=", " | ||
427 | ramdisk_line="ramdisk = \"ramdisk-$ramdisk_id\";" | ||
428 | fi | ||
429 | |||
430 | if [ -n "$bootscr_id" ]; then | ||
431 | conf_desc="$conf_desc${sep}u-boot script" | ||
432 | sep=", " | ||
433 | bootscr_line="bootscr = \"bootscr-$bootscr_id\";" | ||
434 | fi | ||
435 | |||
436 | if [ -n "$config_id" ]; then | ||
437 | conf_desc="$conf_desc${sep}setup" | ||
438 | setup_line="setup = \"setup-$config_id\";" | ||
439 | fi | ||
440 | |||
441 | if [ "$default_flag" = "1" ]; then | ||
442 | # default node is selected based on dtb ID if it is present, | ||
443 | # otherwise its selected based on kernel ID | ||
444 | if [ -n "$dtb_image" ]; then | ||
445 | # Select default node as user specified dtb when | ||
446 | # multiple dtb exists. | ||
447 | if [ -n "$default_dtb_image" ]; then | ||
448 | default_line="default = \"${FIT_CONF_PREFIX}$default_dtb_image\";" | ||
449 | else | ||
450 | default_line="default = \"${FIT_CONF_PREFIX}$dtb_image\";" | ||
451 | fi | ||
452 | else | ||
453 | default_line="default = \"${FIT_CONF_PREFIX}$kernel_id\";" | ||
454 | fi | ||
455 | fi | ||
456 | |||
457 | cat << EOF >> $its_file | ||
458 | $default_line | ||
459 | $conf_node { | ||
460 | description = "$default_flag $conf_desc"; | ||
461 | $compatible_line | ||
462 | $kernel_line | ||
463 | $fdt_line | ||
464 | $ramdisk_line | ||
465 | $bootscr_line | ||
466 | $setup_line | ||
467 | hash-1 { | ||
468 | algo = "$conf_csum"; | ||
469 | }; | ||
470 | EOF | ||
471 | |||
472 | if [ -n "$conf_sign_keyname" ] ; then | ||
473 | |||
474 | sign_line="sign-images = " | ||
475 | sep="" | ||
476 | |||
477 | if [ -n "$kernel_id" ]; then | ||
478 | sign_line="$sign_line${sep}\"kernel\"" | ||
479 | sep=", " | ||
480 | fi | ||
481 | |||
482 | if [ -n "$dtb_image" ]; then | ||
483 | sign_line="$sign_line${sep}\"fdt\"" | ||
484 | sep=", " | ||
485 | fi | ||
486 | |||
487 | if [ -n "$ramdisk_id" ]; then | ||
488 | sign_line="$sign_line${sep}\"ramdisk\"" | ||
489 | sep=", " | ||
490 | fi | ||
491 | |||
492 | if [ -n "$bootscr_id" ]; then | ||
493 | sign_line="$sign_line${sep}\"bootscr\"" | ||
494 | sep=", " | ||
495 | fi | ||
496 | |||
497 | if [ -n "$config_id" ]; then | ||
498 | sign_line="$sign_line${sep}\"setup\"" | ||
499 | fi | ||
500 | |||
501 | sign_line="$sign_line;" | ||
502 | |||
503 | cat << EOF >> $its_file | ||
504 | signature-1 { | ||
505 | algo = "$conf_csum,$conf_sign_algo"; | ||
506 | key-name-hint = "$conf_sign_keyname"; | ||
507 | padding = "$conf_padding_algo"; | ||
508 | $sign_line | ||
509 | }; | ||
510 | EOF | ||
511 | fi | ||
512 | |||
513 | cat << EOF >> $its_file | ||
514 | }; | ||
515 | EOF | ||
516 | } | ||
517 | |||
518 | # | ||
519 | # Assemble fitImage | ||
520 | # | ||
521 | # $1 ... .its filename | ||
522 | # $2 ... fitImage name | ||
523 | # $3 ... include ramdisk | ||
524 | fitimage_assemble() { | ||
525 | kernelcount=1 | ||
526 | dtbcount="" | ||
527 | DTBS="" | ||
528 | ramdiskcount=$3 | ||
529 | setupcount="" | ||
530 | bootscr_id="" | ||
531 | default_dtb_image="" | ||
532 | rm -f $1 arch/${ARCH}/boot/$2 | ||
533 | |||
534 | if [ -n "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = "${UBOOT_SIGN_IMG_KEYNAME}" ]; then | ||
535 | bbfatal "Keys used to sign images and configuration nodes must be different." | ||
536 | fi | ||
537 | |||
538 | fitimage_emit_fit_header $1 | ||
539 | |||
540 | # | ||
541 | # Step 1: Prepare a kernel image section. | ||
542 | # | ||
543 | fitimage_emit_section_maint $1 imagestart | ||
544 | |||
545 | uboot_prep_kimage | ||
546 | fitimage_emit_section_kernel $1 $kernelcount linux.bin "$linux_comp" | ||
547 | |||
548 | # | ||
549 | # Step 2: Prepare a DTB image section | ||
550 | # | ||
551 | |||
552 | if [ -n "${KERNEL_DEVICETREE}" ]; then | ||
553 | dtbcount=1 | ||
554 | for DTB in ${KERNEL_DEVICETREE}; do | ||
555 | if echo $DTB | grep -q '/dts/'; then | ||
556 | bbwarn "$DTB contains the full path to the the dts file, but only the dtb name should be used." | ||
557 | DTB=`basename $DTB | sed 's,\.dts$,.dtb,g'` | ||
558 | fi | ||
559 | |||
560 | # Skip ${DTB} if it's also provided in ${EXTERNAL_KERNEL_DEVICETREE} | ||
561 | if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ] && [ -s ${EXTERNAL_KERNEL_DEVICETREE}/${DTB} ]; then | ||
562 | continue | ||
563 | fi | ||
564 | |||
565 | DTB_PATH="${KERNEL_OUTPUT_DIR}/dts/$DTB" | ||
566 | if [ ! -e "$DTB_PATH" ]; then | ||
567 | DTB_PATH="${KERNEL_OUTPUT_DIR}/$DTB" | ||
568 | fi | ||
569 | |||
570 | # Strip off the path component from the filename | ||
571 | if "${@'false' if oe.types.boolean(d.getVar('KERNEL_DTBVENDORED')) else 'true'}"; then | ||
572 | DTB=`basename $DTB` | ||
573 | fi | ||
574 | |||
575 | # Set the default dtb image if it exists in the devicetree. | ||
576 | if [ "${FIT_CONF_DEFAULT_DTB}" = "$DTB" ];then | ||
577 | default_dtb_image=$(echo "$DTB" | tr '/' '_') | ||
578 | fi | ||
579 | |||
580 | DTB=$(echo "$DTB" | tr '/' '_') | ||
581 | |||
582 | # Skip DTB if we've picked it up previously | ||
583 | echo "$DTBS" | tr ' ' '\n' | grep -xq "$DTB" && continue | ||
584 | |||
585 | DTBS="$DTBS $DTB" | ||
586 | DTB=$(echo $DTB | tr '/' '_') | ||
587 | fitimage_emit_section_dtb $1 $DTB $DTB_PATH | ||
588 | done | ||
589 | fi | ||
590 | |||
591 | if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then | ||
592 | dtbcount=1 | ||
593 | for DTB in $(find "${EXTERNAL_KERNEL_DEVICETREE}" -name '*.dtb' -printf '%P\n' | sort) \ | ||
594 | $(find "${EXTERNAL_KERNEL_DEVICETREE}" -name '*.dtbo' -printf '%P\n' | sort); do | ||
595 | # Set the default dtb image if it exists in the devicetree. | ||
596 | if [ ${FIT_CONF_DEFAULT_DTB} = $DTB ];then | ||
597 | default_dtb_image=$(echo "$DTB" | tr '/' '_') | ||
598 | fi | ||
599 | |||
600 | DTB=$(echo "$DTB" | tr '/' '_') | ||
601 | |||
602 | # Skip DTB/DTBO if we've picked it up previously | ||
603 | echo "$DTBS" | tr ' ' '\n' | grep -xq "$DTB" && continue | ||
604 | |||
605 | DTBS="$DTBS $DTB" | ||
606 | |||
607 | # Also skip if a symlink. We'll later have each config section point at it | ||
608 | [ $(symlink_points_below $DTB "${EXTERNAL_KERNEL_DEVICETREE}") ] && continue | ||
609 | |||
610 | DTB=$(echo $DTB | tr '/' '_') | ||
611 | fitimage_emit_section_dtb $1 $DTB "${EXTERNAL_KERNEL_DEVICETREE}/$DTB" | ||
612 | done | ||
613 | fi | ||
614 | |||
615 | if [ -n "${FIT_CONF_DEFAULT_DTB}" ] && [ -z $default_dtb_image ]; then | ||
616 | bbwarn "${FIT_CONF_DEFAULT_DTB} is not available in the list of device trees." | ||
617 | fi | ||
618 | |||
619 | # | ||
620 | # Step 3: Prepare a u-boot script section | ||
621 | # | ||
622 | |||
623 | if [ -n "${FIT_UBOOT_ENV}" ]; then | ||
624 | cp ${UNPACKDIR}/${FIT_UBOOT_ENV} ${B} | ||
625 | bootscr_id="${FIT_UBOOT_ENV}" | ||
626 | fitimage_emit_section_boot_script $1 "$bootscr_id" ${FIT_UBOOT_ENV} | ||
627 | fi | ||
628 | |||
629 | # | ||
630 | # Step 4: Prepare a setup section. (For x86) | ||
631 | # | ||
632 | if [ -e ${KERNEL_OUTPUT_DIR}/setup.bin ]; then | ||
633 | setupcount=1 | ||
634 | fitimage_emit_section_setup $1 $setupcount ${KERNEL_OUTPUT_DIR}/setup.bin | ||
635 | fi | ||
636 | |||
637 | # | ||
638 | # Step 5: Prepare a ramdisk section. | ||
639 | # | ||
640 | if [ "x${ramdiskcount}" = "x1" ] && [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then | ||
641 | # Find and use the first initramfs image archive type we find | ||
642 | found= | ||
643 | for img in ${FIT_SUPPORTED_INITRAMFS_FSTYPES}; do | ||
644 | initramfs_path="${INITRAMFS_DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img" | ||
645 | if [ -e "$initramfs_path" ]; then | ||
646 | bbnote "Found initramfs image: $initramfs_path" | ||
647 | found=true | ||
648 | fitimage_emit_section_ramdisk $1 "$ramdiskcount" "$initramfs_path" | ||
649 | break | ||
650 | else | ||
651 | bbnote "Did not find initramfs image: $initramfs_path" | ||
652 | fi | ||
653 | done | ||
654 | |||
655 | if [ -z "$found" ]; then | ||
656 | bbfatal "Could not find a valid initramfs type for ${INITRAMFS_IMAGE_NAME}, the supported types are: ${FIT_SUPPORTED_INITRAMFS_FSTYPES}" | ||
657 | fi | ||
658 | fi | ||
659 | |||
660 | fitimage_emit_section_maint $1 sectend | ||
661 | |||
662 | # Force the first Kernel and DTB in the default config | ||
663 | kernelcount=1 | ||
664 | if [ -n "$dtbcount" ]; then | ||
665 | dtbcount=1 | ||
666 | fi | ||
667 | |||
668 | # | ||
669 | # Step 6: Prepare a configurations section | ||
670 | # | ||
671 | fitimage_emit_section_maint $1 confstart | ||
672 | |||
673 | # kernel-fitimage.bbclass currently only supports a single kernel (no less or | ||
674 | # more) to be added to the FIT image along with 0 or more device trees and | ||
675 | # 0 or 1 ramdisk. | ||
676 | # It is also possible to include an initramfs bundle (kernel and rootfs in one binary) | ||
677 | # When the initramfs bundle is used ramdisk is disabled. | ||
678 | # If a device tree is to be part of the FIT image, then select | ||
679 | # the default configuration to be used is based on the dtbcount. If there is | ||
680 | # no dtb present than select the default configuation to be based on | ||
681 | # the kernelcount. | ||
682 | if [ -n "$DTBS" ]; then | ||
683 | i=1 | ||
684 | for DTB in ${DTBS}; do | ||
685 | dtb_ext=${DTB##*.} | ||
686 | if [ "$dtb_ext" = "dtbo" ]; then | ||
687 | fitimage_emit_section_config $1 "" "$DTB" "" "$bootscr_id" "" "`expr $i = $dtbcount`" "$default_dtb_image" | ||
688 | else | ||
689 | fitimage_emit_section_config $1 $kernelcount "$DTB" "$ramdiskcount" "$bootscr_id" "$setupcount" "`expr $i = $dtbcount`" "$default_dtb_image" | ||
690 | fi | ||
691 | i=`expr $i + 1` | ||
692 | done | ||
693 | else | ||
694 | defaultconfigcount=1 | ||
695 | fitimage_emit_section_config $1 $kernelcount "" "$ramdiskcount" "$bootscr_id" "$setupcount" $defaultconfigcount "$default_dtb_image" | ||
696 | fi | ||
697 | |||
698 | fitimage_emit_section_maint $1 sectend | ||
699 | |||
700 | fitimage_emit_section_maint $1 fitend | ||
701 | |||
702 | # | ||
703 | # Step 7: Assemble the image | ||
704 | # | ||
705 | ${UBOOT_MKIMAGE} \ | ||
706 | ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \ | ||
707 | -f $1 \ | ||
708 | ${KERNEL_OUTPUT_DIR}/$2 | ||
709 | |||
710 | # | ||
711 | # Step 8: Sign the image | ||
712 | # | ||
713 | if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then | ||
714 | ${UBOOT_MKIMAGE_SIGN} \ | ||
715 | ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \ | ||
716 | -F -k "${UBOOT_SIGN_KEYDIR}" \ | ||
717 | -r ${KERNEL_OUTPUT_DIR}/$2 \ | ||
718 | ${UBOOT_MKIMAGE_SIGN_ARGS} | ||
719 | fi | ||
720 | } | ||
721 | |||
722 | do_assemble_fitimage() { | ||
723 | if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then | ||
724 | cd ${B} | ||
725 | fitimage_assemble fit-image.its fitImage-none "" | ||
726 | if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then | ||
727 | ln -sf fitImage-none ${B}/${KERNEL_OUTPUT_DIR}/fitImage | ||
728 | fi | ||
729 | fi | ||
730 | } | ||
731 | |||
732 | addtask assemble_fitimage before do_install after do_compile | ||
733 | |||
734 | SYSROOT_DIRS:append = " /sysroot-only" | ||
735 | do_install:append() { | ||
736 | if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage" && \ | ||
737 | [ "${UBOOT_SIGN_ENABLE}" = "1" ]; then | ||
738 | install -D ${B}/${KERNEL_OUTPUT_DIR}/fitImage-none ${D}/sysroot-only/fitImage | ||
739 | fi | ||
740 | } | ||
741 | |||
742 | do_assemble_fitimage_initramfs() { | ||
743 | if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage" && \ | ||
744 | test -n "${INITRAMFS_IMAGE}" ; then | ||
745 | cd ${B} | ||
746 | if [ "${INITRAMFS_IMAGE_BUNDLE}" = "1" ]; then | ||
747 | fitimage_assemble fit-image-${INITRAMFS_IMAGE}.its fitImage-bundle "" | ||
748 | ln -sf fitImage-bundle ${B}/${KERNEL_OUTPUT_DIR}/fitImage | ||
749 | else | ||
750 | fitimage_assemble fit-image-${INITRAMFS_IMAGE}.its fitImage-${INITRAMFS_IMAGE} 1 | ||
751 | fi | ||
752 | fi | ||
753 | } | ||
754 | |||
755 | addtask assemble_fitimage_initramfs before do_deploy after do_bundle_initramfs | ||
756 | |||
757 | do_kernel_generate_rsa_keys() { | ||
758 | if [ "${UBOOT_SIGN_ENABLE}" = "0" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then | ||
759 | bbwarn "FIT_GENERATE_KEYS is set to 1 even though UBOOT_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used." | ||
760 | fi | ||
761 | |||
762 | if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then | ||
763 | |||
764 | # Generate keys to sign configuration nodes, only if they don't already exist | ||
765 | if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key ] || \ | ||
766 | [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt ]; then | ||
767 | |||
768 | # make directory if it does not already exist | ||
769 | mkdir -p "${UBOOT_SIGN_KEYDIR}" | ||
770 | |||
771 | bbnote "Generating RSA private key for signing fitImage" | ||
772 | openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \ | ||
773 | "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ | ||
774 | "${FIT_SIGN_NUMBITS}" | ||
775 | |||
776 | bbnote "Generating certificate for signing fitImage" | ||
777 | openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \ | ||
778 | -key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ | ||
779 | -out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt | ||
780 | fi | ||
781 | |||
782 | # Generate keys to sign image nodes, only if they don't already exist | ||
783 | if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key ] || \ | ||
784 | [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".crt ]; then | ||
785 | |||
786 | # make directory if it does not already exist | ||
787 | mkdir -p "${UBOOT_SIGN_KEYDIR}" | ||
788 | |||
789 | bbnote "Generating RSA private key for signing fitImage" | ||
790 | openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \ | ||
791 | "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key \ | ||
792 | "${FIT_SIGN_NUMBITS}" | ||
793 | |||
794 | bbnote "Generating certificate for signing fitImage" | ||
795 | openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \ | ||
796 | -key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key \ | ||
797 | -out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".crt | ||
798 | fi | ||
799 | fi | ||
800 | } | ||
801 | |||
802 | addtask kernel_generate_rsa_keys before do_assemble_fitimage after do_compile | ||
803 | |||
804 | kernel_do_deploy[vardepsexclude] = "DATETIME" | ||
805 | kernel_do_deploy:append() { | ||
806 | # Update deploy directory | ||
807 | if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then | ||
808 | |||
809 | if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then | ||
810 | bbnote "Copying fit-image.its source file..." | ||
811 | install -m 0644 ${B}/fit-image.its "$deployDir/fitImage-its-${KERNEL_FIT_NAME}.its" | ||
812 | if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then | ||
813 | ln -snf fitImage-its-${KERNEL_FIT_NAME}.its "$deployDir/fitImage-its-${KERNEL_FIT_LINK_NAME}" | ||
814 | fi | ||
815 | |||
816 | bbnote "Copying linux.bin file..." | ||
817 | install -m 0644 ${B}/linux.bin $deployDir/fitImage-linux.bin-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT} | ||
818 | if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then | ||
819 | ln -snf fitImage-linux.bin-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT} "$deployDir/fitImage-linux.bin-${KERNEL_FIT_LINK_NAME}" | ||
820 | fi | ||
821 | fi | ||
822 | |||
823 | if [ -n "${INITRAMFS_IMAGE}" ]; then | ||
824 | bbnote "Copying fit-image-${INITRAMFS_IMAGE}.its source file..." | ||
825 | install -m 0644 ${B}/fit-image-${INITRAMFS_IMAGE}.its "$deployDir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its" | ||
826 | if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then | ||
827 | ln -snf fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its "$deployDir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}" | ||
828 | fi | ||
829 | |||
830 | if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then | ||
831 | bbnote "Copying fitImage-${INITRAMFS_IMAGE} file..." | ||
832 | install -m 0644 ${B}/${KERNEL_OUTPUT_DIR}/fitImage-${INITRAMFS_IMAGE} "$deployDir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT}" | ||
833 | if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then | ||
834 | ln -snf fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT} "$deployDir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}" | ||
835 | fi | ||
836 | fi | ||
837 | fi | ||
838 | fi | ||
839 | } | ||
diff --git a/meta/classes-recipe/kernel-uboot.bbclass b/meta/classes-recipe/kernel-uboot.bbclass index 6d4aff6b11..62974baaf0 100644 --- a/meta/classes-recipe/kernel-uboot.bbclass +++ b/meta/classes-recipe/kernel-uboot.bbclass | |||
@@ -12,19 +12,27 @@ FIT_KERNEL_COMP_ALG_EXTENSION ?= ".gz" | |||
12 | UBOOT_MKIMAGE_KERNEL_TYPE ?= "kernel" | 12 | UBOOT_MKIMAGE_KERNEL_TYPE ?= "kernel" |
13 | 13 | ||
14 | uboot_prep_kimage() { | 14 | uboot_prep_kimage() { |
15 | if [ -e arch/${ARCH}/boot/compressed/vmlinux ]; then | 15 | output_dir=$1 |
16 | # For backward compatibility with kernel-fitimage.bbclass and kernel-uboot.bbclass | ||
17 | # support calling without parameter as well | ||
18 | if [ -z "$output_dir" ]; then | ||
19 | output_dir='.' | ||
20 | fi | ||
21 | |||
22 | linux_bin=$output_dir/linux.bin | ||
23 | if [ -e "arch/${ARCH}/boot/compressed/vmlinux" ]; then | ||
16 | vmlinux_path="arch/${ARCH}/boot/compressed/vmlinux" | 24 | vmlinux_path="arch/${ARCH}/boot/compressed/vmlinux" |
17 | linux_suffix="" | 25 | linux_suffix="" |
18 | linux_comp="none" | 26 | linux_comp="none" |
19 | elif [ -e arch/${ARCH}/boot/vmlinuz.bin ]; then | 27 | elif [ -e "arch/${ARCH}/boot/vmlinuz.bin" ]; then |
20 | rm -f linux.bin | 28 | rm -f "$linux_bin" |
21 | cp -l arch/${ARCH}/boot/vmlinuz.bin linux.bin | 29 | cp -l "arch/${ARCH}/boot/vmlinuz.bin" "$linux_bin" |
22 | vmlinux_path="" | 30 | vmlinux_path="" |
23 | linux_suffix="" | 31 | linux_suffix="" |
24 | linux_comp="none" | 32 | linux_comp="none" |
25 | else | 33 | else |
26 | vmlinux_path="vmlinux" | 34 | vmlinux_path="vmlinux" |
27 | # Use vmlinux.initramfs for linux.bin when INITRAMFS_IMAGE_BUNDLE set | 35 | # Use vmlinux.initramfs for $linux_bin when INITRAMFS_IMAGE_BUNDLE set |
28 | # As per the implementation in kernel.bbclass. | 36 | # As per the implementation in kernel.bbclass. |
29 | # See do_bundle_initramfs function | 37 | # See do_bundle_initramfs function |
30 | if [ "${INITRAMFS_IMAGE_BUNDLE}" = "1" ] && [ -e vmlinux.initramfs ]; then | 38 | if [ "${INITRAMFS_IMAGE_BUNDLE}" = "1" ] && [ -e vmlinux.initramfs ]; then |
@@ -34,18 +42,18 @@ uboot_prep_kimage() { | |||
34 | linux_comp="${FIT_KERNEL_COMP_ALG}" | 42 | linux_comp="${FIT_KERNEL_COMP_ALG}" |
35 | fi | 43 | fi |
36 | 44 | ||
37 | [ -n "${vmlinux_path}" ] && ${KERNEL_OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin | 45 | [ -n "$vmlinux_path" ] && ${KERNEL_OBJCOPY} -O binary -R .note -R .comment -S "$vmlinux_path" "$linux_bin" |
38 | 46 | ||
39 | if [ "${linux_comp}" != "none" ] ; then | 47 | if [ "$linux_comp" != "none" ] ; then |
40 | if [ "${linux_comp}" = "gzip" ] ; then | 48 | if [ "$linux_comp" = "gzip" ] ; then |
41 | gzip -9 linux.bin | 49 | gzip -9 "$linux_bin" |
42 | elif [ "${linux_comp}" = "lzo" ] ; then | 50 | elif [ "$linux_comp" = "lzo" ] ; then |
43 | lzop -9 linux.bin | 51 | lzop -9 "$linux_bin" |
44 | elif [ "${linux_comp}" = "lzma" ] ; then | 52 | elif [ "$linux_comp" = "lzma" ] ; then |
45 | xz --format=lzma -f -6 linux.bin | 53 | xz --format=lzma -f -6 "$linux_bin" |
46 | fi | 54 | fi |
47 | mv -f "linux.bin${linux_suffix}" linux.bin | 55 | mv -f "$linux_bin$linux_suffix" "$linux_bin" |
48 | fi | 56 | fi |
49 | 57 | ||
50 | echo "${linux_comp}" | 58 | printf "$linux_comp" > "$output_dir/linux_comp" |
51 | } | 59 | } |
diff --git a/meta/classes-recipe/kernel-uimage.bbclass b/meta/classes-recipe/kernel-uimage.bbclass index 1a599e656c..e353232a0e 100644 --- a/meta/classes-recipe/kernel-uimage.bbclass +++ b/meta/classes-recipe/kernel-uimage.bbclass | |||
@@ -29,6 +29,7 @@ python __anonymous () { | |||
29 | do_uboot_mkimage[dirs] += "${B}" | 29 | do_uboot_mkimage[dirs] += "${B}" |
30 | do_uboot_mkimage() { | 30 | do_uboot_mkimage() { |
31 | uboot_prep_kimage | 31 | uboot_prep_kimage |
32 | linux_comp="$(cat linux_comp)" | ||
32 | 33 | ||
33 | ENTRYPOINT=${UBOOT_ENTRYPOINT} | 34 | ENTRYPOINT=${UBOOT_ENTRYPOINT} |
34 | if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then | 35 | if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then |
@@ -36,6 +37,6 @@ do_uboot_mkimage() { | |||
36 | awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'` | 37 | awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'` |
37 | fi | 38 | fi |
38 | 39 | ||
39 | uboot-mkimage -A ${UBOOT_ARCH} -O linux -T ${UBOOT_MKIMAGE_KERNEL_TYPE} -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage | 40 | uboot-mkimage -A ${UBOOT_ARCH} -O linux -T ${UBOOT_MKIMAGE_KERNEL_TYPE} -C "$linux_comp" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage |
40 | rm -f linux.bin | 41 | rm -f linux.bin |
41 | } | 42 | } |
diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass index 36ce659762..2d9943c8a0 100644 --- a/meta/classes-recipe/kernel.bbclass +++ b/meta/classes-recipe/kernel.bbclass | |||
@@ -84,6 +84,10 @@ python __anonymous () { | |||
84 | types = (alttype + ' ' + types).strip() | 84 | types = (alttype + ' ' + types).strip() |
85 | d.setVar('KERNEL_IMAGETYPES', types) | 85 | d.setVar('KERNEL_IMAGETYPES', types) |
86 | 86 | ||
87 | # Since kernel-fitimage.bbclass got replaced by kernel-fit-image.bbclass | ||
88 | if "fitImage" in types: | ||
89 | bb.error("fitImage is no longer supported as a KERNEL_IMAGETYPE(S). FIT images are built by the linux-yocto-fitimage recipe.") | ||
90 | |||
87 | # KERNEL_IMAGETYPES may contain a mixture of image types supported directly | 91 | # KERNEL_IMAGETYPES may contain a mixture of image types supported directly |
88 | # by the kernel build system and types which are created by post-processing | 92 | # by the kernel build system and types which are created by post-processing |
89 | # the output of the kernel build system (e.g. compressing vmlinux -> | 93 | # the output of the kernel build system (e.g. compressing vmlinux -> |
@@ -477,17 +481,10 @@ kernel_do_install() { | |||
477 | install -d ${D}/${KERNEL_IMAGEDEST} | 481 | install -d ${D}/${KERNEL_IMAGEDEST} |
478 | 482 | ||
479 | # | 483 | # |
480 | # When including an initramfs bundle inside a FIT image, the fitImage is created after the install task | 484 | # bundle_initramfs runs after do_install before do_deploy. do_deploy does what's needed therefore. |
481 | # by do_assemble_fitimage_initramfs. | ||
482 | # This happens after the generation of the initramfs bundle (done by do_bundle_initramfs). | ||
483 | # So, at the level of the install task we should not try to install the fitImage. fitImage is still not | ||
484 | # generated yet. | ||
485 | # After the generation of the fitImage, the deploy task copies the fitImage from the build directory to | ||
486 | # the deploy folder. | ||
487 | # | 485 | # |
488 | |||
489 | for imageType in ${KERNEL_IMAGETYPES} ; do | 486 | for imageType in ${KERNEL_IMAGETYPES} ; do |
490 | if [ $imageType != "fitImage" ] || [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ] ; then | 487 | if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ] ; then |
491 | install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType ${D}/${KERNEL_IMAGEDEST}/$imageType-${KERNEL_VERSION} | 488 | install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType ${D}/${KERNEL_IMAGEDEST}/$imageType-${KERNEL_VERSION} |
492 | fi | 489 | fi |
493 | done | 490 | done |
@@ -845,9 +842,6 @@ kernel_do_deploy() { | |||
845 | 842 | ||
846 | if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then | 843 | if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then |
847 | for imageType in ${KERNEL_IMAGETYPES} ; do | 844 | for imageType in ${KERNEL_IMAGETYPES} ; do |
848 | if [ "$imageType" = "fitImage" ] ; then | ||
849 | continue | ||
850 | fi | ||
851 | initramfsBaseName=$imageType-${INITRAMFS_NAME} | 845 | initramfsBaseName=$imageType-${INITRAMFS_NAME} |
852 | install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType.initramfs $deployDir/$initramfsBaseName${KERNEL_IMAGE_BIN_EXT} | 846 | install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType.initramfs $deployDir/$initramfsBaseName${KERNEL_IMAGE_BIN_EXT} |
853 | if [ -n "${INITRAMFS_LINK_NAME}" ] ; then | 847 | if [ -n "${INITRAMFS_LINK_NAME}" ] ; then |
diff --git a/meta/classes-recipe/populate_sdk_ext.bbclass b/meta/classes-recipe/populate_sdk_ext.bbclass index de4799f013..2d7d661d25 100644 --- a/meta/classes-recipe/populate_sdk_ext.bbclass +++ b/meta/classes-recipe/populate_sdk_ext.bbclass | |||
@@ -40,7 +40,7 @@ ESDK_LOCALCONF_REMOVE ?= "CONF_VERSION \ | |||
40 | TMPDIR \ | 40 | TMPDIR \ |
41 | BB_SERVER_TIMEOUT \ | 41 | BB_SERVER_TIMEOUT \ |
42 | " | 42 | " |
43 | ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc" | 43 | ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory" |
44 | SDK_UPDATE_URL ?= "" | 44 | SDK_UPDATE_URL ?= "" |
45 | 45 | ||
46 | SDK_TARGETS ?= "${PN}" | 46 | SDK_TARGETS ?= "${PN}" |
diff --git a/meta/classes-recipe/uboot-sign.bbclass b/meta/classes-recipe/uboot-sign.bbclass index 796c040e8b..73e9ce3f11 100644 --- a/meta/classes-recipe/uboot-sign.bbclass +++ b/meta/classes-recipe/uboot-sign.bbclass | |||
@@ -112,13 +112,14 @@ UBOOT_FIT_CONF_USER_LOADABLES ?= '' | |||
112 | UBOOT_FIT_UBOOT_LOADADDRESS ?= "${UBOOT_LOADADDRESS}" | 112 | UBOOT_FIT_UBOOT_LOADADDRESS ?= "${UBOOT_LOADADDRESS}" |
113 | UBOOT_FIT_UBOOT_ENTRYPOINT ?= "${UBOOT_ENTRYPOINT}" | 113 | UBOOT_FIT_UBOOT_ENTRYPOINT ?= "${UBOOT_ENTRYPOINT}" |
114 | 114 | ||
115 | |||
116 | DEPENDS:append = " ${@'kernel-signing-keys-native' if d.getVar('FIT_GENERATE_KEYS') == '1' else ''}" | ||
117 | |||
115 | python() { | 118 | python() { |
116 | # We need u-boot-tools-native if we're creating a U-Boot fitImage | 119 | # We need u-boot-tools-native if we're creating a U-Boot fitImage |
117 | sign = d.getVar('UBOOT_SIGN_ENABLE') == '1' | 120 | sign = d.getVar('UBOOT_SIGN_ENABLE') == '1' |
118 | if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' or sign: | 121 | if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' or sign: |
119 | d.appendVar('DEPENDS', " u-boot-tools-native dtc-native") | 122 | d.appendVar('DEPENDS', " u-boot-tools-native dtc-native") |
120 | if d.getVar('FIT_GENERATE_KEYS') == '1' and sign: | ||
121 | d.appendVarFlag('do_uboot_assemble_fitimage', 'depends', ' virtual/kernel:do_kernel_generate_rsa_keys') | ||
122 | } | 123 | } |
123 | 124 | ||
124 | concat_dtb() { | 125 | concat_dtb() { |
diff --git a/meta/classes-recipe/update-alternatives.bbclass b/meta/classes-recipe/update-alternatives.bbclass index b153e1b297..5f40dc23ea 100644 --- a/meta/classes-recipe/update-alternatives.bbclass +++ b/meta/classes-recipe/update-alternatives.bbclass | |||
@@ -73,24 +73,6 @@ UPDALTVARS = "ALTERNATIVE ALTERNATIVE_LINK_NAME ALTERNATIVE_TARGET ALTERNATIVE_ | |||
73 | 73 | ||
74 | PACKAGE_WRITE_DEPS += "virtual/update-alternatives-native" | 74 | PACKAGE_WRITE_DEPS += "virtual/update-alternatives-native" |
75 | 75 | ||
76 | def gen_updatealternativesvardeps(d): | ||
77 | pkgs = (d.getVar("PACKAGES") or "").split() | ||
78 | vars = (d.getVar("UPDALTVARS") or "").split() | ||
79 | |||
80 | # First compute them for non_pkg versions | ||
81 | for v in vars: | ||
82 | for flag in sorted((d.getVarFlags(v) or {}).keys()): | ||
83 | if flag == "doc" or flag == "vardeps" or flag == "vardepsexp": | ||
84 | continue | ||
85 | d.appendVar('%s_VARDEPS' % (v), ' %s:%s' % (flag, d.getVarFlag(v, flag, False))) | ||
86 | |||
87 | for p in pkgs: | ||
88 | for v in vars: | ||
89 | for flag in sorted((d.getVarFlags("%s:%s" % (v,p)) or {}).keys()): | ||
90 | if flag == "doc" or flag == "vardeps" or flag == "vardepsexp": | ||
91 | continue | ||
92 | d.appendVar('%s_VARDEPS_%s' % (v,p), ' %s:%s' % (flag, d.getVarFlag('%s:%s' % (v,p), flag, False))) | ||
93 | |||
94 | def ua_extend_depends(d): | 76 | def ua_extend_depends(d): |
95 | if not 'virtual/update-alternatives' in d.getVar('PROVIDES'): | 77 | if not 'virtual/update-alternatives' in d.getVar('PROVIDES'): |
96 | d.appendVar('DEPENDS', ' virtual/${MLPREFIX}update-alternatives') | 78 | d.appendVar('DEPENDS', ' virtual/${MLPREFIX}update-alternatives') |
@@ -112,9 +94,6 @@ python __anonymous() { | |||
112 | if not update_alternatives_enabled(d): | 94 | if not update_alternatives_enabled(d): |
113 | return | 95 | return |
114 | 96 | ||
115 | # compute special vardeps | ||
116 | gen_updatealternativesvardeps(d) | ||
117 | |||
118 | # extend the depends to include virtual/update-alternatives | 97 | # extend the depends to include virtual/update-alternatives |
119 | ua_extend_depends(d) | 98 | ua_extend_depends(d) |
120 | } | 99 | } |
@@ -124,13 +103,20 @@ def gen_updatealternativesvars(d): | |||
124 | pkgs = (d.getVar("PACKAGES") or "").split() | 103 | pkgs = (d.getVar("PACKAGES") or "").split() |
125 | vars = (d.getVar("UPDALTVARS") or "").split() | 104 | vars = (d.getVar("UPDALTVARS") or "").split() |
126 | 105 | ||
106 | # First compute them for non_pkg versions | ||
127 | for v in vars: | 107 | for v in vars: |
128 | ret.append(v + "_VARDEPS") | 108 | for flag in sorted((d.getVarFlags(v) or {}).keys()): |
109 | if flag == "doc" or flag == "vardeps" or flag == "vardepsexp": | ||
110 | continue | ||
111 | ret.append(v + "[" + flag + "]") | ||
129 | 112 | ||
130 | for p in pkgs: | 113 | for p in pkgs: |
131 | for v in vars: | 114 | for v in vars: |
132 | ret.append(v + ":" + p) | 115 | for flag in sorted((d.getVarFlags("%s:%s" % (v,p)) or {}).keys()): |
133 | ret.append(v + "_VARDEPS_" + p) | 116 | if flag == "doc" or flag == "vardeps" or flag == "vardepsexp": |
117 | continue | ||
118 | ret.append('%s:%s' % (v,p) + "[" + flag + "]") | ||
119 | |||
134 | return " ".join(ret) | 120 | return " ".join(ret) |
135 | 121 | ||
136 | # Now the new stuff, we use a custom function to generate the right values | 122 | # Now the new stuff, we use a custom function to generate the right values |
diff --git a/meta/classes/icecc.bbclass b/meta/classes/icecc.bbclass deleted file mode 100644 index 8a48f2ad63..0000000000 --- a/meta/classes/icecc.bbclass +++ /dev/null | |||
@@ -1,443 +0,0 @@ | |||
1 | # | ||
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: MIT | ||
5 | # | ||
6 | |||
7 | # Icecream distributed compiling support | ||
8 | # | ||
9 | # Stages directories with symlinks from gcc/g++ to icecc, for both | ||
10 | # native and cross compilers. Depending on each configure or compile, | ||
11 | # the directories are added at the head of the PATH list and ICECC_CXX | ||
12 | # and ICECC_CC are set. | ||
13 | # | ||
14 | # For the cross compiler, creates a tar.gz of our toolchain and sets | ||
15 | # ICECC_VERSION accordingly. | ||
16 | # | ||
17 | # The class now handles all 3 different compile 'stages' (i.e native ,cross-kernel and target) creating the | ||
18 | # necessary environment tar.gz file to be used by the remote machines. | ||
19 | # It also supports meta-toolchain generation. | ||
20 | # | ||
21 | # If ICECC_PATH is not set in local.conf then the class will try to locate it using 'bb.utils.which' | ||
22 | # but nothing is sure. ;) | ||
23 | # | ||
24 | # If ICECC_ENV_EXEC is set in local.conf, then it should point to the icecc-create-env script provided by the user | ||
25 | # or the default one provided by icecc-create-env_0.1.bb will be used. | ||
26 | # (NOTE that this is a modified version of the needed script and *not the one that comes with icecream*). | ||
27 | # | ||
28 | # User can specify if specific recipes or recipes inheriting specific classes should not use icecc to distribute | ||
29 | # compile jobs to remote machines, but handle them locally by defining ICECC_CLASS_DISABLE and ICECC_RECIPE_DISABLE | ||
30 | # with the appropriate values in local.conf. In addition the user can force to enable icecc for recipes | ||
31 | # which set an empty PARALLEL_MAKE variable by defining ICECC_RECIPE_ENABLE. | ||
32 | # | ||
33 | ######################################################################################### | ||
34 | # Error checking is kept to minimum so double check any parameters you pass to the class | ||
35 | ######################################################################################### | ||
36 | |||
37 | BB_BASEHASH_IGNORE_VARS += "ICECC_PARALLEL_MAKE ICECC_DISABLED ICECC_RECIPE_DISABLE \ | ||
38 | ICECC_CLASS_DISABLE ICECC_RECIPE_ENABLE ICECC_PATH ICECC_ENV_EXEC \ | ||
39 | ICECC_CARET_WORKAROUND ICECC_CFLAGS ICECC_ENV_VERSION \ | ||
40 | ICECC_DEBUG ICECC_LOGFILE ICECC_REPEAT_RATE ICECC_PREFERRED_HOST \ | ||
41 | ICECC_CLANG_REMOTE_CPP ICECC_IGNORE_UNVERIFIED ICECC_TEST_SOCKET \ | ||
42 | ICECC_ENV_DEBUG ICECC_REMOTE_CPP \ | ||
43 | " | ||
44 | |||
45 | ICECC_ENV_EXEC ?= "${STAGING_BINDIR_NATIVE}/icecc-create-env" | ||
46 | |||
47 | HOSTTOOLS_NONFATAL += "icecc patchelf" | ||
48 | |||
49 | # This version can be incremented when changes are made to the environment that | ||
50 | # invalidate the version on the compile nodes. Changing it will cause a new | ||
51 | # environment to be created. | ||
52 | # | ||
53 | # A useful thing to do for testing icecream changes locally is to add a | ||
54 | # subversion in local.conf: | ||
55 | # ICECC_ENV_VERSION:append = "-my-ver-1" | ||
56 | ICECC_ENV_VERSION = "2" | ||
57 | |||
58 | # Default to disabling the caret workaround, If set to "1" in local.conf, icecc | ||
59 | # will locally recompile any files that have warnings, which can adversely | ||
60 | # affect performance. | ||
61 | # | ||
62 | # See: https://github.com/icecc/icecream/issues/190 | ||
63 | export ICECC_CARET_WORKAROUND ??= "0" | ||
64 | |||
65 | export ICECC_REMOTE_CPP ??= "0" | ||
66 | |||
67 | ICECC_CFLAGS = "" | ||
68 | CFLAGS += "${ICECC_CFLAGS}" | ||
69 | CXXFLAGS += "${ICECC_CFLAGS}" | ||
70 | |||
71 | # Debug flags when generating environments | ||
72 | ICECC_ENV_DEBUG ??= "" | ||
73 | |||
74 | # Disable recipe list contains a list of recipes that can not distribute | ||
75 | # compile tasks for one reason or the other. When adding a new entry, please | ||
76 | # document why (how it failed) so that we can re-evaluate it later e.g. when | ||
77 | # there is a new version. | ||
78 | # | ||
79 | # libgcc-initial - fails with CPP sanity check error if host sysroot contains | ||
80 | # cross gcc built for another target tune/variant. | ||
81 | # pixman - prng_state: TLS reference mismatches non-TLS reference, possibly due to | ||
82 | # pragma omp threadprivate(prng_state). | ||
83 | # systemtap - _HelperSDT.c undefs macros and uses the identifiers in macros emitting | ||
84 | # inline assembly. | ||
85 | # target-sdk-provides-dummy - ${HOST_PREFIX} is empty which triggers the "NULL | ||
86 | # prefix" error. | ||
87 | ICECC_RECIPE_DISABLE += "\ | ||
88 | libgcc-initial \ | ||
89 | pixman \ | ||
90 | systemtap \ | ||
91 | target-sdk-provides-dummy \ | ||
92 | " | ||
93 | |||
94 | # Classes that should not use icecc. When adding a new entry, please | ||
95 | # document why (how it failed) so that we can re-evaluate it later. | ||
96 | # | ||
97 | # image - images aren't compiling, but the testing framework for images captures | ||
98 | # PARALLEL_MAKE as part of the test environment. Many tests won't use | ||
99 | # icecream, but leaving the high level of parallelism can cause them to | ||
100 | # consume an unnecessary amount of resources. | ||
101 | ICECC_CLASS_DISABLE += "\ | ||
102 | image \ | ||
103 | " | ||
104 | |||
105 | def get_icecc_dep(d): | ||
106 | # INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not | ||
107 | # we need that built is the responsibility of the patch function / class, not | ||
108 | # the application. | ||
109 | if not d.getVar('INHIBIT_DEFAULT_DEPS'): | ||
110 | return "icecc-create-env-native" | ||
111 | return "" | ||
112 | |||
113 | DEPENDS:prepend = "${@get_icecc_dep(d)} " | ||
114 | |||
115 | get_cross_kernel_cc[vardepsexclude] += "KERNEL_CC" | ||
116 | def get_cross_kernel_cc(bb,d): | ||
117 | if not icecc_is_kernel(bb, d): | ||
118 | return None | ||
119 | |||
120 | # evaluate the expression by the shell if necessary | ||
121 | kernel_cc = d.getVar('KERNEL_CC') | ||
122 | if '`' in kernel_cc or '$(' in kernel_cc: | ||
123 | import subprocess | ||
124 | kernel_cc = subprocess.check_output("echo %s" % kernel_cc, shell=True).decode("utf-8")[:-1] | ||
125 | |||
126 | kernel_cc = kernel_cc.replace('ccache', '').strip() | ||
127 | kernel_cc = kernel_cc.split(' ')[0] | ||
128 | kernel_cc = kernel_cc.strip() | ||
129 | return kernel_cc | ||
130 | |||
131 | def get_icecc(d): | ||
132 | return d.getVar('ICECC_PATH') or bb.utils.which(os.getenv("PATH"), "icecc") | ||
133 | |||
134 | def use_icecc(bb,d): | ||
135 | if d.getVar('ICECC_DISABLED') == "1": | ||
136 | # don't even try it, when explicitly disabled | ||
137 | return "no" | ||
138 | |||
139 | # allarch recipes don't use compiler | ||
140 | if icecc_is_allarch(bb, d): | ||
141 | return "no" | ||
142 | |||
143 | if icecc_is_cross_canadian(bb, d): | ||
144 | return "no" | ||
145 | |||
146 | pn = d.getVar('PN') | ||
147 | bpn = d.getVar('BPN') | ||
148 | |||
149 | # Enable/disable checks are made against BPN, because there is a good | ||
150 | # chance that if icecc should be skipped for a recipe, it should be skipped | ||
151 | # for all the variants of that recipe. PN is still checked in case a user | ||
152 | # specified a more specific recipe. | ||
153 | check_pn = set([pn, bpn]) | ||
154 | |||
155 | class_disable = (d.getVar('ICECC_CLASS_DISABLE') or "").split() | ||
156 | |||
157 | for bbclass in class_disable: | ||
158 | if bb.data.inherits_class(bbclass, d): | ||
159 | bb.debug(1, "%s: bbclass %s found in disable, disable icecc" % (pn, bbclass)) | ||
160 | return "no" | ||
161 | |||
162 | disabled_recipes = (d.getVar('ICECC_RECIPE_DISABLE') or "").split() | ||
163 | enabled_recipes = (d.getVar('ICECC_RECIPE_ENABLE') or "").split() | ||
164 | |||
165 | if check_pn & set(disabled_recipes): | ||
166 | bb.debug(1, "%s: found in disable list, disable icecc" % pn) | ||
167 | return "no" | ||
168 | |||
169 | if check_pn & set(enabled_recipes): | ||
170 | bb.debug(1, "%s: found in enabled recipes list, enable icecc" % pn) | ||
171 | return "yes" | ||
172 | |||
173 | if d.getVar('PARALLEL_MAKE') == "": | ||
174 | bb.debug(1, "%s: has empty PARALLEL_MAKE, disable icecc" % pn) | ||
175 | return "no" | ||
176 | |||
177 | return "yes" | ||
178 | |||
179 | def icecc_is_allarch(bb, d): | ||
180 | return d.getVar("PACKAGE_ARCH") == "all" | ||
181 | |||
182 | def icecc_is_kernel(bb, d): | ||
183 | return \ | ||
184 | bb.data.inherits_class("kernel", d); | ||
185 | |||
186 | def icecc_is_native(bb, d): | ||
187 | return \ | ||
188 | bb.data.inherits_class("cross", d) or \ | ||
189 | bb.data.inherits_class("native", d); | ||
190 | |||
191 | def icecc_is_cross_canadian(bb, d): | ||
192 | return bb.data.inherits_class("cross-canadian", d) | ||
193 | |||
194 | def icecc_dir(bb, d): | ||
195 | return d.expand('${TMPDIR}/work-shared/ice') | ||
196 | |||
197 | # Don't pollute allarch signatures with TARGET_FPU | ||
198 | icecc_version[vardepsexclude] += "TARGET_FPU" | ||
199 | def icecc_version(bb, d): | ||
200 | if use_icecc(bb, d) == "no": | ||
201 | return "" | ||
202 | |||
203 | parallel = d.getVar('ICECC_PARALLEL_MAKE') or "" | ||
204 | if not d.getVar('PARALLEL_MAKE') == "" and parallel: | ||
205 | d.setVar("PARALLEL_MAKE", parallel) | ||
206 | |||
207 | # Disable showing the caret in the GCC compiler output if the workaround is | ||
208 | # disabled | ||
209 | if d.getVar('ICECC_CARET_WORKAROUND') == '0': | ||
210 | d.setVar('ICECC_CFLAGS', '-fno-diagnostics-show-caret') | ||
211 | |||
212 | if icecc_is_native(bb, d): | ||
213 | archive_name = "local-host-env" | ||
214 | elif d.expand('${HOST_PREFIX}') == "": | ||
215 | bb.fatal(d.expand("${PN}"), " NULL prefix") | ||
216 | else: | ||
217 | prefix = d.expand('${HOST_PREFIX}' ) | ||
218 | distro = d.expand('${DISTRO}') | ||
219 | target_sys = d.expand('${TARGET_SYS}') | ||
220 | float = d.getVar('TARGET_FPU') or "hard" | ||
221 | archive_name = prefix + distro + "-" + target_sys + "-" + float | ||
222 | if icecc_is_kernel(bb, d): | ||
223 | archive_name += "-kernel" | ||
224 | |||
225 | import socket | ||
226 | ice_dir = icecc_dir(bb, d) | ||
227 | tar_file = os.path.join(ice_dir, "{archive}-{version}-@VERSION@-{hostname}.tar.gz".format( | ||
228 | archive=archive_name, | ||
229 | version=d.getVar('ICECC_ENV_VERSION'), | ||
230 | hostname=socket.gethostname() | ||
231 | )) | ||
232 | |||
233 | return tar_file | ||
234 | |||
235 | def icecc_path(bb,d): | ||
236 | if use_icecc(bb, d) == "no": | ||
237 | # don't create unnecessary directories when icecc is disabled | ||
238 | return | ||
239 | |||
240 | staging = os.path.join(d.expand('${STAGING_BINDIR}'), "ice") | ||
241 | if icecc_is_kernel(bb, d): | ||
242 | staging += "-kernel" | ||
243 | |||
244 | return staging | ||
245 | |||
246 | def icecc_get_external_tool(bb, d, tool): | ||
247 | external_toolchain_bindir = d.expand('${EXTERNAL_TOOLCHAIN}${bindir_cross}') | ||
248 | target_prefix = d.expand('${TARGET_PREFIX}') | ||
249 | return os.path.join(external_toolchain_bindir, '%s%s' % (target_prefix, tool)) | ||
250 | |||
251 | def icecc_get_tool_link(tool, d): | ||
252 | import subprocess | ||
253 | try: | ||
254 | return subprocess.check_output("readlink -f %s" % tool, shell=True).decode("utf-8")[:-1] | ||
255 | except subprocess.CalledProcessError as e: | ||
256 | bb.note("icecc: one of the tools probably disappeared during recipe parsing, cmd readlink -f %s returned %d:\n%s" % (tool, e.returncode, e.output.decode("utf-8"))) | ||
257 | return tool | ||
258 | |||
259 | def icecc_get_path_tool(tool, d): | ||
260 | # This is a little ugly, but we want to make sure we add an actual | ||
261 | # compiler to the toolchain, not ccache. Some distros (e.g. Fedora) | ||
262 | # have ccache enabled by default using symlinks in PATH, meaning ccache | ||
263 | # would be found first when looking for the compiler. | ||
264 | paths = os.getenv("PATH").split(':') | ||
265 | while True: | ||
266 | p, hist = bb.utils.which(':'.join(paths), tool, history=True) | ||
267 | if not p or os.path.basename(icecc_get_tool_link(p, d)) != 'ccache': | ||
268 | return p | ||
269 | paths = paths[len(hist):] | ||
270 | |||
271 | return "" | ||
272 | |||
273 | # Don't pollute native signatures with target TUNE_PKGARCH through STAGING_BINDIR_TOOLCHAIN | ||
274 | icecc_get_tool[vardepsexclude] += "STAGING_BINDIR_TOOLCHAIN" | ||
275 | def icecc_get_tool(bb, d, tool): | ||
276 | if icecc_is_native(bb, d): | ||
277 | return icecc_get_path_tool(tool, d) | ||
278 | elif icecc_is_kernel(bb, d): | ||
279 | return icecc_get_path_tool(get_cross_kernel_cc(bb, d), d) | ||
280 | else: | ||
281 | ice_dir = d.expand('${STAGING_BINDIR_TOOLCHAIN}') | ||
282 | target_sys = d.expand('${TARGET_SYS}') | ||
283 | for p in ice_dir.split(':'): | ||
284 | tool_bin = os.path.join(p, "%s-%s" % (target_sys, tool)) | ||
285 | if os.path.isfile(tool_bin): | ||
286 | return tool_bin | ||
287 | external_tool_bin = icecc_get_external_tool(bb, d, tool) | ||
288 | if os.path.isfile(external_tool_bin): | ||
289 | return external_tool_bin | ||
290 | return "" | ||
291 | |||
292 | def icecc_get_and_check_tool(bb, d, tool): | ||
293 | # Check that g++ or gcc is not a symbolic link to icecc binary in | ||
294 | # PATH or icecc-create-env script will silently create an invalid | ||
295 | # compiler environment package. | ||
296 | t = icecc_get_tool(bb, d, tool) | ||
297 | if t: | ||
298 | link_path = icecc_get_tool_link(t, d) | ||
299 | if link_path == get_icecc(d): | ||
300 | bb.error("%s is a symlink to %s in PATH and this prevents icecc from working" % (t, link_path)) | ||
301 | return "" | ||
302 | else: | ||
303 | return t | ||
304 | else: | ||
305 | return t | ||
306 | |||
307 | set_icecc_env[vardepsexclude] += "KERNEL_CC" | ||
308 | python set_icecc_env() { | ||
309 | import os | ||
310 | import subprocess | ||
311 | |||
312 | if use_icecc(bb, d) == "no": | ||
313 | return | ||
314 | ICECC_VERSION = icecc_version(bb, d) | ||
315 | if not ICECC_VERSION: | ||
316 | bb.warn("Cannot use icecc: could not get ICECC_VERSION") | ||
317 | return | ||
318 | |||
319 | ICE_PATH = icecc_path(bb, d) | ||
320 | if not ICE_PATH: | ||
321 | bb.warn("Cannot use icecc: could not get ICE_PATH") | ||
322 | return | ||
323 | |||
324 | ICECC_BIN = get_icecc(d) | ||
325 | if not ICECC_BIN: | ||
326 | bb.warn("Cannot use icecc: icecc binary not found") | ||
327 | return | ||
328 | |||
329 | if (not bb.utils.which(os.getenv("PATH"), "patchelf") and | ||
330 | not bb.utils.which(os.getenv("PATH"), "patchelf-uninative")): | ||
331 | bb.warn("Cannot use icecc: patchelf not found") | ||
332 | return | ||
333 | |||
334 | ICECC_CC = icecc_get_and_check_tool(bb, d, "gcc") | ||
335 | ICECC_CXX = icecc_get_and_check_tool(bb, d, "g++") | ||
336 | # cannot use icecc_get_and_check_tool here because it assumes as without target_sys prefix | ||
337 | ICECC_WHICH_AS = bb.utils.which(os.getenv('PATH'), 'as') | ||
338 | if (not os.access(ICECC_CC, os.X_OK) or | ||
339 | not os.access(ICECC_CXX, os.X_OK)): | ||
340 | bb.note("Cannot use icecc: could not get ICECC_CC or ICECC_CXX") | ||
341 | return | ||
342 | |||
343 | cmd = [] | ||
344 | try: | ||
345 | cmd = [ICECC_CC, '-dumpversion'] | ||
346 | ICE_VERSION = subprocess.check_output(cmd).decode("utf-8").strip() | ||
347 | except subprocess.CalledProcessError as e: | ||
348 | bb.warn("icecc: '{}' returned {}:\n{}".format(cmd, e.returncode, e.output.decode("utf-8"))) | ||
349 | return | ||
350 | |||
351 | ICECC_VERSION = ICECC_VERSION.replace("@VERSION@", ICE_VERSION) | ||
352 | |||
353 | if not os.access(d.getVar('ICECC_ENV_EXEC'), os.X_OK): | ||
354 | bb.warn("Cannot use icecc: invalid ICECC_ENV_EXEC") | ||
355 | return | ||
356 | |||
357 | # Create symlinks to icecc and wrapper-scripts in the recipe-sysroot directory | ||
358 | symlink_path = os.path.join(ICE_PATH, "symlinks") | ||
359 | bb.utils.mkdirhier(symlink_path) | ||
360 | compilers = [] | ||
361 | if icecc_is_kernel(bb, d): | ||
362 | compilers.append(get_cross_kernel_cc(bb,d)) | ||
363 | else: | ||
364 | host_prefix = d.getVar('HOST_PREFIX') | ||
365 | compilers.extend([host_prefix + 'gcc', host_prefix + 'g++']) | ||
366 | |||
367 | for compiler in compilers: | ||
368 | try: | ||
369 | os.symlink(ICECC_BIN, symlink_path + '/' + compiler) | ||
370 | except FileExistsError: | ||
371 | pass | ||
372 | wrapper_script = os.path.join(ICE_PATH, compiler) | ||
373 | with open(wrapper_script, 'w') as fd: | ||
374 | fd.write("#!/bin/sh -e\n") | ||
375 | fd.write("export ICECC_VERSION={}\n".format(ICECC_VERSION)) | ||
376 | fd.write("export ICECC_CC={}\n".format(ICECC_CC)) | ||
377 | fd.write("export ICECC_CXX={}\n".format(ICECC_CXX)) | ||
378 | fd.write("{} \"$@\"\n".format(os.path.join(ICE_PATH, "symlinks", compiler))) | ||
379 | os.chmod(wrapper_script, 0o755) | ||
380 | |||
381 | try: | ||
382 | cmd = [ICECC_CC, '-print-prog-name=as'] | ||
383 | ICECC_AS = subprocess.check_output(cmd).decode("utf-8").strip() | ||
384 | except subprocess.CalledProcessError as e: | ||
385 | bb.warn("icecc: '{}' returned {}:\n{}".format(cmd, e.returncode, e.output.decode("utf-8"))) | ||
386 | return | ||
387 | # for target recipes should return something like: | ||
388 | # /OE/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/arm920tt-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.8.2/as | ||
389 | # and just "as" for native, if it returns "as" in current directory (for whatever reason) use "as" from PATH | ||
390 | if not os.path.dirname(ICECC_AS): | ||
391 | ICECC_AS = ICECC_WHICH_AS | ||
392 | |||
393 | if not os.path.isfile(ICECC_VERSION + ".done"): | ||
394 | bb.utils.mkdirhier(os.path.dirname(ICECC_VERSION)) | ||
395 | |||
396 | # the ICECC_VERSION generation step must be locked by a mutex | ||
397 | # in order to prevent race conditions | ||
398 | lock = bb.utils.lockfile(ICECC_VERSION + '.lock') | ||
399 | try: | ||
400 | cmd = [d.getVar('ICECC_ENV_EXEC')] | ||
401 | if d.getVar('ICECC_ENV_DEBUG'): | ||
402 | cmd.append(d.getVar('ICECC_ENV_DEBUG')) | ||
403 | cmd.extend([ICECC_CC, ICECC_CXX, ICECC_AS, ICECC_VERSION]) | ||
404 | subprocess.check_output(cmd) | ||
405 | cmd = ['touch', ICECC_VERSION + '.done'] | ||
406 | subprocess.check_output(cmd) | ||
407 | except subprocess.CalledProcessError as e: | ||
408 | bb.warn("icecc: '{}' returned {}:\n{}".format(cmd, e.returncode, e.output.decode("utf-8"))) | ||
409 | bb.utils.unlockfile(lock) | ||
410 | return | ||
411 | bb.utils.unlockfile(lock) | ||
412 | |||
413 | # Don't let ccache find the icecream compiler links that have been created, otherwise | ||
414 | # it can end up invoking icecream recursively. | ||
415 | d.setVar('CCACHE_PATH', d.getVar('PATH')) | ||
416 | d.setVar('CCACHE_DISABLE', '1') | ||
417 | |||
418 | d.prependVar('PATH', ICE_PATH + ':') | ||
419 | |||
420 | bb.note("Using icecc path: {}".format(ICE_PATH)) | ||
421 | bb.note("Using icecc tarball: {}".format(ICECC_VERSION)) | ||
422 | } | ||
423 | |||
424 | do_configure[prefuncs] += "set_icecc_env" | ||
425 | do_compile[prefuncs] += "set_icecc_env" | ||
426 | do_compile_kernelmodules[prefuncs] += "set_icecc_env" | ||
427 | do_install[prefuncs] += "set_icecc_env" | ||
428 | |||
429 | # Icecream is not (currently) supported in the extensible SDK | ||
430 | ICECC_SDK_HOST_TASK = "nativesdk-icecc-toolchain" | ||
431 | ICECC_SDK_HOST_TASK:task-populate-sdk-ext = "" | ||
432 | |||
433 | # Don't include icecream in uninative tarball | ||
434 | ICECC_SDK_HOST_TASK:pn-uninative-tarball = "" | ||
435 | |||
436 | # Add the toolchain scripts to the SDK | ||
437 | TOOLCHAIN_HOST_TASK:append = " ${ICECC_SDK_HOST_TASK}" | ||
438 | |||
439 | python () { | ||
440 | if d.getVar('ICECC_DISABLED') != "1": | ||
441 | for task in ['do_configure', 'do_compile', 'do_compile_kernelmodules', 'do_install']: | ||
442 | d.setVarFlag(task, 'network', '1') | ||
443 | } | ||
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass index a4151658a6..b959bbd93c 100644 --- a/meta/classes/multilib.bbclass +++ b/meta/classes/multilib.bbclass | |||
@@ -21,6 +21,7 @@ python multilib_virtclass_handler () { | |||
21 | bpn = d.getVar("BPN") | 21 | bpn = d.getVar("BPN") |
22 | if ("virtual/kernel" in provides | 22 | if ("virtual/kernel" in provides |
23 | or bb.data.inherits_class('module-base', d) | 23 | or bb.data.inherits_class('module-base', d) |
24 | or bb.data.inherits_class('kernel-fit-image', d) | ||
24 | or bpn in non_ml_recipes): | 25 | or bpn in non_ml_recipes): |
25 | raise bb.parse.SkipRecipe("We shouldn't have multilib variants for %s" % bpn) | 26 | raise bb.parse.SkipRecipe("We shouldn't have multilib variants for %s" % bpn) |
26 | 27 | ||
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 13d55923b7..52e74a6879 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf | |||
@@ -518,7 +518,7 @@ HOSTTOOLS += " \ | |||
518 | [ ar as awk basename bash bunzip2 bzip2 cat chgrp chmod chown chrpath cmp comm cp cpio \ | 518 | [ ar as awk basename bash bunzip2 bzip2 cat chgrp chmod chown chrpath cmp comm cp cpio \ |
519 | cpp cut date dd diff diffstat dirname du echo egrep env expand expr false \ | 519 | cpp cut date dd diff diffstat dirname du echo egrep env expand expr false \ |
520 | fgrep file find flock g++ gawk gcc getconf getopt git grep gunzip gzip \ | 520 | fgrep file find flock g++ gawk gcc getconf getopt git grep gunzip gzip \ |
521 | head hostname iconv id install ld ldd ln ls lz4 make md5sum mkdir mkfifo mknod \ | 521 | head hostname iconv id install ld ldd ln ls make md5sum mkdir mkfifo mknod \ |
522 | mktemp mv nm objcopy objdump od patch perl pr printf pwd \ | 522 | mktemp mv nm objcopy objdump od patch perl pr printf pwd \ |
523 | python3 pzstd ranlib readelf readlink realpath rm rmdir rpcgen sed seq sh \ | 523 | python3 pzstd ranlib readelf readlink realpath rm rmdir rpcgen sed seq sh \ |
524 | sha1sum sha224sum sha256sum sha384sum sha512sum \ | 524 | sha1sum sha224sum sha256sum sha384sum sha512sum \ |
diff --git a/meta/conf/distro/include/distro_alias.inc b/meta/conf/distro/include/distro_alias.inc index 8052464f1d..20882523c2 100644 --- a/meta/conf/distro/include/distro_alias.inc +++ b/meta/conf/distro/include/distro_alias.inc | |||
@@ -105,7 +105,6 @@ DISTRO_PN_ALIAS:pn-gtk-icon-utils-native = "OSPDT" | |||
105 | DISTRO_PN_ALIAS:pn-systemd-boot = "Ubuntu=systemd-boot Fedora=systemd-boot" | 105 | DISTRO_PN_ALIAS:pn-systemd-boot = "Ubuntu=systemd-boot Fedora=systemd-boot" |
106 | DISTRO_PN_ALIAS:pn-hello-mod = "OE-Core" | 106 | DISTRO_PN_ALIAS:pn-hello-mod = "OE-Core" |
107 | DISTRO_PN_ALIAS:pn-hwlatdetect = "OSPDT" | 107 | DISTRO_PN_ALIAS:pn-hwlatdetect = "OSPDT" |
108 | DISTRO_PN_ALIAS:pn-icecc-create-env = "OE-Core" | ||
109 | DISTRO_PN_ALIAS:pn-init-ifupdown = "Debian=ifupdown Ubuntu=ifupdown" | 108 | DISTRO_PN_ALIAS:pn-init-ifupdown = "Debian=ifupdown Ubuntu=ifupdown" |
110 | DISTRO_PN_ALIAS:pn-initramfs-boot = "OE-Core" | 109 | DISTRO_PN_ALIAS:pn-initramfs-boot = "OE-Core" |
111 | DISTRO_PN_ALIAS:pn-initramfs-framework = "OE-Core" | 110 | DISTRO_PN_ALIAS:pn-initramfs-framework = "OE-Core" |
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index e5d24ac2c8..5c315d58cf 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc | |||
@@ -272,7 +272,6 @@ RECIPE_MAINTAINER:pn-hicolor-icon-theme = "Anuj Mittal <anuj.mittal@intel.com>" | |||
272 | RECIPE_MAINTAINER:pn-hwdata = "Hiago De Franco <hiago.franco@toradex.com>" | 272 | RECIPE_MAINTAINER:pn-hwdata = "Hiago De Franco <hiago.franco@toradex.com>" |
273 | RECIPE_MAINTAINER:pn-hwlatdetect = "Unassigned <unassigned@yoctoproject.org>" | 273 | RECIPE_MAINTAINER:pn-hwlatdetect = "Unassigned <unassigned@yoctoproject.org>" |
274 | RECIPE_MAINTAINER:pn-i2c-tools = "Anuj Mittal <anuj.mittal@intel.com>" | 274 | RECIPE_MAINTAINER:pn-i2c-tools = "Anuj Mittal <anuj.mittal@intel.com>" |
275 | RECIPE_MAINTAINER:pn-icecc-create-env = "Joshua Watt <JPEWhacker@gmail.com>" | ||
276 | RECIPE_MAINTAINER:pn-icon-naming-utils = "Richard Purdie <richard.purdie@linuxfoundation.org>" | 275 | RECIPE_MAINTAINER:pn-icon-naming-utils = "Richard Purdie <richard.purdie@linuxfoundation.org>" |
277 | RECIPE_MAINTAINER:pn-icu = "Unassigned <unassigned@yoctoproject.org>" | 276 | RECIPE_MAINTAINER:pn-icu = "Unassigned <unassigned@yoctoproject.org>" |
278 | RECIPE_MAINTAINER:pn-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>" | 277 | RECIPE_MAINTAINER:pn-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>" |
@@ -307,6 +306,7 @@ RECIPE_MAINTAINER:pn-kbd = "Unassigned <unassigned@yoctoproject.org>" | |||
307 | RECIPE_MAINTAINER:pn-kea = "Unassigned <unassigned@yoctoproject.org>" | 306 | RECIPE_MAINTAINER:pn-kea = "Unassigned <unassigned@yoctoproject.org>" |
308 | RECIPE_MAINTAINER:pn-kern-tools-native = "Bruce Ashfield <bruce.ashfield@gmail.com>" | 307 | RECIPE_MAINTAINER:pn-kern-tools-native = "Bruce Ashfield <bruce.ashfield@gmail.com>" |
309 | RECIPE_MAINTAINER:pn-kernel-devsrc = "Bruce Ashfield <bruce.ashfield@gmail.com>" | 308 | RECIPE_MAINTAINER:pn-kernel-devsrc = "Bruce Ashfield <bruce.ashfield@gmail.com>" |
309 | RECIPE_MAINTAINER:pn-kernel-signing-keys-native = "Adrian Freihofer <adrian.freihofer@siemens.com>" | ||
310 | RECIPE_MAINTAINER:pn-kexec-tools = "Unassigned <unassigned@yoctoproject.org>" | 310 | RECIPE_MAINTAINER:pn-kexec-tools = "Unassigned <unassigned@yoctoproject.org>" |
311 | RECIPE_MAINTAINER:pn-keymaps = "Unassigned <unassigned@yoctoproject.org>" | 311 | RECIPE_MAINTAINER:pn-keymaps = "Unassigned <unassigned@yoctoproject.org>" |
312 | RECIPE_MAINTAINER:pn-kmod = "Chen Qi <Qi.Chen@windriver.com>" | 312 | RECIPE_MAINTAINER:pn-kmod = "Chen Qi <Qi.Chen@windriver.com>" |
@@ -471,6 +471,7 @@ RECIPE_MAINTAINER:pn-libxxf86vm = "Unassigned <unassigned@yoctoproject.org>" | |||
471 | RECIPE_MAINTAINER:pn-libyaml = "Wang Mingyu <wangmy@fujitsu.com>" | 471 | RECIPE_MAINTAINER:pn-libyaml = "Wang Mingyu <wangmy@fujitsu.com>" |
472 | RECIPE_MAINTAINER:pn-lighttpd = "Unassigned <unassigned@yoctoproject.org>" | 472 | RECIPE_MAINTAINER:pn-lighttpd = "Unassigned <unassigned@yoctoproject.org>" |
473 | RECIPE_MAINTAINER:pn-linux-dummy = "Unassigned <unassigned@yoctoproject.org>" | 473 | RECIPE_MAINTAINER:pn-linux-dummy = "Unassigned <unassigned@yoctoproject.org>" |
474 | RECIPE_MAINTAINER:pn-linux-yocto-fitimage = "Adrian Freihofer <adrian.freihofer@siemens.com>" | ||
474 | RECIPE_MAINTAINER:pn-linux-firmware = "Otavio Salvador <otavio.salvador@ossystems.com.br>" | 475 | RECIPE_MAINTAINER:pn-linux-firmware = "Otavio Salvador <otavio.salvador@ossystems.com.br>" |
475 | RECIPE_MAINTAINER:pn-linux-libc-headers = "Bruce Ashfield <bruce.ashfield@gmail.com>" | 476 | RECIPE_MAINTAINER:pn-linux-libc-headers = "Bruce Ashfield <bruce.ashfield@gmail.com>" |
476 | RECIPE_MAINTAINER:pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@gmail.com>" | 477 | RECIPE_MAINTAINER:pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@gmail.com>" |
@@ -546,7 +547,6 @@ RECIPE_MAINTAINER:pn-musl-utils = "Khem Raj <raj.khem@gmail.com>" | |||
546 | RECIPE_MAINTAINER:pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>" | 547 | RECIPE_MAINTAINER:pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>" |
547 | RECIPE_MAINTAINER:pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>" | 548 | RECIPE_MAINTAINER:pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>" |
548 | RECIPE_MAINTAINER:pn-nativesdk-clang-glue = "Khem Raj <raj.khem@gmail.com>" | 549 | RECIPE_MAINTAINER:pn-nativesdk-clang-glue = "Khem Raj <raj.khem@gmail.com>" |
549 | RECIPE_MAINTAINER:pn-nativesdk-icecc-toolchain = "Joshua Watt <JPEWhacker@gmail.com>" | ||
550 | RECIPE_MAINTAINER:pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>" | 550 | RECIPE_MAINTAINER:pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>" |
551 | RECIPE_MAINTAINER:pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@arm.com>" | 551 | RECIPE_MAINTAINER:pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@arm.com>" |
552 | RECIPE_MAINTAINER:pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>" | 552 | RECIPE_MAINTAINER:pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>" |
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf index 570a604494..2710485227 100644 --- a/meta/conf/documentation.conf +++ b/meta/conf/documentation.conf | |||
@@ -201,11 +201,6 @@ HOST_VENDOR[doc] = "The name of the vendor. Normally same as the TARGET_VENDOR." | |||
201 | 201 | ||
202 | #I | 202 | #I |
203 | 203 | ||
204 | ICECC_ENV_EXEC[doc] = "Points to the icecc-create-env script that you provide." | ||
205 | ICECC_PATH[doc] = "The location of the icecc binary." | ||
206 | ICECC_CLASS_DISABLE[doc] = "Identifies user classes that you do not want the Icecream distributed compile support to consider." | ||
207 | ICECC_RECIPE_DISABLE[doc] = "Identifies user recipes that you do not want the Icecream distributed compile support to consider." | ||
208 | ICECC_RECIPE_ENABLE[doc] = "Identifies user recipes that use an empty PARALLEL_MAKE variable that you want to force remote distributed compilation on using the Icecream distributed compile support." | ||
209 | IMAGE_BASENAME[doc] = "The base name of image output files." | 204 | IMAGE_BASENAME[doc] = "The base name of image output files." |
210 | IMAGE_BOOT_FILES[doc] = "Whitespace separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition. Entries will be installed under a same name as the source file. To change the destination file name, pass a desired name after a semicolon (eg. u-boot.img;uboot)." | 205 | IMAGE_BOOT_FILES[doc] = "Whitespace separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition. Entries will be installed under a same name as the source file. To change the destination file name, pass a desired name after a semicolon (eg. u-boot.img;uboot)." |
211 | IMAGE_CLASSES[doc] = "A list of classes that all images should inherit." | 206 | IMAGE_CLASSES[doc] = "A list of classes that all images should inherit." |
diff --git a/meta/conf/fragments/yocto/sstate-mirror-cdn.conf b/meta/conf/fragments/yocto/sstate-mirror-cdn.conf new file mode 100644 index 0000000000..e204975ce3 --- /dev/null +++ b/meta/conf/fragments/yocto/sstate-mirror-cdn.conf | |||
@@ -0,0 +1,12 @@ | |||
1 | BB_CONF_FRAGMENT_SUMMARY = "Use prebuilt sstate artifacts for standard Yocto build configurations." | ||
2 | BB_CONF_FRAGMENT_DESCRIPTION = "The Yocto Project has prebuilt artefacts available for standard build configurations. \ | ||
3 | This fragment enables their use. This will mean the build will query the \ | ||
4 | the network to check for artefacts at the start of builds, which does slow it down \ | ||
5 | initially but it will then speed up the builds by not having to build things if they are \ | ||
6 | present in the cache. It assumes you can download something faster than you can build it \ | ||
7 | which will depend on your network. \ | ||
8 | Note: For this to work you also need hash-equivalence passthrough to the matching server \ | ||
9 | " | ||
10 | |||
11 | BB_HASHSERVE_UPSTREAM = 'wss://hashserv.yoctoproject.org/ws' | ||
12 | SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH" | ||
diff --git a/meta/conf/layer.conf b/meta/conf/layer.conf index e19431e724..44267ce8e2 100644 --- a/meta/conf/layer.conf +++ b/meta/conf/layer.conf | |||
@@ -53,7 +53,6 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \ | |||
53 | *->quilt-native \ | 53 | *->quilt-native \ |
54 | *->subversion-native \ | 54 | *->subversion-native \ |
55 | *->git-native \ | 55 | *->git-native \ |
56 | *->icecc-create-env-native \ | ||
57 | gcc-cross-${TARGET_ARCH}->linux-libc-headers \ | 56 | gcc-cross-${TARGET_ARCH}->linux-libc-headers \ |
58 | ppp-dialin->ppp \ | 57 | ppp-dialin->ppp \ |
59 | resolvconf->bash \ | 58 | resolvconf->bash \ |
diff --git a/meta/lib/oe/fitimage.py b/meta/lib/oe/fitimage.py new file mode 100644 index 0000000000..f303799155 --- /dev/null +++ b/meta/lib/oe/fitimage.py | |||
@@ -0,0 +1,547 @@ | |||
1 | # | ||
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: GPL-2.0-only | ||
5 | # | ||
6 | # This file contains common functions for the fitimage generation | ||
7 | |||
8 | import os | ||
9 | import shlex | ||
10 | import subprocess | ||
11 | import bb | ||
12 | |||
13 | from oeqa.utils.commands import runCmd | ||
14 | |||
15 | class ItsNode: | ||
16 | INDENT_SIZE = 8 | ||
17 | |||
18 | def __init__(self, name, parent_node, sub_nodes=None, properties=None): | ||
19 | self.name = name | ||
20 | self.parent_node = parent_node | ||
21 | |||
22 | self.sub_nodes = [] | ||
23 | if sub_nodes: | ||
24 | self.sub_nodes = sub_nodes | ||
25 | |||
26 | self.properties = {} | ||
27 | if properties: | ||
28 | self.properties = properties | ||
29 | |||
30 | if parent_node: | ||
31 | parent_node.add_sub_node(self) | ||
32 | |||
33 | def add_sub_node(self, sub_node): | ||
34 | self.sub_nodes.append(sub_node) | ||
35 | |||
36 | def add_property(self, key, value): | ||
37 | self.properties[key] = value | ||
38 | |||
39 | def emit(self, f, indent): | ||
40 | indent_str_name = " " * indent | ||
41 | indent_str_props = " " * (indent + self.INDENT_SIZE) | ||
42 | f.write("%s%s {\n" % (indent_str_name, self.name)) | ||
43 | for key, value in self.properties.items(): | ||
44 | bb.debug(1, "key: %s, value: %s" % (key, str(value))) | ||
45 | # Single integer: <0x12ab> | ||
46 | if isinstance(value, int): | ||
47 | f.write(indent_str_props + key + ' = <0x%x>;\n' % value) | ||
48 | # list of strings: "string1", "string2" or integers: <0x12ab 0x34cd> | ||
49 | elif isinstance(value, list): | ||
50 | if len(value) == 0: | ||
51 | f.write(indent_str_props + key + ' = "";\n') | ||
52 | elif isinstance(value[0], int): | ||
53 | list_entries = ' '.join('0x%x' % entry for entry in value) | ||
54 | f.write(indent_str_props + key + ' = <%s>;\n' % list_entries) | ||
55 | else: | ||
56 | list_entries = ', '.join('"%s"' % entry for entry in value) | ||
57 | f.write(indent_str_props + key + ' = %s;\n' % list_entries) | ||
58 | elif isinstance(value, str): | ||
59 | # path: /incbin/("path/to/file") | ||
60 | if key in ["data"] and value.startswith('/incbin/('): | ||
61 | f.write(indent_str_props + key + ' = %s;\n' % value) | ||
62 | # Integers which are already string formatted | ||
63 | elif value.startswith("<") and value.endswith(">"): | ||
64 | f.write(indent_str_props + key + ' = %s;\n' % value) | ||
65 | else: | ||
66 | f.write(indent_str_props + key + ' = "%s";\n' % value) | ||
67 | else: | ||
68 | bb.fatal("%s has unexpexted data type." % str(value)) | ||
69 | for sub_node in self.sub_nodes: | ||
70 | sub_node.emit(f, indent + self.INDENT_SIZE) | ||
71 | f.write(indent_str_name + '};\n') | ||
72 | |||
73 | class ItsNodeImages(ItsNode): | ||
74 | def __init__(self, parent_node): | ||
75 | super().__init__("images", parent_node) | ||
76 | |||
77 | class ItsNodeConfigurations(ItsNode): | ||
78 | def __init__(self, parent_node): | ||
79 | super().__init__("configurations", parent_node) | ||
80 | |||
81 | class ItsNodeHash(ItsNode): | ||
82 | def __init__(self, name, parent_node, algo, opt_props=None): | ||
83 | properties = { | ||
84 | "algo": algo | ||
85 | } | ||
86 | if opt_props: | ||
87 | properties.update(opt_props) | ||
88 | super().__init__(name, parent_node, None, properties) | ||
89 | |||
90 | class ItsImageSignature(ItsNode): | ||
91 | def __init__(self, name, parent_node, algo, keyname, opt_props=None): | ||
92 | properties = { | ||
93 | "algo": algo, | ||
94 | "key-name-hint": keyname | ||
95 | } | ||
96 | if opt_props: | ||
97 | properties.update(opt_props) | ||
98 | super().__init__(name, parent_node, None, properties) | ||
99 | |||
100 | class ItsNodeImage(ItsNode): | ||
101 | def __init__(self, name, parent_node, description, type, compression, sub_nodes=None, opt_props=None): | ||
102 | properties = { | ||
103 | "description": description, | ||
104 | "type": type, | ||
105 | "compression": compression, | ||
106 | } | ||
107 | if opt_props: | ||
108 | properties.update(opt_props) | ||
109 | super().__init__(name, parent_node, sub_nodes, properties) | ||
110 | |||
111 | class ItsNodeDtb(ItsNodeImage): | ||
112 | def __init__(self, name, parent_node, description, type, compression, | ||
113 | sub_nodes=None, opt_props=None, compatible=None): | ||
114 | super().__init__(name, parent_node, description, type, compression, sub_nodes, opt_props) | ||
115 | self.compatible = compatible | ||
116 | |||
117 | class ItsNodeDtbAlias(ItsNode): | ||
118 | """Additional Configuration Node for a DTB | ||
119 | |||
120 | Symlinks pointing to a DTB file are handled by an addtitional | ||
121 | configuration node referring to another DTB image node. | ||
122 | """ | ||
123 | def __init__(self, name, alias_name, compatible=None): | ||
124 | super().__init__(name, parent_node=None, sub_nodes=None, properties=None) | ||
125 | self.alias_name = alias_name | ||
126 | self.compatible = compatible | ||
127 | |||
128 | class ItsNodeConfigurationSignature(ItsNode): | ||
129 | def __init__(self, name, parent_node, algo, keyname, opt_props=None): | ||
130 | properties = { | ||
131 | "algo": algo, | ||
132 | "key-name-hint": keyname | ||
133 | } | ||
134 | if opt_props: | ||
135 | properties.update(opt_props) | ||
136 | super().__init__(name, parent_node, None, properties) | ||
137 | |||
138 | class ItsNodeConfiguration(ItsNode): | ||
139 | def __init__(self, name, parent_node, description, sub_nodes=None, opt_props=None): | ||
140 | properties = { | ||
141 | "description": description, | ||
142 | } | ||
143 | if opt_props: | ||
144 | properties.update(opt_props) | ||
145 | super().__init__(name, parent_node, sub_nodes, properties) | ||
146 | |||
147 | class ItsNodeRootKernel(ItsNode): | ||
148 | """Create FIT images for the kernel | ||
149 | |||
150 | Currently only a single kernel (no less or more) can be added to the FIT | ||
151 | image along with 0 or more device trees and 0 or 1 ramdisk. | ||
152 | |||
153 | If a device tree included in the FIT image, the default configuration is the | ||
154 | firt DTB. If there is no dtb present than the default configuation the kernel. | ||
155 | """ | ||
156 | def __init__(self, description, address_cells, host_prefix, arch, conf_prefix, | ||
157 | sign_enable=False, sign_keydir=None, | ||
158 | mkimage=None, mkimage_dtcopts=None, | ||
159 | mkimage_sign=None, mkimage_sign_args=None, | ||
160 | hash_algo=None, sign_algo=None, pad_algo=None, | ||
161 | sign_keyname_conf=None, | ||
162 | sign_individual=False, sign_keyname_img=None): | ||
163 | props = { | ||
164 | "description": description, | ||
165 | "#address-cells": f"<{address_cells}>" | ||
166 | } | ||
167 | super().__init__("/", None, None, props) | ||
168 | self.images = ItsNodeImages(self) | ||
169 | self.configurations = ItsNodeConfigurations(self) | ||
170 | |||
171 | self._host_prefix = host_prefix | ||
172 | self._arch = arch | ||
173 | self._conf_prefix = conf_prefix | ||
174 | |||
175 | # Signature related properties | ||
176 | self._sign_enable = sign_enable | ||
177 | self._sign_keydir = sign_keydir | ||
178 | self._mkimage = mkimage | ||
179 | self._mkimage_dtcopts = mkimage_dtcopts | ||
180 | self._mkimage_sign = mkimage_sign | ||
181 | self._mkimage_sign_args = mkimage_sign_args | ||
182 | self._hash_algo = hash_algo | ||
183 | self._sign_algo = sign_algo | ||
184 | self._pad_algo = pad_algo | ||
185 | self._sign_keyname_conf = sign_keyname_conf | ||
186 | self._sign_individual = sign_individual | ||
187 | self._sign_keyname_img = sign_keyname_img | ||
188 | self._sanitize_sign_config() | ||
189 | |||
190 | self._dtbs = [] | ||
191 | self._dtb_alias = [] | ||
192 | self._kernel = None | ||
193 | self._ramdisk = None | ||
194 | self._bootscr = None | ||
195 | self._setup = None | ||
196 | |||
197 | def _sanitize_sign_config(self): | ||
198 | if self._sign_enable: | ||
199 | if not self._hash_algo: | ||
200 | bb.fatal("FIT image signing is enabled but no hash algorithm is provided.") | ||
201 | if not self._sign_algo: | ||
202 | bb.fatal("FIT image signing is enabled but no signature algorithm is provided.") | ||
203 | if not self._pad_algo: | ||
204 | bb.fatal("FIT image signing is enabled but no padding algorithm is provided.") | ||
205 | if not self._sign_keyname_conf: | ||
206 | bb.fatal("FIT image signing is enabled but no configuration key name is provided.") | ||
207 | if self._sign_individual and not self._sign_keyname_img: | ||
208 | bb.fatal("FIT image signing is enabled for individual images but no image key name is provided.") | ||
209 | |||
210 | def write_its_file(self, itsfile): | ||
211 | with open(itsfile, 'w') as f: | ||
212 | f.write("/dts-v1/;\n\n") | ||
213 | self.emit(f, 0) | ||
214 | |||
215 | def its_add_node_image(self, image_id, description, image_type, compression, opt_props): | ||
216 | image_node = ItsNodeImage( | ||
217 | image_id, | ||
218 | self.images, | ||
219 | description, | ||
220 | image_type, | ||
221 | compression, | ||
222 | opt_props=opt_props | ||
223 | ) | ||
224 | if self._hash_algo: | ||
225 | ItsNodeHash( | ||
226 | "hash-1", | ||
227 | image_node, | ||
228 | self._hash_algo | ||
229 | ) | ||
230 | if self._sign_individual: | ||
231 | ItsImageSignature( | ||
232 | "signature-1", | ||
233 | image_node, | ||
234 | f"{self._hash_algo},{self._sign_algo}", | ||
235 | self._sign_keyname_img | ||
236 | ) | ||
237 | return image_node | ||
238 | |||
239 | def its_add_node_dtb(self, image_id, description, image_type, compression, opt_props, compatible): | ||
240 | dtb_node = ItsNodeDtb( | ||
241 | image_id, | ||
242 | self.images, | ||
243 | description, | ||
244 | image_type, | ||
245 | compression, | ||
246 | opt_props=opt_props, | ||
247 | compatible=compatible | ||
248 | ) | ||
249 | if self._hash_algo: | ||
250 | ItsNodeHash( | ||
251 | "hash-1", | ||
252 | dtb_node, | ||
253 | self._hash_algo | ||
254 | ) | ||
255 | if self._sign_individual: | ||
256 | ItsImageSignature( | ||
257 | "signature-1", | ||
258 | dtb_node, | ||
259 | f"{self._hash_algo},{self._sign_algo}", | ||
260 | self._sign_keyname_img | ||
261 | ) | ||
262 | return dtb_node | ||
263 | |||
264 | def fitimage_emit_section_kernel(self, kernel_id, kernel_path, compression, | ||
265 | load, entrypoint, mkimage_kernel_type, entrysymbol=None): | ||
266 | """Emit the fitImage ITS kernel section""" | ||
267 | if self._kernel: | ||
268 | bb.fatal("Kernel section already exists in the ITS file.") | ||
269 | if entrysymbol: | ||
270 | result = subprocess.run([self._host_prefix + "nm", "vmlinux"], capture_output=True, text=True) | ||
271 | for line in result.stdout.splitlines(): | ||
272 | parts = line.split() | ||
273 | if len(parts) == 3 and parts[2] == entrysymbol: | ||
274 | entrypoint = "<0x%s>" % parts[0] | ||
275 | break | ||
276 | kernel_node = self.its_add_node_image( | ||
277 | kernel_id, | ||
278 | "Linux kernel", | ||
279 | mkimage_kernel_type, | ||
280 | compression, | ||
281 | { | ||
282 | "data": '/incbin/("' + kernel_path + '")', | ||
283 | "arch": self._arch, | ||
284 | "os": "linux", | ||
285 | "load": f"<{load}>", | ||
286 | "entry": f"<{entrypoint}>" | ||
287 | } | ||
288 | ) | ||
289 | self._kernel = kernel_node | ||
290 | |||
291 | def fitimage_emit_section_dtb(self, dtb_id, dtb_path, dtb_loadaddress=None, | ||
292 | dtbo_loadaddress=None, add_compatible=False): | ||
293 | """Emit the fitImage ITS DTB section""" | ||
294 | load=None | ||
295 | dtb_ext = os.path.splitext(dtb_path)[1] | ||
296 | if dtb_ext == ".dtbo": | ||
297 | if dtbo_loadaddress: | ||
298 | load = dtbo_loadaddress | ||
299 | elif dtb_loadaddress: | ||
300 | load = dtb_loadaddress | ||
301 | |||
302 | opt_props = { | ||
303 | "data": '/incbin/("' + dtb_path + '")', | ||
304 | "arch": self._arch | ||
305 | } | ||
306 | if load: | ||
307 | opt_props["load"] = f"<{load}>" | ||
308 | |||
309 | # Preserve the DTB's compatible string to be added to the configuration node | ||
310 | compatible = None | ||
311 | if add_compatible: | ||
312 | compatible = get_compatible_from_dtb(dtb_path) | ||
313 | |||
314 | dtb_node = self.its_add_node_dtb( | ||
315 | "fdt-" + dtb_id, | ||
316 | "Flattened Device Tree blob", | ||
317 | "flat_dt", | ||
318 | "none", | ||
319 | opt_props, | ||
320 | compatible | ||
321 | ) | ||
322 | self._dtbs.append(dtb_node) | ||
323 | |||
324 | def fitimage_emit_section_dtb_alias(self, dtb_alias_id, dtb_path, add_compatible=False): | ||
325 | """Add a configuration node referring to another DTB""" | ||
326 | # Preserve the DTB's compatible string to be added to the configuration node | ||
327 | compatible = None | ||
328 | if add_compatible: | ||
329 | compatible = get_compatible_from_dtb(dtb_path) | ||
330 | |||
331 | dtb_id = os.path.basename(dtb_path) | ||
332 | dtb_alias_node = ItsNodeDtbAlias("fdt-" + dtb_id, dtb_alias_id, compatible) | ||
333 | self._dtb_alias.append(dtb_alias_node) | ||
334 | bb.warn(f"compatible: {compatible}, dtb_alias_id: {dtb_alias_id}, dtb_id: {dtb_id}, dtb_path: {dtb_path}") | ||
335 | |||
336 | def fitimage_emit_section_boot_script(self, bootscr_id, bootscr_path): | ||
337 | """Emit the fitImage ITS u-boot script section""" | ||
338 | if self._bootscr: | ||
339 | bb.fatal("U-boot script section already exists in the ITS file.") | ||
340 | bootscr_node = self.its_add_node_image( | ||
341 | bootscr_id, | ||
342 | "U-boot script", | ||
343 | "script", | ||
344 | "none", | ||
345 | { | ||
346 | "data": '/incbin/("' + bootscr_path + '")', | ||
347 | "arch": self._arch, | ||
348 | "type": "script" | ||
349 | } | ||
350 | ) | ||
351 | self._bootscr = bootscr_node | ||
352 | |||
353 | def fitimage_emit_section_setup(self, setup_id, setup_path): | ||
354 | """Emit the fitImage ITS setup section""" | ||
355 | if self._setup: | ||
356 | bb.fatal("Setup section already exists in the ITS file.") | ||
357 | load = "<0x00090000>" | ||
358 | entry = "<0x00090000>" | ||
359 | setup_node = self.its_add_node_image( | ||
360 | setup_id, | ||
361 | "Linux setup.bin", | ||
362 | "x86_setup", | ||
363 | "none", | ||
364 | { | ||
365 | "data": '/incbin/("' + setup_path + '")', | ||
366 | "arch": self._arch, | ||
367 | "os": "linux", | ||
368 | "load": load, | ||
369 | "entry": entry | ||
370 | } | ||
371 | ) | ||
372 | self._setup = setup_node | ||
373 | |||
374 | def fitimage_emit_section_ramdisk(self, ramdisk_id, ramdisk_path, description="ramdisk", load=None, entry=None): | ||
375 | """Emit the fitImage ITS ramdisk section""" | ||
376 | if self._ramdisk: | ||
377 | bb.fatal("Ramdisk section already exists in the ITS file.") | ||
378 | opt_props = { | ||
379 | "data": '/incbin/("' + ramdisk_path + '")', | ||
380 | "type": "ramdisk", | ||
381 | "arch": self._arch, | ||
382 | "os": "linux" | ||
383 | } | ||
384 | if load: | ||
385 | opt_props["load"] = f"<{load}>" | ||
386 | if entry: | ||
387 | opt_props["entry"] = f"<{entry}>" | ||
388 | |||
389 | ramdisk_node = self.its_add_node_image( | ||
390 | ramdisk_id, | ||
391 | description, | ||
392 | "ramdisk", | ||
393 | "none", | ||
394 | opt_props | ||
395 | ) | ||
396 | self._ramdisk = ramdisk_node | ||
397 | |||
398 | def _fitimage_emit_one_section_config(self, conf_node_name, dtb=None): | ||
399 | """Emit the fitImage ITS configuration section""" | ||
400 | opt_props = {} | ||
401 | conf_desc = [] | ||
402 | sign_entries = [] | ||
403 | |||
404 | if self._kernel: | ||
405 | conf_desc.append("Linux kernel") | ||
406 | opt_props["kernel"] = self._kernel.name | ||
407 | if self._sign_enable: | ||
408 | sign_entries.append("kernel") | ||
409 | |||
410 | if dtb: | ||
411 | conf_desc.append("FDT blob") | ||
412 | opt_props["fdt"] = dtb.name | ||
413 | if dtb.compatible: | ||
414 | opt_props["compatible"] = dtb.compatible | ||
415 | if self._sign_enable: | ||
416 | sign_entries.append("fdt") | ||
417 | |||
418 | if self._ramdisk: | ||
419 | conf_desc.append("ramdisk") | ||
420 | opt_props["ramdisk"] = self._ramdisk.name | ||
421 | if self._sign_enable: | ||
422 | sign_entries.append("ramdisk") | ||
423 | |||
424 | if self._bootscr: | ||
425 | conf_desc.append("u-boot script") | ||
426 | opt_props["bootscr"] = self._bootscr.name | ||
427 | if self._sign_enable: | ||
428 | sign_entries.append("bootscr") | ||
429 | |||
430 | if self._setup: | ||
431 | conf_desc.append("setup") | ||
432 | opt_props["setup"] = self._setup.name | ||
433 | if self._sign_enable: | ||
434 | sign_entries.append("setup") | ||
435 | |||
436 | # First added configuration is the default configuration | ||
437 | default_flag = "0" | ||
438 | if len(self.configurations.sub_nodes) == 0: | ||
439 | default_flag = "1" | ||
440 | |||
441 | conf_node = ItsNodeConfiguration( | ||
442 | conf_node_name, | ||
443 | self.configurations, | ||
444 | f"{default_flag} {', '.join(conf_desc)}", | ||
445 | opt_props=opt_props | ||
446 | ) | ||
447 | if self._hash_algo: | ||
448 | ItsNodeHash( | ||
449 | "hash-1", | ||
450 | conf_node, | ||
451 | self._hash_algo | ||
452 | ) | ||
453 | if self._sign_enable: | ||
454 | ItsNodeConfigurationSignature( | ||
455 | "signature-1", | ||
456 | conf_node, | ||
457 | f"{self._hash_algo},{self._sign_algo}", | ||
458 | self._sign_keyname_conf, | ||
459 | opt_props={ | ||
460 | "padding": self._pad_algo, | ||
461 | "sign-images": sign_entries | ||
462 | } | ||
463 | ) | ||
464 | |||
465 | def fitimage_emit_section_config(self, default_dtb_image=None): | ||
466 | if self._dtbs: | ||
467 | for dtb in self._dtbs: | ||
468 | dtb_name = dtb.name | ||
469 | if dtb.name.startswith("fdt-"): | ||
470 | dtb_name = dtb.name[len("fdt-"):] | ||
471 | self._fitimage_emit_one_section_config(self._conf_prefix + dtb_name, dtb) | ||
472 | for dtb in self._dtb_alias: | ||
473 | self._fitimage_emit_one_section_config(self._conf_prefix + dtb.alias_name, dtb) | ||
474 | else: | ||
475 | # Currently exactly one kernel is supported. | ||
476 | self._fitimage_emit_one_section_config(self._conf_prefix + "1") | ||
477 | |||
478 | default_conf = self.configurations.sub_nodes[0].name | ||
479 | if default_dtb_image and self._dtbs: | ||
480 | default_conf = self._conf_prefix + default_dtb_image | ||
481 | self.configurations.add_property('default', default_conf) | ||
482 | |||
483 | def run_mkimage_assemble(self, itsfile, fitfile): | ||
484 | cmd = [ | ||
485 | self._mkimage, | ||
486 | '-f', itsfile, | ||
487 | fitfile | ||
488 | ] | ||
489 | if self._mkimage_dtcopts: | ||
490 | cmd.insert(1, '-D') | ||
491 | cmd.insert(2, self._mkimage_dtcopts) | ||
492 | try: | ||
493 | subprocess.run(cmd, check=True, capture_output=True) | ||
494 | except subprocess.CalledProcessError as e: | ||
495 | bb.fatal(f"Command '{' '.join(cmd)}' failed with return code {e.returncode}\nstdout: {e.stdout.decode()}\nstderr: {e.stderr.decode()}\nitsflile: {os.path.abspath(itsfile)}") | ||
496 | |||
497 | def run_mkimage_sign(self, fitfile): | ||
498 | if not self._sign_enable: | ||
499 | bb.debug(1, "FIT image signing is disabled. Skipping signing.") | ||
500 | return | ||
501 | |||
502 | # Some sanity checks because mkimage exits with 0 also without needed keys | ||
503 | sign_key_path = os.path.join(self._sign_keydir, self._sign_keyname_conf) | ||
504 | if not os.path.exists(sign_key_path + '.key') or not os.path.exists(sign_key_path + '.crt'): | ||
505 | bb.fatal("%s.key or .crt does not exist" % sign_key_path) | ||
506 | if self._sign_individual: | ||
507 | sign_key_img_path = os.path.join(self._sign_keydir, self._sign_keyname_img) | ||
508 | if not os.path.exists(sign_key_img_path + '.key') or not os.path.exists(sign_key_img_path + '.crt'): | ||
509 | bb.fatal("%s.key or .crt does not exist" % sign_key_img_path) | ||
510 | |||
511 | cmd = [ | ||
512 | self._mkimage_sign, | ||
513 | '-F', | ||
514 | '-k', self._sign_keydir, | ||
515 | '-r', fitfile | ||
516 | ] | ||
517 | if self._mkimage_dtcopts: | ||
518 | cmd.extend(['-D', self._mkimage_dtcopts]) | ||
519 | if self._mkimage_sign_args: | ||
520 | cmd.extend(shlex.split(self._mkimage_sign_args)) | ||
521 | try: | ||
522 | subprocess.run(cmd, check=True, capture_output=True) | ||
523 | except subprocess.CalledProcessError as e: | ||
524 | bb.fatal(f"Command '{' '.join(cmd)}' failed with return code {e.returncode}\nstdout: {e.stdout.decode()}\nstderr: {e.stderr.decode()}") | ||
525 | |||
526 | |||
527 | def symlink_points_below(file_or_symlink, expected_parent_dir): | ||
528 | """returns symlink destination if it points below directory""" | ||
529 | file_path = os.path.join(expected_parent_dir, file_or_symlink) | ||
530 | if not os.path.islink(file_path): | ||
531 | return None | ||
532 | |||
533 | realpath = os.path.relpath(os.path.realpath(file_path), expected_parent_dir) | ||
534 | if realpath.startswith(".."): | ||
535 | return None | ||
536 | |||
537 | return realpath | ||
538 | |||
539 | def get_compatible_from_dtb(dtb_path, fdtget_path="fdtget"): | ||
540 | compatible = None | ||
541 | cmd = [fdtget_path, "-t", "s", dtb_path, "/", "compatible"] | ||
542 | try: | ||
543 | ret = subprocess.run(cmd, check=True, capture_output=True, text=True) | ||
544 | compatible = ret.stdout.strip().split() | ||
545 | except subprocess.CalledProcessError: | ||
546 | compatible = None | ||
547 | return compatible | ||
diff --git a/meta/lib/oeqa/core/decorator/data.py b/meta/lib/oeqa/core/decorator/data.py index 5444b2cb75..0daf46334f 100644 --- a/meta/lib/oeqa/core/decorator/data.py +++ b/meta/lib/oeqa/core/decorator/data.py | |||
@@ -228,3 +228,15 @@ class skipIfNotArch(OETestDecorator): | |||
228 | arch = self.case.td['HOST_ARCH'] | 228 | arch = self.case.td['HOST_ARCH'] |
229 | if arch not in self.archs: | 229 | if arch not in self.archs: |
230 | self.case.skipTest('Test skipped on %s' % arch) | 230 | self.case.skipTest('Test skipped on %s' % arch) |
231 | |||
232 | @registerDecorator | ||
233 | class skipIfNotBuildArch(OETestDecorator): | ||
234 | """ | ||
235 | Skip test if BUILD_ARCH is not present in the tuple specified. | ||
236 | """ | ||
237 | |||
238 | attrs = ('archs',) | ||
239 | def setUpDecorator(self): | ||
240 | arch = self.case.td['BUILD_ARCH'] | ||
241 | if arch not in self.archs: | ||
242 | self.case.skipTest('Test skipped on %s' % arch) | ||
diff --git a/meta/lib/oeqa/files/maturin/guessing-game/Cargo.toml b/meta/lib/oeqa/files/maturin/guessing-game/Cargo.toml index de95025e86..a78ada2593 100644 --- a/meta/lib/oeqa/files/maturin/guessing-game/Cargo.toml +++ b/meta/lib/oeqa/files/maturin/guessing-game/Cargo.toml | |||
@@ -14,7 +14,7 @@ crate-type = ["cdylib"] | |||
14 | rand = "0.8.4" | 14 | rand = "0.8.4" |
15 | 15 | ||
16 | [dependencies.pyo3] | 16 | [dependencies.pyo3] |
17 | version = "0.19.0" | 17 | version = "0.24.1" |
18 | # "abi3-py38" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.8 | 18 | # "abi3-py38" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.8 |
19 | features = ["abi3-py38"] | 19 | features = ["abi3-py38"] |
20 | 20 | ||
diff --git a/meta/lib/oeqa/selftest/cases/fitimage.py b/meta/lib/oeqa/selftest/cases/fitimage.py index b39f2622df..be291e4b0f 100644 --- a/meta/lib/oeqa/selftest/cases/fitimage.py +++ b/meta/lib/oeqa/selftest/cases/fitimage.py | |||
@@ -4,13 +4,36 @@ | |||
4 | # SPDX-License-Identifier: MIT | 4 | # SPDX-License-Identifier: MIT |
5 | # | 5 | # |
6 | 6 | ||
7 | from oeqa.selftest.case import OESelftestTestCase | ||
8 | from oeqa.utils.commands import runCmd, bitbake, get_bb_vars | ||
9 | import os | 7 | import os |
10 | import re | 8 | import re |
11 | import shlex | 9 | import shlex |
12 | import logging | 10 | import logging |
13 | import pprint | 11 | import pprint |
12 | import tempfile | ||
13 | |||
14 | import oe.fitimage | ||
15 | |||
16 | from oeqa.selftest.case import OESelftestTestCase | ||
17 | from oeqa.utils.commands import runCmd, bitbake, get_bb_vars, get_bb_var | ||
18 | |||
19 | |||
20 | class BbVarsMockGenKeys: | ||
21 | def __init__(self, keydir, gen_keys="0", sign_enabled="0", keyname="", sign_ind="0", img_keyname=""): | ||
22 | self.bb_vars = { | ||
23 | 'FIT_GENERATE_KEYS': gen_keys, | ||
24 | 'FIT_KEY_GENRSA_ARGS': "-F4", | ||
25 | 'FIT_KEY_REQ_ARGS': "-batch -new", | ||
26 | 'FIT_KEY_SIGN_PKCS': "-x509", | ||
27 | 'FIT_SIGN_INDIVIDUAL': sign_ind, | ||
28 | 'FIT_SIGN_NUMBITS': "2048", | ||
29 | 'UBOOT_SIGN_ENABLE': sign_enabled, | ||
30 | 'UBOOT_SIGN_IMG_KEYNAME': img_keyname, | ||
31 | 'UBOOT_SIGN_KEYDIR': keydir, | ||
32 | 'UBOOT_SIGN_KEYNAME': keyname, | ||
33 | } | ||
34 | |||
35 | def getVar(self, var): | ||
36 | return self.bb_vars[var] | ||
14 | 37 | ||
15 | class FitImageTestCase(OESelftestTestCase): | 38 | class FitImageTestCase(OESelftestTestCase): |
16 | """Test functions usable for testing kernel-fitimage.bbclass and uboot-sign.bbclass | 39 | """Test functions usable for testing kernel-fitimage.bbclass and uboot-sign.bbclass |
@@ -161,10 +184,23 @@ class FitImageTestCase(OESelftestTestCase): | |||
161 | 184 | ||
162 | @staticmethod | 185 | @staticmethod |
163 | def _get_dtb_files(bb_vars): | 186 | def _get_dtb_files(bb_vars): |
187 | """Return a list of devicetree names | ||
188 | |||
189 | The list should be used to check the dtb and conf nodes in the FIT image or its file. | ||
190 | In addition to the entries from KERNEL_DEVICETREE, the external devicetree and the | ||
191 | external devicetree overlay added by the test recipe bbb-dtbs-as-ext are handled as well. | ||
192 | """ | ||
164 | kernel_devicetree = bb_vars.get('KERNEL_DEVICETREE') | 193 | kernel_devicetree = bb_vars.get('KERNEL_DEVICETREE') |
194 | all_dtbs = [] | ||
195 | dtb_symlinks = [] | ||
165 | if kernel_devicetree: | 196 | if kernel_devicetree: |
166 | return [os.path.basename(dtb) for dtb in kernel_devicetree.split()] | 197 | all_dtbs += [os.path.basename(dtb) for dtb in kernel_devicetree.split()] |
167 | return [] | 198 | # Support only the test recipe which provides 1 devicetree and 1 devicetree overlay |
199 | pref_prov_dtb = bb_vars.get('PREFERRED_PROVIDER_virtual/dtb') | ||
200 | if pref_prov_dtb == "bbb-dtbs-as-ext": | ||
201 | all_dtbs += ["am335x-bonegreen-ext.dtb", "BBORG_RELAY-00A2.dtbo"] | ||
202 | dtb_symlinks.append("am335x-bonegreen-ext-alias.dtb") | ||
203 | return (all_dtbs, dtb_symlinks) | ||
168 | 204 | ||
169 | def _is_req_dict_in_dict(self, found_dict, req_dict): | 205 | def _is_req_dict_in_dict(self, found_dict, req_dict): |
170 | """ | 206 | """ |
@@ -243,7 +279,7 @@ class FitImageTestCase(OESelftestTestCase): | |||
243 | self.logger.debug("sigs:\n%s\n" % pprint.pformat(sigs, indent=4)) | 279 | self.logger.debug("sigs:\n%s\n" % pprint.pformat(sigs, indent=4)) |
244 | if req_sigvalues_config or req_sigvalues_image: | 280 | if req_sigvalues_config or req_sigvalues_image: |
245 | for its_path, values in sigs.items(): | 281 | for its_path, values in sigs.items(): |
246 | if 'conf-' in its_path: | 282 | if bb_vars.get('FIT_CONF_PREFIX', "conf-") in its_path: |
247 | reqsigvalues = req_sigvalues_config | 283 | reqsigvalues = req_sigvalues_config |
248 | else: | 284 | else: |
249 | reqsigvalues = req_sigvalues_image | 285 | reqsigvalues = req_sigvalues_image |
@@ -356,9 +392,8 @@ class FitImageTestCase(OESelftestTestCase): | |||
356 | # Verify the FIT image | 392 | # Verify the FIT image |
357 | self._check_fitimage(bb_vars, fitimage_path, uboot_tools_bindir) | 393 | self._check_fitimage(bb_vars, fitimage_path, uboot_tools_bindir) |
358 | 394 | ||
359 | 395 | class KernelFitImageBase(FitImageTestCase): | |
360 | class KernelFitImageTests(FitImageTestCase): | 396 | """Test cases for the linux-yocto-fitimage recipe""" |
361 | """Test cases for the kernel-fitimage bbclass""" | ||
362 | 397 | ||
363 | def _fit_get_bb_vars(self, additional_vars=[]): | 398 | def _fit_get_bb_vars(self, additional_vars=[]): |
364 | """Retrieve BitBake variables specific to the test case. | 399 | """Retrieve BitBake variables specific to the test case. |
@@ -367,6 +402,8 @@ class KernelFitImageTests(FitImageTestCase): | |||
367 | """ | 402 | """ |
368 | internal_used = { | 403 | internal_used = { |
369 | 'DEPLOY_DIR_IMAGE', | 404 | 'DEPLOY_DIR_IMAGE', |
405 | 'FIT_CONF_DEFAULT_DTB', | ||
406 | 'FIT_CONF_PREFIX', | ||
370 | 'FIT_DESC', | 407 | 'FIT_DESC', |
371 | 'FIT_HASH_ALG', | 408 | 'FIT_HASH_ALG', |
372 | 'FIT_KERNEL_COMP_ALG', | 409 | 'FIT_KERNEL_COMP_ALG', |
@@ -376,9 +413,11 @@ class KernelFitImageTests(FitImageTestCase): | |||
376 | 'INITRAMFS_IMAGE_BUNDLE', | 413 | 'INITRAMFS_IMAGE_BUNDLE', |
377 | 'INITRAMFS_IMAGE_NAME', | 414 | 'INITRAMFS_IMAGE_NAME', |
378 | 'INITRAMFS_IMAGE', | 415 | 'INITRAMFS_IMAGE', |
416 | 'KERNEL_DEPLOYSUBDIR', | ||
379 | 'KERNEL_DEVICETREE', | 417 | 'KERNEL_DEVICETREE', |
380 | 'KERNEL_FIT_LINK_NAME', | 418 | 'KERNEL_FIT_LINK_NAME', |
381 | 'MACHINE', | 419 | 'MACHINE', |
420 | 'PREFERRED_PROVIDER_virtual/dtb', | ||
382 | 'UBOOT_ARCH', | 421 | 'UBOOT_ARCH', |
383 | 'UBOOT_ENTRYPOINT', | 422 | 'UBOOT_ENTRYPOINT', |
384 | 'UBOOT_LOADADDRESS', | 423 | 'UBOOT_LOADADDRESS', |
@@ -391,10 +430,19 @@ class KernelFitImageTests(FitImageTestCase): | |||
391 | 'UBOOT_SIGN_KEYDIR', | 430 | 'UBOOT_SIGN_KEYDIR', |
392 | 'UBOOT_SIGN_KEYNAME', | 431 | 'UBOOT_SIGN_KEYNAME', |
393 | } | 432 | } |
394 | bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), "virtual/kernel") | 433 | bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), self.kernel_recipe) |
395 | self.logger.debug("bb_vars: %s" % pprint.pformat(bb_vars, indent=4)) | 434 | self.logger.debug("bb_vars: %s" % pprint.pformat(bb_vars, indent=4)) |
396 | return bb_vars | 435 | return bb_vars |
397 | 436 | ||
437 | def _config_add_kernel_classes(self, config): | ||
438 | config += '# Use kernel-fit-extra-artifacts.bbclass for the creation of the vmlinux artifact' + os.linesep | ||
439 | config += 'KERNEL_CLASSES = "kernel-fit-extra-artifacts"' + os.linesep | ||
440 | return config | ||
441 | |||
442 | @property | ||
443 | def kernel_recipe(self): | ||
444 | return "linux-yocto-fitimage" | ||
445 | |||
398 | def _config_add_uboot_env(self, config): | 446 | def _config_add_uboot_env(self, config): |
399 | """Generate an u-boot environment | 447 | """Generate an u-boot environment |
400 | 448 | ||
@@ -408,7 +456,7 @@ class KernelFitImageTests(FitImageTestCase): | |||
408 | config += '# Add an u-boot script to the fitImage' + os.linesep | 456 | config += '# Add an u-boot script to the fitImage' + os.linesep |
409 | config += 'FIT_UBOOT_ENV = "%s"' % fit_uenv_file + os.linesep | 457 | config += 'FIT_UBOOT_ENV = "%s"' % fit_uenv_file + os.linesep |
410 | config += 'FILESEXTRAPATHS:prepend := "${TOPDIR}/%s:"' % test_files_dir + os.linesep | 458 | config += 'FILESEXTRAPATHS:prepend := "${TOPDIR}/%s:"' % test_files_dir + os.linesep |
411 | config += 'SRC_URI:append:pn-linux-yocto = " file://${FIT_UBOOT_ENV}"' + os.linesep | 459 | config += 'SRC_URI:append:pn-%s = " file://${FIT_UBOOT_ENV}"' % self.kernel_recipe + os.linesep |
412 | 460 | ||
413 | if not os.path.isdir(test_files_dir): | 461 | if not os.path.isdir(test_files_dir): |
414 | os.makedirs(test_files_dir) | 462 | os.makedirs(test_files_dir) |
@@ -420,7 +468,7 @@ class KernelFitImageTests(FitImageTestCase): | |||
420 | 468 | ||
421 | def _bitbake_fit_image(self, bb_vars): | 469 | def _bitbake_fit_image(self, bb_vars): |
422 | """Bitbake the kernel and return the paths to the its file and the FIT image""" | 470 | """Bitbake the kernel and return the paths to the its file and the FIT image""" |
423 | bitbake("virtual/kernel") | 471 | bitbake(self.kernel_recipe) |
424 | 472 | ||
425 | # Find the right its file and the final fitImage and check if both files are available | 473 | # Find the right its file and the final fitImage and check if both files are available |
426 | deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE'] | 474 | deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE'] |
@@ -439,8 +487,13 @@ class KernelFitImageTests(FitImageTestCase): | |||
439 | fitimage_name = "fitImage" # or fitImage-${KERNEL_IMAGE_LINK_NAME}${KERNEL_IMAGE_BIN_EXT} | 487 | fitimage_name = "fitImage" # or fitImage-${KERNEL_IMAGE_LINK_NAME}${KERNEL_IMAGE_BIN_EXT} |
440 | else: | 488 | else: |
441 | self.fail('Invalid configuration: INITRAMFS_IMAGE_BUNDLE = "1" and not INITRAMFS_IMAGE') | 489 | self.fail('Invalid configuration: INITRAMFS_IMAGE_BUNDLE = "1" and not INITRAMFS_IMAGE') |
442 | fitimage_its_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_its_name)) | 490 | kernel_deploysubdir = bb_vars['KERNEL_DEPLOYSUBDIR'] |
443 | fitimage_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_name)) | 491 | if kernel_deploysubdir: |
492 | fitimage_its_path = os.path.realpath(os.path.join(deploy_dir_image, kernel_deploysubdir, fitimage_its_name)) | ||
493 | fitimage_path = os.path.realpath(os.path.join(deploy_dir_image, kernel_deploysubdir, fitimage_name)) | ||
494 | else: | ||
495 | fitimage_its_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_its_name)) | ||
496 | fitimage_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_name)) | ||
444 | return (fitimage_its_path, fitimage_path) | 497 | return (fitimage_its_path, fitimage_path) |
445 | 498 | ||
446 | def _get_req_its_paths(self, bb_vars): | 499 | def _get_req_its_paths(self, bb_vars): |
@@ -452,7 +505,7 @@ class KernelFitImageTests(FitImageTestCase): | |||
452 | ['/', 'images', 'kernel-1', 'signature-1'], | 505 | ['/', 'images', 'kernel-1', 'signature-1'], |
453 | ] | 506 | ] |
454 | """ | 507 | """ |
455 | dtb_files = FitImageTestCase._get_dtb_files(bb_vars) | 508 | dtb_files, dtb_symlinks = FitImageTestCase._get_dtb_files(bb_vars) |
456 | fit_sign_individual = bb_vars['FIT_SIGN_INDIVIDUAL'] | 509 | fit_sign_individual = bb_vars['FIT_SIGN_INDIVIDUAL'] |
457 | fit_uboot_env = bb_vars['FIT_UBOOT_ENV'] | 510 | fit_uboot_env = bb_vars['FIT_UBOOT_ENV'] |
458 | initramfs_image = bb_vars['INITRAMFS_IMAGE'] | 511 | initramfs_image = bb_vars['INITRAMFS_IMAGE'] |
@@ -470,11 +523,11 @@ class KernelFitImageTests(FitImageTestCase): | |||
470 | if initramfs_image and initramfs_image_bundle != "1": | 523 | if initramfs_image and initramfs_image_bundle != "1": |
471 | images.append('ramdisk-1') | 524 | images.append('ramdisk-1') |
472 | 525 | ||
473 | # configuration nodes | 526 | # configuration nodes (one per DTB and also one per symlink) |
474 | if dtb_files: | 527 | if dtb_files: |
475 | configurations = [ 'conf-' + conf for conf in dtb_files ] | 528 | configurations = [bb_vars['FIT_CONF_PREFIX'] + conf for conf in dtb_files + dtb_symlinks] |
476 | else: | 529 | else: |
477 | configurations = [ 'conf-1' ] | 530 | configurations = [bb_vars['FIT_CONF_PREFIX'] + '1'] |
478 | 531 | ||
479 | # Create a list of paths for all image and configuration nodes | 532 | # Create a list of paths for all image and configuration nodes |
480 | req_its_paths = [] | 533 | req_its_paths = [] |
@@ -497,11 +550,11 @@ class KernelFitImageTests(FitImageTestCase): | |||
497 | its_field_check = [ | 550 | its_field_check = [ |
498 | 'description = "%s";' % bb_vars['FIT_DESC'], | 551 | 'description = "%s";' % bb_vars['FIT_DESC'], |
499 | 'description = "Linux kernel";', | 552 | 'description = "Linux kernel";', |
500 | 'data = /incbin/("linux.bin");', | ||
501 | 'type = "' + str(bb_vars['UBOOT_MKIMAGE_KERNEL_TYPE']) + '";', | 553 | 'type = "' + str(bb_vars['UBOOT_MKIMAGE_KERNEL_TYPE']) + '";', |
554 | # 'compression = "' + str(bb_vars['FIT_KERNEL_COMP_ALG']) + '";', defined based on files in TMPDIR, not ideal... | ||
555 | 'data = /incbin/("linux.bin");', | ||
502 | 'arch = "' + str(bb_vars['UBOOT_ARCH']) + '";', | 556 | 'arch = "' + str(bb_vars['UBOOT_ARCH']) + '";', |
503 | 'os = "linux";', | 557 | 'os = "linux";', |
504 | # 'compression = "' + str(bb_vars['FIT_KERNEL_COMP_ALG']) + '";', defined based on files in TMPDIR, not ideal... | ||
505 | 'load = <' + str(bb_vars['UBOOT_LOADADDRESS']) + '>;', | 558 | 'load = <' + str(bb_vars['UBOOT_LOADADDRESS']) + '>;', |
506 | 'entry = <' + str(bb_vars['UBOOT_ENTRYPOINT']) + '>;', | 559 | 'entry = <' + str(bb_vars['UBOOT_ENTRYPOINT']) + '>;', |
507 | ] | 560 | ] |
@@ -511,10 +564,14 @@ class KernelFitImageTests(FitImageTestCase): | |||
511 | its_field_check.append("load = <%s>;" % uboot_rd_loadaddress) | 564 | its_field_check.append("load = <%s>;" % uboot_rd_loadaddress) |
512 | if uboot_rd_entrypoint: | 565 | if uboot_rd_entrypoint: |
513 | its_field_check.append("entry = <%s>;" % uboot_rd_entrypoint) | 566 | its_field_check.append("entry = <%s>;" % uboot_rd_entrypoint) |
514 | its_field_check += [ | 567 | |
515 | # 'default = "conf-1";', needs more work | 568 | fit_conf_default_dtb = bb_vars.get('FIT_CONF_DEFAULT_DTB') |
516 | 'kernel = "kernel-1";', | 569 | if fit_conf_default_dtb: |
517 | ] | 570 | fit_conf_prefix = bb_vars.get('FIT_CONF_PREFIX', "conf-") |
571 | its_field_check.append('default = "' + fit_conf_prefix + fit_conf_default_dtb + '";') | ||
572 | |||
573 | its_field_check.append('kernel = "kernel-1";') | ||
574 | |||
518 | if initramfs_image and initramfs_image_bundle != "1": | 575 | if initramfs_image and initramfs_image_bundle != "1": |
519 | its_field_check.append('ramdisk = "ramdisk-1";') | 576 | its_field_check.append('ramdisk = "ramdisk-1";') |
520 | 577 | ||
@@ -548,7 +605,7 @@ class KernelFitImageTests(FitImageTestCase): | |||
548 | 605 | ||
549 | def _get_req_sections(self, bb_vars): | 606 | def _get_req_sections(self, bb_vars): |
550 | """Generate a dictionary of expected sections in the output of dumpimage""" | 607 | """Generate a dictionary of expected sections in the output of dumpimage""" |
551 | dtb_files = FitImageTestCase._get_dtb_files(bb_vars) | 608 | dtb_files, dtb_symlinks = FitImageTestCase._get_dtb_files(bb_vars) |
552 | fit_hash_alg = bb_vars['FIT_HASH_ALG'] | 609 | fit_hash_alg = bb_vars['FIT_HASH_ALG'] |
553 | fit_sign_alg = bb_vars['FIT_SIGN_ALG'] | 610 | fit_sign_alg = bb_vars['FIT_SIGN_ALG'] |
554 | fit_sign_individual = bb_vars['FIT_SIGN_INDIVIDUAL'] | 611 | fit_sign_individual = bb_vars['FIT_SIGN_INDIVIDUAL'] |
@@ -584,25 +641,36 @@ class KernelFitImageTests(FitImageTestCase): | |||
584 | } | 641 | } |
585 | # Create a configuration section for each DTB | 642 | # Create a configuration section for each DTB |
586 | if dtb_files: | 643 | if dtb_files: |
587 | for dtb in dtb_files: | 644 | for dtb in dtb_files + dtb_symlinks: |
588 | req_sections['conf-' + dtb] = { | 645 | conf_name = bb_vars['FIT_CONF_PREFIX'] + dtb |
589 | "Kernel": "kernel-1", | 646 | # Assume that DTBs with an "-alias" in its name are symlink DTBs created e.g. by the |
590 | "FDT": 'fdt-' + dtb, | 647 | # bbb-dtbs-as-ext test recipe. Make the configuration node pointing to the real DTB. |
591 | } | 648 | real_dtb = dtb.replace("-alias", "") |
649 | # dtb overlays do not refer to a kernel (yet?) | ||
650 | if dtb.endswith('.dtbo'): | ||
651 | req_sections[conf_name] = { | ||
652 | "FDT": 'fdt-' + real_dtb, | ||
653 | } | ||
654 | else: | ||
655 | req_sections[conf_name] = { | ||
656 | "Kernel": "kernel-1", | ||
657 | "FDT": 'fdt-' + real_dtb, | ||
658 | } | ||
592 | if initramfs_image and initramfs_image_bundle != "1": | 659 | if initramfs_image and initramfs_image_bundle != "1": |
593 | req_sections['conf-' + dtb]['Init Ramdisk'] = "ramdisk-1" | 660 | req_sections[conf_name]['Init Ramdisk'] = "ramdisk-1" |
594 | else: | 661 | else: |
595 | req_sections['conf-1'] = { | 662 | conf_name = bb_vars['FIT_CONF_PREFIX'] + '1' |
663 | req_sections[conf_name] = { | ||
596 | "Kernel": "kernel-1" | 664 | "Kernel": "kernel-1" |
597 | } | 665 | } |
598 | if initramfs_image and initramfs_image_bundle != "1": | 666 | if initramfs_image and initramfs_image_bundle != "1": |
599 | req_sections['conf-1']['Init Ramdisk'] = "ramdisk-1" | 667 | req_sections[conf_name]['Init Ramdisk'] = "ramdisk-1" |
600 | 668 | ||
601 | # Add signing related properties if needed | 669 | # Add signing related properties if needed |
602 | if uboot_sign_enable == "1": | 670 | if uboot_sign_enable == "1": |
603 | for section in req_sections: | 671 | for section in req_sections: |
604 | req_sections[section]['Hash algo'] = fit_hash_alg | 672 | req_sections[section]['Hash algo'] = fit_hash_alg |
605 | if section.startswith('conf-'): | 673 | if section.startswith(bb_vars['FIT_CONF_PREFIX']): |
606 | req_sections[section]['Hash value'] = "unavailable" | 674 | req_sections[section]['Hash value'] = "unavailable" |
607 | req_sections[section]['Sign algo'] = "%s,%s:%s" % (fit_hash_alg, fit_sign_alg, uboot_sign_keyname) | 675 | req_sections[section]['Sign algo'] = "%s,%s:%s" % (fit_hash_alg, fit_sign_alg, uboot_sign_keyname) |
608 | num_signatures += 1 | 676 | num_signatures += 1 |
@@ -624,18 +692,26 @@ class KernelFitImageTests(FitImageTestCase): | |||
624 | uboot_sign_keyname = bb_vars['UBOOT_SIGN_KEYNAME'] | 692 | uboot_sign_keyname = bb_vars['UBOOT_SIGN_KEYNAME'] |
625 | uboot_sign_img_keyname = bb_vars['UBOOT_SIGN_IMG_KEYNAME'] | 693 | uboot_sign_img_keyname = bb_vars['UBOOT_SIGN_IMG_KEYNAME'] |
626 | deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE'] | 694 | deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE'] |
695 | kernel_deploysubdir = bb_vars['KERNEL_DEPLOYSUBDIR'] | ||
627 | fit_sign_individual = bb_vars['FIT_SIGN_INDIVIDUAL'] | 696 | fit_sign_individual = bb_vars['FIT_SIGN_INDIVIDUAL'] |
628 | fit_hash_alg_len = FitImageTestCase.MKIMAGE_HASH_LENGTHS[fit_hash_alg] | 697 | fit_hash_alg_len = FitImageTestCase.MKIMAGE_HASH_LENGTHS[fit_hash_alg] |
629 | fit_sign_alg_len = FitImageTestCase.MKIMAGE_SIGNATURE_LENGTHS[fit_sign_alg] | 698 | fit_sign_alg_len = FitImageTestCase.MKIMAGE_SIGNATURE_LENGTHS[fit_sign_alg] |
630 | for section, values in sections.items(): | 699 | for section, values in sections.items(): |
631 | # Configuration nodes are always signed with UBOOT_SIGN_KEYNAME (if UBOOT_SIGN_ENABLE = "1") | 700 | # Configuration nodes are always signed with UBOOT_SIGN_KEYNAME (if UBOOT_SIGN_ENABLE = "1") |
632 | if section.startswith("conf"): | 701 | if section.startswith(bb_vars['FIT_CONF_PREFIX']): |
633 | sign_algo = values.get('Sign algo', None) | 702 | sign_algo = values.get('Sign algo', None) |
634 | req_sign_algo = "%s,%s:%s" % (fit_hash_alg, fit_sign_alg, uboot_sign_keyname) | 703 | req_sign_algo = "%s,%s:%s" % (fit_hash_alg, fit_sign_alg, uboot_sign_keyname) |
635 | self.assertEqual(sign_algo, req_sign_algo, 'Signature algorithm for %s not expected value' % section) | 704 | self.assertEqual(sign_algo, req_sign_algo, 'Signature algorithm for %s not expected value' % section) |
636 | sign_value = values.get('Sign value', None) | 705 | sign_value = values.get('Sign value', None) |
637 | self.assertEqual(len(sign_value), fit_sign_alg_len, 'Signature value for section %s not expected length' % section) | 706 | self.assertEqual(len(sign_value), fit_sign_alg_len, 'Signature value for section %s not expected length' % section) |
638 | dtb_path = os.path.join(deploy_dir_image, section.replace('conf-', '')) | 707 | dtb_file_name = section.replace(bb_vars['FIT_CONF_PREFIX'], '') |
708 | dtb_path = os.path.join(deploy_dir_image, dtb_file_name) | ||
709 | if kernel_deploysubdir: | ||
710 | dtb_path = os.path.join(deploy_dir_image, kernel_deploysubdir, dtb_file_name) | ||
711 | # External devicetrees created by devicetree.bbclass are in a subfolder and have priority | ||
712 | dtb_path_ext = os.path.join(deploy_dir_image, "devicetree", dtb_file_name) | ||
713 | if os.path.exists(dtb_path_ext): | ||
714 | dtb_path = dtb_path_ext | ||
639 | self._verify_fit_image_signature(uboot_tools_bindir, fitimage_path, dtb_path, section) | 715 | self._verify_fit_image_signature(uboot_tools_bindir, fitimage_path, dtb_path, section) |
640 | else: | 716 | else: |
641 | # Image nodes always need a hash which gets indirectly signed by the config signature | 717 | # Image nodes always need a hash which gets indirectly signed by the config signature |
@@ -660,6 +736,8 @@ class KernelFitImageTests(FitImageTestCase): | |||
660 | self.assertEqual(found_comments, num_signatures, "Expected %d signed and commented (%s) sections in the fitImage." % | 736 | self.assertEqual(found_comments, num_signatures, "Expected %d signed and commented (%s) sections in the fitImage." % |
661 | (num_signatures, a_comment)) | 737 | (num_signatures, a_comment)) |
662 | 738 | ||
739 | class KernelFitImageRecipeTests(KernelFitImageBase): | ||
740 | """Test cases for the kernel-fitimage bbclass""" | ||
663 | 741 | ||
664 | def test_fit_image(self): | 742 | def test_fit_image(self): |
665 | """ | 743 | """ |
@@ -675,10 +753,7 @@ class KernelFitImageTests(FitImageTestCase): | |||
675 | Author: Usama Arif <usama.arif@arm.com> | 753 | Author: Usama Arif <usama.arif@arm.com> |
676 | """ | 754 | """ |
677 | config = """ | 755 | config = """ |
678 | # Enable creation of fitImage | ||
679 | KERNEL_IMAGETYPE = "Image" | 756 | KERNEL_IMAGETYPE = "Image" |
680 | KERNEL_IMAGETYPES += " fitImage " | ||
681 | KERNEL_CLASSES = " kernel-fitimage " | ||
682 | 757 | ||
683 | # RAM disk variables including load address and entrypoint for kernel and RAM disk | 758 | # RAM disk variables including load address and entrypoint for kernel and RAM disk |
684 | IMAGE_FSTYPES += "cpio.gz" | 759 | IMAGE_FSTYPES += "cpio.gz" |
@@ -690,8 +765,76 @@ UBOOT_RD_ENTRYPOINT = "0x88000000" | |||
690 | UBOOT_LOADADDRESS = "0x80080000" | 765 | UBOOT_LOADADDRESS = "0x80080000" |
691 | UBOOT_ENTRYPOINT = "0x80080000" | 766 | UBOOT_ENTRYPOINT = "0x80080000" |
692 | FIT_DESC = "A model description" | 767 | FIT_DESC = "A model description" |
768 | FIT_CONF_PREFIX = "foo-" | ||
769 | """ | ||
770 | config = self._config_add_kernel_classes(config) | ||
771 | self.write_config(config) | ||
772 | bb_vars = self._fit_get_bb_vars() | ||
773 | self._test_fitimage(bb_vars) | ||
774 | |||
775 | def test_get_compatible_from_dtb(self): | ||
776 | """Test the oe.fitimage.get_compatible_from_dtb function | ||
777 | |||
778 | 1. bitbake bbb-dtbs-as-ext | ||
779 | 2. Check if symlink_points_below returns the path to the DTB | ||
780 | 3. Check if the expected compatible string is found by get_compatible_from_dtb() | ||
781 | """ | ||
782 | DTB_RECIPE = "bbb-dtbs-as-ext" | ||
783 | DTB_FILE = "am335x-bonegreen-ext.dtb" | ||
784 | DTB_SYMLINK = "am335x-bonegreen-ext-alias.dtb" | ||
785 | DTBO_FILE = "BBORG_RELAY-00A2.dtbo" | ||
786 | EXPECTED_COMP = ["ti,am335x-bone-green", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx"] | ||
787 | |||
788 | config = """ | ||
789 | DISTRO="poky" | ||
790 | MACHINE = "beaglebone-yocto" | ||
693 | """ | 791 | """ |
694 | self.write_config(config) | 792 | self.write_config(config) |
793 | |||
794 | # Provide the fdtget command called by get_compatible_from_dtb | ||
795 | dtc_bindir = FitImageTestCase._setup_native('dtc-native') | ||
796 | fdtget_path = os.path.join(dtc_bindir, "fdtget") | ||
797 | self.assertExists(fdtget_path) | ||
798 | |||
799 | # bitbake an external DTB with a symlink to it and a DTB overlay | ||
800 | bitbake(DTB_RECIPE) | ||
801 | deploy_dir_image = get_bb_var("DEPLOY_DIR_IMAGE", DTB_RECIPE) | ||
802 | devicetree_dir = os.path.join(deploy_dir_image, "devicetree") | ||
803 | dtb_path = os.path.join(devicetree_dir, DTB_FILE) | ||
804 | dtb_alias_path = os.path.join(devicetree_dir, DTB_SYMLINK) | ||
805 | dtbo_file = os.path.join(devicetree_dir, DTBO_FILE) | ||
806 | self.assertExists(dtb_path) | ||
807 | self.assertExists(dtb_alias_path) | ||
808 | self.assertExists(dtbo_file) | ||
809 | |||
810 | # Test symlink_points_below | ||
811 | linked_dtb = oe.fitimage.symlink_points_below(dtb_alias_path, devicetree_dir) | ||
812 | self.assertEqual(linked_dtb, DTB_FILE) | ||
813 | |||
814 | # Check if get_compatible_from_dtb finds the expected compatible string in the DTBs | ||
815 | comp = oe.fitimage.get_compatible_from_dtb(dtb_path, fdtget_path) | ||
816 | self.assertEqual(comp, EXPECTED_COMP) | ||
817 | comp_alias = oe.fitimage.get_compatible_from_dtb(dtb_alias_path, fdtget_path) | ||
818 | self.assertEqual(comp_alias, EXPECTED_COMP) | ||
819 | # The alias is a symlink, therefore the compatible string is equal | ||
820 | self.assertEqual(comp_alias, comp) | ||
821 | |||
822 | def test_fit_image_ext_dtb_dtbo(self): | ||
823 | """ | ||
824 | Summary: Check if FIT image and Image Tree Source (its) are created correctly. | ||
825 | Expected: 1) its and FIT image are built successfully | ||
826 | 2) The its file contains also the external devicetree overlay | ||
827 | 3) Dumping the FIT image indicates the devicetree overlay | ||
828 | """ | ||
829 | config = """ | ||
830 | # Enable creation of fitImage | ||
831 | MACHINE = "beaglebone-yocto" | ||
832 | # Add a devicetree overlay which does not need kernel sources | ||
833 | PREFERRED_PROVIDER_virtual/dtb = "bbb-dtbs-as-ext" | ||
834 | """ | ||
835 | config = self._config_add_kernel_classes(config) | ||
836 | config = self._config_add_uboot_env(config) | ||
837 | self.write_config(config) | ||
695 | bb_vars = self._fit_get_bb_vars() | 838 | bb_vars = self._fit_get_bb_vars() |
696 | self._test_fitimage(bb_vars) | 839 | self._test_fitimage(bb_vars) |
697 | 840 | ||
@@ -702,8 +845,7 @@ FIT_DESC = "A model description" | |||
702 | and the configuration nodes are signed correctly. | 845 | and the configuration nodes are signed correctly. |
703 | Expected: 1) its and FIT image are built successfully | 846 | Expected: 1) its and FIT image are built successfully |
704 | 2) Scanning the its file indicates signing is enabled | 847 | 2) Scanning the its file indicates signing is enabled |
705 | as requested by UBOOT_SIGN_ENABLE (using 1 key | 848 | as requested by UBOOT_SIGN_ENABLE |
706 | generated by the test not via FIT_GENERATE_KEYS) | ||
707 | 3) Dumping the FIT image indicates signature values | 849 | 3) Dumping the FIT image indicates signature values |
708 | are present (only for the configuration nodes as | 850 | are present (only for the configuration nodes as |
709 | FIT_SIGN_INDIVIDUAL is disabled) | 851 | FIT_SIGN_INDIVIDUAL is disabled) |
@@ -714,13 +856,13 @@ FIT_DESC = "A model description" | |||
714 | config = """ | 856 | config = """ |
715 | # Enable creation of fitImage | 857 | # Enable creation of fitImage |
716 | MACHINE = "beaglebone-yocto" | 858 | MACHINE = "beaglebone-yocto" |
717 | KERNEL_IMAGETYPES += " fitImage " | ||
718 | KERNEL_CLASSES = " kernel-fitimage " | ||
719 | UBOOT_SIGN_ENABLE = "1" | 859 | UBOOT_SIGN_ENABLE = "1" |
720 | UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys" | 860 | UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys" |
721 | UBOOT_SIGN_KEYNAME = "dev" | 861 | UBOOT_SIGN_KEYNAME = "dev" |
722 | UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" | 862 | UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" |
863 | FIT_CONF_DEFAULT_DTB = "am335x-bonegreen.dtb" | ||
723 | """ | 864 | """ |
865 | config = self._config_add_kernel_classes(config) | ||
724 | config = self._config_add_uboot_env(config) | 866 | config = self._config_add_uboot_env(config) |
725 | self.write_config(config) | 867 | self.write_config(config) |
726 | 868 | ||
@@ -733,10 +875,7 @@ UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" | |||
733 | 'UBOOT_SIGN_KEYDIR', | 875 | 'UBOOT_SIGN_KEYDIR', |
734 | ]) | 876 | ]) |
735 | 877 | ||
736 | # Do not use the random keys generated by FIT_GENERATE_KEYS. | ||
737 | # Using a static key is probably a more realistic scenario. | ||
738 | self._gen_signing_key(bb_vars) | 878 | self._gen_signing_key(bb_vars) |
739 | |||
740 | self._test_fitimage(bb_vars) | 879 | self._test_fitimage(bb_vars) |
741 | 880 | ||
742 | def test_sign_fit_image_individual(self): | 881 | def test_sign_fit_image_individual(self): |
@@ -745,11 +884,11 @@ UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" | |||
745 | and all nodes are signed correctly. | 884 | and all nodes are signed correctly. |
746 | Expected: 1) its and FIT image are built successfully | 885 | Expected: 1) its and FIT image are built successfully |
747 | 2) Scanning the its file indicates signing is enabled | 886 | 2) Scanning the its file indicates signing is enabled |
748 | as requested by UBOOT_SIGN_ENABLE (using 2 keys | 887 | as requested by UBOOT_SIGN_ENABLE |
749 | generated via FIT_GENERATE_KEYS) | ||
750 | 3) Dumping the FIT image indicates signature values | 888 | 3) Dumping the FIT image indicates signature values |
751 | are present (including for images as enabled via | 889 | are present (including for images as enabled via |
752 | FIT_SIGN_INDIVIDUAL) | 890 | FIT_SIGN_INDIVIDUAL) |
891 | This also implies that FIT_GENERATE_KEYS = "1" works. | ||
753 | 4) Verify the FIT image contains the comments passed via | 892 | 4) Verify the FIT image contains the comments passed via |
754 | UBOOT_MKIMAGE_SIGN_ARGS once per image and per | 893 | UBOOT_MKIMAGE_SIGN_ARGS once per image and per |
755 | configuration node. | 894 | configuration node. |
@@ -765,8 +904,6 @@ UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" | |||
765 | config = """ | 904 | config = """ |
766 | # Enable creation of fitImage | 905 | # Enable creation of fitImage |
767 | MACHINE = "beaglebone-yocto" | 906 | MACHINE = "beaglebone-yocto" |
768 | KERNEL_IMAGETYPES += " fitImage " | ||
769 | KERNEL_CLASSES = " kernel-fitimage " | ||
770 | UBOOT_SIGN_ENABLE = "1" | 907 | UBOOT_SIGN_ENABLE = "1" |
771 | FIT_GENERATE_KEYS = "1" | 908 | FIT_GENERATE_KEYS = "1" |
772 | UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys" | 909 | UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys" |
@@ -775,9 +912,14 @@ UBOOT_SIGN_KEYNAME = "cfg-oe-selftest" | |||
775 | FIT_SIGN_INDIVIDUAL = "1" | 912 | FIT_SIGN_INDIVIDUAL = "1" |
776 | UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" | 913 | UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" |
777 | """ | 914 | """ |
915 | config = self._config_add_kernel_classes(config) | ||
778 | config = self._config_add_uboot_env(config) | 916 | config = self._config_add_uboot_env(config) |
779 | self.write_config(config) | 917 | self.write_config(config) |
780 | bb_vars = self._fit_get_bb_vars() | 918 | bb_vars = self._fit_get_bb_vars() |
919 | |||
920 | # Ensure new keys are generated and FIT_GENERATE_KEYS = "1" is tested | ||
921 | bitbake("kernel-signing-keys-native -c cleansstate") | ||
922 | |||
781 | self._test_fitimage(bb_vars) | 923 | self._test_fitimage(bb_vars) |
782 | 924 | ||
783 | def test_fit_image_sign_initramfs(self): | 925 | def test_fit_image_sign_initramfs(self): |
@@ -801,8 +943,6 @@ MACHINE = "beaglebone-yocto" | |||
801 | INITRAMFS_IMAGE = "core-image-minimal-initramfs" | 943 | INITRAMFS_IMAGE = "core-image-minimal-initramfs" |
802 | INITRAMFS_SCRIPTS = "" | 944 | INITRAMFS_SCRIPTS = "" |
803 | UBOOT_MACHINE = "am335x_evm_defconfig" | 945 | UBOOT_MACHINE = "am335x_evm_defconfig" |
804 | KERNEL_CLASSES = " kernel-fitimage " | ||
805 | KERNEL_IMAGETYPES = "fitImage" | ||
806 | UBOOT_SIGN_ENABLE = "1" | 946 | UBOOT_SIGN_ENABLE = "1" |
807 | UBOOT_SIGN_KEYNAME = "beaglebonekey" | 947 | UBOOT_SIGN_KEYNAME = "beaglebonekey" |
808 | UBOOT_SIGN_KEYDIR ?= "${DEPLOY_DIR_IMAGE}" | 948 | UBOOT_SIGN_KEYDIR ?= "${DEPLOY_DIR_IMAGE}" |
@@ -816,11 +956,11 @@ UBOOT_ARCH = "arm" | |||
816 | UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000" | 956 | UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000" |
817 | UBOOT_MKIMAGE_KERNEL_TYPE = "kernel" | 957 | UBOOT_MKIMAGE_KERNEL_TYPE = "kernel" |
818 | UBOOT_EXTLINUX = "0" | 958 | UBOOT_EXTLINUX = "0" |
819 | FIT_GENERATE_KEYS = "1" | ||
820 | KERNEL_IMAGETYPE_REPLACEMENT = "zImage" | 959 | KERNEL_IMAGETYPE_REPLACEMENT = "zImage" |
821 | FIT_KERNEL_COMP_ALG = "none" | 960 | FIT_KERNEL_COMP_ALG = "none" |
822 | FIT_HASH_ALG = "sha256" | 961 | FIT_HASH_ALG = "sha256" |
823 | """ | 962 | """ |
963 | config = self._config_add_kernel_classes(config) | ||
824 | config = self._config_add_uboot_env(config) | 964 | config = self._config_add_uboot_env(config) |
825 | self.write_config(config) | 965 | self.write_config(config) |
826 | 966 | ||
@@ -833,10 +973,7 @@ FIT_HASH_ALG = "sha256" | |||
833 | 'UBOOT_SIGN_KEYDIR', | 973 | 'UBOOT_SIGN_KEYDIR', |
834 | ]) | 974 | ]) |
835 | 975 | ||
836 | # Do not use the random keys generated by FIT_GENERATE_KEYS. | ||
837 | # Using a static key is probably a more realistic scenario. | ||
838 | self._gen_signing_key(bb_vars) | 976 | self._gen_signing_key(bb_vars) |
839 | |||
840 | self._test_fitimage(bb_vars) | 977 | self._test_fitimage(bb_vars) |
841 | 978 | ||
842 | def test_fit_image_sign_initramfs_bundle(self): | 979 | def test_fit_image_sign_initramfs_bundle(self): |
@@ -861,8 +998,6 @@ INITRAMFS_IMAGE_BUNDLE = "1" | |||
861 | INITRAMFS_IMAGE = "core-image-minimal-initramfs" | 998 | INITRAMFS_IMAGE = "core-image-minimal-initramfs" |
862 | INITRAMFS_SCRIPTS = "" | 999 | INITRAMFS_SCRIPTS = "" |
863 | UBOOT_MACHINE = "am335x_evm_defconfig" | 1000 | UBOOT_MACHINE = "am335x_evm_defconfig" |
864 | KERNEL_CLASSES = " kernel-fitimage " | ||
865 | KERNEL_IMAGETYPES = "fitImage" | ||
866 | UBOOT_SIGN_ENABLE = "1" | 1001 | UBOOT_SIGN_ENABLE = "1" |
867 | UBOOT_SIGN_KEYNAME = "beaglebonekey" | 1002 | UBOOT_SIGN_KEYNAME = "beaglebonekey" |
868 | UBOOT_SIGN_KEYDIR ?= "${DEPLOY_DIR_IMAGE}" | 1003 | UBOOT_SIGN_KEYDIR ?= "${DEPLOY_DIR_IMAGE}" |
@@ -874,20 +1009,124 @@ UBOOT_ARCH = "arm" | |||
874 | UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000" | 1009 | UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000" |
875 | UBOOT_MKIMAGE_KERNEL_TYPE = "kernel" | 1010 | UBOOT_MKIMAGE_KERNEL_TYPE = "kernel" |
876 | UBOOT_EXTLINUX = "0" | 1011 | UBOOT_EXTLINUX = "0" |
877 | FIT_GENERATE_KEYS = "1" | ||
878 | KERNEL_IMAGETYPE_REPLACEMENT = "zImage" | 1012 | KERNEL_IMAGETYPE_REPLACEMENT = "zImage" |
879 | FIT_KERNEL_COMP_ALG = "none" | 1013 | FIT_KERNEL_COMP_ALG = "none" |
880 | FIT_HASH_ALG = "sha256" | 1014 | FIT_HASH_ALG = "sha256" |
881 | """ | 1015 | """ |
1016 | config = self._config_add_kernel_classes(config) | ||
882 | config = self._config_add_uboot_env(config) | 1017 | config = self._config_add_uboot_env(config) |
883 | self.write_config(config) | 1018 | self.write_config(config) |
884 | bb_vars = self._fit_get_bb_vars() | 1019 | bb_vars = self._fit_get_bb_vars() |
1020 | self._gen_signing_key(bb_vars) | ||
885 | self._test_fitimage(bb_vars) | 1021 | self._test_fitimage(bb_vars) |
886 | 1022 | ||
1023 | class FitImagePyTests(KernelFitImageBase): | ||
1024 | """Test cases for the fitimage.py module without calling bitbake""" | ||
1025 | |||
1026 | def _test_fitimage_py(self, bb_vars_overrides=None): | ||
1027 | topdir = os.path.join(os.environ['BUILDDIR']) | ||
1028 | fitimage_its_path = os.path.join(topdir, self._testMethodName + '.its') | ||
1029 | |||
1030 | # Provide variables without calling bitbake | ||
1031 | bb_vars = { | ||
1032 | # image-fitimage.conf | ||
1033 | 'FIT_DESC': "Kernel fitImage for a dummy distro", | ||
1034 | 'FIT_HASH_ALG': "sha256", | ||
1035 | 'FIT_SIGN_ALG': "rsa2048", | ||
1036 | 'FIT_PAD_ALG': "pkcs-1.5", | ||
1037 | 'FIT_GENERATE_KEYS': "0", | ||
1038 | 'FIT_SIGN_NUMBITS': "2048", | ||
1039 | 'FIT_KEY_GENRSA_ARGS': "-F4", | ||
1040 | 'FIT_KEY_REQ_ARGS': "-batch -new", | ||
1041 | 'FIT_KEY_SIGN_PKCS': "-x509", | ||
1042 | 'FIT_SIGN_INDIVIDUAL': "0", | ||
1043 | 'FIT_CONF_PREFIX': "conf-", | ||
1044 | 'FIT_SUPPORTED_INITRAMFS_FSTYPES': "cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst cpio.gz ext2.gz cpio", | ||
1045 | 'FIT_CONF_DEFAULT_DTB': "", | ||
1046 | 'FIT_ADDRESS_CELLS': "1", | ||
1047 | 'FIT_UBOOT_ENV': "", | ||
1048 | # kernel.bbclass | ||
1049 | 'UBOOT_ENTRYPOINT': "0x20008000", | ||
1050 | 'UBOOT_LOADADDRESS': "0x20008000", | ||
1051 | 'INITRAMFS_IMAGE': "", | ||
1052 | 'INITRAMFS_IMAGE_BUNDLE': "", | ||
1053 | # kernel-uboot.bbclass | ||
1054 | 'FIT_KERNEL_COMP_ALG': "gzip", | ||
1055 | 'FIT_KERNEL_COMP_ALG_EXTENSION': ".gz", | ||
1056 | 'UBOOT_MKIMAGE_KERNEL_TYPE': "kernel", | ||
1057 | # uboot-config.bbclass | ||
1058 | 'UBOOT_MKIMAGE_DTCOPTS': "", | ||
1059 | 'UBOOT_MKIMAGE': "uboot-mkimage", | ||
1060 | 'UBOOT_MKIMAGE_SIGN': "uboot-mkimage", | ||
1061 | 'UBOOT_MKIMAGE_SIGN_ARGS': "", | ||
1062 | 'UBOOT_SIGN_ENABLE': "0", | ||
1063 | 'UBOOT_SIGN_KEYDIR': None, | ||
1064 | 'UBOOT_SIGN_KEYNAME': None, | ||
1065 | 'UBOOT_SIGN_IMG_KEYNAME': None, | ||
1066 | # others | ||
1067 | 'MACHINE': "qemux86-64", | ||
1068 | 'UBOOT_ARCH': "x86", | ||
1069 | 'HOST_PREFIX': "x86_64-poky-linux-" | ||
1070 | } | ||
1071 | if bb_vars_overrides: | ||
1072 | bb_vars.update(bb_vars_overrides) | ||
1073 | |||
1074 | root_node = oe.fitimage.ItsNodeRootKernel( | ||
1075 | bb_vars["FIT_DESC"], bb_vars["FIT_ADDRESS_CELLS"], | ||
1076 | bb_vars['HOST_PREFIX'], bb_vars['UBOOT_ARCH'], bb_vars["FIT_CONF_PREFIX"], | ||
1077 | oe.types.boolean(bb_vars['UBOOT_SIGN_ENABLE']), bb_vars["UBOOT_SIGN_KEYDIR"], | ||
1078 | bb_vars["UBOOT_MKIMAGE"], bb_vars["UBOOT_MKIMAGE_DTCOPTS"], | ||
1079 | bb_vars["UBOOT_MKIMAGE_SIGN"], bb_vars["UBOOT_MKIMAGE_SIGN_ARGS"], | ||
1080 | bb_vars['FIT_HASH_ALG'], bb_vars['FIT_SIGN_ALG'], bb_vars['FIT_PAD_ALG'], | ||
1081 | bb_vars['UBOOT_SIGN_KEYNAME'], | ||
1082 | oe.types.boolean(bb_vars['FIT_SIGN_INDIVIDUAL']), bb_vars['UBOOT_SIGN_IMG_KEYNAME'] | ||
1083 | ) | ||
1084 | |||
1085 | root_node.fitimage_emit_section_kernel("kernel-1", "linux.bin", "none", | ||
1086 | bb_vars.get('UBOOT_LOADADDRESS'), bb_vars.get('UBOOT_ENTRYPOINT'), | ||
1087 | bb_vars.get('UBOOT_MKIMAGE_KERNEL_TYPE'), bb_vars.get("UBOOT_ENTRYSYMBOL") | ||
1088 | ) | ||
1089 | |||
1090 | dtb_files, _ = FitImageTestCase._get_dtb_files(bb_vars) | ||
1091 | for dtb in dtb_files: | ||
1092 | root_node.fitimage_emit_section_dtb(dtb, os.path.join("a-dir", dtb), | ||
1093 | bb_vars.get("UBOOT_DTB_LOADADDRESS"), bb_vars.get("UBOOT_DTBO_LOADADDRESS")) | ||
1094 | |||
1095 | if bb_vars.get('FIT_UBOOT_ENV'): | ||
1096 | root_node.fitimage_emit_section_boot_script( | ||
1097 | "bootscr-" + bb_vars['FIT_UBOOT_ENV'], bb_vars['FIT_UBOOT_ENV']) | ||
1098 | |||
1099 | if bb_vars['MACHINE'] == "qemux86-64": # Not really the right if | ||
1100 | root_node.fitimage_emit_section_setup("setup-1", "setup1.bin") | ||
1101 | |||
1102 | if bb_vars.get('INITRAMFS_IMAGE') and bb_vars.get("INITRAMFS_IMAGE_BUNDLE") != "1": | ||
1103 | root_node.fitimage_emit_section_ramdisk("ramdisk-1", "a-dir/a-initramfs-1", | ||
1104 | "core-image-minimal-initramfs", | ||
1105 | bb_vars.get("UBOOT_RD_LOADADDRESS"), bb_vars.get("UBOOT_RD_ENTRYPOINT")) | ||
1106 | |||
1107 | root_node.fitimage_emit_section_config(bb_vars['FIT_CONF_DEFAULT_DTB']) | ||
1108 | root_node.write_its_file(fitimage_its_path) | ||
1109 | |||
1110 | self.assertExists(fitimage_its_path, "%s image tree source doesn't exist" % (fitimage_its_path)) | ||
1111 | self.logger.debug("Checking its: %s" % fitimage_its_path) | ||
1112 | self._check_its_file(bb_vars, fitimage_its_path) | ||
1113 | |||
1114 | def test_fitimage_py_default(self): | ||
1115 | self._test_fitimage_py() | ||
1116 | |||
1117 | def test_fitimage_py_default_dtb(self): | ||
1118 | bb_vars_overrides = { | ||
1119 | 'KERNEL_DEVICETREE': "one.dtb two.dtb three.dtb", | ||
1120 | 'FIT_CONF_DEFAULT_DTB': "two.dtb" | ||
1121 | } | ||
1122 | self._test_fitimage_py(bb_vars_overrides) | ||
1123 | |||
887 | 1124 | ||
888 | class UBootFitImageTests(FitImageTestCase): | 1125 | class UBootFitImageTests(FitImageTestCase): |
889 | """Test cases for the uboot-sign bbclass""" | 1126 | """Test cases for the uboot-sign bbclass""" |
890 | 1127 | ||
1128 | BOOTLOADER_RECIPE = "virtual/bootloader" | ||
1129 | |||
891 | def _fit_get_bb_vars(self, additional_vars=[]): | 1130 | def _fit_get_bb_vars(self, additional_vars=[]): |
892 | """Get bb_vars as needed by _test_sign_fit_image | 1131 | """Get bb_vars as needed by _test_sign_fit_image |
893 | 1132 | ||
@@ -929,13 +1168,13 @@ class UBootFitImageTests(FitImageTestCase): | |||
929 | 'UBOOT_SIGN_KEYDIR', | 1168 | 'UBOOT_SIGN_KEYDIR', |
930 | 'UBOOT_SIGN_KEYNAME', | 1169 | 'UBOOT_SIGN_KEYNAME', |
931 | } | 1170 | } |
932 | bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), "virtual/bootloader") | 1171 | bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), UBootFitImageTests.BOOTLOADER_RECIPE) |
933 | self.logger.debug("bb_vars: %s" % pprint.pformat(bb_vars, indent=4)) | 1172 | self.logger.debug("bb_vars: %s" % pprint.pformat(bb_vars, indent=4)) |
934 | return bb_vars | 1173 | return bb_vars |
935 | 1174 | ||
936 | def _bitbake_fit_image(self, bb_vars): | 1175 | def _bitbake_fit_image(self, bb_vars): |
937 | """Bitbake the bootloader and return the paths to the its file and the FIT image""" | 1176 | """Bitbake the bootloader and return the paths to the its file and the FIT image""" |
938 | bitbake("virtual/bootloader") | 1177 | bitbake(UBootFitImageTests.BOOTLOADER_RECIPE) |
939 | 1178 | ||
940 | deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE'] | 1179 | deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE'] |
941 | machine = bb_vars['MACHINE'] | 1180 | machine = bb_vars['MACHINE'] |
@@ -1286,9 +1525,7 @@ UBOOT_SIGN_KEYNAME = "cfg-oe-selftest" | |||
1286 | self.write_config(config) | 1525 | self.write_config(config) |
1287 | bb_vars = self._fit_get_bb_vars() | 1526 | bb_vars = self._fit_get_bb_vars() |
1288 | 1527 | ||
1289 | # Using a static key. FIT_GENERATE_KEYS = "1" does not work without kernel-fitimage.bbclass | ||
1290 | self._gen_signing_key(bb_vars) | 1528 | self._gen_signing_key(bb_vars) |
1291 | |||
1292 | self._test_fitimage(bb_vars) | 1529 | self._test_fitimage(bb_vars) |
1293 | self._check_kernel_dtb(bb_vars) | 1530 | self._check_kernel_dtb(bb_vars) |
1294 | 1531 | ||
@@ -1449,11 +1686,9 @@ FIT_SIGN_INDIVIDUAL = "1" | |||
1449 | """ | 1686 | """ |
1450 | self.write_config(config) | 1687 | self.write_config(config) |
1451 | bb_vars = self._fit_get_bb_vars() | 1688 | bb_vars = self._fit_get_bb_vars() |
1452 | |||
1453 | # Using a static key. FIT_GENERATE_KEYS = "1" does not work without kernel-fitimage.bbclass | ||
1454 | self._gen_signing_key(bb_vars) | 1689 | self._gen_signing_key(bb_vars) |
1455 | 1690 | ||
1456 | bitbake("virtual/bootloader") | 1691 | bitbake(UBootFitImageTests.BOOTLOADER_RECIPE) |
1457 | 1692 | ||
1458 | # Just check the DTB of u-boot since there is no u-boot FIT image | 1693 | # Just check the DTB of u-boot since there is no u-boot FIT image |
1459 | self._check_kernel_dtb(bb_vars) | 1694 | self._check_kernel_dtb(bb_vars) |
diff --git a/meta/lib/oeqa/selftest/cases/uboot.py b/meta/lib/oeqa/selftest/cases/uboot.py index 96da4efb06..980ea327f0 100644 --- a/meta/lib/oeqa/selftest/cases/uboot.py +++ b/meta/lib/oeqa/selftest/cases/uboot.py | |||
@@ -6,8 +6,8 @@ | |||
6 | # | 6 | # |
7 | 7 | ||
8 | from oeqa.selftest.case import OESelftestTestCase | 8 | from oeqa.selftest.case import OESelftestTestCase |
9 | from oeqa.utils.commands import bitbake, runqemu | 9 | from oeqa.utils.commands import bitbake, runqemu, get_bb_var, get_bb_vars, runCmd |
10 | from oeqa.core.decorator.data import skipIfNotArch | 10 | from oeqa.core.decorator.data import skipIfNotArch, skipIfNotBuildArch |
11 | from oeqa.core.decorator import OETestTag | 11 | from oeqa.core.decorator import OETestTag |
12 | 12 | ||
13 | uboot_boot_patterns = { | 13 | uboot_boot_patterns = { |
@@ -41,3 +41,58 @@ QEMU_USE_KVM = "False" | |||
41 | status, output = qemu.run_serial(cmd) | 41 | status, output = qemu.run_serial(cmd) |
42 | self.assertEqual(status, 1, msg=output) | 42 | self.assertEqual(status, 1, msg=output) |
43 | self.assertTrue("U-Boot" in output, msg=output) | 43 | self.assertTrue("U-Boot" in output, msg=output) |
44 | |||
45 | @skipIfNotArch(['aarch64']) | ||
46 | @skipIfNotBuildArch(['aarch64']) | ||
47 | @OETestTag("runqemu") | ||
48 | def test_boot_uboot_kvm_to_full_target(self): | ||
49 | """ | ||
50 | Tests building u-boot and booting it with QEMU and KVM. | ||
51 | Requires working KVM on build host. See "kvm-ok" output. | ||
52 | """ | ||
53 | |||
54 | runCmd("kvm-ok") | ||
55 | |||
56 | image = "core-image-minimal" | ||
57 | vars = get_bb_vars(['HOST_ARCH', 'BUILD_ARCH'], image) | ||
58 | host_arch = vars['HOST_ARCH'] | ||
59 | build_arch = vars['BUILD_ARCH'] | ||
60 | |||
61 | self.assertEqual(host_arch, build_arch, 'HOST_ARCH %s and BUILD_ARCH %s must match for KVM' % (host_arch, build_arch)) | ||
62 | |||
63 | self.write_config(""" | ||
64 | QEMU_USE_KVM = "1" | ||
65 | |||
66 | # Using u-boot in EFI mode, need ESP partition for grub/systemd-boot/kernel etc | ||
67 | IMAGE_FSTYPES:pn-core-image-minimal:append = " wic" | ||
68 | |||
69 | # easiest to follow genericarm64 setup with wks file, initrd and EFI loader | ||
70 | INITRAMFS_IMAGE = "core-image-initramfs-boot" | ||
71 | EFI_PROVIDER = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd-boot", "grub-efi", d)}" | ||
72 | WKS_FILE = "genericarm64.wks.in" | ||
73 | |||
74 | # use wic image with ESP for u-boot, not ext4 | ||
75 | QB_DEFAULT_FSTYPE = "wic" | ||
76 | |||
77 | PREFERRED_PROVIDER_virtual/bootloader = "u-boot" | ||
78 | QB_DEFAULT_BIOS = "u-boot.bin" | ||
79 | |||
80 | # let u-boot or EFI loader load kernel from ESP | ||
81 | QB_DEFAULT_KERNEL = "none" | ||
82 | |||
83 | # virt pci, not scsi because support not in u-boot to find ESP | ||
84 | QB_DRIVE_TYPE = "/dev/vd" | ||
85 | """) | ||
86 | bitbake("virtual/bootloader %s" % image) | ||
87 | |||
88 | runqemu_params = get_bb_var('TEST_RUNQEMUPARAMS', image) or "" | ||
89 | with runqemu(image, ssh=False, runqemuparams='nographic kvm %s' % runqemu_params) as qemu: | ||
90 | |||
91 | # boot to target and login worked, should have been fast with kvm | ||
92 | cmd = "dmesg" | ||
93 | status, output = qemu.run_serial(cmd) | ||
94 | self.assertEqual(status, 1, msg=output) | ||
95 | # Machine is qemu | ||
96 | self.assertTrue("Machine model: linux,dummy-virt" in output, msg=output) | ||
97 | # with KVM enabled | ||
98 | self.assertTrue("KVM: hypervisor services detected" in output, msg=output) | ||
diff --git a/meta/lib/oeqa/utils/subprocesstweak.py b/meta/lib/oeqa/utils/subprocesstweak.py index 3e43ed547b..1774513023 100644 --- a/meta/lib/oeqa/utils/subprocesstweak.py +++ b/meta/lib/oeqa/utils/subprocesstweak.py | |||
@@ -8,16 +8,11 @@ import subprocess | |||
8 | class OETestCalledProcessError(subprocess.CalledProcessError): | 8 | class OETestCalledProcessError(subprocess.CalledProcessError): |
9 | def __str__(self): | 9 | def __str__(self): |
10 | def strify(o): | 10 | def strify(o): |
11 | if isinstance(o, bytes): | 11 | return o.decode("utf-8", errors="replace") if isinstance(o, bytes) else o |
12 | return o.decode("utf-8", errors="replace") | ||
13 | else: | ||
14 | return o | ||
15 | 12 | ||
16 | s = "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode) | 13 | s = super().__str__() |
17 | if hasattr(self, "output") and self.output: | 14 | s = s + "\nStandard Output: " + strify(self.output) |
18 | s = s + "\nStandard Output: " + strify(self.output) | 15 | s = s + "\nStandard Error: " + strify(self.stderr) |
19 | if hasattr(self, "stderr") and self.stderr: | ||
20 | s = s + "\nStandard Error: " + strify(self.stderr) | ||
21 | return s | 16 | return s |
22 | 17 | ||
23 | def errors_have_output(): | 18 | def errors_have_output(): |
diff --git a/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg new file mode 100644 index 0000000000..d01d3d12d8 --- /dev/null +++ b/meta/recipes-bsp/u-boot/files/disable-CONFIG_BLOBLIST.cfg | |||
@@ -0,0 +1 @@ | |||
# CONFIG_BLOBLIST is not set | |||
diff --git a/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg b/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg new file mode 100644 index 0000000000..1d2509982b --- /dev/null +++ b/meta/recipes-bsp/u-boot/files/disable_CONFIG_USB.cfg | |||
@@ -0,0 +1 @@ | |||
# CONFIG_USB is not set | |||
diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc index fd1eab5cdd..6cd9c39430 100644 --- a/meta/recipes-bsp/u-boot/u-boot-common.inc +++ b/meta/recipes-bsp/u-boot/u-boot-common.inc | |||
@@ -16,6 +16,10 @@ SRCREV = "34820924edbc4ec7803eb89d9852f4b870fa760a" | |||
16 | 16 | ||
17 | SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" | 17 | SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}" |
18 | 18 | ||
19 | # workarounds for aarch64 kvm qemu boot regressions | ||
20 | SRC_URI:append:qemuarm64 = " file://disable-CONFIG_BLOBLIST.cfg file://disable_CONFIG_USB.cfg" | ||
21 | SRC_URI:append:genericarm64 = " file://disable-CONFIG_BLOBLIST.cfg file://disable_CONFIG_USB.cfg" | ||
22 | |||
19 | S = "${WORKDIR}/git" | 23 | S = "${WORKDIR}/git" |
20 | B = "${WORKDIR}/build" | 24 | B = "${WORKDIR}/build" |
21 | 25 | ||
diff --git a/meta/recipes-connectivity/dhcpcd/dhcpcd_10.2.2.bb b/meta/recipes-connectivity/dhcpcd/dhcpcd_10.2.4.bb index f9dfd2e245..dee921d21c 100644 --- a/meta/recipes-connectivity/dhcpcd/dhcpcd_10.2.2.bb +++ b/meta/recipes-connectivity/dhcpcd/dhcpcd_10.2.4.bb | |||
@@ -17,7 +17,7 @@ SRC_URI = "git://github.com/NetworkConfiguration/dhcpcd;protocol=https;branch=ma | |||
17 | file://0001-dhcpcd.8-Fix-conflict-error-when-enable-multilib.patch \ | 17 | file://0001-dhcpcd.8-Fix-conflict-error-when-enable-multilib.patch \ |
18 | " | 18 | " |
19 | 19 | ||
20 | SRCREV = "f6983c18dbf7989f43a2838beeaf62a54c53ff1d" | 20 | SRCREV = "93df2b254caf9639f9ffb66e0fe2b584eeba6220" |
21 | S = "${WORKDIR}/git" | 21 | S = "${WORKDIR}/git" |
22 | 22 | ||
23 | # Doesn't use automake so we can't do out-of-tree builds | 23 | # Doesn't use automake so we can't do out-of-tree builds |
diff --git a/meta/recipes-connectivity/dhcpcd/files/0001-20-resolv.conf-improve-the-sitation-of-working-with-.patch b/meta/recipes-connectivity/dhcpcd/files/0001-20-resolv.conf-improve-the-sitation-of-working-with-.patch index 4f687b0292..512e33aebf 100644 --- a/meta/recipes-connectivity/dhcpcd/files/0001-20-resolv.conf-improve-the-sitation-of-working-with-.patch +++ b/meta/recipes-connectivity/dhcpcd/files/0001-20-resolv.conf-improve-the-sitation-of-working-with-.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 33710a648a805d96abf49d5adf6ca55b89f9c858 Mon Sep 17 00:00:00 2001 | 1 | From d1581ce103db0a5db0b1761907fff9ddd6b55a8a Mon Sep 17 00:00:00 2001 |
2 | From: Chen Qi <Qi.Chen@windriver.com> | 2 | From: Chen Qi <Qi.Chen@windriver.com> |
3 | Date: Wed, 9 Nov 2022 16:33:18 +0800 | 3 | Date: Wed, 9 Nov 2022 16:33:18 +0800 |
4 | Subject: [PATCH] 20-resolv.conf: improve the sitation of working with systemd | 4 | Subject: [PATCH] 20-resolv.conf: improve the sitation of working with systemd |
@@ -27,7 +27,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com> | |||
27 | 1 file changed, 13 insertions(+), 4 deletions(-) | 27 | 1 file changed, 13 insertions(+), 4 deletions(-) |
28 | 28 | ||
29 | diff --git a/hooks/20-resolv.conf b/hooks/20-resolv.conf | 29 | diff --git a/hooks/20-resolv.conf b/hooks/20-resolv.conf |
30 | index 7c29e276..becc019f 100644 | 30 | index bd0b0df5..9c7721de 100644 |
31 | --- a/hooks/20-resolv.conf | 31 | --- a/hooks/20-resolv.conf |
32 | +++ b/hooks/20-resolv.conf | 32 | +++ b/hooks/20-resolv.conf |
33 | @@ -11,8 +11,12 @@ nocarrier_roaming_dir="$state_dir/roaming" | 33 | @@ -11,8 +11,12 @@ nocarrier_roaming_dir="$state_dir/roaming" |
@@ -59,7 +59,7 @@ index 7c29e276..becc019f 100644 | |||
59 | fi | 59 | fi |
60 | rm -f "$cf" | 60 | rm -f "$cf" |
61 | } | 61 | } |
62 | @@ -170,7 +179,7 @@ add_resolv_conf() | 62 | @@ -179,7 +188,7 @@ add_resolv_conf() |
63 | for x in ${new_domain_name_servers}; do | 63 | for x in ${new_domain_name_servers}; do |
64 | conf="${conf}nameserver $x$NL" | 64 | conf="${conf}nameserver $x$NL" |
65 | done | 65 | done |
@@ -68,7 +68,7 @@ index 7c29e276..becc019f 100644 | |||
68 | [ -n "$ifmetric" ] && export IF_METRIC="$ifmetric" | 68 | [ -n "$ifmetric" ] && export IF_METRIC="$ifmetric" |
69 | printf %s "$conf" | "$resolvconf" -a "$ifname" | 69 | printf %s "$conf" | "$resolvconf" -a "$ifname" |
70 | return $? | 70 | return $? |
71 | @@ -186,7 +195,7 @@ add_resolv_conf() | 71 | @@ -195,7 +204,7 @@ add_resolv_conf() |
72 | 72 | ||
73 | remove_resolv_conf() | 73 | remove_resolv_conf() |
74 | { | 74 | { |
diff --git a/meta/recipes-connectivity/iproute2/iproute2_6.14.0.bb b/meta/recipes-connectivity/iproute2/iproute2_6.15.0.bb index a32ac34245..592e3e15af 100644 --- a/meta/recipes-connectivity/iproute2/iproute2_6.14.0.bb +++ b/meta/recipes-connectivity/iproute2/iproute2_6.15.0.bb | |||
@@ -15,7 +15,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \ | |||
15 | file://0001-include-libnetlink.h-add-missing-include-for-htobe64.patch \ | 15 | file://0001-include-libnetlink.h-add-missing-include-for-htobe64.patch \ |
16 | " | 16 | " |
17 | 17 | ||
18 | SRC_URI[sha256sum] = "a6d23588150096591c3d00fc27a324a82ee71d7a1a9eea78df5df17ad9b8461f" | 18 | SRC_URI[sha256sum] = "8041854a882583ad5263466736c9c8c68c74b1a35754ab770d23343f947528fb" |
19 | 19 | ||
20 | inherit update-alternatives bash-completion pkgconfig | 20 | inherit update-alternatives bash-completion pkgconfig |
21 | 21 | ||
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Fix-typecast-warning-with-clang.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Fix-typecast-warning-with-clang.patch deleted file mode 100644 index f493a3051e..0000000000 --- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Fix-typecast-warning-with-clang.patch +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | From 0a64c5ad17786796d84390e480a38b4f762229ae Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Wed, 18 Dec 2024 19:20:39 -0800 | ||
4 | Subject: [PATCH v2] Fix typecast warning with clang | ||
5 | |||
6 | Fixes | ||
7 | file.c:200:8: error: assigning to 'char *' from 'const char *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers] | ||
8 | |||
9 | Upstream-Status: Submitted [https://marc.info/?l=linux-nfs&m=173463533411103&w=2] | ||
10 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
11 | Cc: Benjamin Coddington <bcodding@redhat.com> | ||
12 | Cc: Steve Dickson <steved@redhat.com> | ||
13 | --- | ||
14 | v2: Make base as const char pointer insread of trying type punning | ||
15 | |||
16 | support/nsm/file.c | 3 ++- | ||
17 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/support/nsm/file.c b/support/nsm/file.c | ||
20 | index de122b0f..68f99bf0 100644 | ||
21 | --- a/support/nsm/file.c | ||
22 | +++ b/support/nsm/file.c | ||
23 | @@ -184,7 +184,8 @@ static char * | ||
24 | nsm_make_temp_pathname(const char *pathname) | ||
25 | { | ||
26 | size_t size; | ||
27 | - char *path, *base; | ||
28 | + char *path; | ||
29 | + const char *base; | ||
30 | int len; | ||
31 | |||
32 | size = strlen(pathname) + sizeof(".new") + 1; | ||
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0003-support-nfs-xcommon.c-fix-a-formatting-error-with-cl.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0003-support-nfs-xcommon.c-fix-a-formatting-error-with-cl.patch deleted file mode 100644 index a99ba284e0..0000000000 --- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0003-support-nfs-xcommon.c-fix-a-formatting-error-with-cl.patch +++ /dev/null | |||
@@ -1,40 +0,0 @@ | |||
1 | From cc59a7fe15b6ca2ee43cba0dc1d699323b36ffcc Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex@linutronix.de> | ||
3 | Date: Fri, 21 Mar 2025 10:42:56 +0100 | ||
4 | Subject: [PATCH] support/nfs/xcommon.c: fix a formatting error with clang | ||
5 | |||
6 | Specifically, this happens: | ||
7 | |||
8 | | xcommon.c:101:24: error: format string is not a string literal [-Werror,-Wformat-nonliteral] | ||
9 | | 101 | vfprintf (stderr, fmt2, args); | ||
10 | | | ^~~~ | ||
11 | |||
12 | A similar approach (print \n seprately) is already used elsewhere in | ||
13 | the same file. | ||
14 | |||
15 | Upstream-Status: Submitted [via email to steved@redhat.com,linux-nfs@vger.kernel.org] | ||
16 | Signed-off-by: Alexander Kanavin <alex@linutronix.de> | ||
17 | --- | ||
18 | support/nfs/xcommon.c | 6 ++---- | ||
19 | 1 file changed, 2 insertions(+), 4 deletions(-) | ||
20 | |||
21 | diff --git a/support/nfs/xcommon.c b/support/nfs/xcommon.c | ||
22 | index 3989f0b..1d04dd1 100644 | ||
23 | --- a/support/nfs/xcommon.c | ||
24 | +++ b/support/nfs/xcommon.c | ||
25 | @@ -94,13 +94,11 @@ xstrconcat4 (const char *s, const char *t, const char *u, const char *v) { | ||
26 | void | ||
27 | nfs_error (const char *fmt, ...) { | ||
28 | va_list args; | ||
29 | - char *fmt2; | ||
30 | |||
31 | - fmt2 = xstrconcat2 (fmt, "\n"); | ||
32 | va_start (args, fmt); | ||
33 | - vfprintf (stderr, fmt2, args); | ||
34 | + vfprintf (stderr, fmt, args); | ||
35 | + fprintf (stderr, "\n"); | ||
36 | va_end (args); | ||
37 | - free (fmt2); | ||
38 | } | ||
39 | |||
40 | /* Make a canonical pathname from PATH. Returns a freshly malloced string. | ||
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.8.2.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.8.3.bb index 1f3afa0560..9668ac0e86 100644 --- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.8.2.bb +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.8.3.bb | |||
@@ -22,13 +22,11 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.x | |||
22 | file://nfsserver \ | 22 | file://nfsserver \ |
23 | file://nfscommon \ | 23 | file://nfscommon \ |
24 | file://0001-locktest-Makefile.am-Do-not-use-build-flags.patch \ | 24 | file://0001-locktest-Makefile.am-Do-not-use-build-flags.patch \ |
25 | file://0001-Fix-typecast-warning-with-clang.patch \ | ||
26 | file://0004-Use-nogroup-for-nobody-group.patch \ | 25 | file://0004-Use-nogroup-for-nobody-group.patch \ |
27 | file://0005-find-OE-provided-Kerberos.patch \ | 26 | file://0005-find-OE-provided-Kerberos.patch \ |
28 | file://0003-support-nfs-xcommon.c-fix-a-formatting-error-with-cl.patch \ | ||
29 | " | 27 | " |
30 | 28 | ||
31 | SRC_URI[sha256sum] = "a39bbea76ac0ab9e6e8699caf3c308b6b310c20d458e8fa8606196d358e7fb15" | 29 | SRC_URI[sha256sum] = "11e7c5847a8423a72931c865bd9296e7fd56ff270a795a849183900961711725" |
32 | 30 | ||
33 | # Only kernel-module-nfsd is required here (but can be built-in) - the nfsd module will | 31 | # Only kernel-module-nfsd is required here (but can be built-in) - the nfsd module will |
34 | # pull in the remainder of the dependencies. | 32 | # pull in the remainder of the dependencies. |
diff --git a/meta/recipes-connectivity/ofono/ofono_2.16.bb b/meta/recipes-connectivity/ofono/ofono_2.17.bb index ea3120974c..36bbe9439a 100644 --- a/meta/recipes-connectivity/ofono/ofono_2.16.bb +++ b/meta/recipes-connectivity/ofono/ofono_2.17.bb | |||
@@ -10,7 +10,7 @@ DEPENDS = "dbus glib-2.0 udev mobile-broadband-provider-info ell" | |||
10 | SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \ | 10 | SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \ |
11 | file://ofono \ | 11 | file://ofono \ |
12 | " | 12 | " |
13 | SRC_URI[sha256sum] = "6fa2e168e74e1d1879008806537eff2f0b3c86eb5412fbc093f4236e2a15c9ef" | 13 | SRC_URI[sha256sum] = "70bb50997d3a7657edf133355677f8e04b2158bcb031118a67b296107f6ea73e" |
14 | 14 | ||
15 | inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data | 15 | inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data |
16 | 16 | ||
diff --git a/meta/recipes-connectivity/slirp/libslirp_4.9.0.bb b/meta/recipes-connectivity/slirp/libslirp_4.9.1.bb index a159ed7c67..568bac389f 100644 --- a/meta/recipes-connectivity/slirp/libslirp_4.9.0.bb +++ b/meta/recipes-connectivity/slirp/libslirp_4.9.1.bb | |||
@@ -5,7 +5,7 @@ LICENSE = "BSD-3-Clause & MIT" | |||
5 | LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=bca0186b14e6b05e338e729f106db727" | 5 | LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=bca0186b14e6b05e338e729f106db727" |
6 | 6 | ||
7 | SRC_URI = "git://gitlab.freedesktop.org/slirp/libslirp.git;protocol=https;branch=master" | 7 | SRC_URI = "git://gitlab.freedesktop.org/slirp/libslirp.git;protocol=https;branch=master" |
8 | SRCREV = "c32a8a1ccaae8490142e67e078336a95c5ffc956" | 8 | SRCREV = "9c744e1e52aa0d9646ed91d789d588696292c21e" |
9 | 9 | ||
10 | S = "${WORKDIR}/git" | 10 | S = "${WORKDIR}/git" |
11 | 11 | ||
diff --git a/meta/recipes-core/kbd/kbd_2.7.1.bb b/meta/recipes-core/kbd/kbd_2.8.0.bb index 9b9066e7b0..ababa09918 100644 --- a/meta/recipes-core/kbd/kbd_2.7.1.bb +++ b/meta/recipes-core/kbd/kbd_2.8.0.bb | |||
@@ -26,7 +26,7 @@ RCONFLICTS:${PN} = "console-tools" | |||
26 | SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \ | 26 | SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \ |
27 | " | 27 | " |
28 | 28 | ||
29 | SRC_URI[sha256sum] = "f167d899d92b56ccf12f6f49355173f93870a95f15d8aeebf5fdcd28a621aca8" | 29 | SRC_URI[sha256sum] = "01f5806da7d1d34f594b7b2a6ae1ab23215344cf1064e8edcd3a90fef9776a11" |
30 | 30 | ||
31 | # 'gzip -n' is set due to https://github.com/legionus/kbd/issues/124 | 31 | # 'gzip -n' is set due to https://github.com/legionus/kbd/issues/124 |
32 | EXTRA_OECONF = "--disable-tests --enable-compress='gzip -n'" | 32 | EXTRA_OECONF = "--disable-tests --enable-compress='gzip -n'" |
diff --git a/meta/recipes-core/musl/libucontext_1.2.bb b/meta/recipes-core/musl/libucontext_1.3.2.bb index 4e34df1439..65ee77d06e 100644 --- a/meta/recipes-core/musl/libucontext_1.2.bb +++ b/meta/recipes-core/musl/libucontext_1.3.2.bb | |||
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ebea527af0602d509b7f4c49533fb1bd" | |||
8 | SECTION = "libs" | 8 | SECTION = "libs" |
9 | DEPENDS = "" | 9 | DEPENDS = "" |
10 | 10 | ||
11 | SRCREV = "4dde3417b4bb4b1b1545bd913be337680b5e28c3" | 11 | SRCREV = "a0323579ac50b9a9d4033754d089f1fed0f59a00" |
12 | SRC_URI = "git://github.com/kaniini/libucontext;branch=master;protocol=https \ | 12 | SRC_URI = "git://github.com/kaniini/libucontext;branch=master;protocol=https \ |
13 | " | 13 | " |
14 | 14 | ||
diff --git a/meta/recipes-core/musl/musl-locales_git.bb b/meta/recipes-core/musl/musl-locales_git.bb index 1373c60daf..2815e2ddf0 100644 --- a/meta/recipes-core/musl/musl-locales_git.bb +++ b/meta/recipes-core/musl/musl-locales_git.bb | |||
@@ -82,4 +82,21 @@ FILES:locale-base-ru-ru += "${datadir}/i18n/locales/musl/ru_RU.UTF-8" | |||
82 | FILES:locale-base-sr-rs += "${datadir}/i18n/locales/musl/sr_RS.UTF-8" | 82 | FILES:locale-base-sr-rs += "${datadir}/i18n/locales/musl/sr_RS.UTF-8" |
83 | FILES:locale-base-sv-se += "${datadir}/i18n/locales/musl/sv_SE.UTF-8" | 83 | FILES:locale-base-sv-se += "${datadir}/i18n/locales/musl/sv_SE.UTF-8" |
84 | 84 | ||
85 | RRECOMMENDS:locale-base-cs-cz += "${PN}" | ||
86 | RRECOMMENDS:locale-base-de-ch += "${PN}" | ||
87 | RRECOMMENDS:locale-base-de-de += "${PN}" | ||
88 | RRECOMMENDS:locale-base-en-gb += "${PN}" | ||
89 | RRECOMMENDS:locale-base-en-us += "${PN}" | ||
90 | RRECOMMENDS:locale-base-es-es += "${PN}" | ||
91 | RRECOMMENDS:locale-base-fi-fi += "${PN}" | ||
92 | RRECOMMENDS:locale-base-fr-ca += "${PN}" | ||
93 | RRECOMMENDS:locale-base-fr-fr += "${PN}" | ||
94 | RRECOMMENDS:locale-base-it-it += "${PN}" | ||
95 | RRECOMMENDS:locale-base-nb-no += "${PN}" | ||
96 | RRECOMMENDS:locale-base-nl-nl += "${PN}" | ||
97 | RRECOMMENDS:locale-base-pt-br += "${PN}" | ||
98 | RRECOMMENDS:locale-base-ru-ru += "${PN}" | ||
99 | RRECOMMENDS:locale-base-sr-sr += "${PN}" | ||
100 | RRECOMMENDS:locale-base-sv-se += "${PN}" | ||
101 | |||
85 | UPSTREAM_CHECK_COMMITS = "1" | 102 | UPSTREAM_CHECK_COMMITS = "1" |
diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env b/meta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env deleted file mode 100755 index 64b5e20785..0000000000 --- a/meta/recipes-devtools/icecc-create-env/icecc-create-env/icecc-create-env +++ /dev/null | |||
@@ -1,382 +0,0 @@ | |||
1 | #! /usr/bin/env bash | ||
2 | # icecc -- A simple distributed compiler system | ||
3 | # | ||
4 | # Copyright (C) 2004 by the Icecream Authors | ||
5 | # GPL | ||
6 | |||
7 | target_paths= | ||
8 | target_aliases= | ||
9 | |||
10 | # Always prints, optionally to a log file | ||
11 | print_output () | ||
12 | { | ||
13 | if test -n "$log_path"; then | ||
14 | echo "$@" | tee -a "$log_path" | ||
15 | else | ||
16 | echo "$@" | ||
17 | fi | ||
18 | } | ||
19 | |||
20 | # Only prints if the debug flag is specified | ||
21 | print_debug () | ||
22 | { | ||
23 | if test -n "$debug"; then | ||
24 | print_output "$@" | ||
25 | fi | ||
26 | } | ||
27 | |||
28 | is_dynamic_elf () | ||
29 | { | ||
30 | # Is the file an dynamically linked ELF executable? | ||
31 | (file -L "$1" | grep 'ELF' > /dev/null 2>&1) && (! file -L "$1" | grep 'static' > /dev/null 2>&1) | ||
32 | } | ||
33 | |||
34 | fix_rpath () | ||
35 | { | ||
36 | # Patches the RPATH for a file. When the program is executed in the chroot | ||
37 | # be iceccd, /proc is not mounted. As such, $ORIGIN can't be resolved. To | ||
38 | # work around this, replace all instances of $ORIGIN in RPATH with the | ||
39 | # known chroot path to the executables directory | ||
40 | local path="$1" | ||
41 | local origin="$2" | ||
42 | if ! is_dynamic_elf "$path"; then | ||
43 | return | ||
44 | fi | ||
45 | local old_rpath="`$PATCHELF --print-rpath "$path"`" | ||
46 | local new_rpath="`echo "$old_rpath" | \ | ||
47 | sed 's/.*\[\(.*\)\]/\1/g' | \ | ||
48 | sed "s,\\\$ORIGIN,/$origin,g"`" | ||
49 | |||
50 | if test -n "$new_rpath"; then | ||
51 | print_debug "Converting RPATH '$old_rpath' -> '$new_rpath'" | ||
52 | $PATCHELF --set-rpath "$new_rpath" "$path" | ||
53 | fi | ||
54 | } | ||
55 | |||
56 | add_path () | ||
57 | { | ||
58 | case " $target_paths " in | ||
59 | *" $1 "*) | ||
60 | return 1 | ||
61 | ;; | ||
62 | *) | ||
63 | target_paths="$target_paths $1" | ||
64 | return 0 | ||
65 | ;; | ||
66 | esac | ||
67 | } | ||
68 | |||
69 | add_alias () | ||
70 | { | ||
71 | if test "$1" != "$2"; then | ||
72 | local alias="$1=$2" | ||
73 | case " $target_aliases " in | ||
74 | *" $alias "*) | ||
75 | ;; | ||
76 | *) | ||
77 | print_debug "Adding alias '$2' -> '$1'" | ||
78 | target_aliases="$target_aliases $alias" | ||
79 | ;; | ||
80 | esac | ||
81 | fi | ||
82 | } | ||
83 | |||
84 | normalize_path () | ||
85 | { | ||
86 | # Normalizes the path to a file or directory, removing all "." and ".." | ||
87 | # entries. Use pwd -L to explicitly prevent symlink expansion | ||
88 | local path=$1 | ||
89 | if test -f "$path"; then | ||
90 | pushd $(dirname $path) > /dev/null 2>&1 | ||
91 | dir_path=$(pwd -L) | ||
92 | path=$dir_path/$(basename $path) | ||
93 | popd > /dev/null 2>&1 | ||
94 | elif test -d "$path"; then | ||
95 | pushd $path > /dev/null 2>&1 | ||
96 | path=$(pwd -L) | ||
97 | popd > /dev/null 2>&1 | ||
98 | fi | ||
99 | echo $path | ||
100 | } | ||
101 | |||
102 | add_file_common() | ||
103 | { | ||
104 | local p="$1" | ||
105 | local path="$2" | ||
106 | local alias="$3" | ||
107 | |||
108 | add_alias "$path" "$p" | ||
109 | if test -n "$alias"; then | ||
110 | add_alias "$path" "$alias" | ||
111 | fi | ||
112 | |||
113 | add_path "$path" || return 1 | ||
114 | print_debug "Adding file '$path'" | ||
115 | |||
116 | return 0 | ||
117 | } | ||
118 | |||
119 | add_deps() | ||
120 | { | ||
121 | local path="$1" | ||
122 | local interp="$2" | ||
123 | |||
124 | if test -n "$interp" && test -x "$interp"; then | ||
125 | # Use the dynamic loaders --list argument to list the | ||
126 | # dependencies. The program may have a different program | ||
127 | # interpreter (typical when using uninative tarballs), which is | ||
128 | # why we can't just call ldd. | ||
129 | deps="`$interp --list "$path"`" | ||
130 | else | ||
131 | deps="`ldd "$path"`" | ||
132 | fi | ||
133 | |||
134 | print_debug "Dependencies are:" | ||
135 | print_debug "$deps" | ||
136 | if test -n "$deps"; then | ||
137 | for lib in $deps; do | ||
138 | # ldd now outputs ld as /lib/ld-linux.so.xx on current nptl | ||
139 | # based glibc this regexp parse the outputs like: | ||
140 | # ldd /usr/bin/gcc | ||
141 | # linux-gate.so.1 => (0xffffe000) | ||
142 | # libc.so.6 => /lib/tls/libc.so.6 (0xb7e81000) | ||
143 | # /lib/ld-linux.so.2 (0xb7fe8000) | ||
144 | # covering both situations ( with => and without ) | ||
145 | lib="`echo "$lib" | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`" | ||
146 | |||
147 | test -f "$lib" || continue | ||
148 | # Check whether the same library also exists in the parent | ||
149 | # directory, and prefer that on the assumption that it is a | ||
150 | # more generic one. | ||
151 | local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'` | ||
152 | test -f "$baselib" && lib=$baselib | ||
153 | add_dependency "$lib" "$interp" | ||
154 | done | ||
155 | fi | ||
156 | } | ||
157 | |||
158 | add_dependency() | ||
159 | { | ||
160 | local p=`normalize_path $1` | ||
161 | # readlink is required for Yocto, so we can use it | ||
162 | local path=`readlink -f "$p"` | ||
163 | local interp="$2" | ||
164 | |||
165 | add_file_common "$p" "$path" || return | ||
166 | |||
167 | if test -x "$path" && is_dynamic_elf "$path"; then | ||
168 | add_deps "$path" "$interp" | ||
169 | fi | ||
170 | } | ||
171 | |||
172 | add_file () | ||
173 | { | ||
174 | local p=`normalize_path $1` | ||
175 | # readlink is required for Yocto, so we can use it | ||
176 | local path=`readlink -f "$p"` | ||
177 | |||
178 | add_file_common "$p" "$path" "$2" || return | ||
179 | |||
180 | if test -x "$path" && is_dynamic_elf "$path"; then | ||
181 | # Request the program interpeter (dynamic loader) | ||
182 | interp=`readelf -W -l "$path" | grep "Requesting program interpreter:" | sed "s/\s*\[Requesting program interpreter:\s*\(.*\)\]/\1/g"` | ||
183 | print_debug "Interpreter is '$interp'" | ||
184 | |||
185 | add_deps "$path" "$interp" | ||
186 | fi | ||
187 | } | ||
188 | |||
189 | while test -n "$1"; do | ||
190 | case "$1" in | ||
191 | --respect-path) | ||
192 | # Ignore for backward compatability | ||
193 | ;; | ||
194 | --debug) | ||
195 | debug=1 | ||
196 | ;; | ||
197 | --log) | ||
198 | do_log=1 | ||
199 | ;; | ||
200 | --extra=*) | ||
201 | extra_tools="$extra_tools ${1#--extra=}" | ||
202 | ;; | ||
203 | *) | ||
204 | break | ||
205 | ;; | ||
206 | esac | ||
207 | shift | ||
208 | done | ||
209 | |||
210 | added_gcc=$1 | ||
211 | shift | ||
212 | added_gxx=$1 | ||
213 | shift | ||
214 | added_as=$1 | ||
215 | shift | ||
216 | archive_name=$1 | ||
217 | |||
218 | if test -n "$do_log"; then | ||
219 | log_path="$archive_name.log" | ||
220 | rm -f "$log_path" | ||
221 | fi | ||
222 | |||
223 | if test -z "$PATCHELF"; then | ||
224 | PATCHELF=`which patchelf 2> /dev/null` | ||
225 | fi | ||
226 | if test -z "$PATCHELF"; then | ||
227 | PATCHELF=`which patchelf-uninative 2> /dev/null` | ||
228 | fi | ||
229 | if test -z "$PATCHELF"; then | ||
230 | print_output "patchelf is required" | ||
231 | exit 1 | ||
232 | fi | ||
233 | |||
234 | if test -z "$added_gcc" || test -z "$added_gxx" ; then | ||
235 | print_output "usage: $0 <gcc_path> <g++_path>" | ||
236 | exit 1 | ||
237 | fi | ||
238 | |||
239 | if ! test -x "$added_gcc" ; then | ||
240 | print_output "'$added_gcc' is not executable." | ||
241 | exit 1 | ||
242 | fi | ||
243 | |||
244 | if ! test -x "$added_gxx" ; then | ||
245 | print_output "'$added_gcc' is not executable." | ||
246 | exit 1 | ||
247 | fi | ||
248 | |||
249 | |||
250 | |||
251 | add_file $added_gcc /usr/bin/gcc | ||
252 | add_file $added_gxx /usr/bin/g++ | ||
253 | |||
254 | if test -z "$added_as" ; then | ||
255 | add_file /usr/bin/as /usr/bin/as | ||
256 | else | ||
257 | if ! test -x "$added_as" ; then | ||
258 | print_output "'$added_as' is not executable." | ||
259 | exit 1 | ||
260 | fi | ||
261 | |||
262 | add_file $added_as /usr/bin/as | ||
263 | fi | ||
264 | |||
265 | add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1 | ||
266 | add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus | ||
267 | specfile=`$added_gcc -print-file-name=specs` | ||
268 | if test -n "$specfile" && test -e "$specfile"; then | ||
269 | add_file "$specfile" | ||
270 | fi | ||
271 | |||
272 | ltofile=`$added_gcc -print-prog-name=lto1` | ||
273 | pluginfile=`normalize_path "${ltofile%lto1}liblto_plugin.so"` | ||
274 | if test -r "$pluginfile" | ||
275 | then | ||
276 | add_file $pluginfile ${pluginfile#*usr} | ||
277 | add_file $pluginfile /usr${pluginfile#*usr} | ||
278 | fi | ||
279 | |||
280 | # for testing the environment is usable at all | ||
281 | if test -x /bin/true; then | ||
282 | add_file /bin/true | ||
283 | elif test -x /usr/bin/true; then | ||
284 | add_file /usr/bin/true /bin/true | ||
285 | else | ||
286 | print_output "'true' not found" | ||
287 | exit 1 | ||
288 | fi | ||
289 | |||
290 | for extra in $extra_tools; do | ||
291 | if test -x "$extra"; then | ||
292 | add_file "$extra" | ||
293 | else | ||
294 | print_output "'$extra' not found" | ||
295 | exit 1 | ||
296 | fi | ||
297 | done | ||
298 | |||
299 | link_rel () | ||
300 | { | ||
301 | local target="$1" | ||
302 | local name="$2" | ||
303 | local base="$3" | ||
304 | |||
305 | local prefix=`dirname $name` | ||
306 | |||
307 | prefix=`echo $prefix | sed 's,[^/]\+,..,g' | sed 's,^/*,,g'` | ||
308 | |||
309 | ln -s $prefix/$target $base/$name | ||
310 | } | ||
311 | |||
312 | tempdir=`mktemp -d /tmp/iceccenvXXXXXX` | ||
313 | target_files= | ||
314 | for path in $target_paths; do | ||
315 | mkdir -p $tempdir/`dirname $path` | ||
316 | cp -pH $path $tempdir/$path | ||
317 | |||
318 | if test -f $tempdir/$path -a -x $tempdir/$path; then | ||
319 | strip -s $tempdir/$path 2>/dev/null | ||
320 | fi | ||
321 | |||
322 | fix_rpath $tempdir/$path `dirname $path` | ||
323 | target_files="$target_files $path" | ||
324 | done | ||
325 | |||
326 | for i in $target_aliases; do | ||
327 | target=`echo $i | cut -d= -f1` | ||
328 | link_name=`echo $i | cut -d= -f2` | ||
329 | |||
330 | mkdir -p $tempdir/`dirname $link_name` | ||
331 | # Relative links are used because the files are checked for being | ||
332 | # executable outside the chroot | ||
333 | link_rel $target $link_name $tempdir | ||
334 | |||
335 | link_name=`echo $link_name | cut -b2-` | ||
336 | target_files="$target_files $link_name" | ||
337 | done | ||
338 | |||
339 | #sort the files | ||
340 | target_files=`for i in $target_files; do echo $i; done | sort` | ||
341 | |||
342 | #test if an archive name was supplied | ||
343 | #if not use the md5 of all files as the archive name | ||
344 | if test -z "$archive_name"; then | ||
345 | md5sum=NONE | ||
346 | for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5; do | ||
347 | if test -x $file; then | ||
348 | md5sum=$file | ||
349 | break | ||
350 | fi | ||
351 | done | ||
352 | |||
353 | #calculate md5 and use it as the archive name | ||
354 | archive_name=`for i in $target_files; do test -f $tempdir/$i && $md5sum $tempdir/$i; done | sed -e 's/ .*$//' | $md5sum | sed -e 's/ .*$//'`.tar.gz || { | ||
355 | print_output "Couldn't compute MD5 sum." | ||
356 | exit 2 | ||
357 | } | ||
358 | mydir=`pwd` | ||
359 | else | ||
360 | mydir="`dirname "$archive_name"`" | ||
361 | |||
362 | #check if we have a full path or only a filename | ||
363 | if test "$mydir" = "." ; then | ||
364 | mydir=`pwd` | ||
365 | else | ||
366 | mydir="" | ||
367 | fi | ||
368 | fi | ||
369 | |||
370 | print_output "creating $archive_name" | ||
371 | |||
372 | cd $tempdir | ||
373 | # Add everything in the temp directory. Tar doesn't like to be given files with | ||
374 | # ".." in them, which frequently happens in $target_files, and will strip off | ||
375 | # the path prefix past the offending "..". This makes the archive generate | ||
376 | # incorrectly | ||
377 | tar -czf "$mydir/$archive_name" . || { | ||
378 | print_output "Couldn't create archive" | ||
379 | exit 3 | ||
380 | } | ||
381 | cd .. | ||
382 | rm -rf $tempdir | ||
diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb b/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb deleted file mode 100644 index dd1b257b10..0000000000 --- a/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | SUMMARY = "icecc environment setup script" | ||
2 | DESCRIPTION = "This is a version of the icecc-create-env script that has \ | ||
3 | been modified in order to make it work with OE." | ||
4 | SECTION = "base" | ||
5 | # source file has just a "GPL" word, but upstream is GPL-2.0-or-later. | ||
6 | # most probably just GPL would be a mistake | ||
7 | LICENSE = "GPL-2.0-or-later" | ||
8 | LIC_FILES_CHKSUM = "file://icecc-create-env;beginline=2;endline=5;md5=ae1df3d6a058bfda40b66094c5f6065f" | ||
9 | |||
10 | |||
11 | DEPENDS = "" | ||
12 | INHIBIT_DEFAULT_DEPS = "1" | ||
13 | ICECC_DISABLED = "1" | ||
14 | |||
15 | # This is needed, because otherwise there is dependency loop from quilt-native | ||
16 | # Dependency loop #1 found: | ||
17 | # Task 10907 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_install) (dependent Tasks ['quilt-native, do_compile']) | ||
18 | # Task 10908 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_populate_sysroot) (dependent Tasks ['quilt-native, do_install']) | ||
19 | # Task 10997 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_patch) (dependent Tasks ['icecc-create-env-native, do_unpack', 'quilt-native, do_populate_sysroot']) | ||
20 | # Task 11001 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_configure) (dependent Tasks ['icecc-create-env-native, do_patch']) | ||
21 | # Task 11002 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_compile) (dependent Tasks ['icecc-create-env-native, do_configure']) | ||
22 | # Task 10998 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_install) (dependent Tasks ['icecc-create-env-native, do_compile']) | ||
23 | # Task 10999 (meta/recipes-devtools/icecc-create-env/icecc-create-env-native_0.1.bb, do_populate_sysroot) (dependent Tasks ['icecc-create-env-native, do_install']) | ||
24 | # Task 10910 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_configure) (dependent Tasks ['quilt-native, do_patch', 'icecc-create-env-native, do_populate_sysroot']) | ||
25 | # Task 10911 (meta/recipes-devtools/quilt/quilt-native_0.60.bb, do_compile) (dependent Tasks ['quilt-native, do_configure']) | ||
26 | PATCHTOOL = "patch" | ||
27 | SRC_URI = "file://icecc-create-env" | ||
28 | |||
29 | S = "${WORKDIR}/sources" | ||
30 | UNPACKDIR = "${S}" | ||
31 | |||
32 | do_install() { | ||
33 | install -d ${D}/${bindir} | ||
34 | install -m 0755 ${S}/icecc-create-env ${D}/${bindir} | ||
35 | } | ||
36 | |||
37 | BBCLASSEXTEND = "native nativesdk" | ||
38 | |||
39 | RDEPENDS:${PN}:class-nativesdk = "patchelf" | ||
diff --git a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh deleted file mode 100644 index 0dccc41c8a..0000000000 --- a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh +++ /dev/null | |||
@@ -1,49 +0,0 @@ | |||
1 | #! /bin/sh | ||
2 | # Copyright (c) 2018 Joshua Watt, Garmin International,Inc. | ||
3 | # | ||
4 | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||
5 | # of this software and associated documentation files (the "Software"), to deal | ||
6 | # in the Software without restriction, including without limitation the rights | ||
7 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
8 | # copies of the Software, and to permit persons to whom the Software is | ||
9 | # furnished to do so, subject to the following conditions: | ||
10 | # | ||
11 | # The above copyright notice and this permission notice shall be included in | ||
12 | # all copies or substantial portions of the Software. | ||
13 | # | ||
14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
16 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
17 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
18 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
19 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
20 | # SOFTWARE. | ||
21 | # | ||
22 | |||
23 | if [ -z "$ICECC_PATH" ]; then | ||
24 | ICECC_PATH=$(which icecc 2> /dev/null || true) | ||
25 | fi | ||
26 | |||
27 | if [ -n "$ICECC_PATH" ]; then | ||
28 | # Default to disabling the caret workaround. If set to "1", icecc will | ||
29 | # locally recompile any files that have warnings, which can adversely | ||
30 | # affect performance. | ||
31 | # | ||
32 | # See: https://github.com/icecc/icecream/issues/190 | ||
33 | if [ -z "$ICECC_CARET_WORKAROUND" ]; then | ||
34 | ICECC_CARET_WORKAROUND="0" | ||
35 | fi | ||
36 | if [ "$ICECC_CARET_WORKAROUND" != "1" ]; then | ||
37 | CFLAGS="$CFLAGS -fno-diagnostics-show-caret" | ||
38 | CXXFLAGS="$CXXFLAGS -fno-diagnostics-show-caret" | ||
39 | fi | ||
40 | export ICECC_PATH ICECC_CARET_WORKAROUND | ||
41 | export ICECC_VERSION="$(echo "$OECORE_NATIVE_SYSROOT/usr/share/${TARGET_PREFIX}icecream/@TOOLCHAIN_ENV@" | sed "s,@TARGET_PREFIX@,$TARGET_PREFIX,g")" | ||
42 | export ICECC="$(which ${CROSS_COMPILE}gcc)" | ||
43 | export ICECXX="$(which ${CROSS_COMPILE}g++)" | ||
44 | export ICEAS="$(which ${CROSS_COMPILE}as)" | ||
45 | export PATH="$OECORE_NATIVE_SYSROOT/usr/share/${TARGET_PREFIX}icecream/bin:$PATH" | ||
46 | else | ||
47 | echo "Icecc not found. Disabling distributed compiling" | ||
48 | fi | ||
49 | |||
diff --git a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh deleted file mode 100644 index fbd9f038b8..0000000000 --- a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | #! /bin/sh | ||
2 | # Copyright (c) 2018 Joshua Watt, Garmin International,Inc. | ||
3 | # | ||
4 | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||
5 | # of this software and associated documentation files (the "Software"), to deal | ||
6 | # in the Software without restriction, including without limitation the rights | ||
7 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
8 | # copies of the Software, and to permit persons to whom the Software is | ||
9 | # furnished to do so, subject to the following conditions: | ||
10 | # | ||
11 | # The above copyright notice and this permission notice shall be included in | ||
12 | # all copies or substantial portions of the Software. | ||
13 | # | ||
14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
16 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
17 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
18 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
19 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
20 | # SOFTWARE. | ||
21 | # | ||
22 | |||
23 | # ICECC_PATH will have been found icecc-env.sh | ||
24 | if [ -z "$ICECC_PATH" ]; then | ||
25 | exit 0 | ||
26 | fi | ||
27 | |||
28 | echo "Setting up IceCream distributed compiling..." | ||
29 | |||
30 | # Create the environment | ||
31 | mkdir -p "`dirname $ICECC_VERSION`" | ||
32 | icecc-create-env $ICECC $ICECXX $ICEAS $ICECC_VERSION || exit $? | ||
33 | |||
34 | # Create symbolic links | ||
35 | d="$OECORE_NATIVE_SYSROOT/usr/share/${TARGET_PREFIX}icecream/bin" | ||
36 | mkdir -p "$d" | ||
37 | ln -sf "$ICECC_PATH" "$d/${CROSS_COMPILE}gcc" | ||
38 | ln -sf "$ICECC_PATH" "$d/${CROSS_COMPILE}g++" | ||
diff --git a/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb b/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb deleted file mode 100644 index a7f5fc4cb4..0000000000 --- a/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | # Copyright (c) 2018 Joshua Watt, Garmin International,Inc. | ||
2 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
3 | SUMMARY = "Generates Icecream toolchain for SDK" | ||
4 | DESCRIPTION = "${SUMMARY}" | ||
5 | LICENSE = "MIT" | ||
6 | LIC_FILES_CHKSUM = "file://${UNPACKDIR}/icecc-env.sh;beginline=2;endline=20;md5=dd6b68c1efed8a9fb04e409b3b287d47" | ||
7 | |||
8 | INHIBIT_DEFAULT_DEPS = "1" | ||
9 | |||
10 | SRC_URI = "\ | ||
11 | file://icecc-env.sh \ | ||
12 | file://icecc-setup.sh \ | ||
13 | " | ||
14 | |||
15 | inherit nativesdk | ||
16 | |||
17 | ENV_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-@TARGET_PREFIX@${DISTRO_VERSION}.tar.gz" | ||
18 | |||
19 | do_compile() { | ||
20 | } | ||
21 | |||
22 | do_install() { | ||
23 | install -d ${D}${SDKPATHNATIVE}${datadir}/icecream/bin | ||
24 | |||
25 | install -d ${D}${SDKPATHNATIVE}/environment-setup.d/ | ||
26 | install -m 0644 ${UNPACKDIR}/icecc-env.sh ${D}${SDKPATHNATIVE}/environment-setup.d/ | ||
27 | sed -i ${D}${SDKPATHNATIVE}/environment-setup.d/icecc-env.sh \ | ||
28 | -e 's,@TOOLCHAIN_ENV@,${ENV_NAME},g' | ||
29 | |||
30 | install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d/ | ||
31 | install -m 0755 ${UNPACKDIR}/icecc-setup.sh ${D}${SDKPATHNATIVE}/post-relocate-setup.d/ | ||
32 | sed -i ${D}${SDKPATHNATIVE}/post-relocate-setup.d/icecc-setup.sh \ | ||
33 | -e 's,@TOOLCHAIN_ENV@,${ENV_NAME},g' | ||
34 | } | ||
35 | |||
36 | PACKAGES = "${PN}" | ||
37 | FILES:${PN} = "${SDKPATHNATIVE}" | ||
38 | RDEPENDS:${PN} += "nativesdk-icecc-create-env" | ||
39 | |||
diff --git a/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb b/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb index d3bef83306..0c73032923 100644 --- a/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb +++ b/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb | |||
@@ -6,8 +6,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=25a3927bff3ee4f5b21bcb0ed3fcd6bb" | |||
6 | 6 | ||
7 | SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch=main" | 7 | SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch=main" |
8 | 8 | ||
9 | PV = "2.15.0" | 9 | PV = "2.15.1" |
10 | SRCREV = "bfde7f2d04fbb22e26c9eb843e4ccc478762dd8d" | 10 | SRCREV = "e7f179eeeb6eee1403f090fc43a3c80bb08b5bfd" |
11 | 11 | ||
12 | S = "${WORKDIR}/git" | 12 | S = "${WORKDIR}/git" |
13 | 13 | ||
diff --git a/meta/recipes-devtools/m4/m4-1.4.20.inc b/meta/recipes-devtools/m4/m4-1.4.20.inc index 2ea3a9bace..a31335f173 100644 --- a/meta/recipes-devtools/m4/m4-1.4.20.inc +++ b/meta/recipes-devtools/m4/m4-1.4.20.inc | |||
@@ -7,6 +7,7 @@ GNU M4 also has built-in functions for including files, running shell commands, | |||
7 | inherit autotools texinfo ptest gettext | 7 | inherit autotools texinfo ptest gettext |
8 | 8 | ||
9 | SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \ | 9 | SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \ |
10 | file://0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch \ | ||
10 | " | 11 | " |
11 | SRC_URI:append:class-target = " file://run-ptest \ | 12 | SRC_URI:append:class-target = " file://run-ptest \ |
12 | file://serial-tests-config.patch \ | 13 | file://serial-tests-config.patch \ |
@@ -48,9 +49,9 @@ do_install_ptest:append:libc-glibc() { | |||
48 | -e "s;LOCALE_FR_UTF8='none';LOCALE_FR_UTF8='fr_FR.utf8';g" ${D}${PTEST_PATH}/tests/Makefile | 49 | -e "s;LOCALE_FR_UTF8='none';LOCALE_FR_UTF8='fr_FR.utf8';g" ${D}${PTEST_PATH}/tests/Makefile |
49 | } | 50 | } |
50 | 51 | ||
51 | RDEPENDS:${PN}-ptest += "make coreutils diffutils bash" | 52 | RDEPENDS:${PN}-ptest += "make coreutils diffutils bash locale-base-fr-fr" |
53 | |||
52 | RDEPENDS:${PN}-ptest:append:libc-glibc = "\ | 54 | RDEPENDS:${PN}-ptest:append:libc-glibc = "\ |
53 | locale-base-fr-fr \ | ||
54 | locale-base-fr-fr.iso-8859-1 \ | 55 | locale-base-fr-fr.iso-8859-1 \ |
55 | glibc-gconv-iso8859-1 \ | 56 | glibc-gconv-iso8859-1 \ |
56 | " | 57 | " |
diff --git a/meta/recipes-devtools/m4/m4/0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch b/meta/recipes-devtools/m4/m4/0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch new file mode 100644 index 0000000000..6fad05041f --- /dev/null +++ b/meta/recipes-devtools/m4/m4/0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch | |||
@@ -0,0 +1,133 @@ | |||
1 | From c4dc0ab4424fca31635b7837b1c180f7d3df8ede Mon Sep 17 00:00:00 2001 | ||
2 | From: Bruno Haible <bruno@clisp.org> | ||
3 | Date: Wed, 28 May 2025 15:14:07 +0200 | ||
4 | Subject: [PATCH] gettext-h: Avoid gcc -Wformat-security warnings with | ||
5 | --disable-nls. | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | Reported by Holger Hoffstätte <holger@applied-asynchrony.com> in | ||
11 | <https://lists.gnu.org/archive/html/bug-gnulib/2025-05/msg00225.html>. | ||
12 | |||
13 | * lib/gettext.h (gettext, dgettext, dcgettext): With gcc in C mode, | ||
14 | define these as inline functions. | ||
15 | * lib/sigpipe-die.c (sigpipe_die): Use translated string as a format | ||
16 | string, relying on the format string checking done by 'msgfmt -c'. | ||
17 | * lib/xmemcoll.c (collate_error): Revert commit from 2025-01-17. | ||
18 | * lib/xprintf.c (xvprintf, xvfprintf): Likewise. | ||
19 | * lib/openat-die.c (openat_save_fail, openat_restore_fail): Revert | ||
20 | commit from 2024-12-10. | ||
21 | |||
22 | Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/gnulib.git/commit/?id=6e5015dd557b20ae4a0829c4bf78480ce2f4cb04] | ||
23 | Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> | ||
24 | --- | ||
25 | lib/gettext.h | 49 ++++++++++++++++++++++++++++++++++++------------ | ||
26 | lib/openat-die.c | 4 ++-- | ||
27 | lib/xprintf.c | 4 ++-- | ||
28 | 3 files changed, 41 insertions(+), 16 deletions(-) | ||
29 | |||
30 | diff --git a/lib/gettext.h b/lib/gettext.h | ||
31 | index ea0c27e..bb3d975 100644 | ||
32 | --- a/lib/gettext.h | ||
33 | +++ b/lib/gettext.h | ||
34 | @@ -59,18 +59,43 @@ | ||
35 | # endif | ||
36 | # endif | ||
37 | |||
38 | -/* Disabled NLS. | ||
39 | - The casts to 'const char *' serve the purpose of producing warnings | ||
40 | - for invalid uses of the value returned from these functions. | ||
41 | - On pre-ANSI systems without 'const', the config.h file is supposed to | ||
42 | - contain "#define const". */ | ||
43 | -# undef gettext | ||
44 | -# define gettext(Msgid) ((const char *) (Msgid)) | ||
45 | -# undef dgettext | ||
46 | -# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) | ||
47 | -# undef dcgettext | ||
48 | -# define dcgettext(Domainname, Msgid, Category) \ | ||
49 | - ((void) (Category), dgettext (Domainname, Msgid)) | ||
50 | +/* Disabled NLS. */ | ||
51 | +# if defined __GNUC__ && !defined __clang__ && !defined __cplusplus | ||
52 | +/* Use inline functions, to avoid warnings | ||
53 | + warning: format not a string literal and no format arguments | ||
54 | + that don't occur with enabled NLS. */ | ||
55 | +__attribute__ ((__always_inline__, __gnu_inline__)) extern inline | ||
56 | +const char * | ||
57 | +gettext (const char *msgid) | ||
58 | +{ | ||
59 | + return msgid; | ||
60 | +} | ||
61 | +__attribute__ ((__always_inline__, __gnu_inline__)) extern inline | ||
62 | +const char * | ||
63 | +dgettext (const char *domain, const char *msgid) | ||
64 | +{ | ||
65 | + (void) domain; | ||
66 | + return msgid; | ||
67 | +} | ||
68 | +__attribute__ ((__always_inline__, __gnu_inline__)) extern inline | ||
69 | +const char * | ||
70 | +dcgettext (const char *domain, const char *msgid, int category) | ||
71 | +{ | ||
72 | + (void) domain; | ||
73 | + (void) category; | ||
74 | + return msgid; | ||
75 | +} | ||
76 | +# else | ||
77 | +/* The casts to 'const char *' serve the purpose of producing warnings | ||
78 | + for invalid uses of the value returned from these functions. */ | ||
79 | +# undef gettext | ||
80 | +# define gettext(Msgid) ((const char *) (Msgid)) | ||
81 | +# undef dgettext | ||
82 | +# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) | ||
83 | +# undef dcgettext | ||
84 | +# define dcgettext(Domainname, Msgid, Category) \ | ||
85 | + ((void) (Category), dgettext (Domainname, Msgid)) | ||
86 | +# endif | ||
87 | # undef ngettext | ||
88 | # define ngettext(Msgid1, Msgid2, N) \ | ||
89 | ((N) == 1 \ | ||
90 | diff --git a/lib/openat-die.c b/lib/openat-die.c | ||
91 | index 3fbb5d8..79a5b23 100644 | ||
92 | --- a/lib/openat-die.c | ||
93 | +++ b/lib/openat-die.c | ||
94 | @@ -34,7 +34,7 @@ _Noreturn void | ||
95 | openat_save_fail (int errnum) | ||
96 | { | ||
97 | #ifndef GNULIB_LIBPOSIX | ||
98 | - error (exit_failure, errnum, "%s", | ||
99 | + error (exit_failure, errnum, | ||
100 | _("unable to record current working directory")); | ||
101 | #endif | ||
102 | /* _Noreturn cannot be applied to error, since it returns | ||
103 | @@ -53,7 +53,7 @@ _Noreturn void | ||
104 | openat_restore_fail (int errnum) | ||
105 | { | ||
106 | #ifndef GNULIB_LIBPOSIX | ||
107 | - error (exit_failure, errnum, "%s", | ||
108 | + error (exit_failure, errnum, | ||
109 | _("failed to return to initial working directory")); | ||
110 | #endif | ||
111 | |||
112 | diff --git a/lib/xprintf.c b/lib/xprintf.c | ||
113 | index 4d9a3e5..790af53 100644 | ||
114 | --- a/lib/xprintf.c | ||
115 | +++ b/lib/xprintf.c | ||
116 | @@ -45,7 +45,7 @@ xvprintf (char const *restrict format, va_list args) | ||
117 | { | ||
118 | off64_t retval = vzprintf (format, args); | ||
119 | if (retval < 0 && ! ferror (stdout)) | ||
120 | - error (exit_failure, errno, "%s", _("cannot perform formatted output")); | ||
121 | + error (exit_failure, errno, _("cannot perform formatted output")); | ||
122 | |||
123 | return retval; | ||
124 | } | ||
125 | @@ -67,7 +67,7 @@ xvfprintf (FILE *restrict stream, char const *restrict format, va_list args) | ||
126 | { | ||
127 | off64_t retval = vfzprintf (stream, format, args); | ||
128 | if (retval < 0 && ! ferror (stream)) | ||
129 | - error (exit_failure, errno, "%s", _("cannot perform formatted output")); | ||
130 | + error (exit_failure, errno, _("cannot perform formatted output")); | ||
131 | |||
132 | return retval; | ||
133 | } | ||
diff --git a/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch b/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch index b5d0546967..98ca08c2ca 100644 --- a/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch +++ b/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From a503c007d3db87acf711d110c01e11c2d087f99c Mon Sep 17 00:00:00 2001 | 1 | From c01e5e29953e0302988f2d60adc50ebfa0e5d670 Mon Sep 17 00:00:00 2001 |
2 | From: Ross Burton <ross.burton@intel.com> | 2 | From: Ross Burton <ross.burton@intel.com> |
3 | Date: Tue, 3 Jul 2018 13:59:09 +0100 | 3 | Date: Tue, 3 Jul 2018 13:59:09 +0100 |
4 | Subject: [PATCH] Make CPU family warnings fatal | 4 | Subject: [PATCH] Make CPU family warnings fatal |
@@ -26,10 +26,10 @@ index 43fad0c..27be871 100644 | |||
26 | endian = literal['endian'] | 26 | endian = literal['endian'] |
27 | if endian not in ('little', 'big'): | 27 | if endian not in ('little', 'big'): |
28 | diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py | 28 | diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py |
29 | index f322cda..53a0ac0 100644 | 29 | index 2a9cf16..6b2bd6b 100644 |
30 | --- a/mesonbuild/environment.py | 30 | --- a/mesonbuild/environment.py |
31 | +++ b/mesonbuild/environment.py | 31 | +++ b/mesonbuild/environment.py |
32 | @@ -429,10 +429,8 @@ def detect_cpu_family(compilers: CompilersDict) -> str: | 32 | @@ -436,10 +436,8 @@ def detect_cpu_family(compilers: CompilersDict) -> str: |
33 | if compilers and not any_compiler_has_define(compilers, '__mips64'): | 33 | if compilers and not any_compiler_has_define(compilers, '__mips64'): |
34 | trial = 'mips' | 34 | trial = 'mips' |
35 | 35 | ||
diff --git a/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch b/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch index 85a93c8e7a..f654447013 100644 --- a/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch +++ b/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 859711f99ea9b183a1dffb9b97de09ad0fe9803b Mon Sep 17 00:00:00 2001 | 1 | From 6c3734f533ee7ad493188c8fc17bb1c65b65f0bd Mon Sep 17 00:00:00 2001 |
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | 2 | From: Alexander Kanavin <alex.kanavin@gmail.com> |
3 | Date: Mon, 19 Nov 2018 14:24:26 +0100 | 3 | Date: Mon, 19 Nov 2018 14:24:26 +0100 |
4 | Subject: [PATCH] python module: do not manipulate the environment when calling | 4 | Subject: [PATCH] python module: do not manipulate the environment when calling |
@@ -12,10 +12,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | |||
12 | 1 file changed, 1 insertion(+), 5 deletions(-) | 12 | 1 file changed, 1 insertion(+), 5 deletions(-) |
13 | 13 | ||
14 | diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py | 14 | diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py |
15 | index 3dab31c..b9307fc 100644 | 15 | index ab040b5..a34b271 100644 |
16 | --- a/mesonbuild/dependencies/python.py | 16 | --- a/mesonbuild/dependencies/python.py |
17 | +++ b/mesonbuild/dependencies/python.py | 17 | +++ b/mesonbuild/dependencies/python.py |
18 | @@ -410,9 +410,6 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice', | 18 | @@ -412,9 +412,6 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice', |
19 | empty.name = 'python' | 19 | empty.name = 'python' |
20 | return empty | 20 | return empty |
21 | 21 | ||
@@ -25,7 +25,7 @@ index 3dab31c..b9307fc 100644 | |||
25 | try: | 25 | try: |
26 | return PythonPkgConfigDependency(name, env, kwargs, installation, True) | 26 | return PythonPkgConfigDependency(name, env, kwargs, installation, True) |
27 | finally: | 27 | finally: |
28 | @@ -421,8 +418,7 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice', | 28 | @@ -423,8 +420,7 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice', |
29 | os.environ[name] = value | 29 | os.environ[name] = value |
30 | elif name in os.environ: | 30 | elif name in os.environ: |
31 | del os.environ[name] | 31 | del os.environ[name] |
diff --git a/meta/recipes-devtools/meson/meson_1.8.0.bb b/meta/recipes-devtools/meson/meson_1.8.1.bb index 78e0a0ed80..af4bc9fecd 100644 --- a/meta/recipes-devtools/meson/meson_1.8.0.bb +++ b/meta/recipes-devtools/meson/meson_1.8.1.bb | |||
@@ -15,7 +15,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/meson-${PV}.tar.gz \ | |||
15 | file://0001-Make-CPU-family-warnings-fatal.patch \ | 15 | file://0001-Make-CPU-family-warnings-fatal.patch \ |
16 | file://0002-Support-building-allarch-recipes-again.patch \ | 16 | file://0002-Support-building-allarch-recipes-again.patch \ |
17 | " | 17 | " |
18 | SRC_URI[sha256sum] = "0a9b23311271519bd03dca12d7d8b0eab582c3a2c5da433d465b6e519dc88e2f" | 18 | SRC_URI[sha256sum] = "b4e3b80e8fa633555abf447a95a700aba1585419467b2710d5e5bf88df0a7011" |
19 | UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)$" | 19 | UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)$" |
20 | 20 | ||
21 | inherit python_setuptools_build_meta github-releases | 21 | inherit python_setuptools_build_meta github-releases |
diff --git a/meta/recipes-devtools/mtd/files/0001-Improve-check-for-GCC-compiler-version.patch b/meta/recipes-devtools/mtd/files/0001-Improve-check-for-GCC-compiler-version.patch index 3cd58e053d..2329dfece3 100644 --- a/meta/recipes-devtools/mtd/files/0001-Improve-check-for-GCC-compiler-version.patch +++ b/meta/recipes-devtools/mtd/files/0001-Improve-check-for-GCC-compiler-version.patch | |||
@@ -8,7 +8,7 @@ When using unreleased compiler has version like | |||
8 | becomes true, therefore check for full version string | 8 | becomes true, therefore check for full version string |
9 | which is more rubust. | 9 | which is more rubust. |
10 | 10 | ||
11 | Upstream-Status: Submitted [https://lists.infradead.org/pipermail/linux-mtd/2025-March/108860.html] | 11 | Upstream-Status: Backport [https://github.com/sigma-star/mtd-utils/commit/ac0ab65ebcd7b11739986b81343457469fbb43b0] |
12 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 12 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
13 | --- | 13 | --- |
14 | ubifs-utils/common/atomic.h | 6 +++++- | 14 | ubifs-utils/common/atomic.h | 6 +++++- |
diff --git a/meta/recipes-devtools/mtd/files/0001-ubifs-utils-ubifs.h-Include-fcntl.h.patch b/meta/recipes-devtools/mtd/files/0001-ubifs-utils-ubifs.h-Include-fcntl.h.patch index a9ececc14c..b603ac8fd6 100644 --- a/meta/recipes-devtools/mtd/files/0001-ubifs-utils-ubifs.h-Include-fcntl.h.patch +++ b/meta/recipes-devtools/mtd/files/0001-ubifs-utils-ubifs.h-Include-fcntl.h.patch | |||
@@ -25,7 +25,7 @@ when building with musl: | |||
25 | | | off_t | 25 | | | off_t |
26 | | make: *** [Makefile:4878: ubifs-utils/common/mkfs_ubifs-compr.o] Error 1 | 26 | | make: *** [Makefile:4878: ubifs-utils/common/mkfs_ubifs-compr.o] Error 1 |
27 | 27 | ||
28 | Upstream-Status: Submitted [https://lore.kernel.org/linux-mtd/20250219130244.2119582-1-festevam@gmail.com/T/#t] | 28 | Upstream-Status: Backport [https://github.com/sigma-star/mtd-utils/commit/12bc9ad824bd8f18a5ec9c7154ad2374cf8c7ae3] |
29 | Signed-off-by: Fabio Estevam <festevam@gmail.com> | 29 | Signed-off-by: Fabio Estevam <festevam@gmail.com> |
30 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> | 30 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> |
31 | Reviewed-by: Khem Raj <raj.khem@gmail.com> | 31 | Reviewed-by: Khem Raj <raj.khem@gmail.com> |
diff --git a/meta/recipes-devtools/mtd/files/0002-ubifs-utils-journal-Include-sys-stat.h.patch b/meta/recipes-devtools/mtd/files/0002-ubifs-utils-journal-Include-sys-stat.h.patch index ea376437df..d92a3fb4b6 100644 --- a/meta/recipes-devtools/mtd/files/0002-ubifs-utils-journal-Include-sys-stat.h.patch +++ b/meta/recipes-devtools/mtd/files/0002-ubifs-utils-journal-Include-sys-stat.h.patch | |||
@@ -14,7 +14,7 @@ when building with musl: | |||
14 | | ../git/ubifs-utils/libubifs/journal.c:415:14: error: 'S_IFREG' undeclared (first use in this function) | 14 | | ../git/ubifs-utils/libubifs/journal.c:415:14: error: 'S_IFREG' undeclared (first use in this function) |
15 | | 415 | case S_IFREG: | 15 | | 415 | case S_IFREG: |
16 | 16 | ||
17 | Upstream-Status: Submitted [https://lore.kernel.org/linux-mtd/20250219130244.2119582-2-festevam@gmail.com/T/#t] | 17 | Upstream-Status: Backport [https://github.com/sigma-star/mtd-utils/commit/173f9714c8da1d685bfa951d43b9310d16bbab3c] |
18 | Signed-off-by: Fabio Estevam <festevam@gmail.com> | 18 | Signed-off-by: Fabio Estevam <festevam@gmail.com> |
19 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> | 19 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> |
20 | --- | 20 | --- |
diff --git a/meta/recipes-devtools/mtd/files/0003-ubifs-utils-link-libmissing.a-in-case-execinfo.h-isn.patch b/meta/recipes-devtools/mtd/files/0003-ubifs-utils-link-libmissing.a-in-case-execinfo.h-isn.patch index b4c190d554..efaedad70b 100644 --- a/meta/recipes-devtools/mtd/files/0003-ubifs-utils-link-libmissing.a-in-case-execinfo.h-isn.patch +++ b/meta/recipes-devtools/mtd/files/0003-ubifs-utils-link-libmissing.a-in-case-execinfo.h-isn.patch | |||
@@ -13,7 +13,7 @@ backtrace(). | |||
13 | Guard the execinfo.h include and if it isn't available instead include | 13 | Guard the execinfo.h include and if it isn't available instead include |
14 | libmissing.h, and link to libmissing.a to provide backtrace() if needed. | 14 | libmissing.h, and link to libmissing.a to provide backtrace() if needed. |
15 | 15 | ||
16 | Upstream-Status: Submitted [https://lore.kernel.org/linux-mtd/20250226182400.1723418-1-ross.burton@arm.com/] | 16 | Upstream-Status: Backport [https://github.com/sigma-star/mtd-utils/commit/8a83b306db64d6f60186d4396b0b770163b85b6e] |
17 | Signed-off-by: Ross Burton <ross.burton@arm.com> | 17 | Signed-off-by: Ross Burton <ross.burton@arm.com> |
18 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> | 18 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> |
19 | Signed-off-by: Fabio Estevam <festevam@gmail.com> | 19 | Signed-off-by: Fabio Estevam <festevam@gmail.com> |
diff --git a/meta/recipes-devtools/mtd/files/0004-ubifs-utils-extract_files-Include-linux-limits.h.patch b/meta/recipes-devtools/mtd/files/0004-ubifs-utils-extract_files-Include-linux-limits.h.patch index 87806af27d..3444f330dc 100644 --- a/meta/recipes-devtools/mtd/files/0004-ubifs-utils-extract_files-Include-linux-limits.h.patch +++ b/meta/recipes-devtools/mtd/files/0004-ubifs-utils-extract_files-Include-linux-limits.h.patch | |||
@@ -13,7 +13,7 @@ with musl: | |||
13 | | ../git/ubifs-utils/fsck.ubifs/extract_files.c:144:47: note: each undeclared identifier is reported only once for each function it appears in | 13 | | ../git/ubifs-utils/fsck.ubifs/extract_files.c:144:47: note: each undeclared identifier is reported only once for each function it appears in |
14 | | make: *** [Makefile:4374: ubifs-utils/fsck.ubifs/fsck_ubifs-extract_files.o] Error 1 | 14 | | make: *** [Makefile:4374: ubifs-utils/fsck.ubifs/fsck_ubifs-extract_files.o] Error 1 |
15 | 15 | ||
16 | Upstream-Status: Submitted [https://lore.kernel.org/linux-mtd/20250219130244.2119582-4-festevam@gmail.com/T/#t] | 16 | Upstream-Status: Backport [https://github.com/sigma-star/mtd-utils/commit/77981a2888c711268b0e7f32af6af159c2288e23] |
17 | Signed-off-by: Fabio Estevam <festevam@gmail.com> | 17 | Signed-off-by: Fabio Estevam <festevam@gmail.com> |
18 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> | 18 | Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> |
19 | --- | 19 | --- |
diff --git a/meta/recipes-devtools/python/python3-beartype_0.20.2.bb b/meta/recipes-devtools/python/python3-beartype_0.21.0.bb index 9941b28fd8..43427c1472 100644 --- a/meta/recipes-devtools/python/python3-beartype_0.20.2.bb +++ b/meta/recipes-devtools/python/python3-beartype_0.21.0.bb | |||
@@ -4,7 +4,7 @@ HOMEPAGE = "https://beartype.readthedocs.io" | |||
4 | LICENSE = "MIT" | 4 | LICENSE = "MIT" |
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=3a5bc05a109d235912da97a053cd7a58" | 5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=3a5bc05a109d235912da97a053cd7a58" |
6 | 6 | ||
7 | SRC_URI[sha256sum] = "38c60c065ad99364a8c767e8a0e71ba8263d467b91414ed5dcffb7758a2e8079" | 7 | SRC_URI[sha256sum] = "f9a5078f5ce87261c2d22851d19b050b64f6a805439e8793aecf01ce660d3244" |
8 | 8 | ||
9 | inherit pypi python_hatchling | 9 | inherit pypi python_hatchling |
10 | 10 | ||
diff --git a/meta/recipes-devtools/python/python3-cython_3.1.0.bb b/meta/recipes-devtools/python/python3-cython_3.1.1.bb index f93135b94b..1bc6eda4ac 100644 --- a/meta/recipes-devtools/python/python3-cython_3.1.0.bb +++ b/meta/recipes-devtools/python/python3-cython_3.1.1.bb | |||
@@ -7,7 +7,7 @@ SECTION = "devel/python" | |||
7 | LICENSE = "Apache-2.0" | 7 | LICENSE = "Apache-2.0" |
8 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=61c3ee8961575861fa86c7e62bc9f69c" | 8 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=61c3ee8961575861fa86c7e62bc9f69c" |
9 | 9 | ||
10 | SRC_URI[sha256sum] = "1097dd60d43ad0fff614a57524bfd531b35c13a907d13bee2cc2ec152e6bf4a1" | 10 | SRC_URI[sha256sum] = "505ccd413669d5132a53834d792c707974248088c4f60c497deb1b416e366397" |
11 | 11 | ||
12 | inherit pypi setuptools3 cython | 12 | inherit pypi setuptools3 cython |
13 | 13 | ||
diff --git a/meta/recipes-devtools/python/python3-hypothesis_6.131.14.bb b/meta/recipes-devtools/python/python3-hypothesis_6.132.0.bb index 269ed936b6..52688b8765 100644 --- a/meta/recipes-devtools/python/python3-hypothesis_6.131.14.bb +++ b/meta/recipes-devtools/python/python3-hypothesis_6.132.0.bb | |||
@@ -13,7 +13,7 @@ SRC_URI += " \ | |||
13 | file://test_rle.py \ | 13 | file://test_rle.py \ |
14 | " | 14 | " |
15 | 15 | ||
16 | SRC_URI[sha256sum] = "347edc46cfe9bfcfb0598c4c927ed8fd573edfc8bacd2162023c4cf16accb702" | 16 | SRC_URI[sha256sum] = "55868060add41baa6176ed9c3456655678d140c74e3514bdf03381dae6391403" |
17 | 17 | ||
18 | RDEPENDS:${PN} += " \ | 18 | RDEPENDS:${PN} += " \ |
19 | python3-attrs \ | 19 | python3-attrs \ |
diff --git a/meta/recipes-devtools/python/python3-jsonschema/d71f96a6523875c9694fcdf468c9f458323d07f2.patch b/meta/recipes-devtools/python/python3-jsonschema/d71f96a6523875c9694fcdf468c9f458323d07f2.patch deleted file mode 100644 index 65cc2b4cf0..0000000000 --- a/meta/recipes-devtools/python/python3-jsonschema/d71f96a6523875c9694fcdf468c9f458323d07f2.patch +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | From d71f96a6523875c9694fcdf468c9f458323d07f2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Julian Berman <Julian@GrayVines.com> | ||
3 | Date: Thu, 17 Oct 2024 09:36:35 -0400 | ||
4 | Subject: [PATCH] Fix the annotation for validator_for's default. | ||
5 | |||
6 | This still doesn't seem to satisfy mypy, so tell it to be quiet. | ||
7 | |||
8 | Upstream-Status: Backport [https://github.com/python-jsonschema/jsonschema/commit/d71f96a6523875c9694fcdf468c9f458323d07f2] | ||
9 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
10 | --- | ||
11 | jsonschema/validators.py | 6 +++--- | ||
12 | 1 file changed, 3 insertions(+), 3 deletions(-) | ||
13 | |||
14 | diff --git a/jsonschema/validators.py b/jsonschema/validators.py | ||
15 | index 85c39160..b8ca3bd4 100644 | ||
16 | --- a/jsonschema/validators.py | ||
17 | +++ b/jsonschema/validators.py | ||
18 | @@ -857,7 +857,7 @@ def extend( | ||
19 | version="draft2020-12", | ||
20 | ) | ||
21 | |||
22 | -_LATEST_VERSION = Draft202012Validator | ||
23 | +_LATEST_VERSION: type[Validator] = Draft202012Validator | ||
24 | |||
25 | |||
26 | class _RefResolver: | ||
27 | @@ -1334,7 +1334,7 @@ def validate(instance, schema, cls=None, *args, **kwargs): # noqa: D417 | ||
28 | |||
29 | def validator_for( | ||
30 | schema, | ||
31 | - default: Validator | _utils.Unset = _UNSET, | ||
32 | + default: type[Validator] | _utils.Unset = _UNSET, | ||
33 | ) -> type[Validator]: | ||
34 | """ | ||
35 | Retrieve the validator class appropriate for validating the given schema. | ||
36 | @@ -1396,7 +1396,7 @@ class is returned: | ||
37 | DefaultValidator = _LATEST_VERSION if default is _UNSET else default | ||
38 | |||
39 | if schema is True or schema is False or "$schema" not in schema: | ||
40 | - return DefaultValidator | ||
41 | + return DefaultValidator # type: ignore[return-value] | ||
42 | if schema["$schema"] not in _META_SCHEMAS and default is _UNSET: | ||
43 | warn( | ||
44 | ( | ||
diff --git a/meta/recipes-devtools/python/python3-jsonschema_4.23.0.bb b/meta/recipes-devtools/python/python3-jsonschema_4.24.0.bb index 82b7bb23ed..7a5f4a09a6 100644 --- a/meta/recipes-devtools/python/python3-jsonschema_4.23.0.bb +++ b/meta/recipes-devtools/python/python3-jsonschema_4.24.0.bb | |||
@@ -4,9 +4,7 @@ LICENSE = "MIT" | |||
4 | LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8 \ | 4 | LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8 \ |
5 | file://json/LICENSE;md5=9d4de43111d33570c8fe49b4cb0e01af" | 5 | file://json/LICENSE;md5=9d4de43111d33570c8fe49b4cb0e01af" |
6 | 6 | ||
7 | SRC_URI += "file://d71f96a6523875c9694fcdf468c9f458323d07f2.patch" | 7 | SRC_URI[sha256sum] = "0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196" |
8 | |||
9 | SRC_URI[sha256sum] = "d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4" | ||
10 | 8 | ||
11 | inherit pypi python_hatchling | 9 | inherit pypi python_hatchling |
12 | 10 | ||
diff --git a/meta/recipes-devtools/python/python3-maturin-crates.inc b/meta/recipes-devtools/python/python3-maturin-crates.inc index 2f196f5657..5c939a09a8 100644 --- a/meta/recipes-devtools/python/python3-maturin-crates.inc +++ b/meta/recipes-devtools/python/python3-maturin-crates.inc | |||
@@ -34,7 +34,7 @@ SRC_URI += " \ | |||
34 | crate://crates.io/cargo-options/0.7.4 \ | 34 | crate://crates.io/cargo-options/0.7.4 \ |
35 | crate://crates.io/cargo-platform/0.1.8 \ | 35 | crate://crates.io/cargo-platform/0.1.8 \ |
36 | crate://crates.io/cargo-xwin/0.18.4 \ | 36 | crate://crates.io/cargo-xwin/0.18.4 \ |
37 | crate://crates.io/cargo-zigbuild/0.19.7 \ | 37 | crate://crates.io/cargo-zigbuild/0.20.0 \ |
38 | crate://crates.io/cargo_metadata/0.19.0 \ | 38 | crate://crates.io/cargo_metadata/0.19.0 \ |
39 | crate://crates.io/cbindgen/0.28.0 \ | 39 | crate://crates.io/cbindgen/0.28.0 \ |
40 | crate://crates.io/cc/1.2.16 \ | 40 | crate://crates.io/cc/1.2.16 \ |
@@ -60,7 +60,7 @@ SRC_URI += " \ | |||
60 | crate://crates.io/crc/3.2.1 \ | 60 | crate://crates.io/crc/3.2.1 \ |
61 | crate://crates.io/crc-catalog/2.4.0 \ | 61 | crate://crates.io/crc-catalog/2.4.0 \ |
62 | crate://crates.io/crc32fast/1.4.2 \ | 62 | crate://crates.io/crc32fast/1.4.2 \ |
63 | crate://crates.io/crossbeam-channel/0.5.13 \ | 63 | crate://crates.io/crossbeam-channel/0.5.15 \ |
64 | crate://crates.io/crossbeam-deque/0.8.5 \ | 64 | crate://crates.io/crossbeam-deque/0.8.5 \ |
65 | crate://crates.io/crossbeam-epoch/0.9.18 \ | 65 | crate://crates.io/crossbeam-epoch/0.9.18 \ |
66 | crate://crates.io/crossbeam-utils/0.8.20 \ | 66 | crate://crates.io/crossbeam-utils/0.8.20 \ |
@@ -169,10 +169,10 @@ SRC_URI += " \ | |||
169 | crate://crates.io/num-conv/0.1.0 \ | 169 | crate://crates.io/num-conv/0.1.0 \ |
170 | crate://crates.io/number_prefix/0.4.0 \ | 170 | crate://crates.io/number_prefix/0.4.0 \ |
171 | crate://crates.io/once_cell/1.20.2 \ | 171 | crate://crates.io/once_cell/1.20.2 \ |
172 | crate://crates.io/openssl/0.10.70 \ | 172 | crate://crates.io/openssl/0.10.72 \ |
173 | crate://crates.io/openssl-macros/0.1.1 \ | 173 | crate://crates.io/openssl-macros/0.1.1 \ |
174 | crate://crates.io/openssl-probe/0.1.5 \ | 174 | crate://crates.io/openssl-probe/0.1.5 \ |
175 | crate://crates.io/openssl-sys/0.9.105 \ | 175 | crate://crates.io/openssl-sys/0.9.107 \ |
176 | crate://crates.io/option-ext/0.2.0 \ | 176 | crate://crates.io/option-ext/0.2.0 \ |
177 | crate://crates.io/os_pipe/1.2.0 \ | 177 | crate://crates.io/os_pipe/1.2.0 \ |
178 | crate://crates.io/overload/0.1.1 \ | 178 | crate://crates.io/overload/0.1.1 \ |
@@ -362,7 +362,7 @@ SRC_URI += " \ | |||
362 | crate://crates.io/zeroize/1.8.1 \ | 362 | crate://crates.io/zeroize/1.8.1 \ |
363 | crate://crates.io/zerovec/0.10.4 \ | 363 | crate://crates.io/zerovec/0.10.4 \ |
364 | crate://crates.io/zerovec-derive/0.10.3 \ | 364 | crate://crates.io/zerovec-derive/0.10.3 \ |
365 | crate://crates.io/zip/2.2.3 \ | 365 | crate://crates.io/zip/2.3.0 \ |
366 | crate://crates.io/zopfli/0.8.1 \ | 366 | crate://crates.io/zopfli/0.8.1 \ |
367 | " | 367 | " |
368 | 368 | ||
@@ -398,7 +398,7 @@ SRC_URI[cargo-config2-0.1.26.sha256sum] = "d83ce0be8bd1479e5de6202def660e6c7e27e | |||
398 | SRC_URI[cargo-options-0.7.4.sha256sum] = "f3540247c0a37a76eb324acc238dc617786ea22c43b95da560c82a8f2714321f" | 398 | SRC_URI[cargo-options-0.7.4.sha256sum] = "f3540247c0a37a76eb324acc238dc617786ea22c43b95da560c82a8f2714321f" |
399 | SRC_URI[cargo-platform-0.1.8.sha256sum] = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" | 399 | SRC_URI[cargo-platform-0.1.8.sha256sum] = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" |
400 | SRC_URI[cargo-xwin-0.18.4.sha256sum] = "60f1954e4ffa0f4c47b3df5e6e9508706d8dcaa56152cd672dcee02930ba0326" | 400 | SRC_URI[cargo-xwin-0.18.4.sha256sum] = "60f1954e4ffa0f4c47b3df5e6e9508706d8dcaa56152cd672dcee02930ba0326" |
401 | SRC_URI[cargo-zigbuild-0.19.7.sha256sum] = "04cc649328f39bbf1ef92ef753406e1785ff1074941c398e5214b6c74d318a9e" | 401 | SRC_URI[cargo-zigbuild-0.20.0.sha256sum] = "3f6e9e856390d5b0a859acaeda16528f8a61c964bdb894c3216c254908f1c2ea" |
402 | SRC_URI[cargo_metadata-0.19.0.sha256sum] = "afc309ed89476c8957c50fb818f56fe894db857866c3e163335faa91dc34eb85" | 402 | SRC_URI[cargo_metadata-0.19.0.sha256sum] = "afc309ed89476c8957c50fb818f56fe894db857866c3e163335faa91dc34eb85" |
403 | SRC_URI[cbindgen-0.28.0.sha256sum] = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff" | 403 | SRC_URI[cbindgen-0.28.0.sha256sum] = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff" |
404 | SRC_URI[cc-1.2.16.sha256sum] = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" | 404 | SRC_URI[cc-1.2.16.sha256sum] = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" |
@@ -424,7 +424,7 @@ SRC_URI[cpufeatures-0.2.12.sha256sum] = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c | |||
424 | SRC_URI[crc-3.2.1.sha256sum] = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" | 424 | SRC_URI[crc-3.2.1.sha256sum] = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" |
425 | SRC_URI[crc-catalog-2.4.0.sha256sum] = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" | 425 | SRC_URI[crc-catalog-2.4.0.sha256sum] = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" |
426 | SRC_URI[crc32fast-1.4.2.sha256sum] = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" | 426 | SRC_URI[crc32fast-1.4.2.sha256sum] = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" |
427 | SRC_URI[crossbeam-channel-0.5.13.sha256sum] = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" | 427 | SRC_URI[crossbeam-channel-0.5.15.sha256sum] = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" |
428 | SRC_URI[crossbeam-deque-0.8.5.sha256sum] = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" | 428 | SRC_URI[crossbeam-deque-0.8.5.sha256sum] = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" |
429 | SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" | 429 | SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" |
430 | SRC_URI[crossbeam-utils-0.8.20.sha256sum] = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" | 430 | SRC_URI[crossbeam-utils-0.8.20.sha256sum] = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" |
@@ -533,10 +533,10 @@ SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42 | |||
533 | SRC_URI[num-conv-0.1.0.sha256sum] = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" | 533 | SRC_URI[num-conv-0.1.0.sha256sum] = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" |
534 | SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" | 534 | SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" |
535 | SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" | 535 | SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" |
536 | SRC_URI[openssl-0.10.70.sha256sum] = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" | 536 | SRC_URI[openssl-0.10.72.sha256sum] = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" |
537 | SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" | 537 | SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" |
538 | SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" | 538 | SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" |
539 | SRC_URI[openssl-sys-0.9.105.sha256sum] = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" | 539 | SRC_URI[openssl-sys-0.9.107.sha256sum] = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" |
540 | SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" | 540 | SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" |
541 | SRC_URI[os_pipe-1.2.0.sha256sum] = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" | 541 | SRC_URI[os_pipe-1.2.0.sha256sum] = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" |
542 | SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" | 542 | SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" |
@@ -726,5 +726,5 @@ SRC_URI[zerofrom-derive-0.1.5.sha256sum] = "595eed982f7d355beb85837f651fa22e90b3 | |||
726 | SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" | 726 | SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" |
727 | SRC_URI[zerovec-0.10.4.sha256sum] = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" | 727 | SRC_URI[zerovec-0.10.4.sha256sum] = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" |
728 | SRC_URI[zerovec-derive-0.10.3.sha256sum] = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" | 728 | SRC_URI[zerovec-derive-0.10.3.sha256sum] = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" |
729 | SRC_URI[zip-2.2.3.sha256sum] = "b280484c454e74e5fff658bbf7df8fdbe7a07c6b2de4a53def232c15ef138f3a" | 729 | SRC_URI[zip-2.3.0.sha256sum] = "84e9a772a54b54236b9b744aaaf8d7be01b4d6e99725523cb82cb32d1c81b1d7" |
730 | SRC_URI[zopfli-0.8.1.sha256sum] = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" | 730 | SRC_URI[zopfli-0.8.1.sha256sum] = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" |
diff --git a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb b/meta/recipes-devtools/python/python3-maturin_1.8.6.bb index 08975e177f..ab509331c3 100644 --- a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb +++ b/meta/recipes-devtools/python/python3-maturin_1.8.6.bb | |||
@@ -5,8 +5,9 @@ LICENSE = "MIT | Apache-2.0" | |||
5 | LIC_FILES_CHKSUM = "file://license-apache;md5=1836efb2eb779966696f473ee8540542 \ | 5 | LIC_FILES_CHKSUM = "file://license-apache;md5=1836efb2eb779966696f473ee8540542 \ |
6 | file://license-mit;md5=85fd3b67069cff784d98ebfc7d5c0797" | 6 | file://license-mit;md5=85fd3b67069cff784d98ebfc7d5c0797" |
7 | 7 | ||
8 | # This is needed until Cargo.lock has libc-0.2.172+ | ||
8 | SRC_URI += "file://0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch;patchdir=${CARGO_VENDORING_DIRECTORY}/libc-0.2.167" | 9 | SRC_URI += "file://0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch;patchdir=${CARGO_VENDORING_DIRECTORY}/libc-0.2.167" |
9 | SRC_URI[sha256sum] = "304762f86fd53a8031b1bf006d12572a2aa0a5235485031113195cc0152e1e12" | 10 | SRC_URI[sha256sum] = "0e0dc2e0bfaa2e1bd238e0236cf8a2b7e2250ccaa29c1aa8d0e61fa664b0289d" |
10 | 11 | ||
11 | S = "${WORKDIR}/maturin-${PV}" | 12 | S = "${WORKDIR}/maturin-${PV}" |
12 | 13 | ||
diff --git a/meta/recipes-devtools/python/python3-pdm_2.24.1.bb b/meta/recipes-devtools/python/python3-pdm_2.24.2.bb index 3f251c7f0f..d24e03d650 100644 --- a/meta/recipes-devtools/python/python3-pdm_2.24.1.bb +++ b/meta/recipes-devtools/python/python3-pdm_2.24.2.bb | |||
@@ -4,7 +4,7 @@ LICENSE = "MIT" | |||
4 | SECTION = "devel/python" | 4 | SECTION = "devel/python" |
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2" | 5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2" |
6 | 6 | ||
7 | SRC_URI[sha256sum] = "fc8adf011caa4ee2b0f25dabf890152aa4153cc21599ea67fe0c14e533dcd6d9" | 7 | SRC_URI[sha256sum] = "ce0d5e9005fe26238b8ba5cf0e37ac00acab2fb90f904bf0219a5e8445849dfb" |
8 | 8 | ||
9 | inherit pypi python_setuptools_build_meta | 9 | inherit pypi python_setuptools_build_meta |
10 | 10 | ||
diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.22.0.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.22.0.bb deleted file mode 100644 index c65b2a71fc..0000000000 --- a/meta/recipes-devtools/python/python3-pycryptodome_3.22.0.bb +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | require python-pycryptodome.inc | ||
2 | inherit python_setuptools_build_meta | ||
3 | |||
4 | SRC_URI[sha256sum] = "fd7ab568b3ad7b77c908d7c3f7e167ec5a8f035c64ff74f10d47a4edd043d723" | ||
5 | |||
diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb new file mode 100644 index 0000000000..2528162ff8 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb | |||
@@ -0,0 +1,5 @@ | |||
1 | require python-pycryptodome.inc | ||
2 | inherit python_setuptools_build_meta | ||
3 | |||
4 | SRC_URI[sha256sum] = "447700a657182d60338bab09fdb27518f8856aecd80ae4c6bdddb67ff5da44ef" | ||
5 | |||
diff --git a/meta/recipes-devtools/python/python3-pycryptodomex_3.22.0.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb index 5cc37d81c2..43dba3faa3 100644 --- a/meta/recipes-devtools/python/python3-pycryptodomex_3.22.0.bb +++ b/meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb | |||
@@ -1,7 +1,7 @@ | |||
1 | require python-pycryptodome.inc | 1 | require python-pycryptodome.inc |
2 | inherit python_setuptools_build_meta | 2 | inherit python_setuptools_build_meta |
3 | 3 | ||
4 | SRC_URI[sha256sum] = "a1da61bacc22f93a91cbe690e3eb2022a03ab4123690ab16c46abb693a9df63d" | 4 | SRC_URI[sha256sum] = "71909758f010c82bc99b0abf4ea12012c98962fbf0583c2164f8b84533c2e4da" |
5 | 5 | ||
6 | FILES:${PN}-tests = " \ | 6 | FILES:${PN}-tests = " \ |
7 | ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \ | 7 | ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \ |
diff --git a/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.10.bb b/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.12.bb index 02b04e3c0c..3b136b3b58 100644 --- a/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.10.bb +++ b/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.12.bb | |||
@@ -9,7 +9,7 @@ UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}" | |||
9 | 9 | ||
10 | inherit pypi python_setuptools_build_meta | 10 | inherit pypi python_setuptools_build_meta |
11 | 11 | ||
12 | SRC_URI[sha256sum] = "20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58" | 12 | SRC_URI[sha256sum] = "5a38fd5ce39d223bebb9e3a6779e86b9427a03fb0bf9f270060f8b149cffe5e2" |
13 | 13 | ||
14 | RDEPENDS:${PN} += "\ | 14 | RDEPENDS:${PN} += "\ |
15 | python3-shell \ | 15 | python3-shell \ |
diff --git a/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch index 8ccffeef1d..39153883b0 100644 --- a/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch +++ b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From c3d2c40e10f24724ab2e3d5f236823f3076c7aec Mon Sep 17 00:00:00 2001 | 1 | From e2eab8c254f16c461de25123f6859b8a18db5cd8 Mon Sep 17 00:00:00 2001 |
2 | From: Alexander Kanavin <alex@linutronix.de> | 2 | From: Alexander Kanavin <alex@linutronix.de> |
3 | Date: Wed, 11 May 2022 21:41:14 +0200 | 3 | Date: Wed, 11 May 2022 21:41:14 +0200 |
4 | Subject: [PATCH] _distutils/sysconfig.py: make it possible to substite the | 4 | Subject: [PATCH] _distutils/sysconfig.py: make it possible to substite the |
@@ -20,7 +20,7 @@ Signed-off-by: Alexander Kanavin <alex@linutronix.de> | |||
20 | 1 file changed, 10 insertions(+), 2 deletions(-) | 20 | 1 file changed, 10 insertions(+), 2 deletions(-) |
21 | 21 | ||
22 | diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py | 22 | diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py |
23 | index e5facae..0932f6f 100644 | 23 | index 7ddc869..01a06af 100644 |
24 | --- a/setuptools/_distutils/sysconfig.py | 24 | --- a/setuptools/_distutils/sysconfig.py |
25 | +++ b/setuptools/_distutils/sysconfig.py | 25 | +++ b/setuptools/_distutils/sysconfig.py |
26 | @@ -134,6 +134,8 @@ def get_python_inc(plat_specific: bool = False, prefix: str | None = None) -> st | 26 | @@ -134,6 +134,8 @@ def get_python_inc(plat_specific: bool = False, prefix: str | None = None) -> st |
@@ -32,7 +32,7 @@ index e5facae..0932f6f 100644 | |||
32 | resolved_prefix = prefix if prefix is not None else default_prefix | 32 | resolved_prefix = prefix if prefix is not None else default_prefix |
33 | # MinGW imitates posix like layout, but os.name != posix | 33 | # MinGW imitates posix like layout, but os.name != posix |
34 | os_name = "posix" if is_mingw() else os.name | 34 | os_name = "posix" if is_mingw() else os.name |
35 | @@ -256,7 +258,13 @@ def get_python_lib( | 35 | @@ -246,7 +248,13 @@ def get_python_lib( |
36 | 36 | ||
37 | early_prefix = prefix | 37 | early_prefix = prefix |
38 | 38 | ||
@@ -47,7 +47,7 @@ index e5facae..0932f6f 100644 | |||
47 | if standard_lib: | 47 | if standard_lib: |
48 | prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX | 48 | prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX |
49 | else: | 49 | else: |
50 | @@ -271,7 +279,7 @@ def get_python_lib( | 50 | @@ -261,7 +269,7 @@ def get_python_lib( |
51 | # Pure Python | 51 | # Pure Python |
52 | libdir = "lib" | 52 | libdir = "lib" |
53 | implementation = 'pypy' if IS_PYPY else 'python' | 53 | implementation = 'pypy' if IS_PYPY else 'python' |
diff --git a/meta/recipes-devtools/python/python3-setuptools_80.8.0.bb b/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb index 327eff5700..533d8ce3d4 100644 --- a/meta/recipes-devtools/python/python3-setuptools_80.8.0.bb +++ b/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb | |||
@@ -11,7 +11,7 @@ CVE_PRODUCT = "python3-setuptools python:setuptools" | |||
11 | SRC_URI += " \ | 11 | SRC_URI += " \ |
12 | file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch" | 12 | file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch" |
13 | 13 | ||
14 | SRC_URI[sha256sum] = "49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257" | 14 | SRC_URI[sha256sum] = "f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" |
15 | 15 | ||
16 | DEPENDS += "python3" | 16 | DEPENDS += "python3" |
17 | 17 | ||
diff --git a/meta/recipes-devtools/python/python3-trove-classifiers_2025.3.19.19.bb b/meta/recipes-devtools/python/python3-trove-classifiers_2025.5.9.12.bb index 39fb997e88..68b09537bc 100644 --- a/meta/recipes-devtools/python/python3-trove-classifiers_2025.3.19.19.bb +++ b/meta/recipes-devtools/python/python3-trove-classifiers_2025.5.9.12.bb | |||
@@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/pypa/trove-classifiers" | |||
3 | LICENSE = "Apache-2.0" | 3 | LICENSE = "Apache-2.0" |
4 | LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" | 4 | LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" |
5 | 5 | ||
6 | SRC_URI[sha256sum] = "98e9d396fe908d5f43b7454fa4c43d17cd0fdadf046f45fb38a5e3af8d959ecd" | 6 | SRC_URI[sha256sum] = "7ca7c8a7a76e2cd314468c677c69d12cc2357711fcab4a60f87994c1589e5cb5" |
7 | 7 | ||
8 | PYPI_PACKAGE = "trove_classifiers" | 8 | PYPI_PACKAGE = "trove_classifiers" |
9 | UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}" | 9 | UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}" |
diff --git a/meta/recipes-devtools/python/python3-uritools_4.0.3.bb b/meta/recipes-devtools/python/python3-uritools_5.0.0.bb index 4210407e00..35a8f2a0d9 100644 --- a/meta/recipes-devtools/python/python3-uritools_4.0.3.bb +++ b/meta/recipes-devtools/python/python3-uritools_5.0.0.bb | |||
@@ -2,9 +2,9 @@ SUMMARY = "URI parsing, classification and composition" | |||
2 | HOMEPAGE = "https://github.com/tkem/uritools/" | 2 | HOMEPAGE = "https://github.com/tkem/uritools/" |
3 | 3 | ||
4 | LICENSE = "MIT" | 4 | LICENSE = "MIT" |
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=539275e657c6b7af026bb908356f7541" | 5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=e21bbe53b2730bfe1911cf381b81821e" |
6 | 6 | ||
7 | SRC_URI[sha256sum] = "ee06a182a9c849464ce9d5fa917539aacc8edd2a4924d1b7aabeeecabcae3bc2" | 7 | SRC_URI[sha256sum] = "68180cad154062bd5b5d9ffcdd464f8de6934414b25462ae807b00b8df9345de" |
8 | 8 | ||
9 | inherit pypi python_setuptools_build_meta ptest-python-pytest | 9 | inherit pypi python_setuptools_build_meta ptest-python-pytest |
10 | 10 | ||
diff --git a/meta/recipes-devtools/quilt/quilt-native_0.68.bb b/meta/recipes-devtools/quilt/quilt-native_0.69.bb index 22374425fa..22374425fa 100644 --- a/meta/recipes-devtools/quilt/quilt-native_0.68.bb +++ b/meta/recipes-devtools/quilt/quilt-native_0.69.bb | |||
diff --git a/meta/recipes-devtools/quilt/quilt.inc b/meta/recipes-devtools/quilt/quilt.inc index 4bae5c6c19..59d13237e2 100644 --- a/meta/recipes-devtools/quilt/quilt.inc +++ b/meta/recipes-devtools/quilt/quilt.inc | |||
@@ -11,11 +11,12 @@ SRC_URI = "${SAVANNAH_GNU_MIRROR}/quilt/quilt-${PV}.tar.gz \ | |||
11 | file://run-ptest \ | 11 | file://run-ptest \ |
12 | file://test.sh \ | 12 | file://test.sh \ |
13 | file://0001-tests-Allow-different-output-from-mv.patch \ | 13 | file://0001-tests-Allow-different-output-from-mv.patch \ |
14 | file://0001-contrib-spec-filters-obs-usr-bin-sh-bin-sh.patch \ | ||
14 | " | 15 | " |
15 | 16 | ||
16 | SRC_URI:append:class-target = " file://gnu_patch_test_fix_target.patch" | 17 | SRC_URI:append:class-target = " file://gnu_patch_test_fix_target.patch" |
17 | 18 | ||
18 | SRC_URI[sha256sum] = "fe8c09de03c106e85b3737c8f03ade147c956b79ed7af485a1c8a3858db38426" | 19 | SRC_URI[sha256sum] = "555ddffde22da3c86d1caf5a9c1fb8a152ac2b84730437bd39cc08849c9f4852" |
19 | 20 | ||
20 | inherit autotools-brokensep ptest | 21 | inherit autotools-brokensep ptest |
21 | 22 | ||
diff --git a/meta/recipes-devtools/quilt/quilt/0001-contrib-spec-filters-obs-usr-bin-sh-bin-sh.patch b/meta/recipes-devtools/quilt/quilt/0001-contrib-spec-filters-obs-usr-bin-sh-bin-sh.patch new file mode 100644 index 0000000000..219deab0d6 --- /dev/null +++ b/meta/recipes-devtools/quilt/quilt/0001-contrib-spec-filters-obs-usr-bin-sh-bin-sh.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | From 0e00d22182c4cce3b242dd8f4166d3df238b3a0b Mon Sep 17 00:00:00 2001 | ||
2 | From: Robert Yang <liezhi.yang@windriver.com> | ||
3 | Date: Wed, 4 Jun 2025 00:21:40 -0700 | ||
4 | Subject: [PATCH] contrib/spec-filters/obs: /usr/bin/sh -> /bin/sh | ||
5 | |||
6 | The /bin/sh is more common than /usr/bin/sh, the later one doesn't exist on | ||
7 | distributions such as Ubuntu 22.04. | ||
8 | |||
9 | Upstream-Status: Submitted [https://lists.nongnu.org/archive/html/quilt-dev/2025-06/msg00002.html] | ||
10 | |||
11 | Signed-off-by: Robert Yang <liezhi.yang@windriver.com> | ||
12 | --- | ||
13 | contrib/spec-filters/obs | 2 +- | ||
14 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/contrib/spec-filters/obs b/contrib/spec-filters/obs | ||
17 | index 2f5b169..b675230 100755 | ||
18 | --- a/contrib/spec-filters/obs | ||
19 | +++ b/contrib/spec-filters/obs | ||
20 | @@ -1,4 +1,4 @@ | ||
21 | -#!/usr/bin/sh | ||
22 | +#!/bin/sh | ||
23 | # Basic spec file filter for OBS packages | ||
24 | # https://build.opensuse.org/ | ||
25 | |||
26 | -- | ||
27 | 2.49.0 | ||
28 | |||
diff --git a/meta/recipes-devtools/quilt/quilt_0.68.bb b/meta/recipes-devtools/quilt/quilt_0.69.bb index bf9e3c720f..bf9e3c720f 100644 --- a/meta/recipes-devtools/quilt/quilt_0.68.bb +++ b/meta/recipes-devtools/quilt/quilt_0.69.bb | |||
diff --git a/meta/recipes-devtools/repo/repo_2.54.bb b/meta/recipes-devtools/repo/repo_2.55.bb index 07ee583172..5fea49abb3 100644 --- a/meta/recipes-devtools/repo/repo_2.54.bb +++ b/meta/recipes-devtools/repo/repo_2.55.bb | |||
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" | |||
11 | 11 | ||
12 | SRC_URI = "git://gerrit.googlesource.com/git-repo.git;protocol=https;branch=main;tag=v${PV} \ | 12 | SRC_URI = "git://gerrit.googlesource.com/git-repo.git;protocol=https;branch=main;tag=v${PV} \ |
13 | " | 13 | " |
14 | SRCREV = "97dc5c1bd9527c2abe2183b16a4b7ef037dc34a7" | 14 | SRCREV = "08815ad3eb245872700201e03c47cb504d1dc3f9" |
15 | 15 | ||
16 | MIRRORS += "git://gerrit.googlesource.com/git-repo.git git://github.com/GerritCodeReview/git-repo.git" | 16 | MIRRORS += "git://gerrit.googlesource.com/git-repo.git git://github.com/GerritCodeReview/git-repo.git" |
17 | 17 | ||
diff --git a/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch b/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch index bb67df0f40..84fe9aee3d 100644 --- a/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch +++ b/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 7e2337d8b0daf264785cb06d1d6c7d61e428a11b Mon Sep 17 00:00:00 2001 | 1 | From 2625f6c155105d352d6a1ff3a722e7896431ff91 Mon Sep 17 00:00:00 2001 |
2 | From: Christopher Larson <chris_larson@mentor.com> | 2 | From: Christopher Larson <chris_larson@mentor.com> |
3 | Date: Thu, 5 May 2016 10:59:07 -0700 | 3 | Date: Thu, 5 May 2016 10:59:07 -0700 |
4 | Subject: [PATCH] Obey LDFLAGS for the link of libruby | 4 | Subject: [PATCH] Obey LDFLAGS for the link of libruby |
@@ -10,10 +10,10 @@ Upstream-Status: Pending | |||
10 | 1 file changed, 1 insertion(+), 1 deletion(-) | 10 | 1 file changed, 1 insertion(+), 1 deletion(-) |
11 | 11 | ||
12 | diff --git a/template/Makefile.in b/template/Makefile.in | 12 | diff --git a/template/Makefile.in b/template/Makefile.in |
13 | index 05432cd..41a05bb 100644 | 13 | index 8f996b8..c708b64 100644 |
14 | --- a/template/Makefile.in | 14 | --- a/template/Makefile.in |
15 | +++ b/template/Makefile.in | 15 | +++ b/template/Makefile.in |
16 | @@ -119,7 +119,7 @@ ENABLE_SHARED = @ENABLE_SHARED@ | 16 | @@ -120,7 +120,7 @@ ENABLE_SHARED = @ENABLE_SHARED@ |
17 | LDSHARED = @LIBRUBY_LDSHARED@ | 17 | LDSHARED = @LIBRUBY_LDSHARED@ |
18 | DLDSHARED = @DLDSHARED@ | 18 | DLDSHARED = @DLDSHARED@ |
19 | XDLDFLAGS = @DLDFLAGS@ | 19 | XDLDFLAGS = @DLDFLAGS@ |
diff --git a/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch index eda45dd862..190eb7d728 100644 --- a/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch +++ b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ff25f6dddcfbbb7b0464485bb5132458866ab51a Mon Sep 17 00:00:00 2001 | 1 | From 97051be9cb9317d2c4d61a82d6d953809e962f13 Mon Sep 17 00:00:00 2001 |
2 | From: Lucas Kanashiro <kanashiro@debian.org> | 2 | From: Lucas Kanashiro <kanashiro@debian.org> |
3 | Date: Fri, 1 Nov 2019 15:25:17 -0300 | 3 | Date: Fri, 1 Nov 2019 15:25:17 -0300 |
4 | Subject: [PATCH] Make gemspecs reproducible | 4 | Subject: [PATCH] Make gemspecs reproducible |
@@ -12,10 +12,10 @@ Upstream-Status: Backport [debian] | |||
12 | 1 file changed, 3 insertions(+), 1 deletion(-) | 12 | 1 file changed, 3 insertions(+), 1 deletion(-) |
13 | 13 | ||
14 | diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb | 14 | diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb |
15 | index 8f353ae..095125f 100644 | 15 | index 0b905a7..a102e3c 100644 |
16 | --- a/lib/rubygems/specification.rb | 16 | --- a/lib/rubygems/specification.rb |
17 | +++ b/lib/rubygems/specification.rb | 17 | +++ b/lib/rubygems/specification.rb |
18 | @@ -1711,7 +1711,9 @@ class Gem::Specification < Gem::BasicSpecification | 18 | @@ -1709,7 +1709,9 @@ class Gem::Specification < Gem::BasicSpecification |
19 | raise(Gem::InvalidSpecificationException, | 19 | raise(Gem::InvalidSpecificationException, |
20 | "invalid date format in specification: #{date.inspect}") | 20 | "invalid date format in specification: #{date.inspect}") |
21 | end | 21 | end |
diff --git a/meta/recipes-devtools/ruby/ruby_3.4.3.bb b/meta/recipes-devtools/ruby/ruby_3.4.4.bb index 45047b8859..39e86fdd28 100644 --- a/meta/recipes-devtools/ruby/ruby_3.4.3.bb +++ b/meta/recipes-devtools/ruby/ruby_3.4.4.bb | |||
@@ -48,7 +48,7 @@ do_configure:prepend() { | |||
48 | 48 | ||
49 | DEPENDS:append:libc-musl = " libucontext" | 49 | DEPENDS:append:libc-musl = " libucontext" |
50 | 50 | ||
51 | SRC_URI[sha256sum] = "55a4cd1dcbe5ca27cf65e89a935a482c2bb2284832939266551c0ec68b437f46" | 51 | SRC_URI[sha256sum] = "a0597bfdf312e010efd1effaa8d7f1d7833146fdc17950caa8158ffa3dcbfa85" |
52 | 52 | ||
53 | PACKAGECONFIG ??= "" | 53 | PACKAGECONFIG ??= "" |
54 | PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" | 54 | PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" |
diff --git a/meta/recipes-devtools/strace/strace/Makefile-ptest.patch b/meta/recipes-devtools/strace/strace/Makefile-ptest.patch index a78c86f6a1..9520aa8842 100644 --- a/meta/recipes-devtools/strace/strace/Makefile-ptest.patch +++ b/meta/recipes-devtools/strace/strace/Makefile-ptest.patch | |||
@@ -12,8 +12,9 @@ Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> | |||
12 | tests/Makefile.am | 20 ++++++++++++++++++++ | 12 | tests/Makefile.am | 20 ++++++++++++++++++++ |
13 | 1 file changed, 20 insertions(+) | 13 | 1 file changed, 20 insertions(+) |
14 | 14 | ||
15 | |||
15 | diff --git a/tests/Makefile.am b/tests/Makefile.am | 16 | diff --git a/tests/Makefile.am b/tests/Makefile.am |
16 | index e1254c3..149570d 100644 | 17 | index b29471f..b8b66f0 100644 |
17 | --- a/tests/Makefile.am | 18 | --- a/tests/Makefile.am |
18 | +++ b/tests/Makefile.am | 19 | +++ b/tests/Makefile.am |
19 | @@ -18,6 +18,7 @@ SIZEOF_LONG = @SIZEOF_LONG@ | 20 | @@ -18,6 +18,7 @@ SIZEOF_LONG = @SIZEOF_LONG@ |
@@ -21,10 +22,10 @@ index e1254c3..149570d 100644 | |||
21 | MPERS_CC_FLAGS = | 22 | MPERS_CC_FLAGS = |
22 | ARCH_MFLAGS = | 23 | ARCH_MFLAGS = |
23 | +TEST_SUITE_LOG = test-suite.log | 24 | +TEST_SUITE_LOG = test-suite.log |
24 | AM_CFLAGS = $(WARN_CFLAGS) | 25 | AM_CFLAGS = $(WARN_CFLAGS) $(TEST_WARN_CFLAGS) |
25 | bundled_CPPFLAGS = | 26 | bundled_CPPFLAGS = |
26 | if USE_BUNDLED_HEADERS | 27 | if USE_BUNDLED_HEADERS |
27 | @@ -903,3 +904,22 @@ BUILT_SOURCES = ksysent.h | 28 | @@ -932,3 +933,22 @@ BUILT_SOURCES = ksysent.h |
28 | CLEANFILES = ksysent.h | 29 | CLEANFILES = ksysent.h |
29 | 30 | ||
30 | include ../src/scno.am | 31 | include ../src/scno.am |
diff --git a/meta/recipes-devtools/strace/strace_6.12.bb b/meta/recipes-devtools/strace/strace_6.15.bb index c16e5dc478..d8ac2a53d0 100644 --- a/meta/recipes-devtools/strace/strace_6.12.bb +++ b/meta/recipes-devtools/strace/strace_6.15.bb | |||
@@ -3,7 +3,7 @@ HOMEPAGE = "http://strace.io" | |||
3 | DESCRIPTION = "strace is a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state." | 3 | DESCRIPTION = "strace is a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state." |
4 | SECTION = "console/utils" | 4 | SECTION = "console/utils" |
5 | LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later" | 5 | LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later" |
6 | LIC_FILES_CHKSUM = "file://COPYING;md5=2433d82e1432a76dc3eadd9002bfe304" | 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=1efaf30bb0084b4a17a6f55f9cbcd25b" |
7 | 7 | ||
8 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/strace-${PV}.tar.xz \ | 8 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/strace-${PV}.tar.xz \ |
9 | file://update-gawk-paths.patch \ | 9 | file://update-gawk-paths.patch \ |
@@ -15,7 +15,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/strace-${PV}.tar.xz \ | |||
15 | file://0001-configure-Use-autoconf-macro-to-detect-largefile-sup.patch \ | 15 | file://0001-configure-Use-autoconf-macro-to-detect-largefile-sup.patch \ |
16 | file://0002-tests-Replace-off64_t-with-off_t.patch \ | 16 | file://0002-tests-Replace-off64_t-with-off_t.patch \ |
17 | " | 17 | " |
18 | SRC_URI[sha256sum] = "c47da93be45b6055f4dc741d7f20efaf50ca10160a5b100c109b294fd9c0bdfe" | 18 | SRC_URI[sha256sum] = "8552dfab08abc22a0f2048c98fd9541fd4d71b6882507952780dab7c7c512f51" |
19 | 19 | ||
20 | 20 | ||
21 | inherit autotools github-releases ptest | 21 | inherit autotools github-releases ptest |
diff --git a/meta/recipes-extended/msmtp/msmtp_1.8.28.bb b/meta/recipes-extended/msmtp/msmtp_1.8.30.bb index 48c597de24..83ec83f326 100644 --- a/meta/recipes-extended/msmtp/msmtp_1.8.28.bb +++ b/meta/recipes-extended/msmtp/msmtp_1.8.30.bb | |||
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" | |||
11 | UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/" | 11 | UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/" |
12 | 12 | ||
13 | SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz" | 13 | SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz" |
14 | SRC_URI[sha256sum] = "3a57f155f54e4860f7dd42138d9bea1af615b99dfab5ab4cd728fc8c09a647a4" | 14 | SRC_URI[sha256sum] = "f826a3c500c4dfeed814685097cead9b2b3dca5a2ec3897967cb9032570fa9ab" |
15 | 15 | ||
16 | inherit gettext autotools update-alternatives pkgconfig | 16 | inherit gettext autotools update-alternatives pkgconfig |
17 | 17 | ||
diff --git a/meta/recipes-gnome/libadwaita/libadwaita_1.7.2.bb b/meta/recipes-gnome/libadwaita/libadwaita_1.7.4.bb index 4dc583ab39..e2bfb0984e 100644 --- a/meta/recipes-gnome/libadwaita/libadwaita_1.7.2.bb +++ b/meta/recipes-gnome/libadwaita/libadwaita_1.7.4.bb | |||
@@ -11,7 +11,7 @@ DEPENDS = " \ | |||
11 | 11 | ||
12 | inherit gnomebase gobject-introspection gi-docgen vala features_check | 12 | inherit gnomebase gobject-introspection gi-docgen vala features_check |
13 | 13 | ||
14 | SRC_URI[archive.sha256sum] = "28ee2ff589c6debe47af9da7a56e37c97d6849e003918a4b223f690d25f960be" | 14 | SRC_URI[archive.sha256sum] = "a012bef97ac0d726b969b18099f75fc5eee9e92c012af9672b827350d53ae970" |
15 | 15 | ||
16 | ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" | 16 | ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" |
17 | REQUIRED_DISTRO_FEATURES = "opengl" | 17 | REQUIRED_DISTRO_FEATURES = "opengl" |
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Use-Os-to-compile-hb-subset-plan-layout.cc.patch b/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Use-Os-to-compile-hb-subset-plan-layout.cc.patch index 299843797b..38ff58fce5 100644 --- a/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Use-Os-to-compile-hb-subset-plan-layout.cc.patch +++ b/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Use-Os-to-compile-hb-subset-plan-layout.cc.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 8d876ea19579ee6b687668921c17be423cf7d6c2 Mon Sep 17 00:00:00 2001 | 1 | From a4325b6f6ddbebf3ecaee8f3825a2f03096adb6d Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Sun, 27 Apr 2025 15:26:09 -0700 | 3 | Date: Sun, 27 Apr 2025 15:26:09 -0700 |
4 | Subject: [PATCH] Use -Os to compile hb-subset-plan-layout.cc | 4 | Subject: [PATCH] Use -Os to compile hb-subset-plan-layout.cc |
@@ -17,10 +17,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> | |||
17 | 1 file changed, 12 insertions(+), 3 deletions(-) | 17 | 1 file changed, 12 insertions(+), 3 deletions(-) |
18 | 18 | ||
19 | diff --git a/src/meson.build b/src/meson.build | 19 | diff --git a/src/meson.build b/src/meson.build |
20 | index 3d1c00d..fded728 100644 | 20 | index cbe5d9e..d7fc764 100644 |
21 | --- a/src/meson.build | 21 | --- a/src/meson.build |
22 | +++ b/src/meson.build | 22 | +++ b/src/meson.build |
23 | @@ -393,7 +393,6 @@ hb_subset_sources = files( | 23 | @@ -398,7 +398,6 @@ hb_subset_sources = files( |
24 | 'hb-subset-instancer-solver.hh', | 24 | 'hb-subset-instancer-solver.hh', |
25 | 'hb-subset-instancer-solver.cc', | 25 | 'hb-subset-instancer-solver.cc', |
26 | 'hb-subset-plan.cc', | 26 | 'hb-subset-plan.cc', |
@@ -28,7 +28,7 @@ index 3d1c00d..fded728 100644 | |||
28 | 'hb-subset-plan-var.cc', | 28 | 'hb-subset-plan-var.cc', |
29 | 'hb-subset-plan.hh', | 29 | 'hb-subset-plan.hh', |
30 | 'hb-subset-plan-member-list.hh', | 30 | 'hb-subset-plan-member-list.hh', |
31 | @@ -410,6 +409,10 @@ hb_subset_sources = files( | 31 | @@ -415,6 +414,10 @@ hb_subset_sources = files( |
32 | 'hb-subset.hh', | 32 | 'hb-subset.hh', |
33 | ) | 33 | ) |
34 | 34 | ||
@@ -39,7 +39,7 @@ index 3d1c00d..fded728 100644 | |||
39 | hb_subset_headers = files( | 39 | hb_subset_headers = files( |
40 | 'hb-subset.h', | 40 | 'hb-subset.h', |
41 | 'hb-subset-serialize.h' | 41 | 'hb-subset-serialize.h' |
42 | @@ -618,6 +621,12 @@ endif | 42 | @@ -629,6 +632,12 @@ endif |
43 | 43 | ||
44 | darwin_versions = [hb_version_int, '@0@.0.0'.format(hb_version_int)] | 44 | darwin_versions = [hb_version_int, '@0@.0.0'.format(hb_version_int)] |
45 | 45 | ||
@@ -52,7 +52,7 @@ index 3d1c00d..fded728 100644 | |||
52 | libharfbuzz = library('harfbuzz', hb_sources, | 52 | libharfbuzz = library('harfbuzz', hb_sources, |
53 | include_directories: incconfig, | 53 | include_directories: incconfig, |
54 | dependencies: harfbuzz_deps, | 54 | dependencies: harfbuzz_deps, |
55 | @@ -645,7 +654,7 @@ defs_list += [harfbuzz_subset_def] | 55 | @@ -656,7 +665,7 @@ defs_list += [harfbuzz_subset_def] |
56 | libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources, | 56 | libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources, |
57 | include_directories: incconfig, | 57 | include_directories: incconfig, |
58 | dependencies: [m_dep], | 58 | dependencies: [m_dep], |
@@ -61,7 +61,7 @@ index 3d1c00d..fded728 100644 | |||
61 | cpp_args: cpp_args + extra_hb_cpp_args, | 61 | cpp_args: cpp_args + extra_hb_cpp_args, |
62 | soversion: hb_so_version, | 62 | soversion: hb_so_version, |
63 | version: version, | 63 | version: version, |
64 | @@ -657,7 +666,7 @@ libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources, | 64 | @@ -668,7 +677,7 @@ libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources, |
65 | custom_target('harfbuzz-subset.cc', | 65 | custom_target('harfbuzz-subset.cc', |
66 | build_by_default: true, | 66 | build_by_default: true, |
67 | output: 'harfbuzz-subset.cc', | 67 | output: 'harfbuzz-subset.cc', |
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz_11.2.0.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_11.2.1.bb index db5a04486c..71eada7f28 100644 --- a/meta/recipes-graphics/harfbuzz/harfbuzz_11.2.0.bb +++ b/meta/recipes-graphics/harfbuzz/harfbuzz_11.2.1.bb | |||
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b98429b8e8e3c2a67cfef01e99e4893d \ | |||
10 | 10 | ||
11 | SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz" | 11 | SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz" |
12 | SRC_URI += "file://0001-Use-Os-to-compile-hb-subset-plan-layout.cc.patch" | 12 | SRC_URI += "file://0001-Use-Os-to-compile-hb-subset-plan-layout.cc.patch" |
13 | SRC_URI[sha256sum] = "50f7d0a208367e606dbf6eecc5cfbecc01a47be6ee837ae7aff2787e24b09b45" | 13 | SRC_URI[sha256sum] = "093714c8548a285094685f0bdc999e202d666b59eeb3df2ff921ab68b8336a49" |
14 | 14 | ||
15 | DEPENDS += "glib-2.0-native" | 15 | DEPENDS += "glib-2.0-native" |
16 | 16 | ||
diff --git a/meta/recipes-graphics/vulkan/vulkan-samples_git.bb b/meta/recipes-graphics/vulkan/vulkan-samples_git.bb index 1caff12a5b..844e0e6b68 100644 --- a/meta/recipes-graphics/vulkan/vulkan-samples_git.bb +++ b/meta/recipes-graphics/vulkan/vulkan-samples_git.bb | |||
@@ -10,7 +10,7 @@ SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=main;protoc | |||
10 | " | 10 | " |
11 | 11 | ||
12 | UPSTREAM_CHECK_COMMITS = "1" | 12 | UPSTREAM_CHECK_COMMITS = "1" |
13 | SRCREV = "eca122602a5d7a9f63686411dcef1b62feb36a9a" | 13 | SRCREV = "d27205d14d01ea7d33efc8ba2862478612370182" |
14 | 14 | ||
15 | UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" | 15 | UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" |
16 | S = "${WORKDIR}/git" | 16 | S = "${WORKDIR}/git" |
diff --git a/meta/recipes-graphics/xorg-lib/libxkbcommon_1.9.2.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.10.0.bb index 77ee8ce500..e10bbf7af0 100644 --- a/meta/recipes-graphics/xorg-lib/libxkbcommon_1.9.2.bb +++ b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.10.0.bb | |||
@@ -9,7 +9,7 @@ DEPENDS = "flex-native bison-native" | |||
9 | 9 | ||
10 | SRC_URI = "git://github.com/xkbcommon/libxkbcommon;protocol=https;branch=master;tag=xkbcommon-${PV}" | 10 | SRC_URI = "git://github.com/xkbcommon/libxkbcommon;protocol=https;branch=master;tag=xkbcommon-${PV}" |
11 | 11 | ||
12 | SRCREV = "dd642359f8d43c09968e34ca7f1eb1121b2dfd70" | 12 | SRCREV = "7888474d0296dcad50c9ba4adfdfdf2be02d35e1" |
13 | S = "${WORKDIR}/git" | 13 | S = "${WORKDIR}/git" |
14 | 14 | ||
15 | inherit meson pkgconfig bash-completion | 15 | inherit meson pkgconfig bash-completion |
diff --git a/meta/recipes-kernel/kernel-signing-keys/kernel-signing-keys-native.bb b/meta/recipes-kernel/kernel-signing-keys/kernel-signing-keys-native.bb new file mode 100644 index 0000000000..704973dffb --- /dev/null +++ b/meta/recipes-kernel/kernel-signing-keys/kernel-signing-keys-native.bb | |||
@@ -0,0 +1,75 @@ | |||
1 | # Automatically generate key pairs in UBOOT_SIGN_KEYDIR if they do not exist. | ||
2 | # The key pair is generated by the kernel-signing-keys-native recipe and is not | ||
3 | # stored in the sstate cache. This can be beneficial from a security standpoint, | ||
4 | # as it avoids unintentionally caching and distributing private keys. | ||
5 | # However, this behavior can lead to non-reproducible builds. For example, if | ||
6 | # the keys are deleted, they must be manually restored, or you must run: | ||
7 | # bitbake -c cleanall kernel-signing-keys-native | ||
8 | # before new key pairs are generated. | ||
9 | # | ||
10 | # However, this approach is only suitable for simple or local development use | ||
11 | # cases. For more advanced or production-grade scenarios, a more robust solution | ||
12 | # is usually required—such as external signing or re-signing using e.g a HSM. | ||
13 | |||
14 | |||
15 | SUMMARY = "Signing keys for the kernel FIT image" | ||
16 | LICENSE = "MIT" | ||
17 | LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
18 | |||
19 | require conf/image-fitimage.conf | ||
20 | |||
21 | DEPENDS += "openssl-native" | ||
22 | |||
23 | inherit native | ||
24 | |||
25 | do_fetch[noexec] = "1" | ||
26 | do_unpack[noexec] = "1" | ||
27 | do_patch[noexec] = "1" | ||
28 | do_configure[noexec] = "1" | ||
29 | do_install[noexec] = "1" | ||
30 | |||
31 | |||
32 | do_compile() { | ||
33 | if [ "${UBOOT_SIGN_ENABLE}" = "0" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then | ||
34 | bbwarn "FIT_GENERATE_KEYS is set to 1 even though UBOOT_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used." | ||
35 | fi | ||
36 | |||
37 | if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then | ||
38 | |||
39 | # Generate keys to sign configuration nodes, only if they don't already exist | ||
40 | if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key ] || \ | ||
41 | [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt ]; then | ||
42 | |||
43 | # make directory if it does not already exist | ||
44 | mkdir -p "${UBOOT_SIGN_KEYDIR}" | ||
45 | |||
46 | bbnote "Generating RSA private key for signing fitImage" | ||
47 | openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \ | ||
48 | "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ | ||
49 | "${FIT_SIGN_NUMBITS}" | ||
50 | |||
51 | bbnote "Generating certificate for signing fitImage" | ||
52 | openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \ | ||
53 | -key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ | ||
54 | -out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt | ||
55 | fi | ||
56 | |||
57 | # Generate keys to sign image nodes, only if they don't already exist | ||
58 | if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key ] || \ | ||
59 | [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".crt ]; then | ||
60 | |||
61 | # make directory if it does not already exist | ||
62 | mkdir -p "${UBOOT_SIGN_KEYDIR}" | ||
63 | |||
64 | bbnote "Generating RSA private key for signing fitImage" | ||
65 | openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \ | ||
66 | "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key \ | ||
67 | "${FIT_SIGN_NUMBITS}" | ||
68 | |||
69 | bbnote "Generating certificate for signing fitImage" | ||
70 | openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \ | ||
71 | -key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key \ | ||
72 | -out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".crt | ||
73 | fi | ||
74 | fi | ||
75 | } | ||
diff --git a/meta/recipes-kernel/linux/cve-exclusion_6.12.inc b/meta/recipes-kernel/linux/cve-exclusion_6.12.inc index d33880eae0..199ea019d5 100644 --- a/meta/recipes-kernel/linux/cve-exclusion_6.12.inc +++ b/meta/recipes-kernel/linux/cve-exclusion_6.12.inc | |||
@@ -1,11 +1,11 @@ | |||
1 | 1 | ||
2 | # Auto-generated CVE metadata, DO NOT EDIT BY HAND. | 2 | # Auto-generated CVE metadata, DO NOT EDIT BY HAND. |
3 | # Generated at 2025-05-29 10:54:43.823437+00:00 for kernel version 6.12.30 | 3 | # Generated at 2025-06-05 16:29:20.725105+00:00 for kernel version 6.12.31 |
4 | # From cvelistV5 cve_2025-05-29_1000Z-1-g4f2590b715f | 4 | # From cvelistV5 cve_2025-06-05_1600Z |
5 | 5 | ||
6 | 6 | ||
7 | python check_kernel_cve_status_version() { | 7 | python check_kernel_cve_status_version() { |
8 | this_version = "6.12.30" | 8 | this_version = "6.12.31" |
9 | kernel_version = d.getVar("LINUX_VERSION") | 9 | kernel_version = d.getVar("LINUX_VERSION") |
10 | if kernel_version != this_version: | 10 | if kernel_version != this_version: |
11 | bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version)) | 11 | bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version)) |
@@ -5054,8 +5054,6 @@ CVE_STATUS[CVE-2023-53023] = "fixed-version: Fixed from version 6.2" | |||
5054 | 5054 | ||
5055 | CVE_STATUS[CVE-2023-53024] = "fixed-version: Fixed from version 6.2" | 5055 | CVE_STATUS[CVE-2023-53024] = "fixed-version: Fixed from version 6.2" |
5056 | 5056 | ||
5057 | CVE_STATUS[CVE-2023-53025] = "fixed-version: Fixed from version 6.2" | ||
5058 | |||
5059 | CVE_STATUS[CVE-2023-53026] = "fixed-version: Fixed from version 6.2" | 5057 | CVE_STATUS[CVE-2023-53026] = "fixed-version: Fixed from version 6.2" |
5060 | 5058 | ||
5061 | CVE_STATUS[CVE-2023-53028] = "fixed-version: Fixed from version 6.1.8" | 5059 | CVE_STATUS[CVE-2023-53028] = "fixed-version: Fixed from version 6.1.8" |
@@ -12564,8 +12562,6 @@ CVE_STATUS[CVE-2025-37780] = "cpe-stable-backport: Backported in 6.12.25" | |||
12564 | 12562 | ||
12565 | CVE_STATUS[CVE-2025-37781] = "cpe-stable-backport: Backported in 6.12.25" | 12563 | CVE_STATUS[CVE-2025-37781] = "cpe-stable-backport: Backported in 6.12.25" |
12566 | 12564 | ||
12567 | CVE_STATUS[CVE-2025-37782] = "cpe-stable-backport: Backported in 6.12.25" | ||
12568 | |||
12569 | CVE_STATUS[CVE-2025-37783] = "fixed-version: only affects 6.14 onwards" | 12565 | CVE_STATUS[CVE-2025-37783] = "fixed-version: only affects 6.14 onwards" |
12570 | 12566 | ||
12571 | CVE_STATUS[CVE-2025-37784] = "cpe-stable-backport: Backported in 6.12.25" | 12567 | CVE_STATUS[CVE-2025-37784] = "cpe-stable-backport: Backported in 6.12.25" |
@@ -12660,8 +12656,6 @@ CVE_STATUS[CVE-2025-37830] = "cpe-stable-backport: Backported in 6.12.26" | |||
12660 | 12656 | ||
12661 | CVE_STATUS[CVE-2025-37831] = "cpe-stable-backport: Backported in 6.12.26" | 12657 | CVE_STATUS[CVE-2025-37831] = "cpe-stable-backport: Backported in 6.12.26" |
12662 | 12658 | ||
12663 | CVE_STATUS[CVE-2025-37832] = "cpe-stable-backport: Backported in 6.12.26" | ||
12664 | |||
12665 | CVE_STATUS[CVE-2025-37833] = "cpe-stable-backport: Backported in 6.12.26" | 12659 | CVE_STATUS[CVE-2025-37833] = "cpe-stable-backport: Backported in 6.12.26" |
12666 | 12660 | ||
12667 | CVE_STATUS[CVE-2025-37834] = "cpe-stable-backport: Backported in 6.12.26" | 12661 | CVE_STATUS[CVE-2025-37834] = "cpe-stable-backport: Backported in 6.12.26" |
@@ -12978,6 +12972,20 @@ CVE_STATUS[CVE-2025-37991] = "cpe-stable-backport: Backported in 6.12.28" | |||
12978 | 12972 | ||
12979 | CVE_STATUS[CVE-2025-37992] = "cpe-stable-backport: Backported in 6.12.30" | 12973 | CVE_STATUS[CVE-2025-37992] = "cpe-stable-backport: Backported in 6.12.30" |
12980 | 12974 | ||
12975 | CVE_STATUS[CVE-2025-37993] = "cpe-stable-backport: Backported in 6.12.29" | ||
12976 | |||
12977 | CVE_STATUS[CVE-2025-37994] = "cpe-stable-backport: Backported in 6.12.29" | ||
12978 | |||
12979 | CVE_STATUS[CVE-2025-37995] = "cpe-stable-backport: Backported in 6.12.29" | ||
12980 | |||
12981 | CVE_STATUS[CVE-2025-37996] = "fixed-version: only affects 6.14 onwards" | ||
12982 | |||
12983 | CVE_STATUS[CVE-2025-37997] = "cpe-stable-backport: Backported in 6.12.29" | ||
12984 | |||
12985 | CVE_STATUS[CVE-2025-37998] = "cpe-stable-backport: Backported in 6.12.29" | ||
12986 | |||
12987 | CVE_STATUS[CVE-2025-37999] = "cpe-stable-backport: Backported in 6.12.29" | ||
12988 | |||
12981 | CVE_STATUS[CVE-2025-38049] = "cpe-stable-backport: Backported in 6.12.23" | 12989 | CVE_STATUS[CVE-2025-38049] = "cpe-stable-backport: Backported in 6.12.23" |
12982 | 12990 | ||
12983 | # CVE-2025-38104 needs backporting (fixed from 6.15) | 12991 | # CVE-2025-38104 needs backporting (fixed from 6.15) |
diff --git a/meta/recipes-kernel/linux/linux-yocto-fitimage.bb b/meta/recipes-kernel/linux/linux-yocto-fitimage.bb new file mode 100644 index 0000000000..6ce1960a87 --- /dev/null +++ b/meta/recipes-kernel/linux/linux-yocto-fitimage.bb | |||
@@ -0,0 +1,13 @@ | |||
1 | SUMMARY = "The Linux kernel as a FIT image (optionally with initramfs)" | ||
2 | SECTION = "kernel" | ||
3 | |||
4 | # If an initramfs is included in the FIT image more licenses apply. | ||
5 | # But also the kernel uses more than one license (see Documentation/process/license-rules.rst) | ||
6 | LICENSE = "GPL-2.0-with-Linux-syscall-note" | ||
7 | LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-with-Linux-syscall-note;md5=0bad96c422c41c3a94009dcfe1bff992" | ||
8 | |||
9 | inherit linux-kernel-base kernel-fit-image | ||
10 | |||
11 | # Set the version of this recipe to the version of the included kernel | ||
12 | # (without taking the long way around via PV) | ||
13 | PKGV = "${@get_kernelversion_file("${STAGING_KERNEL_BUILDDIR}")}" | ||
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb index 24d93645ca..1f61008bd6 100644 --- a/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb +++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb | |||
@@ -14,13 +14,13 @@ python () { | |||
14 | raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") | 14 | raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") |
15 | } | 15 | } |
16 | 16 | ||
17 | SRCREV_machine ?= "3d3d56a846c993611859096016322dccea1317cd" | 17 | SRCREV_machine ?= "4127c6137af28c2c91ec79acee60fe4d4d70db9b" |
18 | SRCREV_meta ?= "60484dda26122958e5f4d8f813424fa637770bf6" | 18 | SRCREV_meta ?= "f2f3b6cbd91743920e2cb55998c53326855b2e9c" |
19 | 19 | ||
20 | SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ | 20 | SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ |
21 | git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https" | 21 | git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https" |
22 | 22 | ||
23 | LINUX_VERSION ?= "6.12.30" | 23 | LINUX_VERSION ?= "6.12.31" |
24 | 24 | ||
25 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" | 25 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" |
26 | 26 | ||
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb index 042adf94d0..d92862a426 100644 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb +++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb | |||
@@ -8,7 +8,7 @@ require recipes-kernel/linux/linux-yocto.inc | |||
8 | # CVE exclusions | 8 | # CVE exclusions |
9 | include recipes-kernel/linux/cve-exclusion_6.12.inc | 9 | include recipes-kernel/linux/cve-exclusion_6.12.inc |
10 | 10 | ||
11 | LINUX_VERSION ?= "6.12.30" | 11 | LINUX_VERSION ?= "6.12.31" |
12 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" | 12 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" |
13 | 13 | ||
14 | DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" | 14 | DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" |
@@ -17,8 +17,8 @@ DEPENDS += "openssl-native util-linux-native" | |||
17 | KMETA = "kernel-meta" | 17 | KMETA = "kernel-meta" |
18 | KCONF_BSP_AUDIT_LEVEL = "2" | 18 | KCONF_BSP_AUDIT_LEVEL = "2" |
19 | 19 | ||
20 | SRCREV_machine ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 20 | SRCREV_machine ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
21 | SRCREV_meta ?= "60484dda26122958e5f4d8f813424fa637770bf6" | 21 | SRCREV_meta ?= "f2f3b6cbd91743920e2cb55998c53326855b2e9c" |
22 | 22 | ||
23 | PV = "${LINUX_VERSION}+git" | 23 | PV = "${LINUX_VERSION}+git" |
24 | 24 | ||
diff --git a/meta/recipes-kernel/linux/linux-yocto_6.12.bb b/meta/recipes-kernel/linux/linux-yocto_6.12.bb index e282a89983..c5cab3432c 100644 --- a/meta/recipes-kernel/linux/linux-yocto_6.12.bb +++ b/meta/recipes-kernel/linux/linux-yocto_6.12.bb | |||
@@ -18,25 +18,25 @@ KBRANCH:qemux86.104 ?= "v6.12/standard/base" | |||
18 | KBRANCH:qemuloongarch64 ?= "v6.12/standard/base" | 18 | KBRANCH:qemuloongarch64 ?= "v6.12/standard/base" |
19 | KBRANCH:qemumips64 ?= "v6.12/standard/mti-malta64" | 19 | KBRANCH:qemumips64 ?= "v6.12/standard/mti-malta64" |
20 | 20 | ||
21 | SRCREV_machine:qemuarm ?= "5c1cc01b780f83de6f9c0bacf45ffa2de68be95c" | 21 | SRCREV_machine:qemuarm ?= "4260a7bd706072e6bec438cdc29f44845d380b21" |
22 | SRCREV_machine:qemuarm64 ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 22 | SRCREV_machine:qemuarm64 ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
23 | SRCREV_machine:qemuloongarch64 ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 23 | SRCREV_machine:qemuloongarch64 ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
24 | SRCREV_machine:qemumips ?= "87d7d289ec3d56a1bd1d7a7c7cb46af8cf6c0f27" | 24 | SRCREV_machine:qemumips ?= "681fad27d382f2e0eb53d1b46f9d35aa2332248f" |
25 | SRCREV_machine:qemuppc ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 25 | SRCREV_machine:qemuppc ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
26 | SRCREV_machine:qemuriscv64 ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 26 | SRCREV_machine:qemuriscv64 ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
27 | SRCREV_machine:qemuriscv32 ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 27 | SRCREV_machine:qemuriscv32 ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
28 | SRCREV_machine:qemux86 ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 28 | SRCREV_machine:qemux86 ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
29 | SRCREV_machine:qemux86-64 ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 29 | SRCREV_machine:qemux86-64 ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
30 | SRCREV_machine:qemumips64 ?= "98a85ed93bd5eaefe30c4aa3f7c15549be2bd032" | 30 | SRCREV_machine:qemumips64 ?= "c32033ad8eac09b074c44a42e7d34d398df9d172" |
31 | SRCREV_machine ?= "0898369ce44f92eba60ae9bf0013bc4338ce840e" | 31 | SRCREV_machine ?= "fee8195f8412ff8f1bfc50ba86cdb8f20de22750" |
32 | SRCREV_meta ?= "60484dda26122958e5f4d8f813424fa637770bf6" | 32 | SRCREV_meta ?= "f2f3b6cbd91743920e2cb55998c53326855b2e9c" |
33 | 33 | ||
34 | # set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll | 34 | # set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll |
35 | # get the <version>/base branch, which is pure upstream -stable, and the same | 35 | # get the <version>/base branch, which is pure upstream -stable, and the same |
36 | # meta SRCREV as the linux-yocto-standard builds. Select your version using the | 36 | # meta SRCREV as the linux-yocto-standard builds. Select your version using the |
37 | # normal PREFERRED_VERSION settings. | 37 | # normal PREFERRED_VERSION settings. |
38 | BBCLASSEXTEND = "devupstream:target" | 38 | BBCLASSEXTEND = "devupstream:target" |
39 | SRCREV_machine:class-devupstream ?= "e0e2f78243385e7188a57fcfceb6a19f723f1dff" | 39 | SRCREV_machine:class-devupstream ?= "df3f6d10f353de274cc7c87f52dba5d26f185393" |
40 | PN:class-devupstream = "linux-yocto-upstream" | 40 | PN:class-devupstream = "linux-yocto-upstream" |
41 | KBRANCH:class-devupstream = "v6.12/base" | 41 | KBRANCH:class-devupstream = "v6.12/base" |
42 | 42 | ||
@@ -44,7 +44,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA | |||
44 | git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https" | 44 | git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https" |
45 | 45 | ||
46 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" | 46 | LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" |
47 | LINUX_VERSION ?= "6.12.30" | 47 | LINUX_VERSION ?= "6.12.31" |
48 | 48 | ||
49 | PV = "${LINUX_VERSION}+git" | 49 | PV = "${LINUX_VERSION}+git" |
50 | 50 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.2.bb index cbad470d26..f898db80e7 100644 --- a/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.2.bb | |||
@@ -12,7 +12,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${PV} | |||
12 | file://0001-connect-has-a-different-signature-on-musl.patch \ | 12 | file://0001-connect-has-a-different-signature-on-musl.patch \ |
13 | " | 13 | " |
14 | 14 | ||
15 | SRC_URI[sha256sum] = "32e15cb9d2dd6a07532f92745b62f1c72c8038b1a10d34b64e91c4557f689632" | 15 | SRC_URI[sha256sum] = "400ff79fe371367deb8ad1adf8b4643d6e558a433bf83136c2dd496fe8210f37" |
16 | 16 | ||
17 | DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base" | 17 | DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base" |
18 | RRECOMMENDS:${PN} = "git" | 18 | RRECOMMENDS:${PN} = "git" |
diff --git a/meta/recipes-multimedia/gstreamer/gst-examples_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gst-examples_1.26.2.bb index 59c7a4ade1..bc043f81c7 100644 --- a/meta/recipes-multimedia/gstreamer/gst-examples_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gst-examples_1.26.2.bb | |||
@@ -12,7 +12,7 @@ SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gstreamer.git;protocol=https;b | |||
12 | file://gst-player.desktop \ | 12 | file://gst-player.desktop \ |
13 | " | 13 | " |
14 | 14 | ||
15 | SRCREV = "7174e955ec066fb8d1fb683cc82713e0615826b6" | 15 | SRCREV = "100c21e1faf68efe7f3830b6e9f856760697ab48" |
16 | 16 | ||
17 | S = "${WORKDIR}/git/subprojects/gst-examples" | 17 | S = "${WORKDIR}/git/subprojects/gst-examples" |
18 | 18 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.2.bb index 96cf5a6925..88cc0b530d 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.2.bb | |||
@@ -12,7 +12,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \ | |||
12 | " | 12 | " |
13 | 13 | ||
14 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz" | 14 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz" |
15 | SRC_URI[sha256sum] = "350a20b45b6655b6e10265430bdfbb3c436a96e9611b79caabef8f10abe570ea" | 15 | SRC_URI[sha256sum] = "2eceba9cae4c495bb4ea134c27f010356036f1fa1972db5f54833f5f6c9f8db0" |
16 | 16 | ||
17 | S = "${WORKDIR}/gst-libav-${PV}" | 17 | S = "${WORKDIR}/gst-libav-${PV}" |
18 | 18 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.2.bb index a68e9306a5..e0329cd004 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.2.bb | |||
@@ -10,7 +10,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad | |||
10 | file://0002-avoid-including-sys-poll.h-directly.patch \ | 10 | file://0002-avoid-including-sys-poll.h-directly.patch \ |
11 | file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \ | 11 | file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \ |
12 | " | 12 | " |
13 | SRC_URI[sha256sum] = "9b8415b1bb3726a499578fb39907952981716643f660215fe68628fbd8629197" | 13 | SRC_URI[sha256sum] = "cb116bfc3722c2de53838899006cafdb3c7c0bc69cd769b33c992a8421a9d844" |
14 | 14 | ||
15 | S = "${WORKDIR}/gst-plugins-bad-${PV}" | 15 | S = "${WORKDIR}/gst-plugins-bad-${PV}" |
16 | 16 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.2.bb index c872c3bcfb..dc70356940 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.2.bb | |||
@@ -11,7 +11,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-ba | |||
11 | file://0003-viv-fb-Make-sure-config.h-is-included.patch \ | 11 | file://0003-viv-fb-Make-sure-config.h-is-included.patch \ |
12 | file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ | 12 | file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ |
13 | " | 13 | " |
14 | SRC_URI[sha256sum] = "659553636f84dcf388cad5cf6530e02b0b2d3dc450e76199287ba9db6a6c5226" | 14 | SRC_URI[sha256sum] = "f4b9fc0be852fe5f65401d18ae6218e4aea3ff7a3c9f8d265939b9c4704915f7" |
15 | 15 | ||
16 | S = "${WORKDIR}/gst-plugins-base-${PV}" | 16 | S = "${WORKDIR}/gst-plugins-base-${PV}" |
17 | 17 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.2.bb index ea1322a5e3..467ccd9893 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.2.bb | |||
@@ -6,7 +6,7 @@ BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues | |||
6 | 6 | ||
7 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz" | 7 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz" |
8 | 8 | ||
9 | SRC_URI[sha256sum] = "fcdcb2f77620a599557b2843d1c6c55c2b660f5fc28222b542847d11d9ca982f" | 9 | SRC_URI[sha256sum] = "d864b9aec28c3a80895468c909dd303e5f22f92d6e2b1137f80e2a1454584339" |
10 | 10 | ||
11 | S = "${WORKDIR}/gst-plugins-good-${PV}" | 11 | S = "${WORKDIR}/gst-plugins-good-${PV}" |
12 | 12 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.2.bb index 0d35abf2c6..106fea361c 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.2.bb | |||
@@ -15,7 +15,7 @@ SRC_URI = " \ | |||
15 | https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ | 15 | https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ |
16 | " | 16 | " |
17 | 17 | ||
18 | SRC_URI[sha256sum] = "34d9bcec8e88b008839d8de33fb043ae75eb04e466df74066fd66ee487a8ec4f" | 18 | SRC_URI[sha256sum] = "ec2d7556c6b8c2694f9b918ab9c4c6c998fb908c6b6a6ad57441702dad14ce73" |
19 | 19 | ||
20 | S = "${WORKDIR}/gst-plugins-ugly-${PV}" | 20 | S = "${WORKDIR}/gst-plugins-ugly-${PV}" |
21 | 21 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.2.bb index 6afd286d38..50ff21c1ef 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.2.bb | |||
@@ -8,7 +8,7 @@ LICENSE = "LGPL-2.1-or-later" | |||
8 | LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740" | 8 | LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740" |
9 | 9 | ||
10 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" | 10 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" |
11 | SRC_URI[sha256sum] = "2dce1ecc8a80ce8e0b6f0e0cb3fad3bcd5d65ebe0622ed28eaae97b4559a6a85" | 11 | SRC_URI[sha256sum] = "757ae964c16a542d60708bcb8a67c56c5be83785c0d1c534b9b9366bf676746e" |
12 | 12 | ||
13 | DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject gstreamer1.0-plugins-bad" | 13 | DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject gstreamer1.0-plugins-bad" |
14 | RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject" | 14 | RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject" |
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.2.bb index 76f6dac25d..85b5615550 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.2.bb | |||
@@ -10,7 +10,7 @@ PNREAL = "gst-rtsp-server" | |||
10 | 10 | ||
11 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" | 11 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" |
12 | 12 | ||
13 | SRC_URI[sha256sum] = "253fdfec78320c2f67486cd3797a0253c06982c3a8d5160f795b4257fadab301" | 13 | SRC_URI[sha256sum] = "f942b2a499ed6d161222868db0e80de45297b4777ff189c6fb890bde698c2dc3" |
14 | 14 | ||
15 | S = "${WORKDIR}/${PNREAL}-${PV}" | 15 | S = "${WORKDIR}/${PNREAL}-${PV}" |
16 | 16 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.2.bb index e922815162..7079641bc4 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.2.bb | |||
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c" | |||
11 | 11 | ||
12 | SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz" | 12 | SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz" |
13 | 13 | ||
14 | SRC_URI[sha256sum] = "1fc779690cd8d6c5ef3cd84e5a552f864815ea8d9c269370c8d21e0b6d5337c9" | 14 | SRC_URI[sha256sum] = "0e24194236ed3b7f06f90e90efdf17f3f5ee39132e20081189a6c7690601051a" |
15 | 15 | ||
16 | S = "${WORKDIR}/${REALPN}-${PV}" | 16 | S = "${WORKDIR}/${REALPN}-${PV}" |
17 | DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" | 17 | DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" |
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.2.bb index e4579d7342..d288236abc 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.2.bb | |||
@@ -22,7 +22,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.x | |||
22 | file://0003-tests-use-a-dictionaries-for-environment.patch \ | 22 | file://0003-tests-use-a-dictionaries-for-environment.patch \ |
23 | file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \ | 23 | file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \ |
24 | " | 24 | " |
25 | SRC_URI[sha256sum] = "30a4c4a5e48345583eb596aa265d0f53c0feb93011d93a6aaa70dd6e3c519dc4" | 25 | SRC_URI[sha256sum] = "f75334a3dff497c240844304a60015145792ecc3b6b213ac19841ccbd6fdf0ad" |
26 | 26 | ||
27 | PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \ | 27 | PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \ |
28 | check \ | 28 | check \ |
diff --git a/meta/recipes-support/apr/apr/0001-Add-option-to-disable-timed-dependant-tests.patch b/meta/recipes-support/apr/apr/0001-Add-option-to-disable-timed-dependant-tests.patch index b46dc76a86..72a2ab777e 100644 --- a/meta/recipes-support/apr/apr/0001-Add-option-to-disable-timed-dependant-tests.patch +++ b/meta/recipes-support/apr/apr/0001-Add-option-to-disable-timed-dependant-tests.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 225abf37cd0b49960664b59f08e515a4c4ea5ad0 Mon Sep 17 00:00:00 2001 | 1 | From dc02ac2f43e47178a9b1f35ef6906d7835dc121b Mon Sep 17 00:00:00 2001 |
2 | From: Jeremy Puhlman <jpuhlman@mvista.com> | 2 | From: Jeremy Puhlman <jpuhlman@mvista.com> |
3 | Date: Thu, 26 Mar 2020 18:30:36 +0000 | 3 | Date: Thu, 26 Mar 2020 18:30:36 +0000 |
4 | Subject: [PATCH] Add option to disable timed dependant tests | 4 | Subject: [PATCH] Add option to disable timed dependant tests |
@@ -9,7 +9,6 @@ a timer or other timing related issues. | |||
9 | 9 | ||
10 | Upstream-Status: Submitted [https://github.com/apache/apr/pull/54] | 10 | Upstream-Status: Submitted [https://github.com/apache/apr/pull/54] |
11 | Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> | 11 | Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> |
12 | |||
13 | --- | 12 | --- |
14 | configure.in | 6 ++++++ | 13 | configure.in | 6 ++++++ |
15 | include/apr.h.in | 1 + | 14 | include/apr.h.in | 1 + |
@@ -17,10 +16,10 @@ Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> | |||
17 | 3 files changed, 9 insertions(+), 2 deletions(-) | 16 | 3 files changed, 9 insertions(+), 2 deletions(-) |
18 | 17 | ||
19 | diff --git a/configure.in b/configure.in | 18 | diff --git a/configure.in b/configure.in |
20 | index bfd488b..3663220 100644 | 19 | index 0ce20ab..3d42953 100644 |
21 | --- a/configure.in | 20 | --- a/configure.in |
22 | +++ b/configure.in | 21 | +++ b/configure.in |
23 | @@ -3023,6 +3023,12 @@ AC_ARG_ENABLE(timedlocks, | 22 | @@ -3119,6 +3119,12 @@ AC_ARG_ENABLE(timedlocks, |
24 | ) | 23 | ) |
25 | AC_SUBST(apr_has_timedlocks) | 24 | AC_SUBST(apr_has_timedlocks) |
26 | 25 | ||
@@ -34,10 +33,10 @@ index bfd488b..3663220 100644 | |||
34 | # so getaddrinfo/gai_strerror are not used. | 33 | # so getaddrinfo/gai_strerror are not used. |
35 | if test $have_ipv6 = 0; then | 34 | if test $have_ipv6 = 0; then |
36 | diff --git a/include/apr.h.in b/include/apr.h.in | 35 | diff --git a/include/apr.h.in b/include/apr.h.in |
37 | index ee99def..c46a5f4 100644 | 36 | index 637ed38..e7cb9b9 100644 |
38 | --- a/include/apr.h.in | 37 | --- a/include/apr.h.in |
39 | +++ b/include/apr.h.in | 38 | +++ b/include/apr.h.in |
40 | @@ -298,6 +298,7 @@ extern "C" { | 39 | @@ -307,6 +307,7 @@ extern "C" { |
41 | #define APR_HAS_XTHREAD_FILES @apr_has_xthread_files@ | 40 | #define APR_HAS_XTHREAD_FILES @apr_has_xthread_files@ |
42 | #define APR_HAS_OS_UUID @osuuid@ | 41 | #define APR_HAS_OS_UUID @osuuid@ |
43 | #define APR_HAS_TIMEDLOCKS @apr_has_timedlocks@ | 42 | #define APR_HAS_TIMEDLOCKS @apr_has_timedlocks@ |
diff --git a/meta/recipes-support/apr/apr/0001-configure-Remove-runtime-test-for-mmap-that-can-map-.patch b/meta/recipes-support/apr/apr/0001-configure-Remove-runtime-test-for-mmap-that-can-map-.patch index 3480deaa4d..7e22270b88 100644 --- a/meta/recipes-support/apr/apr/0001-configure-Remove-runtime-test-for-mmap-that-can-map-.patch +++ b/meta/recipes-support/apr/apr/0001-configure-Remove-runtime-test-for-mmap-that-can-map-.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 316b81c462f065927d7fec56aadd5c8cb94d1cf0 Mon Sep 17 00:00:00 2001 | 1 | From 84990901ba642238779c74a003c1f5e572ab8d38 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Fri, 26 Aug 2022 00:28:08 -0700 | 3 | Date: Fri, 26 Aug 2022 00:28:08 -0700 |
4 | Subject: [PATCH] configure: Remove runtime test for mmap that can map | 4 | Subject: [PATCH] configure: Remove runtime test for mmap that can map |
@@ -10,16 +10,15 @@ mutexes | |||
10 | 10 | ||
11 | Upstream-Status: Inappropriate [Cross-compile specific] | 11 | Upstream-Status: Inappropriate [Cross-compile specific] |
12 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 12 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
13 | |||
14 | --- | 13 | --- |
15 | configure.in | 30 ------------------------------ | 14 | configure.in | 30 ------------------------------ |
16 | 1 file changed, 30 deletions(-) | 15 | 1 file changed, 30 deletions(-) |
17 | 16 | ||
18 | diff --git a/configure.in b/configure.in | 17 | diff --git a/configure.in b/configure.in |
19 | index 3663220..dce9789 100644 | 18 | index 3d42953..7e43b0f 100644 |
20 | --- a/configure.in | 19 | --- a/configure.in |
21 | +++ b/configure.in | 20 | +++ b/configure.in |
22 | @@ -1303,36 +1303,6 @@ AC_CHECK_FUNCS([mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \ | 21 | @@ -1391,36 +1391,6 @@ AC_CHECK_FUNCS([mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \ |
23 | APR_CHECK_DEFINE(MAP_ANON, sys/mman.h) | 22 | APR_CHECK_DEFINE(MAP_ANON, sys/mman.h) |
24 | AC_CHECK_FILE(/dev/zero) | 23 | AC_CHECK_FILE(/dev/zero) |
25 | 24 | ||
diff --git a/meta/recipes-support/apr/apr/0002-apr-Remove-workdir-path-references-from-installed-ap.patch b/meta/recipes-support/apr/apr/0002-apr-Remove-workdir-path-references-from-installed-ap.patch index d63423f3a1..2a9cfb0f3d 100644 --- a/meta/recipes-support/apr/apr/0002-apr-Remove-workdir-path-references-from-installed-ap.patch +++ b/meta/recipes-support/apr/apr/0002-apr-Remove-workdir-path-references-from-installed-ap.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 689a8db96a6d1e1cae9cbfb35d05ac82140a6555 Mon Sep 17 00:00:00 2001 | 1 | From 5050645e626a8ee91a7f45070ef2d3911e1870d7 Mon Sep 17 00:00:00 2001 |
2 | From: Hongxu Jia <hongxu.jia@windriver.com> | 2 | From: Hongxu Jia <hongxu.jia@windriver.com> |
3 | Date: Tue, 30 Jan 2018 09:39:06 +0800 | 3 | Date: Tue, 30 Jan 2018 09:39:06 +0800 |
4 | Subject: [PATCH] apr: Remove workdir path references from installed apr files | 4 | Subject: [PATCH] apr: Remove workdir path references from installed apr files |
@@ -13,16 +13,15 @@ packages at target run time, the workdir path caused confusion. | |||
13 | Rebase to 1.6.3 | 13 | Rebase to 1.6.3 |
14 | 14 | ||
15 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> | 15 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> |
16 | |||
17 | --- | 16 | --- |
18 | apr-config.in | 32 ++------------------------------ | 17 | apr-config.in | 32 ++------------------------------ |
19 | 1 file changed, 2 insertions(+), 30 deletions(-) | 18 | 1 file changed, 2 insertions(+), 30 deletions(-) |
20 | 19 | ||
21 | diff --git a/apr-config.in b/apr-config.in | 20 | diff --git a/apr-config.in b/apr-config.in |
22 | index bed47ca..47874e5 100644 | 21 | index 626d3b0..42be269 100644 |
23 | --- a/apr-config.in | 22 | --- a/apr-config.in |
24 | +++ b/apr-config.in | 23 | +++ b/apr-config.in |
25 | @@ -164,16 +164,7 @@ while test $# -gt 0; do | 24 | @@ -179,16 +179,7 @@ while test $# -gt 0; do |
26 | flags="$flags $LDFLAGS" | 25 | flags="$flags $LDFLAGS" |
27 | ;; | 26 | ;; |
28 | --includes) | 27 | --includes) |
@@ -39,7 +38,7 @@ index bed47ca..47874e5 100644 | |||
39 | ;; | 38 | ;; |
40 | --srcdir) | 39 | --srcdir) |
41 | echo $APR_SOURCE_DIR | 40 | echo $APR_SOURCE_DIR |
42 | @@ -197,33 +188,14 @@ while test $# -gt 0; do | 41 | @@ -212,33 +203,14 @@ while test $# -gt 0; do |
43 | exit 0 | 42 | exit 0 |
44 | ;; | 43 | ;; |
45 | --link-ld) | 44 | --link-ld) |
diff --git a/meta/recipes-support/apr/apr/0005-configure.in-fix-LTFLAGS-to-make-it-work-with-ccache.patch b/meta/recipes-support/apr/apr/0005-configure.in-fix-LTFLAGS-to-make-it-work-with-ccache.patch index 02634e6fde..bd8e7786ba 100644 --- a/meta/recipes-support/apr/apr/0005-configure.in-fix-LTFLAGS-to-make-it-work-with-ccache.patch +++ b/meta/recipes-support/apr/apr/0005-configure.in-fix-LTFLAGS-to-make-it-work-with-ccache.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 2e66cece0c3adff92733332111204ddc1d730a07 Mon Sep 17 00:00:00 2001 | 1 | From 2f5db35d6c6b4d40e04591c98d297ef764777aa3 Mon Sep 17 00:00:00 2001 |
2 | From: Robert Yang <liezhi.yang@windriver.com> | 2 | From: Robert Yang <liezhi.yang@windriver.com> |
3 | Date: Thu, 19 Nov 2015 18:25:38 -0800 | 3 | Date: Thu, 19 Nov 2015 18:25:38 -0800 |
4 | Subject: [PATCH 5/7] configure.in: fix LTFLAGS to make it work with ccache | 4 | Subject: [PATCH] configure.in: fix LTFLAGS to make it work with ccache |
5 | 5 | ||
6 | When ccache is enabled, libtool requires --tag=CC when use ccache, | 6 | When ccache is enabled, libtool requires --tag=CC when use ccache, |
7 | otherwise when building apr-util with ccache enabled: | 7 | otherwise when building apr-util with ccache enabled: |
@@ -19,10 +19,10 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com> | |||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | 19 | 1 file changed, 1 insertion(+), 1 deletion(-) |
20 | 20 | ||
21 | diff --git a/configure.in b/configure.in | 21 | diff --git a/configure.in b/configure.in |
22 | index 361120f..3b10422 100644 | 22 | index b0457e2..0ce20ab 100644 |
23 | --- a/configure.in | 23 | --- a/configure.in |
24 | +++ b/configure.in | 24 | +++ b/configure.in |
25 | @@ -249,7 +249,7 @@ case $host in | 25 | @@ -266,7 +266,7 @@ case $host in |
26 | ;; | 26 | ;; |
27 | *) | 27 | *) |
28 | if test "x$LTFLAGS" = "x"; then | 28 | if test "x$LTFLAGS" = "x"; then |
@@ -31,6 +31,3 @@ index 361120f..3b10422 100644 | |||
31 | fi | 31 | fi |
32 | if test "$experimental_libtool" = "yes"; then | 32 | if test "$experimental_libtool" = "yes"; then |
33 | # Use a custom-made libtool replacement | 33 | # Use a custom-made libtool replacement |
34 | -- | ||
35 | 1.8.3.1 | ||
36 | |||
diff --git a/meta/recipes-support/apr/apr_1.7.5.bb b/meta/recipes-support/apr/apr_1.7.6.bb index 83d84bfdb6..13fa5daa3c 100644 --- a/meta/recipes-support/apr/apr_1.7.5.bb +++ b/meta/recipes-support/apr/apr_1.7.6.bb | |||
@@ -24,7 +24,7 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.bz2 \ | |||
24 | file://0001-dso-Check-for-NULL-handle-in-apr_dso_sym.patch \ | 24 | file://0001-dso-Check-for-NULL-handle-in-apr_dso_sym.patch \ |
25 | " | 25 | " |
26 | 26 | ||
27 | SRC_URI[sha256sum] = "cd0f5d52b9ab1704c72160c5ee3ed5d3d4ca2df4a7f8ab564e3cb352b67232f2" | 27 | SRC_URI[sha256sum] = "49030d92d2575da735791b496dc322f3ce5cff9494779ba8cc28c7f46c5deb32" |
28 | 28 | ||
29 | inherit autotools-brokensep lib_package binconfig multilib_header ptest multilib_script | 29 | inherit autotools-brokensep lib_package binconfig multilib_header ptest multilib_script |
30 | 30 | ||
diff --git a/meta/recipes-support/enchant/enchant2_2.8.4.bb b/meta/recipes-support/enchant/enchant2_2.8.6.bb index a5479a0e7d..66de313d9d 100644 --- a/meta/recipes-support/enchant/enchant2_2.8.4.bb +++ b/meta/recipes-support/enchant/enchant2_2.8.6.bb | |||
@@ -12,7 +12,7 @@ DEPENDS = "glib-2.0 groff-native" | |||
12 | inherit autotools pkgconfig github-releases | 12 | inherit autotools pkgconfig github-releases |
13 | 13 | ||
14 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/enchant-${PV}.tar.gz" | 14 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/enchant-${PV}.tar.gz" |
15 | SRC_URI[sha256sum] = "e28f98208df5f99320d6a05cd49f83420bf71e69052debe3b343c9bb15c833ed" | 15 | SRC_URI[sha256sum] = "c4cd0889d8aff8248fc3913de5a83907013962f0e1895030a3836468cd40af5b" |
16 | 16 | ||
17 | GITHUB_BASE_URI = "https://github.com/rrthomas/enchant/releases" | 17 | GITHUB_BASE_URI = "https://github.com/rrthomas/enchant/releases" |
18 | 18 | ||
diff --git a/meta/recipes-support/gpgme/gpgme_1.24.2.bb b/meta/recipes-support/gpgme/gpgme_1.24.3.bb index bc661429e7..64e3c6635a 100644 --- a/meta/recipes-support/gpgme/gpgme_1.24.2.bb +++ b/meta/recipes-support/gpgme/gpgme_1.24.3.bb | |||
@@ -29,7 +29,7 @@ SRC_URI = "${GNUPG_MIRROR}/gpgme/${BP}.tar.bz2 \ | |||
29 | file://0001-autogen.sh-remove-unknown-in-version.patch \ | 29 | file://0001-autogen.sh-remove-unknown-in-version.patch \ |
30 | " | 30 | " |
31 | 31 | ||
32 | SRC_URI[sha256sum] = "e11b1a0e361777e9e55f48a03d89096e2abf08c63d84b7017cfe1dce06639581" | 32 | SRC_URI[sha256sum] = "bfc17f5bd1b178c8649fdd918956d277080f33df006a2dc40acdecdce68c50dd" |
33 | 33 | ||
34 | PYTHON_DEPS = "${@bb.utils.contains('LANGUAGES', 'python', 'swig-native', '', d)}" | 34 | PYTHON_DEPS = "${@bb.utils.contains('LANGUAGES', 'python', 'swig-native', '', d)}" |
35 | 35 | ||
diff --git a/meta/recipes-support/hwdata/hwdata_0.394.bb b/meta/recipes-support/hwdata/hwdata_0.395.bb index 54edcecc2c..73b846b181 100644 --- a/meta/recipes-support/hwdata/hwdata_0.394.bb +++ b/meta/recipes-support/hwdata/hwdata_0.395.bb | |||
@@ -8,7 +8,7 @@ LICENSE = "GPL-2.0-or-later | X11" | |||
8 | LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57" | 8 | LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57" |
9 | 9 | ||
10 | SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https;tag=v${PV}" | 10 | SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https;tag=v${PV}" |
11 | SRCREV = "fa1ccf4e4944bdb4110025c5c40e4fee8c8de29b" | 11 | SRCREV = "95c1de6c4a0d40415867b29c0791480fb8ad3cdb" |
12 | 12 | ||
13 | S = "${WORKDIR}/git" | 13 | S = "${WORKDIR}/git" |
14 | 14 | ||
diff --git a/meta/recipes-support/libgcrypt/files/0001-tests-Fix-link-errors-for-t-thread-local.patch b/meta/recipes-support/libgcrypt/files/0001-tests-Fix-link-errors-for-t-thread-local.patch new file mode 100644 index 0000000000..5ebc3831d4 --- /dev/null +++ b/meta/recipes-support/libgcrypt/files/0001-tests-Fix-link-errors-for-t-thread-local.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From 746dc1c3837546c1085102e546a83da8d1c773e1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Collin Funk <collin.funk1@gmail.com> | ||
3 | Date: Thu, 1 May 2025 22:20:58 -0700 | ||
4 | Subject: [PATCH] tests: Fix link errors for t-thread-local. | ||
5 | |||
6 | On platforms where pthread_create is not in libc t-thread-local fails to | ||
7 | link. Issue found on NetBSD 10.0. | ||
8 | * tests/Makefile.am (t_thread_local_LDADD): Add $(standard_ldadd), | ||
9 | $(GPG_ERROR_MT_LIBS), and @LDADD_FOR_TESTS_KLUDGE@. | ||
10 | (t_thread_local_CFLAGS): Add $(GPG_ERROR_MT_CFLAGS). | ||
11 | |||
12 | -- | ||
13 | |||
14 | Upstream-Status: Backport [793eda7b258a562757b51c96044b103b638f1a63] | ||
15 | GnuPG-bug-id: 7634 | ||
16 | Signed-off-by: Collin Funk <collin.funk1@gmail.com> | ||
17 | Signed-off-by: Hiago De Franco <hiago.franco@toradex.com> | ||
18 | --- | ||
19 | tests/Makefile.am | 2 ++ | ||
20 | 1 file changed, 2 insertions(+) | ||
21 | |||
22 | diff --git a/tests/Makefile.am b/tests/Makefile.am | ||
23 | index 9a9e1c2c264a..b80f266f97c2 100644 | ||
24 | --- a/tests/Makefile.am | ||
25 | +++ b/tests/Makefile.am | ||
26 | @@ -94,6 +94,8 @@ t_secmem_LDADD = $(standard_ldadd) @LDADD_FOR_TESTS_KLUDGE@ | ||
27 | testapi_LDADD = $(standard_ldadd) @LDADD_FOR_TESTS_KLUDGE@ | ||
28 | t_lock_LDADD = $(standard_ldadd) $(GPG_ERROR_MT_LIBS) @LDADD_FOR_TESTS_KLUDGE@ | ||
29 | t_lock_CFLAGS = $(GPG_ERROR_MT_CFLAGS) -lpthread | ||
30 | +t_thread_local_LDADD = $(standard_ldadd) $(GPG_ERROR_MT_LIBS) @LDADD_FOR_TESTS_KLUDGE@ | ||
31 | +t_thread_local_CFLAGS = $(GPG_ERROR_MT_CFLAGS) -lpthread | ||
32 | testdrv_LDADD = $(LDADD_FOR_TESTS_KLUDGE) | ||
33 | |||
34 | # Build a version of the test driver for the build platform. | ||
diff --git a/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb b/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb index e51a20e5bf..5574e8c821 100644 --- a/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb +++ b/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb | |||
@@ -21,6 +21,7 @@ UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" | |||
21 | SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \ | 21 | SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \ |
22 | file://0001-libgcrypt-fix-m4-file-for-oe-core.patch \ | 22 | file://0001-libgcrypt-fix-m4-file-for-oe-core.patch \ |
23 | file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \ | 23 | file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \ |
24 | file://0001-tests-Fix-link-errors-for-t-thread-local.patch \ | ||
24 | file://no-native-gpg-error.patch \ | 25 | file://no-native-gpg-error.patch \ |
25 | file://no-bench-slope.patch \ | 26 | file://no-bench-slope.patch \ |
26 | file://run-ptest \ | 27 | file://run-ptest \ |
diff --git a/meta/recipes-support/libunwind/libunwind/0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch b/meta/recipes-support/libunwind/libunwind/0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch deleted file mode 100644 index 19bdd858f7..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | From e5216c3fb1fa8d60a18c68e4749a3ff902f6678b Mon Sep 17 00:00:00 2001 | ||
2 | From: Ian Zborovsky <ian@veego.io> | ||
3 | Date: Mon, 6 May 2024 02:01:19 +0300 | ||
4 | Subject: [PATCH 3/4] Fixed miscompilation of unw_getcontext() on ARM | ||
5 | |||
6 | Upstream-Status: Backport | ||
7 | Signed-off-by: Ross Burton <ross.burton@arm.com> | ||
8 | --- | ||
9 | include/libunwind-arm.h | 2 +- | ||
10 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
11 | |||
12 | diff --git a/include/libunwind-arm.h b/include/libunwind-arm.h | ||
13 | index 6cfa577d..6643a185 100644 | ||
14 | --- a/include/libunwind-arm.h | ||
15 | +++ b/include/libunwind-arm.h | ||
16 | @@ -288,7 +288,7 @@ unw_tdep_context_t; | ||
17 | "mov r0, #0\n\t" \ | ||
18 | "stmia %[base]!, {r0-r15}\n\t" \ | ||
19 | VSTMIA \ | ||
20 | - : [r0] "=r" (r0) : [base] "r" (unw_base) : "memory"); \ | ||
21 | + : [r0] "=r" (r0), [base] "+r" (unw_base) : : "memory"); \ | ||
22 | (int)r0; }) | ||
23 | #else /* __thumb__ */ | ||
24 | #define unw_tdep_getcontext(uc) ({ \ | ||
25 | -- | ||
26 | 2.34.1 | ||
27 | |||
diff --git a/meta/recipes-support/libunwind/libunwind/0004-Rework-inline-aarch64-as-for-setcontext.patch b/meta/recipes-support/libunwind/libunwind/0004-Rework-inline-aarch64-as-for-setcontext.patch deleted file mode 100644 index 005a077028..0000000000 --- a/meta/recipes-support/libunwind/libunwind/0004-Rework-inline-aarch64-as-for-setcontext.patch +++ /dev/null | |||
@@ -1,163 +0,0 @@ | |||
1 | From a832070f3665d29a8a06652c15f94d144c24ac69 Mon Sep 17 00:00:00 2001 | ||
2 | From: Stephen Webb <swebb@blackberry.com> | ||
3 | Date: Mon, 22 Apr 2024 15:56:54 -0400 | ||
4 | Subject: [PATCH 4/5] Rework inline aarch64 as for setcontext | ||
5 | |||
6 | Modern GC and clang were barfing on the inline asm constraints for the | ||
7 | aarch64-linux setcontext() replacement. Reformulated the asm code to | ||
8 | reduce the required constraints. | ||
9 | |||
10 | Upstream-Status: Backport | ||
11 | Signed-off-by: Ross Burton <ross.burton@arm.com> | ||
12 | --- | ||
13 | src/aarch64/Gos-linux.c | 115 +++++++++++++++++++++------------------- | ||
14 | 1 file changed, 61 insertions(+), 54 deletions(-) | ||
15 | |||
16 | diff --git a/src/aarch64/Gos-linux.c b/src/aarch64/Gos-linux.c | ||
17 | index 7cd8c879..1e494962 100644 | ||
18 | --- a/src/aarch64/Gos-linux.c | ||
19 | +++ b/src/aarch64/Gos-linux.c | ||
20 | @@ -2,6 +2,7 @@ | ||
21 | Copyright (C) 2008 CodeSourcery | ||
22 | Copyright (C) 2011-2013 Linaro Limited | ||
23 | Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com> | ||
24 | + Copyright 2024 Stephen M. Webb <swebb@blackberry.com> | ||
25 | |||
26 | This file is part of libunwind. | ||
27 | |||
28 | @@ -28,6 +29,28 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ | ||
29 | |||
30 | #ifndef UNW_REMOTE_ONLY | ||
31 | |||
32 | +/* Magic constants generated from gen-offsets.c */ | ||
33 | +#define SC_R0_OFF "8" | ||
34 | +#define SC_R2_OFF "24" | ||
35 | +#define SC_R18_OFF "152" | ||
36 | +#define SC_R20_OFF "168" | ||
37 | +#define SC_R22_OFF "184" | ||
38 | +#define SC_R24_OFF "200" | ||
39 | +#define SC_R26_OFF "216" | ||
40 | +#define SC_R28_OFF "232" | ||
41 | +#define SC_R30_OFF "248" | ||
42 | + | ||
43 | +#define FP_R08_OFF "80" | ||
44 | +#define FP_R09_OFF "88" | ||
45 | +#define FP_R10_OFF "96" | ||
46 | +#define FP_R11_OFF "104" | ||
47 | +#define FP_R12_OFF "112" | ||
48 | +#define FP_R13_OFF "120" | ||
49 | +#define FP_R14_OFF "128" | ||
50 | +#define FP_R15_OFF "136" | ||
51 | + | ||
52 | +#define SC_SP_OFF "0x100" | ||
53 | + | ||
54 | HIDDEN int | ||
55 | aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) | ||
56 | { | ||
57 | @@ -36,65 +59,49 @@ aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) | ||
58 | |||
59 | if (c->sigcontext_format == AARCH64_SCF_NONE) | ||
60 | { | ||
61 | + | ||
62 | + /* | ||
63 | + * This is effectively the old POSIX setcontext(). | ||
64 | + * | ||
65 | + * This inline asm is broken up to use local scratch registers for the | ||
66 | + * uc_mcontext.regs and FPCTX base addresses because newer versions of GCC | ||
67 | + * and clang barf on too many constraints (gh-702) when the C array | ||
68 | + * elements are used directly. | ||
69 | + * | ||
70 | + * Clobbers aren't required for the inline asm because they just convince | ||
71 | + * the compiler to save those registers and they never get restored | ||
72 | + * becauise the asm ends with a plain ol' ret. | ||
73 | + */ | ||
74 | + register void* uc_mcontext __asm__ ("x5") = (void*) &uc->uc_mcontext; | ||
75 | + register void* fpctx __asm__ ("x4") = (void*) GET_FPCTX(uc); | ||
76 | + | ||
77 | /* Since there are no signals involved here we restore EH and non scratch | ||
78 | registers only. */ | ||
79 | __asm__ __volatile__ ( | ||
80 | - "ldr x0, %[x0]\n\t" | ||
81 | - "ldr x1, %[x1]\n\t" | ||
82 | - "ldr x2, %[x2]\n\t" | ||
83 | - "ldr x3, %[x3]\n\t" | ||
84 | - "ldr x19, %[x19]\n\t" | ||
85 | - "ldr x20, %[x20]\n\t" | ||
86 | - "ldr x21, %[x21]\n\t" | ||
87 | - "ldr x22, %[x22]\n\t" | ||
88 | - "ldr x23, %[x23]\n\t" | ||
89 | - "ldr x24, %[x24]\n\t" | ||
90 | - "ldr x25, %[x25]\n\t" | ||
91 | - "ldr x26, %[x26]\n\t" | ||
92 | - "ldr x27, %[x27]\n\t" | ||
93 | - "ldr x28, %[x28]\n\t" | ||
94 | - "ldr x29, %[x29]\n\t" | ||
95 | - "ldr x30, %[x30]\n\t" | ||
96 | - "ldr d8, %[d8]\n\t" | ||
97 | - "ldr d9, %[d9]\n\t" | ||
98 | - "ldr d10, %[d10]\n\t" | ||
99 | - "ldr d11, %[d11]\n\t" | ||
100 | - "ldr d12, %[d12]\n\t" | ||
101 | - "ldr d13, %[d13]\n\t" | ||
102 | - "ldr d14, %[d14]\n\t" | ||
103 | - "ldr d15, %[d15]\n\t" | ||
104 | - "ldr x5, %[sp]\n\t" | ||
105 | + "ldp x0, x1, [x5, " SC_R0_OFF "]\n\t" | ||
106 | + "ldp x2, x3, [x5, " SC_R2_OFF "]\n\t" | ||
107 | + "ldp x18, x19, [x5, " SC_R18_OFF "]\n\t" | ||
108 | + "ldp x20, x21, [x5, " SC_R20_OFF "]\n\t" | ||
109 | + "ldp x22, x23, [x5, " SC_R22_OFF "]\n\t" | ||
110 | + "ldp x24, x25, [x5, " SC_R24_OFF "]\n\t" | ||
111 | + "ldp x26, x27, [x5, " SC_R26_OFF "]\n\t" | ||
112 | + "ldp x28, x29, [x5, " SC_R28_OFF "]\n\t" | ||
113 | + "ldr x30, [x5, " SC_R30_OFF "]\n\t" | ||
114 | + "ldr d8, [x4, " FP_R08_OFF "]\n\t" | ||
115 | + "ldr d9, [x4, " FP_R09_OFF "]\n\t" | ||
116 | + "ldr d10, [x4, " FP_R10_OFF "]\n\t" | ||
117 | + "ldr d11, [x4, " FP_R11_OFF "]\n\t" | ||
118 | + "ldr d12, [x4, " FP_R12_OFF "]\n\t" | ||
119 | + "ldr d13, [x4, " FP_R13_OFF "]\n\t" | ||
120 | + "ldr d14, [x4, " FP_R14_OFF "]\n\t" | ||
121 | + "ldr d15, [x4, " FP_R15_OFF "]\n\t" | ||
122 | + "ldr x5, [x5, " SC_SP_OFF "]\n\t" | ||
123 | "mov sp, x5\n\t" | ||
124 | "ret\n" | ||
125 | - : | ||
126 | - : [x0] "m"(uc->uc_mcontext.regs[0]), | ||
127 | - [x1] "m"(uc->uc_mcontext.regs[1]), | ||
128 | - [x2] "m"(uc->uc_mcontext.regs[2]), | ||
129 | - [x3] "m"(uc->uc_mcontext.regs[3]), | ||
130 | - [x19] "m"(uc->uc_mcontext.regs[19]), | ||
131 | - [x20] "m"(uc->uc_mcontext.regs[20]), | ||
132 | - [x21] "m"(uc->uc_mcontext.regs[21]), | ||
133 | - [x22] "m"(uc->uc_mcontext.regs[22]), | ||
134 | - [x23] "m"(uc->uc_mcontext.regs[23]), | ||
135 | - [x24] "m"(uc->uc_mcontext.regs[24]), | ||
136 | - [x25] "m"(uc->uc_mcontext.regs[25]), | ||
137 | - [x26] "m"(uc->uc_mcontext.regs[26]), | ||
138 | - [x27] "m"(uc->uc_mcontext.regs[27]), | ||
139 | - [x28] "m"(uc->uc_mcontext.regs[28]), | ||
140 | - [x29] "m"(uc->uc_mcontext.regs[29]), /* FP */ | ||
141 | - [x30] "m"(uc->uc_mcontext.regs[30]), /* LR */ | ||
142 | - [d8] "m"(GET_FPCTX(uc)->vregs[8]), | ||
143 | - [d9] "m"(GET_FPCTX(uc)->vregs[9]), | ||
144 | - [d10] "m"(GET_FPCTX(uc)->vregs[10]), | ||
145 | - [d11] "m"(GET_FPCTX(uc)->vregs[11]), | ||
146 | - [d12] "m"(GET_FPCTX(uc)->vregs[12]), | ||
147 | - [d13] "m"(GET_FPCTX(uc)->vregs[13]), | ||
148 | - [d14] "m"(GET_FPCTX(uc)->vregs[14]), | ||
149 | - [d15] "m"(GET_FPCTX(uc)->vregs[15]), | ||
150 | - [sp] "m"(uc->uc_mcontext.sp) | ||
151 | - : "x0", "x1", "x2", "x3", "x19", "x20", "x21", "x22", "x23", "x24", | ||
152 | - "x25", "x26", "x27", "x28", "x29", "x30" | ||
153 | - ); | ||
154 | + : | ||
155 | + : [uc_mcontext] "r"(uc_mcontext), | ||
156 | + [fpctx] "r"(fpctx) | ||
157 | + ); | ||
158 | } | ||
159 | else | ||
160 | { | ||
161 | -- | ||
162 | 2.34.1 | ||
163 | |||
diff --git a/meta/recipes-support/libunwind/libunwind/libatomic.patch b/meta/recipes-support/libunwind/libunwind/libatomic.patch index f39e92f2ee..e783128e2c 100644 --- a/meta/recipes-support/libunwind/libunwind/libatomic.patch +++ b/meta/recipes-support/libunwind/libunwind/libatomic.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From d6a0d8ce07c761e51b9dc7c5d16a9b06c3e93560 Mon Sep 17 00:00:00 2001 | 1 | From a331e3a63981427724d2d9cfdcb4a456153299b5 Mon Sep 17 00:00:00 2001 |
2 | From: Stephen Webb <swebb@blackberry.com> | 2 | From: Stephen Webb <swebb@blackberry.com> |
3 | Date: Mon, 18 Mar 2024 10:22:26 -0400 | 3 | Date: Mon, 18 Mar 2024 10:22:26 -0400 |
4 | Subject: [PATCH] configure.ac: detect if -latomic is required | 4 | Subject: [PATCH] configure.ac: detect if -latomic is required |
@@ -14,10 +14,10 @@ Signed-off-by: Ross Burton <ross.burton@arm.com> | |||
14 | 1 file changed, 12 insertions(+) | 14 | 1 file changed, 12 insertions(+) |
15 | 15 | ||
16 | diff --git a/configure.ac b/configure.ac | 16 | diff --git a/configure.ac b/configure.ac |
17 | index 758a27d19..d0ef5f3d9 100644 | 17 | index eaa0ddc..d5f1d4a 100644 |
18 | --- a/configure.ac | 18 | --- a/configure.ac |
19 | +++ b/configure.ac | 19 | +++ b/configure.ac |
20 | @@ -94,6 +94,18 @@ dnl Checks for library functions. | 20 | @@ -93,6 +93,18 @@ dnl Checks for library functions. |
21 | AC_CHECK_FUNCS(dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \ | 21 | AC_CHECK_FUNCS(dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \ |
22 | ttrace mincore pipe2 sigaltstack execvpe) | 22 | ttrace mincore pipe2 sigaltstack execvpe) |
23 | 23 | ||
diff --git a/meta/recipes-support/libunwind/libunwind/malloc.patch b/meta/recipes-support/libunwind/libunwind/malloc.patch index 026a56f155..cfcef1ccdc 100644 --- a/meta/recipes-support/libunwind/libunwind/malloc.patch +++ b/meta/recipes-support/libunwind/libunwind/malloc.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From b67d508a93bf1ba231c18dce3894cfee25c16e0d Mon Sep 17 00:00:00 2001 | 1 | From 8fd3e0c24fdfed64e0642ec0334548f16a2a9390 Mon Sep 17 00:00:00 2001 |
2 | From: Stephen Webb <swebb@blackberry.com> | 2 | From: Stephen Webb <swebb@blackberry.com> |
3 | Date: Wed, 12 Feb 2025 12:08:07 -0500 | 3 | Date: Wed, 12 Feb 2025 12:08:07 -0500 |
4 | Subject: [PATCH] Fix bad prototype for malloc() in test | 4 | Subject: [PATCH] Fix bad prototype for malloc() in test |
@@ -23,7 +23,7 @@ Signed-off-by: Ross Burton <ross.burton@arm.com> | |||
23 | create mode 100644 tests/unw_test.h | 23 | create mode 100644 tests/unw_test.h |
24 | 24 | ||
25 | diff --git a/tests/Gtest-nomalloc.c b/tests/Gtest-nomalloc.c | 25 | diff --git a/tests/Gtest-nomalloc.c b/tests/Gtest-nomalloc.c |
26 | index 5b97fc709..e770ff614 100644 | 26 | index 5b97fc7..e770ff6 100644 |
27 | --- a/tests/Gtest-nomalloc.c | 27 | --- a/tests/Gtest-nomalloc.c |
28 | +++ b/tests/Gtest-nomalloc.c | 28 | +++ b/tests/Gtest-nomalloc.c |
29 | @@ -1,78 +1,92 @@ | 29 | @@ -1,78 +1,92 @@ |
@@ -188,10 +188,10 @@ index 5b97fc709..e770ff614 100644 | |||
188 | + exit (UNW_TEST_EXIT_PASS); | 188 | + exit (UNW_TEST_EXIT_PASS); |
189 | } | 189 | } |
190 | diff --git a/tests/Makefile.am b/tests/Makefile.am | 190 | diff --git a/tests/Makefile.am b/tests/Makefile.am |
191 | index adc34ac63..60f3f3adc 100644 | 191 | index e2b07bc..844105a 100644 |
192 | --- a/tests/Makefile.am | 192 | --- a/tests/Makefile.am |
193 | +++ b/tests/Makefile.am | 193 | +++ b/tests/Makefile.am |
194 | @@ -214,7 +214,7 @@ endif | 194 | @@ -200,7 +200,7 @@ endif |
195 | 195 | ||
196 | noinst_PROGRAMS = $(noinst_PROGRAMS_common) $(noinst_PROGRAMS_cdep) \ | 196 | noinst_PROGRAMS = $(noinst_PROGRAMS_common) $(noinst_PROGRAMS_cdep) \ |
197 | $(noinst_PROGRAMS_arch) | 197 | $(noinst_PROGRAMS_arch) |
@@ -202,7 +202,7 @@ index adc34ac63..60f3f3adc 100644 | |||
202 | -e 's,[@]XFAIL_TESTS[@],$(XFAIL_TESTS),g' \ | 202 | -e 's,[@]XFAIL_TESTS[@],$(XFAIL_TESTS),g' \ |
203 | diff --git a/tests/unw_test.h b/tests/unw_test.h | 203 | diff --git a/tests/unw_test.h b/tests/unw_test.h |
204 | new file mode 100644 | 204 | new file mode 100644 |
205 | index 000000000..9ae86dce1 | 205 | index 0000000..9ae86dc |
206 | --- /dev/null | 206 | --- /dev/null |
207 | +++ b/tests/unw_test.h | 207 | +++ b/tests/unw_test.h |
208 | @@ -0,0 +1,47 @@ | 208 | @@ -0,0 +1,47 @@ |
diff --git a/meta/recipes-support/libunwind/libunwind_1.8.1.bb b/meta/recipes-support/libunwind/libunwind_1.8.2.bb index 10714ea247..6f7168b5df 100644 --- a/meta/recipes-support/libunwind/libunwind_1.8.1.bb +++ b/meta/recipes-support/libunwind/libunwind_1.8.2.bb | |||
@@ -10,14 +10,12 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \ | |||
10 | file://mips-byte-order.patch \ | 10 | file://mips-byte-order.patch \ |
11 | file://0001-tests-Garm64-test-sve-signal-check-that-SVE-is-prese.patch \ | 11 | file://0001-tests-Garm64-test-sve-signal-check-that-SVE-is-prese.patch \ |
12 | file://0002-coredump-use-glibc-or-musl-register-names-as-appropr.patch \ | 12 | file://0002-coredump-use-glibc-or-musl-register-names-as-appropr.patch \ |
13 | file://0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch \ | ||
14 | file://0004-Rework-inline-aarch64-as-for-setcontext.patch \ | ||
15 | file://0005-Handle-musl-on-PPC32.patch \ | 13 | file://0005-Handle-musl-on-PPC32.patch \ |
16 | file://libatomic.patch \ | 14 | file://libatomic.patch \ |
17 | file://malloc.patch \ | 15 | file://malloc.patch \ |
18 | " | 16 | " |
19 | 17 | ||
20 | SRC_URI[sha256sum] = "ddf0e32dd5fafe5283198d37e4bf9decf7ba1770b6e7e006c33e6df79e6a6157" | 18 | SRC_URI[sha256sum] = "7f262f1a1224f437ede0f96a6932b582c8f5421ff207c04e3d9504dfa04c8b82" |
21 | 19 | ||
22 | inherit autotools multilib_header github-releases | 20 | inherit autotools multilib_header github-releases |
23 | 21 | ||
diff --git a/meta/recipes-support/liburcu/liburcu_0.15.2.bb b/meta/recipes-support/liburcu/liburcu_0.15.3.bb index 93d6a6551f..fb4e457719 100644 --- a/meta/recipes-support/liburcu/liburcu_0.15.2.bb +++ b/meta/recipes-support/liburcu/liburcu_0.15.3.bb | |||
@@ -14,7 +14,7 @@ LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c2a92498b6e88e276f986877995425b8 \ | |||
14 | 14 | ||
15 | SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2" | 15 | SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2" |
16 | 16 | ||
17 | SRC_URI[sha256sum] = "59f36f2b8bda1b7620a7eced2634f26c549444818a8313025a3bb09c0766a61d" | 17 | SRC_URI[sha256sum] = "26687ec84e3e114759454c884a08abeaf79dec09b041895ddf4c45ec150acb6d" |
18 | 18 | ||
19 | S = "${WORKDIR}/userspace-rcu-${PV}" | 19 | S = "${WORKDIR}/userspace-rcu-${PV}" |
20 | inherit autotools multilib_header | 20 | inherit autotools multilib_header |
diff --git a/meta/recipes-support/libusb/libusb1_1.0.28.bb b/meta/recipes-support/libusb/libusb1_1.0.29.bb index 51287499b7..bae5e2c09f 100644 --- a/meta/recipes-support/libusb/libusb1_1.0.28.bb +++ b/meta/recipes-support/libusb/libusb1_1.0.29.bb | |||
@@ -19,7 +19,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libusb-${PV}.tar.bz2 \ | |||
19 | GITHUB_BASE_URI = "https://github.com/libusb/libusb/releases" | 19 | GITHUB_BASE_URI = "https://github.com/libusb/libusb/releases" |
20 | UPSTREAM_CHECK_REGEX = "releases/tag/v?(?P<pver>\d+(\.\d+)+)$" | 20 | UPSTREAM_CHECK_REGEX = "releases/tag/v?(?P<pver>\d+(\.\d+)+)$" |
21 | 21 | ||
22 | SRC_URI[sha256sum] = "966bb0d231f94a474eaae2e67da5ec844d3527a1f386456394ff432580634b29" | 22 | SRC_URI[sha256sum] = "5977fc950f8d1395ccea9bd48c06b3f808fd3c2c961b44b0c2e6e29fc3a70a85" |
23 | 23 | ||
24 | S = "${WORKDIR}/libusb-${PV}" | 24 | S = "${WORKDIR}/libusb-${PV}" |
25 | 25 | ||
diff --git a/meta/recipes-support/taglib/taglib_2.0.2.bb b/meta/recipes-support/taglib/taglib_2.1.bb index 254119268c..a337af74d0 100644 --- a/meta/recipes-support/taglib/taglib_2.0.2.bb +++ b/meta/recipes-support/taglib/taglib_2.1.bb | |||
@@ -11,7 +11,7 @@ DEPENDS = "zlib utfcpp" | |||
11 | 11 | ||
12 | SRC_URI = "http://taglib.github.io/releases/${BP}.tar.gz" | 12 | SRC_URI = "http://taglib.github.io/releases/${BP}.tar.gz" |
13 | 13 | ||
14 | SRC_URI[sha256sum] = "0de288d7fe34ba133199fd8512f19cc1100196826eafcb67a33b224ec3a59737" | 14 | SRC_URI[sha256sum] = "95b788b39eaebab41f7e6d1c1d05ceee01a5d1225e4b6d11ed8976e96ba90b0c" |
15 | 15 | ||
16 | UPSTREAM_CHECK_URI = "https://taglib.org/" | 16 | UPSTREAM_CHECK_URI = "https://taglib.org/" |
17 | UPSTREAM_CHECK_REGEX = "taglib-(?P<pver>\d+(\.\d+)+)\.tar" | 17 | UPSTREAM_CHECK_REGEX = "taglib-(?P<pver>\d+(\.\d+)+)\.tar" |
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index ea2ef5be63..94d52d6077 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py | |||
@@ -1250,7 +1250,7 @@ def match_licenses(licfiles, srctree, d): | |||
1250 | license = 'Unknown' | 1250 | license = 'Unknown' |
1251 | logger.info("Please add the following line for '%s' to a 'lib/recipetool/licenses.csv' " \ | 1251 | logger.info("Please add the following line for '%s' to a 'lib/recipetool/licenses.csv' " \ |
1252 | "and replace `Unknown` with the license:\n" \ | 1252 | "and replace `Unknown` with the license:\n" \ |
1253 | "%s,Unknown" % (os.path.relpath(licfile, srctree), md5value)) | 1253 | "%s,Unknown" % (os.path.relpath(licfile, srctree + "/.."), md5value)) |
1254 | if license: | 1254 | if license: |
1255 | licenses.append((license, os.path.relpath(licfile, srctree), md5value)) | 1255 | licenses.append((license, os.path.relpath(licfile, srctree), md5value)) |
1256 | 1256 | ||
diff --git a/scripts/lib/scriptutils.py b/scripts/lib/scriptutils.py index 81f0b01fa5..32e749dbb1 100644 --- a/scripts/lib/scriptutils.py +++ b/scripts/lib/scriptutils.py | |||
@@ -182,7 +182,10 @@ def fetch_url(tinfoil, srcuri, srcrev, destdir, logger, preserve_tmp=False, mirr | |||
182 | f.write('UNPACKDIR = "%s"\n' % destdir) | 182 | f.write('UNPACKDIR = "%s"\n' % destdir) |
183 | 183 | ||
184 | # Set S out of the way so it doesn't get created under the workdir | 184 | # Set S out of the way so it doesn't get created under the workdir |
185 | f.write('S = "%s"\n' % os.path.join(tmpdir, 'emptysrc')) | 185 | s_dir = os.path.join(tmpdir, 'emptysrc') |
186 | bb.utils.mkdirhier(s_dir) | ||
187 | f.write('S = "%s"\n' % s_dir) | ||
188 | |||
186 | if not mirrors: | 189 | if not mirrors: |
187 | # We do not need PREMIRRORS since we are almost certainly | 190 | # We do not need PREMIRRORS since we are almost certainly |
188 | # fetching new source rather than something that has already | 191 | # fetching new source rather than something that has already |