Since wheel support was introduced in 2015 we always relied on pre-built
wheels for bootstrapping. Now, we can bootstrap directly from the
sources of these packages in git.
The `bootstrapped-pip` packages is used to build `pip`, `setuptools` and `wheel`,
after which those packages are used to build everything else.
Note that when building `bootstrapped-pip` some errors are shown.
These are not important, the build actually does succeed and work as intended.
This commit splits the `buildPythonPackage` into multiple setup hooks.
Generally, Python packages are built from source to wheels using `setuptools`.
The wheels are then installed with `pip`. Tests were often called with
`python setup.py test` but this is less common nowadays. Most projects
now use a different entry point for running tests, typically `pytest`
or `nosetests`.
Since the wheel format was introduced more tools were built to generate these,
e.g. `flit`. Since PEP 517 is provisionally accepted, defining a build-system
independent format (`pyproject.toml`), `pip` can now use that format to
execute the correct build-system.
In the past I've added support for PEP 517 (`pyproject`) to the Python
builder, resulting in a now rather large builder. Furthermore, it was not possible
to reuse components elsewhere. Therefore, the builder is now split into multiple
setup hooks.
The `setuptoolsCheckHook` is included now by default but in time it should
be removed from `buildPythonPackage` to make it easier to use another hook
(curently one has to pass in `dontUseSetuptoolsCheck`).
Hash was forgotten in
a26ae760e2.
The newer version of pkg_resources, 36.4.0, is actually incomplete.
Therefore, let's stick with the older version which didn't cause any
issues.
pip 9.0.1 vendors a version of setuptools/pkg_resources which has been
fixed in setuptools/pkg_resources but not yet in pip. Because we're now
facing this issue with nox, we update pkg_resources to the version we
also have in setuptools. Let's cross our fingers this will work without
breaking other stuff.
Update to latest setuptools. Latest setuptools will always try to run tests.
This can cause some very vague errors. We now need to fix all packages where we do not
invoke the correct test runner.