This allows users of this image to build against different python versions,
which is a precondition to moving release builds to use RBE and significantly
simplifies reproducability of problems due to different python versions.
Furthermore, it gets rid of the requirement that the locally installed python
version on the user's machine must exactly match the python version installed
on the remote image, which makes it very hard to switch presubmits to newer
python versions.
This patch:
- adds a new Dockerfile called ...-multipython; we create a new Dockerfile
in order to be able to transition with a flag flip in the build instead of
making it necessary to flip all build configurations simultaneously
- installs all python versions we care about from source, which makes sure all
our python versions are built the same way - if we get them from third-party
repositories, they interfere with our system python and are set up slightly
differently
- adds a script that installs all python dependencies of the build process
the same way for all python versions; the old script would pin versions in
order to prefer binary packages over source packages; nowadays pip has the
option --prefer-binary, which achives the same goal in a much more
maintainable fashion
- moves the step to link python versions into the sysroot into
build_devtoolset.sh - this is not yet optimal, as the Dockerfile decides
which python version to provide; it will be addressed in a subsequent patch
PiperOrigin-RevId: 308407371
Change-Id: I96af4c2c33159757167b642c7b71772c6fae8873