The Sphinx build requires both the Cython module to have been built and
the doxygen run to have finished. When running the build in parallel
with scons build -j#, there was the possibility that Sphinx could run
before all its dependencies were built. This change adds dependencies
for the Sphinx builder on Doxygen and the Cython module, resolving the
problem.
Sphinx 4.0 (from the main branch) is incompatible with several
extensions we use (katex, matlabdomain). Set a maximum for the Sphinx
version installed during the CI run to avoid unintentional breakage.
GitHub Actions is limited to 5 concurrent macOS runners. Having 10 macOS
jobs was causing a bottleneck in the CI runs. This change reduces the
number of concurrent jobs from a single run to 6, which will hopefully
be sustainable. The other versions of Python are currently tested on
Ubuntu and Windows as well.
The problem seems to be in cloning the submodules, where a slow
network connection causes the remote end to hang up and the clone fails.
Increasing the buffer size is reputed to solve this error.
The github.ref context includes 'refs/heads/' before the branch name,
so just make sure the end of the string matches the branch. Put the
condition into an environment variable so it is in one place.
The version of the python3-lxml package stored in the default apt
database on the Ubuntu 18.04 runner is not available from the package
server. This update finds the new copy to resolve the problem.
The Cython package for Python 3 is called cython3. We use python_cmd to
check for Cython now, which is Python 3.
The test comparisons are done with the Python that's running SCons,
which is Python 2 in this test. NumPy needs to be installed for that
Python to be able to do CSV file comparisons in the tests.
This change bumps the builder that uses the system Python 2 to run SCons
and the system Python 3 for the Python interface to Ubuntu 18.04 from
16.04. The reason for this change is that Ubuntu 16.04 provides NumPy
1.11, which does not support flexible dtypes when creating arrays
using .full(). We have decided to drop support for NumPy older than 1.12
for this reason. Numpy 1.12 was released in January 2017.