summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2020-02-10 17:34:49 -0500
committerMike Frysinger <vapier@google.com>2020-02-10 23:20:55 +0000
commit3285e4b436b7f25563179f5bc7191074d3515698 (patch)
tree34b68b78063605d85a53dc895203f730a6efcd18
parentae625410057cdf8e905282161af7cf1b353d3cc3 (diff)
downloadgit-repo-2.1.tar.gz
git-repo-2.1.zip
main: rework launcher version checkingv2.1
The code has an ad-hoc check in that it requires the launcher major version to not be less than the source code version. We don't really care about that requirement, and it doesn't fit with our other version checks. Rework it so we explicitly declare the min launcher version that is supported. We'll start with requiring repo launcher 1.15 which was released back in 2012. Hopefully no one has anything older than that, although it's not clear we work with even newer versions than that :). But let's be a little conservative with the first update to this logic. Bug: https://crbug.com/gerrit/10418 Change-Id: I611d70c60324d313c76874e978b8499a491a5d00 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254278 Reviewed-by: Michael Mortensen <mmortensen@google.com> Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Mike Frysinger <vapier@google.com>
-rwxr-xr-xmain.py32
1 files changed, 23 insertions, 9 deletions
diff --git a/main.py b/main.py
index 16db144ff..f6c93e4b1 100755
--- a/main.py
+++ b/main.py
@@ -255,27 +255,41 @@ class _Repo(object):
return result
-def _CheckWrapperVersion(ver, repo_path):
+def _CheckWrapperVersion(ver_str, repo_path):
+ """Verify the repo launcher is new enough for this checkout.
+
+ Args:
+ ver_str: The version string passed from the repo launcher when it ran us.
+ repo_path: The path to the repo launcher that loaded us.
+ """
+ # Refuse to work with really old wrapper versions. We don't test these,
+ # so might as well require a somewhat recent sane version.
+ # v1.15 of the repo launcher was released in ~Mar 2012.
+ MIN_REPO_VERSION = (1, 15)
+ min_str = '.'.join(str(x) for x in MIN_REPO_VERSION)
+
if not repo_path:
repo_path = '~/bin/repo'
- if not ver:
+ if not ver_str:
print('no --wrapper-version argument', file=sys.stderr)
sys.exit(1)
+ # Pull out the version of the repo launcher we know about to compare.
exp = Wrapper().VERSION
- ver = tuple(map(int, ver.split('.')))
- if len(ver) == 1:
- ver = (0, ver[0])
+ ver = tuple(map(int, ver_str.split('.')))
exp_str = '.'.join(map(str, exp))
- if exp[0] > ver[0] or ver < (0, 4):
+ if ver < MIN_REPO_VERSION:
print("""
-!!! A new repo command (%5s) is available. !!!
-!!! You must upgrade before you can continue: !!!
+repo: error:
+!!! Your version of repo %s is too old.
+!!! We need at least version %s.
+!!! A new repo command (%s) is available.
+!!! You must upgrade before you can continue:
cp %s %s
-""" % (exp_str, WrapperPath(), repo_path), file=sys.stderr)
+""" % (ver_str, min_str, exp_str, WrapperPath(), repo_path), file=sys.stderr)
sys.exit(1)
if exp > ver: