[Chapel Merge] Adjust 'make docs' to do an incremental build

Branch: refs/heads/master
Revision: 06cf289
Author: mppf
Log Message:

Merge pull request #16835 from mppf/make-docs-incremental

Adjust ‘make docs’ to do an incremental build

Resolves #16826

Note, #16862 /
https://github.com/chapel-lang/sphinxcontrib-chapeldomain/pull/45 is
required for this change to function properly - but this branch has those

This PR adjusts make docs to do an incremental sphinx build. For now,
the chpldoc command always runs, but the scripts only update the source
files for sphinx-build if they are different.

This brings a make docs after a minor change to about 10 seconds.


  • Adjusts util/config/update-if-different to include a mode argument
    (--update or --copy) and adjusts the existing calls to it to use
    the --update argument.
  • Added --copy mode to util/config/update-if-different that will
    copy all updated source files (recursively) and delete things in the
    dst directory not present in src.
  • Does the module docs build steps by first constructing the rst sources
    in a subdirectory of build/doc/ and then using update-if-different --copy from here (so that removed files can be correctly handled)
  • Updated Makefiles for make docs to avoid deleting “build” directory
    (since we can use it again, incrementally)
  • Removes a lot of command echoing for this process. One can use make SHELL='sh -x' docs to see the commands again.

Reviewed by @ben-albrecht and @lydia-duncan - thanks!

  • [x] full local testing

Modified Files:
M compiler/Makefile
M doc/Makefile
M doc/Makefile.sphinx
M modules/Makefile
M third-party/llvm/Makefile
M util/config/update-if-different

Compare: https://github.com/chapel-lang/chapel/compare/387505edf921...06cf2895f523