diff --git a/main.py b/main.py index 16db144f..f6c93e4b 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: