From: Yash.Shinde@windriver.com
To: openembedded-core@lists.openembedded.org
Cc: Yash.Shinde@windriver.com
Subject: [PATCH v2 1/3] rust: Update "do_update_snapshot" task for rust-snapshot.inc
Date: Sun, 30 Mar 2025 21:35:59 -0700 [thread overview]
Message-ID: <20250331043737.1964155-1-Yash.Shinde@windriver.com> (raw)
From: Yash Shinde <Yash.Shinde@windriver.com>
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:
https://github.com/rust-lang/rust/commit/1adfffd07f8704ca722f3897719ace079944b0c5
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
---
meta/recipes-devtools/rust/rust_1.84.1.bb | 47 +++++++++++++++--------
1 file changed, 30 insertions(+), 17 deletions(-)
diff --git a/meta/recipes-devtools/rust/rust_1.84.1.bb b/meta/recipes-devtools/rust/rust_1.84.1.bb
index ee8c782ce3..5a181b059c 100644
--- a/meta/recipes-devtools/rust/rust_1.84.1.bb
+++ b/meta/recipes-devtools/rust/rust_1.84.1.bb
@@ -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)
}
--
2.43.0
next reply other threads:[~2025-03-31 4:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-31 4:35 Yash.Shinde [this message]
2025-03-31 4:36 ` [PATCH v2 2/3] rust: Upgrade 1.84.1->1.85.0 Yash.Shinde
2025-03-31 4:36 ` [PATCH v2 3/3] rust: Upgrade 1.85.0->1.85.1 Yash.Shinde
-- strict thread matches above, loose matches on Subject: below --
2025-03-31 5:54 [PATCH v2 1/3] rust: Update "do_update_snapshot" task for rust-snapshot.inc Yash.Shinde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250331043737.1964155-1-Yash.Shinde@windriver.com \
--to=yash.shinde@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox