svenevs / exhale

Automatic C++ library api documentation generation: breathe doxygen in and exhale it out.
BSD 3-Clause "New" or "Revised" License
222 stars 51 forks source link

Github action fails #203

Closed srbhp closed 10 months ago

srbhp commented 1 year ago

Local builds works perfectly fine. But GitHub action fails of my project https://github.com/srbhp/nrgplusplus. Is anyone else having this issues? It used to fine.

/home/runner/.local/lib/python3.10/site-packages/breathe/project.py:116: RemovedInSphinx80Warning: Sphinx 8 will drop support for representing paths as strings. Use "pathlib.Path" or "os.fspath" instead.
  self._default_build_dir = os.path.dirname(app.doctreedir.rstrip(os.sep))
making output directory... done
/home/runner/.local/lib/python3.10/site-packages/exhale/configs.py:1408: RemovedInSphinx80Warning: Sphinx 8 will drop support for representing paths as strings. Use "pathlib.Path" or "os.fspath" instead.
  _one     = containmentFolder == app.srcdir

Extension error (exhale):
Handler <function environment_ready at 0x7f8bea878700> for event 'builder-inited' threw an exception (exception: startswith first arg must be str or a tuple of str, not _StrPath)
gmake[2]: *** [docs/CMakeFiles/Sphinx.dir/build.make:75: docs/sphinx/index.html] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:170: docs/CMakeFiles/Sphinx.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
svenevs commented 1 year ago

Looks like you might have put a Path object in conf.py to exhale_args. Needs to be a string most likely. I can relax that in the future

Rotzbua commented 1 year ago

This is a problem with breathe. It is incompatible with sphinx 7.2. May be solved by https://github.com/breathe-doc/breathe/pull/956 .

svenevs commented 1 year ago

This is a problem with breathe. It is incompatible with sphinx 7.2.

Thanks for the information! So we're in a weird place with dependencies, #205 is trying to make things less restrictive. The reason: this project does not update frequently, and over time the restrictions proved pointless and also impeded users.

My rationale for that PR is that I do not want to prevent say, 3 months from now, when a newer version of breathe is out and works with sphinx 7.2+ (as an example), but exhale started forcing sphinx<7.2. It's a bit of a hand-waive, but the API between exhale and breathe does not change (or at least I hope it doesn't...).

@srbhp the way to fix this would be to make sure that you install both sphinx and breathe before exhale. For example, if you are using a requirements.txt, you might do something like

sphinx==7.1
breathe
exhale

or something similar. If that works for you then I will make sure to add some notes to the compatibility table explaining what this release will do in terms of version requirements, and the fact that I'm pushing some of this responsibility onto users now (so that I don't gridlock them down the road).

I'm very open to thoughts, but this repo is very much in "emergency maintenance only" mode...so I'm really looking for the solution that fits "does not completely break everybody" but also "makes less maintenance overhead for exhale".

svenevs commented 10 months ago

This was likely fixed by the latest release