Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.13 build comments #3300

Merged
merged 3 commits into from
Nov 22, 2024
Merged

3.13 build comments #3300

merged 3 commits into from
Nov 22, 2024

Conversation

rtobar
Copy link
Collaborator

@rtobar rtobar commented Nov 22, 2024

Detalles en los mensajes de los commits

  • Clarifica el uso de make build -j (i.e.: NO usar)
  • Pinea sphinx ~= 8.0.0. En 8.1 agregaron los roles como built-in.
  • Remueve un par de settings en nuestro conf.py para reducir la brecha entre el nuestro y el de cpython

During the migration to 3.13 it was suggested to use `make build -j` to
automatically speed up the building process of the documentation to use
all available cores. This is red herring in two different ways:

 * `make`'s `-j` flag can be used to parallelise the processing of
   `make` target dependencies instead of magically apply parallelisation
   to the underlying commands. In our case the `make build` command has
   a sequential sequence of dependencies (venv -> setup -> do_build) so
   no actual parallelisation is achieved when passing `-j`.
   `sphinx-build` can be parallelised by giving *it* a `-j` flag,
   which we already do (`-j auto`). In other words, there's nothing to
   do on our side to speed things up even further. What we *do* have
   though is a `make` `SPHINX_JOBS` variable, which acts as the argument
   to `sphinx-build -j`. Using this users can reduce the number of CPUs
   they want to use for the build process.

 * Secondly, an empty `make -j` option (i.e., without a number
   afterwards), contrary to popular belief, runs as many recipes in
   parallel as possible [1], *with no regards to the number of available
   cores*. In most scenarios this is fine because the number of
   dependencies for a given target isn't that great, or because the
   target instructions are not that heavy, but it can generate
   difficult-to-understand problems on occasion. For example, if you are
   building a shared library that consists on 250 files of heavy C++,
   you'll end up spawning 250 C++ compilers at the same time, which
   surely will consume all the memory of your computer, causing them to
   be OOM-killed. Bottom-line is: never use -j without a value.

Signed-off-by: Rodrigo Tobar <[email protected]>
8.1 introduces the built-in cvw/cwe roles. During the migration the
requirement was bumped to 8.1 while trying to sort out a problem with
the pypi role, which turned out to be the cpython submodule not being
committed/pushed properly earlier, and hence the update wasn't necessary
(and broke things).

Signed-off-by: Rodrigo Tobar <[email protected]>
These are already defined in cpython's, let's thus remove the amount of
overriding we need to provide.

Signed-off-by: Rodrigo Tobar <[email protected]>
@cmaureir cmaureir merged commit 884379d into python:3.13 Nov 22, 2024
3 of 4 checks passed
@rtobar rtobar deleted the 3.13 branch November 22, 2024 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants