blob: 35806de75946742cb1dc957bdf88a834c3a0fa59 [file] [log] [blame] [view]
Mike Frysingere7379dc2019-01-30 14:35:39 -05001# Supported Python Versions
2
3With Python 2.7 officially going EOL on [01 Jan 2020](https://pythonclock.org/),
4we need a support plan for the repo project itself.
5Inevitably, there will be a long tail of users who still want to use Python 2 on
6their old LTS/corp systems and have little power to change the system.
7
8## Summary
9
10* Python 3.6 (released Dec 2016) is required by default starting with repo-1.14.
11* Older versions of Python (e.g. v2.7) may use the legacy feature-frozen branch
12 based on repo-1.13.
13
14## Overview
15
16We provide a branch for Python 2 users that is feature-frozen.
17Bugfixes may be added on a best-effort basis or from the community, but largely
18no new features will be added, nor is support guaranteed.
19
20Users can select this during `repo init` time via the [repo launcher].
21Otherwise the default branches (e.g. stable & master) will be used which will
22require Python 3.
23
24This means the [repo launcher] needs to support both Python 2 & Python 3, but
25since it doesn't import any other repo code, this shouldn't be too problematic.
26
27The master branch will require Python 3.6 at a minimum.
28If the system has an older version of Python 3, then users will have to select
29the legacy Python 2 branch instead.
30
Mike Frysingerf7c51602019-06-18 17:23:39 -040031### repo hooks
Mike Frysingere7379dc2019-01-30 14:35:39 -050032
Mike Frysingerf7c51602019-06-18 17:23:39 -040033Projects that use [repo hooks] run on independent schedules.
34They might migrate to Python 3 earlier or later than us.
35To support them, we'll probe the shebang of the hook script and if we find an
36interpreter in there that indicates a different version than repo is currently
37running under, we'll attempt to reexec ourselves under that.
38
39For example, a hook with a header like `#!/usr/bin/python2` will have repo
40execute `/usr/bin/python2` to execute the hook code specifically if repo is
41currently running Python 3.
42
43For more details, consult the [repo hooks] documentation.
44
45
46[repo hooks]: ./repo-hooks.md
Mike Frysingere7379dc2019-01-30 14:35:39 -050047[repo launcher]: ../repo