This is trying to make bin/install (again) a click-button developer setup
installation tool, simplifying the process for newcomers and making it faster
for everyone.
To that end:
- we ensure that pip is up to date before using it for anything else
- we install the prerequisites (flake8, mypy, etc.) to avoid having to name
them one by one in user documentation
- we install packages one by one, rather them all together, to avoid that pip
failures force users to restart the whole process from scratch. In passing,
this makes also things much easier for the new pip resolver. To avoid
dependency inconsistencies we install packages in bin/pip-swh-packages, which
is already supposed to be topologically sorted
- we also install packages only *once*, rather than first without -with-testing
and later with it (as currently documented in the developer setup), because the
"[testing]" markers are extra requires, which always depend on the base
package (hopefully)
When this gets landed, the developer setup can be shortened to just say "run
bin/install".
bin/pip-swh-packages: remove [extras] markers before topo-sorting