mirror of
https://git.yoctoproject.org/poky
synced 2026-04-23 00:32:12 +02:00
rust: Update "do_update_snapshot" task for rust-snapshot.inc
The 'do_update_snapshot' task is failed with below error:
Exception: FileNotFoundError: [Errno 2] No such file or directory: '.../rustc-1.83.0-src/src/stage0.json'
There are changes in use of key-value format in stage0 file in
rust sources and the rust recipe should be apdated for that.
Changes in rust:
1adfffd07f
(From OE-Core rev: d64456f6ea58d683993b0bc7294baa889bafdf7b)
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
9286f1e4aa
commit
9733fce7d6
@@ -327,24 +327,37 @@ python do_update_snapshot() {
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
with open(os.path.join(d.getVar("S"), "src", "stage0.json")) as f:
|
||||
j = json.load(f)
|
||||
|
||||
config_dist_server = j['config']['dist_server']
|
||||
compiler_date = j['compiler']['date']
|
||||
compiler_version = j['compiler']['version']
|
||||
key_value_pairs = {}
|
||||
with open(os.path.join(d.getVar("S"), "src", "stage0")) as f:
|
||||
for line in f:
|
||||
# Skip empty lines or comments
|
||||
if not line.strip() or line.startswith("#"):
|
||||
continue
|
||||
# Split the line into key and value using '=' as separator
|
||||
match = re.match(r'(\S+)\s*=\s*(\S+)', line.strip())
|
||||
if match:
|
||||
key = match.group(1)
|
||||
value = match.group(2)
|
||||
key_value_pairs[key] = value
|
||||
# Extract the required values from key_value_pairs
|
||||
config_dist_server = key_value_pairs.get('dist_server', '')
|
||||
compiler_date = key_value_pairs.get('compiler_date', '')
|
||||
compiler_version = key_value_pairs.get('compiler_version', '')
|
||||
|
||||
src_uri = defaultdict(list)
|
||||
for k, v in j['checksums_sha256'].items():
|
||||
m = re.search(f"dist/{compiler_date}/(?P<component>.*)-{compiler_version}-(?P<arch>.*)-unknown-linux-gnu\\.tar\\.xz", k)
|
||||
if m:
|
||||
component = m.group('component')
|
||||
arch = m.group('arch')
|
||||
src_uri[arch].append(f"SRC_URI[{component}-snapshot-{arch}.sha256sum] = \"{v}\"")
|
||||
|
||||
# Assuming checksums_sha256 is now a key-value pair like: checksum_key = checksum_value
|
||||
for k, v in key_value_pairs.items():
|
||||
# Match the pattern for checksums
|
||||
if "dist" in k and "tar.xz" in k:
|
||||
m = re.search(f"dist/{compiler_date}/(?P<component>.*)-{compiler_version}-(?P<arch>.*)-unknown-linux-gnu\\.tar\\.xz", k)
|
||||
if m:
|
||||
component = m.group('component')
|
||||
arch = m.group('arch')
|
||||
src_uri[arch].append(f"SRC_URI[{component}-snapshot-{arch}.sha256sum] = \"{v}\"")
|
||||
# Create the snapshot string with the extracted values
|
||||
snapshot = """\
|
||||
## This is information on the rust-snapshot (binary) used to build our current release.
|
||||
## snapshot info is taken from rust/src/stage0.json
|
||||
## snapshot info is taken from rust/src/stage0
|
||||
## Rust is self-hosting and bootstraps itself with a pre-built previous version of itself.
|
||||
## The exact (previous) version that has been used is specified in the source tarball.
|
||||
## The version is replicated here.
|
||||
@@ -352,10 +365,10 @@ python do_update_snapshot() {
|
||||
SNAPSHOT_VERSION = "%s"
|
||||
|
||||
""" % compiler_version
|
||||
|
||||
# Add the checksum components to the snapshot
|
||||
for arch, components in src_uri.items():
|
||||
snapshot += "\n".join(components) + "\n\n"
|
||||
|
||||
# Add the additional snapshot URIs
|
||||
snapshot += """\
|
||||
SRC_URI += " \\
|
||||
${RUST_DIST_SERVER}/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \\
|
||||
@@ -369,7 +382,7 @@ RUST_STD_SNAPSHOT = "rust-std-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-lin
|
||||
RUSTC_SNAPSHOT = "rustc-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
|
||||
CARGO_SNAPSHOT = "cargo-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
|
||||
""" % config_dist_server
|
||||
|
||||
# Write the updated snapshot information to the rust-snapshot.inc file
|
||||
with open(os.path.join(d.getVar("THISDIR"), "rust-snapshot.inc"), "w") as f:
|
||||
f.write(snapshot)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user