|
|
|
@ -4,19 +4,15 @@ This directory has the 'magic' for the `depot_tools` windows binary update
|
|
|
|
|
mechanisms.
|
|
|
|
|
|
|
|
|
|
A previous Python may actually be in use when it is run, preventing us
|
|
|
|
|
from replacing it outright without breaking running code. To
|
|
|
|
|
ommodate this, and Python cleanup, we handle Python in two stages:
|
|
|
|
|
from replacing it outright without breaking running code. To accommodate this,
|
|
|
|
|
and Python cleanup, we handle Python in two stages:
|
|
|
|
|
|
|
|
|
|
1. Use CIPD to install both Git and Python at once.
|
|
|
|
|
1. Use CIPD to install Python.
|
|
|
|
|
2. Use "bootstrap.py" as a post-processor to install generated files and
|
|
|
|
|
fix-ups.
|
|
|
|
|
|
|
|
|
|
## Software bootstrapped
|
|
|
|
|
* Python 3 (https://www.python.org/)
|
|
|
|
|
* Git for Windows (https://git-for-windows.github.io/)
|
|
|
|
|
* This will soon be unbundled from depot_tools. To prepare for this change,
|
|
|
|
|
please install Git directly. See the instructions in the
|
|
|
|
|
[Windows build docs](https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md#Install-git).
|
|
|
|
|
|
|
|
|
|
## Mechanism
|
|
|
|
|
|
|
|
|
@ -29,34 +25,36 @@ work.
|
|
|
|
|
package is present, and if so, if it's the expected version. If either of those
|
|
|
|
|
cases is not true, it will download and unpack the respective binary.
|
|
|
|
|
|
|
|
|
|
Installation of Git and Python is done by the [win_tools.bat](./win_tools.bat)
|
|
|
|
|
Installation of Python is done by the [win_tools.bat](./win_tools.bat)
|
|
|
|
|
script, which uses CIPD (via the [cipd](/cipd.bat) bootstrap) to acquire and
|
|
|
|
|
install each package into the root of the `depot_tools` repository. Afterwards,
|
|
|
|
|
the [bootstrap.py](./bootstrap.py) Python script is invoked to install stubs,
|
|
|
|
|
wrappers, and support scripts into `depot_tools` for end-users.
|
|
|
|
|
wrappers, and support scripts into `depot_tools` for end-users. This includes
|
|
|
|
|
checking whether the current global Git config matches recommended settings.
|
|
|
|
|
|
|
|
|
|
### Manifest
|
|
|
|
|
|
|
|
|
|
The Git and Python versions are specified in [manifest.txt](./manifest.txt).
|
|
|
|
|
The Python version is specified in [manifest.txt](./manifest.txt).
|
|
|
|
|
|
|
|
|
|
There is an associated file,
|
|
|
|
|
[manifest_bleeding_edge.txt](./manifest_bleeding_edge.txt), that can be used
|
|
|
|
|
to canary new versions on select bots. Any bots with a `.bleeding_edge` file
|
|
|
|
|
to canary a new version on select bots. Any bots with a `.bleeding_edge` file
|
|
|
|
|
in their `depot_tools` root will automatically use the bleeding edge manifest.
|
|
|
|
|
This allows opt-in systems to test against new versions of Python or Git. Once
|
|
|
|
|
those versions have been verified correct, `manifest.txt` can be updated to the
|
|
|
|
|
This allows opt-in systems to test against new versions of Python. Once
|
|
|
|
|
the version has been verified correct, `manifest.txt` can be updated to the
|
|
|
|
|
same specification, which will cause the remainder of systems to update.
|
|
|
|
|
|
|
|
|
|
### Bundles
|
|
|
|
|
|
|
|
|
|
Git and Python bundle construction is documented in
|
|
|
|
|
[infra packaging](https://chromium.googlesource.com/infra/infra/+/HEAD/doc/packaging/).
|
|
|
|
|
Python bundles are maintained by 3pp builders. See the
|
|
|
|
|
[3pp docs](https://chromium.googlesource.com/infra/infra/+/HEAD/3pp/README.md)
|
|
|
|
|
for more info.
|
|
|
|
|
|
|
|
|
|
Note that in order for the update to take effect, `gclient` currently needs to
|
|
|
|
|
run twice. The first time it will update the `depot_tools` repo, and the second
|
|
|
|
|
time it will see the new git version and update to it. This is a bug that should
|
|
|
|
|
be fixed, in case you're reading this and this paragraph infuriates you more
|
|
|
|
|
than the rest of this README.
|
|
|
|
|
time it will see the new Python version and update to it. This is a bug that
|
|
|
|
|
should be fixed, in case you're reading this and this paragraph infuriates you
|
|
|
|
|
more than the rest of this README.
|
|
|
|
|
|
|
|
|
|
## Testing
|
|
|
|
|
|
|
|
|
|