aboutsummaryrefslogtreecommitdiff
path: root/rust_tools/rust_uprev.py
diff options
context:
space:
mode:
authorBob Haarman <inglorion@chromium.org>2020-12-15 01:40:05 +0000
committerCommit Bot <commit-bot@chromium.org>2020-12-16 23:14:44 +0000
commita27756bd06caae7d87c5f2e57cdfdd94b81c4837 (patch)
treeb9fcd4ac56bd8414f67eb9ba753b247696ca8847 /rust_tools/rust_uprev.py
parentbcda4751a23fe56615c7ae8b8bb9bbc7a45fce32 (diff)
downloadtoolchain-utils-a27756bd06caae7d87c5f2e57cdfdd94b81c4837.tar.gz
rust_uprev: accept -r* in virtual/rust version numbers
The ebuilds in virtual/rust can have patch (-r123) version numbers, which currently cause rust_uprev to fail. This CL updates rust_uprev to handle those. BUG=chromium:1159066 TEST=python3 ./rust_tools/rust_uprev_test.py Change-Id: I76ccaf553ea192db57e17ff3df9b02eee4105010 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2593514 Commit-Queue: Bob Haarman <inglorion@chromium.org> Tested-by: Bob Haarman <inglorion@chromium.org> Reviewed-by: George Burgess <gbiv@chromium.org> Reviewed-by: Tiancong Wang <tcwang@google.com>
Diffstat (limited to 'rust_tools/rust_uprev.py')
-rwxr-xr-xrust_tools/rust_uprev.py38
1 files changed, 27 insertions, 11 deletions
diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py
index 3c0ad012..b4020ea1 100755
--- a/rust_tools/rust_uprev.py
+++ b/rust_tools/rust_uprev.py
@@ -36,6 +36,7 @@ See `--help` for all available options.
# pylint: disable=cros-logging-import
import argparse
+import glob
import pathlib
import json
import logging
@@ -91,6 +92,20 @@ class RustVersion(NamedTuple):
int(m.group('major')), int(m.group('minor')), int(m.group('patch')))
+def find_virtual_rust_ebuild(version: RustVersion) -> str:
+ """Finds the virtual/rust ebuild for a given RustVersion.
+
+ This finds 1.2.3 and also 1.2.3-r4. It expects that there will
+ be exactly one match, and will assert if that is not the case.
+ """
+ virtual_rust_dir = os.path.join(RUST_PATH, '../../virtual/rust')
+ pattern = os.path.join(virtual_rust_dir, f'rust-{version}*.ebuild')
+ matches = glob.glob(pattern)
+ # We expect exactly one match.
+ assert len(matches) == 1, matches
+ return matches[0]
+
+
def parse_commandline_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
@@ -367,13 +382,12 @@ def update_rust_packages(rust_version: RustVersion, add: bool) -> None:
def update_virtual_rust(template_version: RustVersion,
new_version: RustVersion) -> None:
- virtual_rust_dir = os.path.join(RUST_PATH, '../../virtual/rust')
- assert os.path.exists(virtual_rust_dir)
- shutil.copyfile(
- os.path.join(virtual_rust_dir, f'rust-{template_version}.ebuild'),
- os.path.join(virtual_rust_dir, f'rust-{new_version}.ebuild'))
- subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'],
- cwd=virtual_rust_dir)
+ template_ebuild = find_virtual_rust_ebuild(template_version)
+ virtual_rust_dir = os.path.dirname(template_ebuild)
+ new_name = f'rust-{new_version}.ebuild'
+ new_ebuild = os.path.join(virtual_rust_dir, new_name)
+ shutil.copyfile(template_ebuild, new_ebuild)
+ subprocess.check_call(['git', 'add', new_name], cwd=virtual_rust_dir)
def upload_single_tarball(rust_url: str, tarfile_name: str,
@@ -569,10 +583,12 @@ def remove_rust_uprev(rust_version: Optional[RustVersion],
ebuild_file))
run_step('remove version from rust packages', lambda: update_rust_packages(
delete_version, add=False))
- run_step(
- 'remove virtual/rust', lambda: remove_files(
- f'rust-{delete_version}.ebuild',
- os.path.join(RUST_PATH, '../../virtual/rust')))
+ run_step('remove virtual/rust', lambda: remove_virtual_rust(delete_version))
+
+
+def remove_virtual_rust(delete_version: RustVersion) -> None:
+ dirname, basename = os.path.split(find_virtual_rust_ebuild(delete_version))
+ subprocess.check_call(['git', 'rm', basename], cwd=dirname)
def create_new_repo(rust_version: RustVersion) -> None: