diff options
Diffstat (limited to 'meta/classes-recipe')
-rw-r--r-- | meta/classes-recipe/barebox.bbclass | 2 | ||||
-rw-r--r-- | meta/classes-recipe/crosssdk.bbclass | 1 | ||||
-rw-r--r-- | meta/classes-recipe/devicetree.bbclass | 3 | ||||
-rw-r--r-- | meta/classes-recipe/devupstream.bbclass | 6 | ||||
-rw-r--r-- | meta/classes-recipe/go-mod-update-modules.bbclass | 152 | ||||
-rw-r--r-- | meta/classes-recipe/go-mod.bbclass | 2 | ||||
-rw-r--r-- | meta/classes-recipe/image-live.bbclass | 5 | ||||
-rw-r--r-- | meta/classes-recipe/image_types_wic.bbclass | 12 | ||||
-rw-r--r-- | meta/classes-recipe/kernel-fit-image.bbclass | 3 | ||||
-rw-r--r-- | meta/classes-recipe/kernel-yocto.bbclass | 16 | ||||
-rw-r--r-- | meta/classes-recipe/pypi.bbclass | 2 | ||||
-rw-r--r-- | meta/classes-recipe/rust-target-config.bbclass | 67 | ||||
-rw-r--r-- | meta/classes-recipe/testsdk.bbclass | 1 | ||||
-rw-r--r-- | meta/classes-recipe/uboot-config.bbclass | 15 | ||||
-rw-r--r-- | meta/classes-recipe/uboot-sign.bbclass | 74 |
15 files changed, 276 insertions, 85 deletions
diff --git a/meta/classes-recipe/barebox.bbclass b/meta/classes-recipe/barebox.bbclass index a562dce169..ece8fb6485 100644 --- a/meta/classes-recipe/barebox.bbclass +++ b/meta/classes-recipe/barebox.bbclass | |||
@@ -14,7 +14,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" | |||
14 | 14 | ||
15 | DEPENDS += "bison-native flex-native lz4-native" | 15 | DEPENDS += "bison-native flex-native lz4-native" |
16 | 16 | ||
17 | S = "${WORKDIR}/barebox-${PV}" | 17 | S = "${UNPACKDIR}/barebox-${PV}" |
18 | B = "${WORKDIR}/build" | 18 | B = "${WORKDIR}/build" |
19 | 19 | ||
20 | require conf/image-uefi.conf | 20 | require conf/image-uefi.conf |
diff --git a/meta/classes-recipe/crosssdk.bbclass b/meta/classes-recipe/crosssdk.bbclass index 824b1bcff4..3541c2c393 100644 --- a/meta/classes-recipe/crosssdk.bbclass +++ b/meta/classes-recipe/crosssdk.bbclass | |||
@@ -4,6 +4,7 @@ | |||
4 | # SPDX-License-Identifier: MIT | 4 | # SPDX-License-Identifier: MIT |
5 | # | 5 | # |
6 | 6 | ||
7 | BB_DEFER_BBCLASSES:remove = "cross" | ||
7 | inherit cross | 8 | inherit cross |
8 | 9 | ||
9 | CLASSOVERRIDE = "class-crosssdk" | 10 | CLASSOVERRIDE = "class-crosssdk" |
diff --git a/meta/classes-recipe/devicetree.bbclass b/meta/classes-recipe/devicetree.bbclass index 2a2ac93e9b..ce9d008aac 100644 --- a/meta/classes-recipe/devicetree.bbclass +++ b/meta/classes-recipe/devicetree.bbclass | |||
@@ -40,8 +40,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" | |||
40 | SYSROOT_DIRS += "/boot/devicetree" | 40 | SYSROOT_DIRS += "/boot/devicetree" |
41 | FILES:${PN} = "/boot/devicetree/*.dtb /boot/devicetree/*.dtbo" | 41 | FILES:${PN} = "/boot/devicetree/*.dtb /boot/devicetree/*.dtbo" |
42 | 42 | ||
43 | S = "${WORKDIR}/sources" | 43 | S = "${UNPACKDIR}" |
44 | UNPACKDIR = "${S}" | ||
45 | B = "${WORKDIR}/build" | 44 | B = "${WORKDIR}/build" |
46 | 45 | ||
47 | # Default kernel includes, these represent what are normally used for in-kernel | 46 | # Default kernel includes, these represent what are normally used for in-kernel |
diff --git a/meta/classes-recipe/devupstream.bbclass b/meta/classes-recipe/devupstream.bbclass index d941763fb7..60026a527f 100644 --- a/meta/classes-recipe/devupstream.bbclass +++ b/meta/classes-recipe/devupstream.bbclass | |||
@@ -13,9 +13,6 @@ | |||
13 | # SRC_URI:class-devupstream = "git://git.example.com/example;branch=master" | 13 | # SRC_URI:class-devupstream = "git://git.example.com/example;branch=master" |
14 | # SRCREV:class-devupstream = "abcdef" | 14 | # SRCREV:class-devupstream = "abcdef" |
15 | # | 15 | # |
16 | # If the first entry in SRC_URI is a git: URL then S is rewritten to | ||
17 | # WORKDIR/git. | ||
18 | # | ||
19 | # There are a few caveats that remain to be solved: | 16 | # There are a few caveats that remain to be solved: |
20 | # - You can't build native or nativesdk recipes using for example | 17 | # - You can't build native or nativesdk recipes using for example |
21 | # devupstream:native, you can only build target recipes. | 18 | # devupstream:native, you can only build target recipes. |
@@ -39,9 +36,6 @@ python devupstream_virtclass_handler () { | |||
39 | src_uri = d.getVar("SRC_URI:class-devupstream") or d.getVar("SRC_URI") | 36 | src_uri = d.getVar("SRC_URI:class-devupstream") or d.getVar("SRC_URI") |
40 | uri = bb.fetch2.URI(src_uri.split()[0]) | 37 | uri = bb.fetch2.URI(src_uri.split()[0]) |
41 | 38 | ||
42 | if uri.scheme == "git" and not d.getVar("S:class-devupstream"): | ||
43 | d.setVar("S", "${WORKDIR}/git") | ||
44 | |||
45 | # Modify the PV if the recipe hasn't already overridden it | 39 | # Modify the PV if the recipe hasn't already overridden it |
46 | pv = d.getVar("PV") | 40 | pv = d.getVar("PV") |
47 | proto_marker = "+" + uri.scheme | 41 | proto_marker = "+" + uri.scheme |
diff --git a/meta/classes-recipe/go-mod-update-modules.bbclass b/meta/classes-recipe/go-mod-update-modules.bbclass new file mode 100644 index 0000000000..5fccd0bb0d --- /dev/null +++ b/meta/classes-recipe/go-mod-update-modules.bbclass | |||
@@ -0,0 +1,152 @@ | |||
1 | addtask do_update_modules after do_configure | ||
2 | do_update_modules[nostamp] = "1" | ||
3 | do_update_modules[network] = "1" | ||
4 | |||
5 | # This class maintains two files, BPN-go-mods.inc and BPN-licenses.inc. | ||
6 | # | ||
7 | # -go-mods.inc will append SRC_URI with all of the Go modules that are | ||
8 | # dependencies of this recipe. | ||
9 | # | ||
10 | # -licenses.inc will append LICENSE and LIC_FILES_CHKSUM with the found licenses | ||
11 | # in the modules. | ||
12 | # | ||
13 | # These files are machine-generated and should not be modified. | ||
14 | |||
15 | python do_update_modules() { | ||
16 | import subprocess, tempfile, json, re, urllib.parse | ||
17 | from oe.license import tidy_licenses | ||
18 | from oe.license_finder import find_licenses | ||
19 | |||
20 | def unescape_path(path): | ||
21 | """Unescape capital letters using exclamation points.""" | ||
22 | return re.sub(r'!([a-z])', lambda m: m.group(1).upper(), path) | ||
23 | |||
24 | def fold_uri(uri): | ||
25 | """Fold URI for sorting shorter module paths before longer.""" | ||
26 | return uri.replace(';', ' ').replace('/', '!') | ||
27 | |||
28 | def parse_existing_licenses(): | ||
29 | hashes = {} | ||
30 | for url in d.getVar("LIC_FILES_CHKSUM").split(): | ||
31 | (method, host, path, user, pswd, parm) = bb.fetch.decodeurl(url) | ||
32 | if "spdx" in parm and parm["spdx"] != "Unknown": | ||
33 | hashes[parm["md5"]] = urllib.parse.unquote_plus(parm["spdx"]) | ||
34 | return hashes | ||
35 | |||
36 | bpn = d.getVar("BPN") | ||
37 | thisdir = d.getVar("THISDIR") | ||
38 | s_dir = d.getVar("S") | ||
39 | |||
40 | with tempfile.TemporaryDirectory(prefix='go-mod-') as mod_cache_dir: | ||
41 | notice = """ | ||
42 | # This file has been generated by go-mod-update-modules.bbclass | ||
43 | # | ||
44 | # Do not modify it by hand, as the contents will be replaced when | ||
45 | # running the update-modules task. | ||
46 | |||
47 | """ | ||
48 | |||
49 | env = dict(os.environ, GOMODCACHE=mod_cache_dir) | ||
50 | |||
51 | source = d.expand("${UNPACKDIR}/${GO_SRCURI_DESTSUFFIX}") | ||
52 | output = subprocess.check_output(("go", "mod", "edit", "-json"), cwd=source, env=env, text=True) | ||
53 | go_mod = json.loads(output) | ||
54 | |||
55 | output = subprocess.check_output(("go", "list", "-json=Dir,Module", "-deps", f"{go_mod['Module']['Path']}/..."), cwd=source, env=env, text=True) | ||
56 | |||
57 | # | ||
58 | # Licenses | ||
59 | # | ||
60 | |||
61 | # load hashes from the existing licenses.inc | ||
62 | extra_hashes = parse_existing_licenses() | ||
63 | |||
64 | # The output of this isn't actually valid JSON, but a series of dicts. | ||
65 | # Wrap in [] and join the dicts with , | ||
66 | # Very frustrating that the json parser in python can't repeatedly | ||
67 | # parse from a stream. | ||
68 | pkgs = json.loads('[' + output.replace('}\n{', '},\n{') + ']') | ||
69 | # Collect licenses for the dependencies. | ||
70 | licenses = set() | ||
71 | lic_files_chksum = [] | ||
72 | lic_files = {} | ||
73 | |||
74 | for pkg in pkgs: | ||
75 | mod = pkg.get('Module', None) | ||
76 | if not mod or mod.get('Main', False): | ||
77 | continue | ||
78 | |||
79 | mod_dir = mod['Dir'] | ||
80 | |||
81 | if not mod_dir.startswith(mod_cache_dir): | ||
82 | continue | ||
83 | |||
84 | path = os.path.relpath(mod_dir, mod_cache_dir) | ||
85 | |||
86 | for license_name, license_file, license_md5 in find_licenses(mod['Dir'], d, first_only=True, extra_hashes=extra_hashes): | ||
87 | lic_files[os.path.join(path, license_file)] = (license_name, license_md5) | ||
88 | |||
89 | for lic_file in lic_files: | ||
90 | license_name, license_md5 = lic_files[lic_file] | ||
91 | if license_name == "Unknown": | ||
92 | bb.warn(f"Unknown license: {lic_file} {license_md5}") | ||
93 | |||
94 | licenses.add(lic_files[lic_file][0]) | ||
95 | lic_files_chksum.append( | ||
96 | f'file://pkg/mod/{lic_file};md5={license_md5};spdx={urllib.parse.quote_plus(license_name)}') | ||
97 | |||
98 | licenses_filename = os.path.join(thisdir, f"{bpn}-licenses.inc") | ||
99 | with open(licenses_filename, "w") as f: | ||
100 | f.write(notice) | ||
101 | f.write(f'LICENSE += "& {" & ".join(tidy_licenses(licenses))}"\n\n') | ||
102 | f.write('LIC_FILES_CHKSUM += "\\\n') | ||
103 | for lic in sorted(lic_files_chksum, key=fold_uri): | ||
104 | f.write(' ' + lic + ' \\\n') | ||
105 | f.write('"\n') | ||
106 | |||
107 | # | ||
108 | # Sources | ||
109 | # | ||
110 | |||
111 | # Collect the module cache files downloaded by the go list command as | ||
112 | # the go list command knows best what the go list command needs and it | ||
113 | # needs more files in the module cache than the go install command as | ||
114 | # it doesn't do the dependency pruning mentioned in the Go module | ||
115 | # reference, https://go.dev/ref/mod, for go 1.17 or higher. | ||
116 | src_uris = [] | ||
117 | downloaddir = os.path.join(mod_cache_dir, 'cache', 'download') | ||
118 | for dirpath, _, filenames in os.walk(downloaddir): | ||
119 | # We want to process files under @v directories | ||
120 | path, base = os.path.split(os.path.relpath(dirpath, downloaddir)) | ||
121 | if base != '@v': | ||
122 | continue | ||
123 | |||
124 | path = unescape_path(path) | ||
125 | zipver = None | ||
126 | for name in filenames: | ||
127 | ver, ext = os.path.splitext(name) | ||
128 | if ext == '.zip': | ||
129 | chksum = bb.utils.sha256_file(os.path.join(dirpath, name)) | ||
130 | src_uris.append(f'gomod://{path};version={ver};sha256sum={chksum}') | ||
131 | zipver = ver | ||
132 | break | ||
133 | for name in filenames: | ||
134 | ver, ext = os.path.splitext(name) | ||
135 | if ext == '.mod' and ver != zipver: | ||
136 | chksum = bb.utils.sha256_file(os.path.join(dirpath, name)) | ||
137 | src_uris.append(f'gomod://{path};version={ver};mod=1;sha256sum={chksum}') | ||
138 | |||
139 | |||
140 | go_mods_filename = os.path.join(thisdir, f"{bpn}-go-mods.inc") | ||
141 | with open(go_mods_filename, "w") as f: | ||
142 | f.write(notice) | ||
143 | f.write('SRC_URI += "\\\n') | ||
144 | for uri in sorted(src_uris, key=fold_uri): | ||
145 | f.write(' ' + uri + ' \\\n') | ||
146 | f.write('"\n') | ||
147 | |||
148 | subprocess.check_output(("go", "clean", "-modcache"), cwd=source, env=env, text=True) | ||
149 | } | ||
150 | |||
151 | # This doesn't work as we need to wipe the inc files first so we don't try looking for LICENSE files that don't yet exist | ||
152 | # RECIPE_UPGRADE_EXTRA_TASKS += "do_update_modules" | ||
diff --git a/meta/classes-recipe/go-mod.bbclass b/meta/classes-recipe/go-mod.bbclass index 93ae72235f..a15dda8f0e 100644 --- a/meta/classes-recipe/go-mod.bbclass +++ b/meta/classes-recipe/go-mod.bbclass | |||
@@ -23,7 +23,7 @@ GOBUILDFLAGS:append = " -modcacherw" | |||
23 | inherit go | 23 | inherit go |
24 | 24 | ||
25 | export GOMODCACHE = "${S}/pkg/mod" | 25 | export GOMODCACHE = "${S}/pkg/mod" |
26 | GO_MOD_CACHE_DIR = "${@os.path.relpath(d.getVar('GOMODCACHE'), d.getVar('WORKDIR'))}" | 26 | GO_MOD_CACHE_DIR = "${@os.path.relpath(d.getVar('GOMODCACHE'), d.getVar('UNPACKDIR'))}" |
27 | do_unpack[cleandirs] += "${GOMODCACHE}" | 27 | do_unpack[cleandirs] += "${GOMODCACHE}" |
28 | 28 | ||
29 | GO_WORKDIR ?= "${GO_IMPORT}" | 29 | GO_WORKDIR ?= "${GO_IMPORT}" |
diff --git a/meta/classes-recipe/image-live.bbclass b/meta/classes-recipe/image-live.bbclass index d2e95ef51c..c3054be630 100644 --- a/meta/classes-recipe/image-live.bbclass +++ b/meta/classes-recipe/image-live.bbclass | |||
@@ -147,7 +147,10 @@ build_iso() { | |||
147 | isohybrid_args="-u" | 147 | isohybrid_args="-u" |
148 | fi | 148 | fi |
149 | 149 | ||
150 | isohybrid $isohybrid_args ${IMGDEPLOYDIR}/${IMAGE_NAME}.iso | 150 | # EFI only does not need isohybrid |
151 | if [ "${PCBIOS}" = "1" ] || [ "${EFI}" != "1" ]; then | ||
152 | isohybrid $isohybrid_args ${IMGDEPLOYDIR}/${IMAGE_NAME}.iso | ||
153 | fi | ||
151 | } | 154 | } |
152 | 155 | ||
153 | build_fat_img() { | 156 | build_fat_img() { |
diff --git a/meta/classes-recipe/image_types_wic.bbclass b/meta/classes-recipe/image_types_wic.bbclass index 740ed946f8..6180874a4c 100644 --- a/meta/classes-recipe/image_types_wic.bbclass +++ b/meta/classes-recipe/image_types_wic.bbclass | |||
@@ -57,6 +57,16 @@ def wks_search(files, search_path): | |||
57 | if searched: | 57 | if searched: |
58 | return searched | 58 | return searched |
59 | 59 | ||
60 | def wks_checksums(files, search_path): | ||
61 | ret = "" | ||
62 | for f in files: | ||
63 | found, hist = bb.utils.which(search_path, f, history=True) | ||
64 | ret = ret + " " + " ".join(h + ":False" for h in hist[:-1]) | ||
65 | if found: | ||
66 | ret = ret + " " + found + ":True" | ||
67 | return ret | ||
68 | |||
69 | |||
60 | WIC_CREATE_EXTRA_ARGS ?= "" | 70 | WIC_CREATE_EXTRA_ARGS ?= "" |
61 | 71 | ||
62 | IMAGE_CMD:wic () { | 72 | IMAGE_CMD:wic () { |
@@ -98,7 +108,7 @@ do_image_wic[cleandirs] = "${WORKDIR}/build-wic" | |||
98 | 108 | ||
99 | # Rebuild when the wks file or vars in WICVARS change | 109 | # Rebuild when the wks file or vars in WICVARS change |
100 | USING_WIC = "${@bb.utils.contains_any('IMAGE_FSTYPES', 'wic ' + ' '.join('wic.%s' % c for c in '${CONVERSIONTYPES}'.split()), '1', '', d)}" | 110 | USING_WIC = "${@bb.utils.contains_any('IMAGE_FSTYPES', 'wic ' + ' '.join('wic.%s' % c for c in '${CONVERSIONTYPES}'.split()), '1', '', d)}" |
101 | WKS_FILE_CHECKSUM = "${@'${WKS_FULL_PATH}:%s' % os.path.exists('${WKS_FULL_PATH}') if '${USING_WIC}' else ''}" | 111 | WKS_FILE_CHECKSUM = "${@wks_checksums(d.getVar('WKS_FILES').split(), d.getVar('WKS_SEARCH_PATH')) if '${USING_WIC}' else ''}" |
102 | do_image_wic[file-checksums] += "${WKS_FILE_CHECKSUM}" | 112 | do_image_wic[file-checksums] += "${WKS_FILE_CHECKSUM}" |
103 | do_image_wic[depends] += "${@' '.join('%s-native:do_populate_sysroot' % r for r in ('parted', 'gptfdisk', 'dosfstools', 'mtools'))}" | 113 | do_image_wic[depends] += "${@' '.join('%s-native:do_populate_sysroot' % r for r in ('parted', 'gptfdisk', 'dosfstools', 'mtools'))}" |
104 | 114 | ||
diff --git a/meta/classes-recipe/kernel-fit-image.bbclass b/meta/classes-recipe/kernel-fit-image.bbclass index d2eebb88bc..39845997ed 100644 --- a/meta/classes-recipe/kernel-fit-image.bbclass +++ b/meta/classes-recipe/kernel-fit-image.bbclass | |||
@@ -2,8 +2,7 @@ | |||
2 | inherit kernel-arch kernel-artifact-names uboot-config deploy | 2 | inherit kernel-arch kernel-artifact-names uboot-config deploy |
3 | require conf/image-fitimage.conf | 3 | require conf/image-fitimage.conf |
4 | 4 | ||
5 | S = "${WORKDIR}/sources" | 5 | S = "${UNPACKDIR}" |
6 | UNPACKDIR = "${S}" | ||
7 | 6 | ||
8 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 7 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
9 | 8 | ||
diff --git a/meta/classes-recipe/kernel-yocto.bbclass b/meta/classes-recipe/kernel-yocto.bbclass index ba93145fd3..e53bf15194 100644 --- a/meta/classes-recipe/kernel-yocto.bbclass +++ b/meta/classes-recipe/kernel-yocto.bbclass | |||
@@ -388,19 +388,19 @@ do_kernel_checkout() { | |||
388 | set +e | 388 | set +e |
389 | 389 | ||
390 | source_dir=`echo ${S} | sed 's%/$%%'` | 390 | source_dir=`echo ${S} | sed 's%/$%%'` |
391 | source_workdir="${UNPACKDIR}/git" | 391 | source_unpackdir="${UNPACKDIR}/${BB_GIT_DEFAULT_DESTSUFFIX}" |
392 | if [ -d "${UNPACKDIR}/git/" ]; then | 392 | if [ -d "${source_unpackdir}" ]; then |
393 | # case: git repository | 393 | # case: git repository |
394 | # if S is WORKDIR/git, then we shouldn't be moving or deleting the tree. | 394 | # if S is UNPACKDIR/BB_GIT_DEFAULT_DESTSUFFIX, then we shouldn't be moving or deleting the tree. |
395 | if [ "${source_dir}" != "${source_workdir}" ]; then | 395 | if [ "${source_dir}" != "${source_unpackdir}" ]; then |
396 | if [ -d "${source_workdir}/.git" ]; then | 396 | if [ -d "${source_unpackdir}/.git" ]; then |
397 | # regular git repository with .git | 397 | # regular git repository with .git |
398 | rm -rf ${S} | 398 | rm -rf ${S} |
399 | mv ${UNPACKDIR}/git ${S} | 399 | mv ${source_unpackdir} ${S} |
400 | else | 400 | else |
401 | # create source for bare cloned git repository | 401 | # create source for bare cloned git repository |
402 | git clone ${WORKDIR}/git ${S} | 402 | git clone ${source_unpackdir} ${S} |
403 | rm -rf ${UNPACKDIR}/git | 403 | rm -rf ${source_unpackdir} |
404 | fi | 404 | fi |
405 | fi | 405 | fi |
406 | cd ${S} | 406 | cd ${S} |
diff --git a/meta/classes-recipe/pypi.bbclass b/meta/classes-recipe/pypi.bbclass index b0bc167cdf..eb30004a0f 100644 --- a/meta/classes-recipe/pypi.bbclass +++ b/meta/classes-recipe/pypi.bbclass | |||
@@ -41,7 +41,7 @@ PYPI_SRC_URI ?= "${@pypi_src_uri(d)}" | |||
41 | HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/" | 41 | HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/" |
42 | SECTION = "devel/python" | 42 | SECTION = "devel/python" |
43 | SRC_URI:prepend = "${PYPI_SRC_URI} " | 43 | SRC_URI:prepend = "${PYPI_SRC_URI} " |
44 | S = "${WORKDIR}/${PYPI_PACKAGE}-${PV}" | 44 | S = "${UNPACKDIR}/${PYPI_PACKAGE}-${PV}" |
45 | 45 | ||
46 | # Replace any '_' characters in the pypi URI with '-'s to follow the PyPi website naming conventions | 46 | # Replace any '_' characters in the pypi URI with '-'s to follow the PyPi website naming conventions |
47 | UPSTREAM_CHECK_PYPI_PACKAGE ?= "${@pypi_normalize(d)}" | 47 | UPSTREAM_CHECK_PYPI_PACKAGE ?= "${@pypi_normalize(d)}" |
diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass index c04940ce54..cac6e90a9e 100644 --- a/meta/classes-recipe/rust-target-config.bbclass +++ b/meta/classes-recipe/rust-target-config.bbclass | |||
@@ -77,8 +77,33 @@ def llvm_features_from_tune(d): | |||
77 | f.append("+a15") | 77 | f.append("+a15") |
78 | if 'cortexa17' in feat: | 78 | if 'cortexa17' in feat: |
79 | f.append("+a17") | 79 | f.append("+a17") |
80 | if ('riscv64' in feat) or ('riscv32' in feat): | 80 | if 'rv' in feat: |
81 | f.append("+a,+c,+d,+f,+m") | 81 | if 'm' in feat: |
82 | f.append("+m") | ||
83 | if 'a' in feat: | ||
84 | f.append("+a") | ||
85 | if 'f' in feat: | ||
86 | f.append("+f") | ||
87 | if 'd' in feat: | ||
88 | f.append("+d") | ||
89 | if 'c' in feat: | ||
90 | f.append("+c") | ||
91 | if 'v' in feat: | ||
92 | f.append("+v") | ||
93 | if 'zicbom' in feat: | ||
94 | f.append("+zicbom") | ||
95 | if 'zicsr' in feat: | ||
96 | f.append("+zicsr") | ||
97 | if 'zifencei' in feat: | ||
98 | f.append("+zifencei") | ||
99 | if 'zba' in feat: | ||
100 | f.append("+zba") | ||
101 | if 'zbb' in feat: | ||
102 | f.append("+zbb") | ||
103 | if 'zbc' in feat: | ||
104 | f.append("+zbc") | ||
105 | if 'zbs' in feat: | ||
106 | f.append("+zbs") | ||
82 | return f | 107 | return f |
83 | llvm_features_from_tune[vardepvalue] = "${@llvm_features_from_tune(d)}" | 108 | llvm_features_from_tune[vardepvalue] = "${@llvm_features_from_tune(d)}" |
84 | 109 | ||
@@ -146,7 +171,7 @@ MAX_ATOMIC_WIDTH[armv7-eabi] = "64" | |||
146 | FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2" | 171 | FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2" |
147 | 172 | ||
148 | ## aarch64-unknown-linux-{gnu, musl} | 173 | ## aarch64-unknown-linux-{gnu, musl} |
149 | DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" | 174 | DATA_LAYOUT[aarch64] = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" |
150 | TARGET_ENDIAN[aarch64] = "little" | 175 | TARGET_ENDIAN[aarch64] = "little" |
151 | TARGET_POINTER_WIDTH[aarch64] = "64" | 176 | TARGET_POINTER_WIDTH[aarch64] = "64" |
152 | TARGET_C_INT_WIDTH[aarch64] = "32" | 177 | TARGET_C_INT_WIDTH[aarch64] = "32" |
@@ -236,19 +261,19 @@ TARGET_POINTER_WIDTH[powerpc64le] = "64" | |||
236 | TARGET_C_INT_WIDTH[powerpc64le] = "32" | 261 | TARGET_C_INT_WIDTH[powerpc64le] = "32" |
237 | MAX_ATOMIC_WIDTH[powerpc64le] = "64" | 262 | MAX_ATOMIC_WIDTH[powerpc64le] = "64" |
238 | 263 | ||
239 | ## riscv32gc-unknown-linux-{gnu, musl} | 264 | ## riscv32-unknown-linux-{gnu, musl} |
240 | DATA_LAYOUT[riscv32gc] = "e-m:e-p:32:32-i64:64-n32-S128" | 265 | DATA_LAYOUT[riscv32] = "e-m:e-p:32:32-i64:64-n32-S128" |
241 | TARGET_ENDIAN[riscv32gc] = "little" | 266 | TARGET_ENDIAN[riscv32] = "little" |
242 | TARGET_POINTER_WIDTH[riscv32gc] = "32" | 267 | TARGET_POINTER_WIDTH[riscv32] = "32" |
243 | TARGET_C_INT_WIDTH[riscv32gc] = "32" | 268 | TARGET_C_INT_WIDTH[riscv32] = "32" |
244 | MAX_ATOMIC_WIDTH[riscv32gc] = "32" | 269 | MAX_ATOMIC_WIDTH[riscv32] = "32" |
245 | 270 | ||
246 | ## riscv64gc-unknown-linux-{gnu, musl} | 271 | ## riscv64-unknown-linux-{gnu, musl} |
247 | DATA_LAYOUT[riscv64gc] = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128" | 272 | DATA_LAYOUT[riscv64] = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128" |
248 | TARGET_ENDIAN[riscv64gc] = "little" | 273 | TARGET_ENDIAN[riscv64] = "little" |
249 | TARGET_POINTER_WIDTH[riscv64gc] = "64" | 274 | TARGET_POINTER_WIDTH[riscv64] = "64" |
250 | TARGET_C_INT_WIDTH[riscv64gc] = "32" | 275 | TARGET_C_INT_WIDTH[riscv64] = "32" |
251 | MAX_ATOMIC_WIDTH[riscv64gc] = "64" | 276 | MAX_ATOMIC_WIDTH[riscv64] = "64" |
252 | 277 | ||
253 | ## loongarch64-unknown-linux-{gnu, musl} | 278 | ## loongarch64-unknown-linux-{gnu, musl} |
254 | DATA_LAYOUT[loongarch64] = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128" | 279 | DATA_LAYOUT[loongarch64] = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128" |
@@ -271,19 +296,11 @@ def arch_to_rust_target_arch(arch): | |||
271 | return "arm" | 296 | return "arm" |
272 | elif arch == "powerpc64le": | 297 | elif arch == "powerpc64le": |
273 | return "powerpc64" | 298 | return "powerpc64" |
274 | elif arch == "riscv32gc": | ||
275 | return "riscv32" | ||
276 | elif arch == "riscv64gc": | ||
277 | return "riscv64" | ||
278 | else: | 299 | else: |
279 | return arch | 300 | return arch |
280 | 301 | ||
281 | # Convert a rust target string to a llvm-compatible triplet | 302 | # Convert a rust target string to a llvm-compatible triplet |
282 | def rust_sys_to_llvm_target(sys): | 303 | def rust_sys_to_llvm_target(sys): |
283 | if sys.startswith('riscv32gc-'): | ||
284 | return sys.replace('riscv32gc-', 'riscv32-', 1) | ||
285 | if sys.startswith('riscv64gc-'): | ||
286 | return sys.replace('riscv64gc-', 'riscv64-', 1) | ||
287 | return sys | 304 | return sys |
288 | 305 | ||
289 | # generates our target CPU value | 306 | # generates our target CPU value |
@@ -380,9 +397,9 @@ def rust_gen_target(d, thing, wd, arch): | |||
380 | else: | 397 | else: |
381 | tspec['env'] = "gnu" | 398 | tspec['env'] = "gnu" |
382 | if "riscv64" in tspec['llvm-target']: | 399 | if "riscv64" in tspec['llvm-target']: |
383 | tspec['llvm-abiname'] = "lp64d" | 400 | tspec['llvm-abiname'] = d.getVar('TUNE_RISCV_ABI') |
384 | if "riscv32" in tspec['llvm-target']: | 401 | if "riscv32" in tspec['llvm-target']: |
385 | tspec['llvm-abiname'] = "ilp32d" | 402 | tspec['llvm-abiname'] = d.getVar('TUNE_RISCV_ABI') |
386 | if "loongarch64" in tspec['llvm-target']: | 403 | if "loongarch64" in tspec['llvm-target']: |
387 | tspec['llvm-abiname'] = "lp64d" | 404 | tspec['llvm-abiname'] = "lp64d" |
388 | tspec['vendor'] = "unknown" | 405 | tspec['vendor'] = "unknown" |
diff --git a/meta/classes-recipe/testsdk.bbclass b/meta/classes-recipe/testsdk.bbclass index 59d2834c99..b1c4fa67e6 100644 --- a/meta/classes-recipe/testsdk.bbclass +++ b/meta/classes-recipe/testsdk.bbclass | |||
@@ -19,6 +19,7 @@ TESTSDK_SUITES ?= "" | |||
19 | 19 | ||
20 | TESTSDK_CLASS_NAME ?= "oeqa.sdk.testsdk.TestSDK" | 20 | TESTSDK_CLASS_NAME ?= "oeqa.sdk.testsdk.TestSDK" |
21 | TESTSDKEXT_CLASS_NAME ?= "oeqa.sdkext.testsdk.TestSDKExt" | 21 | TESTSDKEXT_CLASS_NAME ?= "oeqa.sdkext.testsdk.TestSDKExt" |
22 | TESTSDK_CASE_DIRS ?= "sdk" | ||
22 | 23 | ||
23 | def import_and_run(name, d): | 24 | def import_and_run(name, d): |
24 | import importlib | 25 | import importlib |
diff --git a/meta/classes-recipe/uboot-config.bbclass b/meta/classes-recipe/uboot-config.bbclass index f44605cb6a..bc20913f73 100644 --- a/meta/classes-recipe/uboot-config.bbclass +++ b/meta/classes-recipe/uboot-config.bbclass | |||
@@ -22,12 +22,17 @@ def removesuffix(s, suffix): | |||
22 | UBOOT_ENTRYPOINT ?= "0x20008000" | 22 | UBOOT_ENTRYPOINT ?= "0x20008000" |
23 | UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}" | 23 | UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}" |
24 | 24 | ||
25 | # When naming the files we install/deploy, the package version and revision | ||
26 | # are part of the filename. Create a single variable to represent this and | ||
27 | # allow it to be customized if desired. | ||
28 | UBOOT_VERSION ?= "${PV}-${PR}" | ||
29 | |||
25 | # Some versions of u-boot use .bin and others use .img. By default use .bin | 30 | # Some versions of u-boot use .bin and others use .img. By default use .bin |
26 | # but enable individual recipes to change this value. | 31 | # but enable individual recipes to change this value. |
27 | UBOOT_SUFFIX ??= "bin" | 32 | UBOOT_SUFFIX ??= "bin" |
28 | UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}" | 33 | UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}" |
29 | UBOOT_BINARYNAME ?= "${@os.path.splitext(d.getVar("UBOOT_BINARY"))[0]}" | 34 | UBOOT_BINARYNAME ?= "${@os.path.splitext(d.getVar("UBOOT_BINARY"))[0]}" |
30 | UBOOT_IMAGE ?= "${UBOOT_BINARYNAME}-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}" | 35 | UBOOT_IMAGE ?= "${UBOOT_BINARYNAME}-${MACHINE}-${UBOOT_VERSION}.${UBOOT_SUFFIX}" |
31 | UBOOT_SYMLINK ?= "${UBOOT_BINARYNAME}-${MACHINE}.${UBOOT_SUFFIX}" | 36 | UBOOT_SYMLINK ?= "${UBOOT_BINARYNAME}-${MACHINE}.${UBOOT_SUFFIX}" |
32 | UBOOT_MAKE_TARGET ?= "all" | 37 | UBOOT_MAKE_TARGET ?= "all" |
33 | 38 | ||
@@ -36,7 +41,7 @@ UBOOT_MAKE_TARGET ?= "all" | |||
36 | # purposes. | 41 | # purposes. |
37 | UBOOT_ELF ?= "" | 42 | UBOOT_ELF ?= "" |
38 | UBOOT_ELF_SUFFIX ?= "elf" | 43 | UBOOT_ELF_SUFFIX ?= "elf" |
39 | UBOOT_ELF_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}" | 44 | UBOOT_ELF_IMAGE ?= "u-boot-${MACHINE}-${UBOOT_VERSION}.${UBOOT_ELF_SUFFIX}" |
40 | UBOOT_ELF_BINARY ?= "u-boot.${UBOOT_ELF_SUFFIX}" | 45 | UBOOT_ELF_BINARY ?= "u-boot.${UBOOT_ELF_SUFFIX}" |
41 | UBOOT_ELF_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_ELF_SUFFIX}" | 46 | UBOOT_ELF_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_ELF_SUFFIX}" |
42 | 47 | ||
@@ -49,7 +54,7 @@ SPL_BINARY ?= "" | |||
49 | SPL_DELIMITER ?= "${@'.' if d.getVar("SPL_SUFFIX") else ''}" | 54 | SPL_DELIMITER ?= "${@'.' if d.getVar("SPL_SUFFIX") else ''}" |
50 | SPL_BINARYFILE ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}" | 55 | SPL_BINARYFILE ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}" |
51 | SPL_BINARYNAME ?= "${@removesuffix(d.getVar("SPL_BINARYFILE"), "." + d.getVar("SPL_SUFFIX"))}" | 56 | SPL_BINARYNAME ?= "${@removesuffix(d.getVar("SPL_BINARYFILE"), "." + d.getVar("SPL_SUFFIX"))}" |
52 | SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX}" | 57 | SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${UBOOT_VERSION}${SPL_DELIMITER}${SPL_SUFFIX}" |
53 | SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}${SPL_DELIMITER}${SPL_SUFFIX}" | 58 | SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}${SPL_DELIMITER}${SPL_SUFFIX}" |
54 | 59 | ||
55 | # Additional environment variables or a script can be installed alongside | 60 | # Additional environment variables or a script can be installed alongside |
@@ -62,14 +67,14 @@ UBOOT_ENV ?= "" | |||
62 | UBOOT_ENV_SRC_SUFFIX ?= "cmd" | 67 | UBOOT_ENV_SRC_SUFFIX ?= "cmd" |
63 | UBOOT_ENV_SRC ?= "${UBOOT_ENV}.${UBOOT_ENV_SRC_SUFFIX}" | 68 | UBOOT_ENV_SRC ?= "${UBOOT_ENV}.${UBOOT_ENV_SRC_SUFFIX}" |
64 | UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}" | 69 | UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}" |
65 | UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}" | 70 | UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${UBOOT_VERSION}.${UBOOT_ENV_SUFFIX}" |
66 | UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}" | 71 | UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}" |
67 | 72 | ||
68 | # U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf | 73 | # U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf |
69 | # to find EXTLINUX conf file. | 74 | # to find EXTLINUX conf file. |
70 | UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux" | 75 | UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux" |
71 | UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf" | 76 | UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf" |
72 | UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${PR}" | 77 | UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${UBOOT_VERSION}" |
73 | 78 | ||
74 | # Options for the device tree compiler passed to mkimage '-D' feature: | 79 | # Options for the device tree compiler passed to mkimage '-D' feature: |
75 | UBOOT_MKIMAGE_DTCOPTS ??= "" | 80 | UBOOT_MKIMAGE_DTCOPTS ??= "" |
diff --git a/meta/classes-recipe/uboot-sign.bbclass b/meta/classes-recipe/uboot-sign.bbclass index 73e9ce3f11..0f387a3a3e 100644 --- a/meta/classes-recipe/uboot-sign.bbclass +++ b/meta/classes-recipe/uboot-sign.bbclass | |||
@@ -50,6 +50,8 @@ UBOOT_FITIMAGE_BINARY ?= "u-boot-fitImage" | |||
50 | UBOOT_FITIMAGE_SYMLINK ?= "u-boot-fitImage-${MACHINE}" | 50 | UBOOT_FITIMAGE_SYMLINK ?= "u-boot-fitImage-${MACHINE}" |
51 | SPL_DIR ?= "spl" | 51 | SPL_DIR ?= "spl" |
52 | SPL_DTB_IMAGE ?= "u-boot-spl-${MACHINE}-${PV}-${PR}.dtb" | 52 | SPL_DTB_IMAGE ?= "u-boot-spl-${MACHINE}-${PV}-${PR}.dtb" |
53 | # When SPL is not used, set SPL_DTB_BINARY ?= "" to explicitly indicate | ||
54 | # that no SPL DTB should be created or signed. | ||
53 | SPL_DTB_BINARY ?= "u-boot-spl.dtb" | 55 | SPL_DTB_BINARY ?= "u-boot-spl.dtb" |
54 | SPL_DTB_SIGNED ?= "${SPL_DTB_BINARY}-signed" | 56 | SPL_DTB_SIGNED ?= "${SPL_DTB_BINARY}-signed" |
55 | SPL_DTB_SYMLINK ?= "u-boot-spl-${MACHINE}.dtb" | 57 | SPL_DTB_SYMLINK ?= "u-boot-spl-${MACHINE}.dtb" |
@@ -196,21 +198,23 @@ concat_dtb() { | |||
196 | # If we're not using a signed u-boot fit, concatenate SPL w/o DTB & U-Boot DTB | 198 | # If we're not using a signed u-boot fit, concatenate SPL w/o DTB & U-Boot DTB |
197 | # with public key (otherwise U-Boot will be packaged by uboot_fitimage_assemble) | 199 | # with public key (otherwise U-Boot will be packaged by uboot_fitimage_assemble) |
198 | if [ "${SPL_SIGN_ENABLE}" != "1" ] ; then | 200 | if [ "${SPL_SIGN_ENABLE}" != "1" ] ; then |
199 | if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \ | 201 | if [ ! -e "${UBOOT_DTB_BINARY}" ]; then |
200 | [ -e "${UBOOT_DTB_BINARY}" ]; then | 202 | bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available." |
203 | return | ||
204 | fi | ||
205 | |||
206 | if [ "x${UBOOT_SUFFIX}" = "ximg" ] || [ "x${UBOOT_SUFFIX}" = "xrom" ]; then | ||
201 | oe_runmake EXT_DTB="${UBOOT_DTB_SIGNED}" ${UBOOT_MAKE_TARGET} | 207 | oe_runmake EXT_DTB="${UBOOT_DTB_SIGNED}" ${UBOOT_MAKE_TARGET} |
202 | if [ -n "${binary}" ]; then | 208 | if [ -n "${binary}" ]; then |
203 | cp ${binary} ${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} | 209 | cp ${binary} ${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} |
204 | fi | 210 | fi |
205 | elif [ -e "${UBOOT_NODTB_BINARY}" -a -e "${UBOOT_DTB_BINARY}" ]; then | 211 | elif [ -e "${UBOOT_NODTB_BINARY}" ]; then |
206 | if [ -n "${binary}" ]; then | 212 | if [ -n "${binary}" ]; then |
207 | cat ${UBOOT_NODTB_BINARY} ${UBOOT_DTB_SIGNED} | tee ${binary} > \ | 213 | cat ${UBOOT_NODTB_BINARY} ${UBOOT_DTB_SIGNED} | tee ${binary} > \ |
208 | ${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} | 214 | ${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} |
209 | else | 215 | else |
210 | cat ${UBOOT_NODTB_BINARY} ${UBOOT_DTB_SIGNED} > ${UBOOT_BINARY} | 216 | cat ${UBOOT_NODTB_BINARY} ${UBOOT_DTB_SIGNED} > ${UBOOT_BINARY} |
211 | fi | 217 | fi |
212 | else | ||
213 | bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available." | ||
214 | fi | 218 | fi |
215 | fi | 219 | fi |
216 | } | 220 | } |
@@ -242,7 +246,7 @@ deploy_dtb() { | |||
242 | } | 246 | } |
243 | 247 | ||
244 | concat_spl_dtb() { | 248 | concat_spl_dtb() { |
245 | if [ -e "${SPL_DIR}/${SPL_NODTB_BINARY}" -a -e "${SPL_DIR}/${SPL_DTB_BINARY}" ] ; then | 249 | if [ -e "${SPL_DIR}/${SPL_NODTB_BINARY}" ] && [ -e "${SPL_DIR}/${SPL_DTB_BINARY}" ] ; then |
246 | cat ${SPL_DIR}/${SPL_NODTB_BINARY} ${SPL_DIR}/${SPL_DTB_SIGNED} > "${SPL_BINARY}" | 250 | cat ${SPL_DIR}/${SPL_NODTB_BINARY} ${SPL_DIR}/${SPL_DTB_SIGNED} > "${SPL_BINARY}" |
247 | else | 251 | else |
248 | bbwarn "Failure while adding public key to spl binary. Verified U-Boot boot won't be available." | 252 | bbwarn "Failure while adding public key to spl binary. Verified U-Boot boot won't be available." |
@@ -466,25 +470,31 @@ EOF | |||
466 | ${UBOOT_FITIMAGE_BINARY} | 470 | ${UBOOT_FITIMAGE_BINARY} |
467 | 471 | ||
468 | if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then | 472 | if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then |
469 | # | 473 | if [ -n "${SPL_DTB_BINARY}" ] ; then |
470 | # Sign the U-boot FIT image and add public key to SPL dtb | 474 | # |
471 | # | 475 | # Sign the U-boot FIT image and add public key to SPL dtb |
472 | ${UBOOT_MKIMAGE_SIGN} \ | 476 | # |
473 | ${@'-D "${SPL_MKIMAGE_DTCOPTS}"' if len('${SPL_MKIMAGE_DTCOPTS}') else ''} \ | 477 | ${UBOOT_MKIMAGE_SIGN} \ |
474 | -F -k "${SPL_SIGN_KEYDIR}" \ | 478 | ${@'-D "${SPL_MKIMAGE_DTCOPTS}"' if len('${SPL_MKIMAGE_DTCOPTS}') else ''} \ |
475 | -K "${SPL_DIR}/${SPL_DTB_BINARY}" \ | 479 | -F -k "${SPL_SIGN_KEYDIR}" \ |
476 | -r ${UBOOT_FITIMAGE_BINARY} \ | 480 | -K "${SPL_DIR}/${SPL_DTB_BINARY}" \ |
477 | ${SPL_MKIMAGE_SIGN_ARGS} | 481 | -r ${UBOOT_FITIMAGE_BINARY} \ |
478 | # | 482 | ${SPL_MKIMAGE_SIGN_ARGS} |
479 | # Verify the U-boot FIT image and SPL dtb | 483 | |
480 | # | 484 | # Verify the U-boot FIT image and SPL dtb |
481 | ${UBOOT_FIT_CHECK_SIGN} \ | 485 | ${UBOOT_FIT_CHECK_SIGN} \ |
482 | -k "${SPL_DIR}/${SPL_DTB_BINARY}" \ | 486 | -k "${SPL_DIR}/${SPL_DTB_BINARY}" \ |
483 | -f ${UBOOT_FITIMAGE_BINARY} | 487 | -f ${UBOOT_FITIMAGE_BINARY} |
484 | fi | ||
485 | 488 | ||
486 | if [ -e "${SPL_DIR}/${SPL_DTB_BINARY}" ]; then | 489 | cp ${SPL_DIR}/${SPL_DTB_BINARY} ${SPL_DIR}/${SPL_DTB_SIGNED} |
487 | cp ${SPL_DIR}/${SPL_DTB_BINARY} ${SPL_DIR}/${SPL_DTB_SIGNED} | 490 | else |
491 | # Sign the U-boot FIT image | ||
492 | ${UBOOT_MKIMAGE_SIGN} \ | ||
493 | ${@'-D "${SPL_MKIMAGE_DTCOPTS}"' if len('${SPL_MKIMAGE_DTCOPTS}') else ''} \ | ||
494 | -F -k "${SPL_SIGN_KEYDIR}" \ | ||
495 | -r ${UBOOT_FITIMAGE_BINARY} \ | ||
496 | ${SPL_MKIMAGE_SIGN_ARGS} | ||
497 | fi | ||
488 | fi | 498 | fi |
489 | } | 499 | } |
490 | 500 | ||
@@ -492,15 +502,15 @@ uboot_assemble_fitimage_helper() { | |||
492 | type="$1" | 502 | type="$1" |
493 | binary="$2" | 503 | binary="$2" |
494 | 504 | ||
495 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ] ; then | 505 | if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ -n "${UBOOT_DTB_BINARY}" ] ; then |
496 | concat_dtb "$type" "$binary" | 506 | concat_dtb "$type" "$binary" |
497 | fi | 507 | fi |
498 | 508 | ||
499 | if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ]; then | 509 | if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" ]; then |
500 | uboot_fitimage_assemble | 510 | uboot_fitimage_assemble |
501 | fi | 511 | fi |
502 | 512 | ||
503 | if [ "${SPL_SIGN_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ] ; then | 513 | if [ "${SPL_SIGN_ENABLE}" = "1" ] && [ -n "${SPL_DTB_BINARY}" ] ; then |
504 | concat_spl_dtb | 514 | concat_spl_dtb |
505 | fi | 515 | fi |
506 | } | 516 | } |
@@ -539,11 +549,11 @@ addtask uboot_assemble_fitimage before do_install do_deploy after do_compile | |||
539 | deploy_helper() { | 549 | deploy_helper() { |
540 | type="$1" | 550 | type="$1" |
541 | 551 | ||
542 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_SIGNED}" ] ; then | 552 | if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ -n "${UBOOT_DTB_SIGNED}" ] ; then |
543 | deploy_dtb $type | 553 | deploy_dtb $type |
544 | fi | 554 | fi |
545 | 555 | ||
546 | if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ]; then | 556 | if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" ]; then |
547 | if [ -n "${type}" ]; then | 557 | if [ -n "${type}" ]; then |
548 | uboot_its_image="u-boot-its-${type}-${PV}-${PR}" | 558 | uboot_its_image="u-boot-its-${type}-${PV}-${PR}" |
549 | uboot_fitimage_image="u-boot-fitImage-${type}-${PV}-${PR}" | 559 | uboot_fitimage_image="u-boot-fitImage-${type}-${PV}-${PR}" |
@@ -561,7 +571,7 @@ deploy_helper() { | |||
561 | fi | 571 | fi |
562 | fi | 572 | fi |
563 | 573 | ||
564 | if [ "${SPL_SIGN_ENABLE}" = "1" -a -n "${SPL_DTB_SIGNED}" ] ; then | 574 | if [ "${SPL_SIGN_ENABLE}" = "1" ] && [ -n "${SPL_DTB_BINARY}" ] ; then |
565 | deploy_spl_dtb $type | 575 | deploy_spl_dtb $type |
566 | fi | 576 | fi |
567 | } | 577 | } |
@@ -586,7 +596,7 @@ do_deploy:prepend() { | |||
586 | deploy_helper "" | 596 | deploy_helper "" |
587 | fi | 597 | fi |
588 | 598 | ||
589 | if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ] ; then | 599 | if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ -n "${UBOOT_DTB_BINARY}" ] ; then |
590 | ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_BINARY} | 600 | ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_BINARY} |
591 | ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_SYMLINK} | 601 | ln -sf ${UBOOT_DTB_IMAGE} ${DEPLOYDIR}/${UBOOT_DTB_SYMLINK} |
592 | ln -sf ${UBOOT_NODTB_IMAGE} ${DEPLOYDIR}/${UBOOT_NODTB_SYMLINK} | 602 | ln -sf ${UBOOT_NODTB_IMAGE} ${DEPLOYDIR}/${UBOOT_NODTB_SYMLINK} |
@@ -600,7 +610,7 @@ do_deploy:prepend() { | |||
600 | ln -sf ${UBOOT_FITIMAGE_IMAGE} ${DEPLOYDIR}/${UBOOT_FITIMAGE_SYMLINK} | 610 | ln -sf ${UBOOT_FITIMAGE_IMAGE} ${DEPLOYDIR}/${UBOOT_FITIMAGE_SYMLINK} |
601 | fi | 611 | fi |
602 | 612 | ||
603 | if [ "${SPL_SIGN_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ] ; then | 613 | if [ "${SPL_SIGN_ENABLE}" = "1" ] && [ -n "${SPL_DTB_BINARY}" ] ; then |
604 | ln -sf ${SPL_DTB_IMAGE} ${DEPLOYDIR}/${SPL_DTB_SYMLINK} | 614 | ln -sf ${SPL_DTB_IMAGE} ${DEPLOYDIR}/${SPL_DTB_SYMLINK} |
605 | ln -sf ${SPL_DTB_IMAGE} ${DEPLOYDIR}/${SPL_DTB_BINARY} | 615 | ln -sf ${SPL_DTB_IMAGE} ${DEPLOYDIR}/${SPL_DTB_BINARY} |
606 | ln -sf ${SPL_NODTB_IMAGE} ${DEPLOYDIR}/${SPL_NODTB_SYMLINK} | 616 | ln -sf ${SPL_NODTB_IMAGE} ${DEPLOYDIR}/${SPL_NODTB_SYMLINK} |