diff options
author | Bob Haarman <inglorion@chromium.org> | 2020-12-15 01:40:05 +0000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-12-16 23:14:44 +0000 |
commit | a27756bd06caae7d87c5f2e57cdfdd94b81c4837 (patch) | |
tree | b9fcd4ac56bd8414f67eb9ba753b247696ca8847 /rust_tools/rust_uprev.py | |
parent | bcda4751a23fe56615c7ae8b8bb9bbc7a45fce32 (diff) | |
download | toolchain-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-x | rust_tools/rust_uprev.py | 38 |
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: |