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

cmake --build build/docs --target GenerateDocs not working #126

Open
mscofield0 opened this issue May 7, 2021 · 16 comments
Open

cmake --build build/docs --target GenerateDocs not working #126

mscofield0 opened this issue May 7, 2021 · 16 comments

Comments

@mscofield0
Copy link
Contributor

Happens on both Ubuntu WSL and Windows:

cmake --build build/docs --target GenerateDocs
[0/2] Re-checking globbed directories...
[1/1] cd /mnt/c/Users/u26i76/Projects/ModernCppStarterOrig...26i76/Projects/ModernCppStarterOriginal/build/docs/doxygen
FAILED: CMakeFiles/GenerateDocs
cd .../build/docs && /usr/bin/cmake -E make_directory .../build/docs/doxygen && .../.cache/CPM/m.css/ce3daea984872362c3a8ed1c3d8956adbc400a88/documentation/doxygen.py .../build/docs/conf.py && echo Docs\ written\ to:\ .../build/docs/doxygen
Warning: libgs not found
Traceback (most recent call last):
  File ".../.cache/CPM/m.css/ce3daea984872362c3a8ed1c3d8956adbc400a88/documentation/doxygen.py", line 3857, in <module>
    subprocess.run(["doxygen", doxyfile], cwd=os.path.dirname(doxyfile), check=True)
  File "/usr/lib/python3.8/subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'doxygen'
ninja: build stopped: subcommand failed.
@TheLartians
Copy link
Owner

Do you have the dependencies Doxygen, jinja2 and Pygments installed on your system?
Check out the documentation workflow to see an example how to setup the dependencies on a Mac.

@mscofield0
Copy link
Contributor Author

I do have those installed, yes.

@giacomo-b
Copy link
Contributor

giacomo-b commented Aug 30, 2021

I am having the same problem.

When running cmake --build build/doc --target GenerateDocs, I get the following:

Traceback (most recent call last):
  File "/home/host/user/MyProject/build/doc/_deps/m.css-src/documentation/doxygen.py", line 47, in <module>
    from jinja2 import Environment, FileSystemLoader
ModuleNotFoundError: No module named 'jinja2'
CMakeFiles/GenerateDocs.dir/build.make:70: recipe for target 'CMakeFiles/GenerateDocs' failed
make[3]: *** [CMakeFiles/GenerateDocs] Error 1
CMakeFiles/Makefile2:149: recipe for target 'CMakeFiles/GenerateDocs.dir/all' failed
make[2]: *** [CMakeFiles/GenerateDocs.dir/all] Error 2
CMakeFiles/Makefile2:156: recipe for target 'CMakeFiles/GenerateDocs.dir/rule' failed
make[1]: *** [CMakeFiles/GenerateDocs.dir/rule] Error 2
Makefile:170: recipe for target 'GenerateDocs' failed
make: *** [GenerateDocs] Error 2

However, if I manually launch python from the command line and run

from jinja2 import Environment, FileSystemLoader

I don't get any error.

@giacomo-b
Copy link
Contributor

Anyone else has the same error? I tried on multiple machines (and OS) with no luck.

@TheLartians
Copy link
Owner

TheLartians commented Oct 2, 2021

@giacomo-b could you run pip install jinja2 pygments and see if the error persists? (maybe also pip3 install ... etc depending on the system configuration)

@giacomo-b
Copy link
Contributor

Hey @TheLartians thank you for replying. I tried, still no luck though:

$ pip install jinja2 pygments
...
Successfully installed MarkupSafe-1.1.1 jinja2-2.11.3 pygments-2.5.2
$ cmake -S documentation -B build/doc
...
-- Build files have been written to: /PATH/build/doc
$ cmake --build build/doc --target GenerateDocs
Traceback (most recent call last):
  File "/PATH/build/doc/_deps/m.css-src/documentation/doxygen.py", line 3859, in <module>
    run(state, templates=os.path.abspath(args.templates), wildcard=args.wildcard, index_pages=args.index_pages, search_merge_subtrees=not args.search_no_subtree_merging, search_add_lookahead_barriers=not args.search_no_lookahead_barriers, search_merge_prefixes=not args.search_no_prefix_merging)
  File "/PATH/build/doc/_deps/m.css-src/documentation/doxygen.py", line 3688, in run
    extract_metadata(state, file)
  File "/PATH/build/doc/_deps/m.css-src/documentation/doxygen.py", line 2195, in extract_metadata
    if compounddef.attrib['kind'] not in ['namespace', 'group', 'class', 'struct', 'union', 'dir', 'file', 'page']:
AttributeError: 'NoneType' object has no attribute 'attrib'
CMakeFiles/GenerateDocs.dir/build.make:70: recipe for target 'CMakeFiles/GenerateDocs' failed
make[3]: *** [CMakeFiles/GenerateDocs] Error 1
CMakeFiles/Makefile2:113: recipe for target 'CMakeFiles/GenerateDocs.dir/all' failed
make[2]: *** [CMakeFiles/GenerateDocs.dir/all] Error 2
CMakeFiles/Makefile2:120: recipe for target 'CMakeFiles/GenerateDocs.dir/rule' failed
make[1]: *** [CMakeFiles/GenerateDocs.dir/rule] Error 2
Makefile:170: recipe for target 'GenerateDocs' failed
make: *** [GenerateDocs] Error 2

@ClausKlein
Copy link
Contributor

Could you please check which python version is used:

bash-3.2$ pip --version
pip 21.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

bash-3.2$ python2
WARNING: Python 2.7 is not recommended. 
This version is included in macOS for compatibility with legacy software. 
Future versions of macOS will not include Python 2.7. 
Instead, it is recommended that you transition to using 'python3' from within Terminal.

Python 2.7.16 (default, Aug 30 2021, 14:43:11) 
[GCC Apple LLVM 12.0.5 (clang-1205.0.19.59.6) [+internal-os, ptrauth-isa=deploy on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from jinja2 import Environment, FileSystemLoader
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named jinja2
>>> 

@ClausKlein
Copy link
Contributor

ClausKlein commented Oct 5, 2021

Hey @TheLartians thank you for replying. I tried, still no luck though:

$ pip install jinja2 pygments
...
Successfully installed MarkupSafe-1.1.1 jinja2-2.11.3 pygments-2.5.2
$ cmake -S documentation -B build/doc
...
-- Build files have been written to: /PATH/build/doc
$ cmake --build build/doc --target GenerateDocs
# ...
make: *** [GenerateDocs] Error 2

oops! I got the same error, but note the warning:

bash-3.2$ pwd
/Users/clausklein/Workspace/cpp/ModernCppStarter
bash-3.2$ cmake --build build/doc --target GenerateDocs
Warning: libgs not found
warning: ignoring unsupported tag 'M_SHOW_UNDOCUMENTED' at line 31, file /Users/clausklein/Workspace/cpp/ModernCppStarter/build/doc/Doxyfile
Doxygen version used: 1.9.2
Searching for include files...
# ...

And it is not possible for me to install libgs:

Collecting libgs
  Using cached libgs-1.1.tar.gz (270 kB)
  Using cached libgs-0.11.tar.gz (272 kB)
ERROR: Cannot install libgs==0.11, libgs==1.1 and libgs==1.2.1 because these package versions have conflicting dependencies.

The conflict is caused by:
    libgs 1.2.1 depends on pandas==0.21.0
    libgs 1.1 depends on pandas==0.21.0
    libgs 0.11 depends on pandas==0.21.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
bash-3.2$ 

@DeveloperPaul123
Copy link

DeveloperPaul123 commented Oct 29, 2021

I'm also having issues with generating documentation. When I run the GenerateDocs target, the doxygen.py file that is referenced in CMake (COMMAND "${m.css_SOURCE_DIR}/documentation/doxygen.py") is simply opened in my default text editor.

I'm using Python 3.8 and also have jinja2 and pygments installed:

PS D:\Repositories> python
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from jinja2 import *
>>> from pygments import *

Update

After further investigation, it seems I'm running into the same issue as @ClausKlein. I upgraded to python 3.10 and re-installed jinja2 and pygments. I then ran the following command manually:

python.exe D:\Repositories\thread-pool\out\build\x64-Release\_deps\m.css-src\documentation\doxygen.py .\conf.py

I then get the following output:

Warning: libgs not found
warning: ignoring unsupported tag 'M_SHOW_UNDOCUMENTED' at line 31, file D:\Repositories\thread-pool\out\build\x64-Release\documentation\Doxyfile
Doxygen version used: 1.9.2 (caa4e3de211fbbef2c3adf58a6bd4c86d0eb7cb8)
// omitted for brevity
D:/Repositories/thread-pool/README.md:83: warning: unable to resolve reference to 'D:/Repositories/thread-pool/CONTRIBUTING.md' for \ref command
D:/Repositories/thread-pool/README.md:91: warning: Illegal command @DeveloperPaul123 as part of a <a>..</a> block
Running plantuml with JAVA...
lookup cache used 62/65536 hits=142 misses=62
finished...
Traceback (most recent call last):
  File "D:\Repositories\thread-pool\out\build\x64-Release\_deps\m.css-src\documentation\doxygen.py", line 3859, in <module>
    run(state, templates=os.path.abspath(args.templates), wildcard=args.wildcard, index_pages=args.index_pages, search_merge_subtrees=not args.search_no_subtree_merging, search_add_lookahead_barriers=not args.search_no_lookahead_barriers, search_merge_prefixes=not args.search_no_prefix_merging)
  File "D:\Repositories\thread-pool\out\build\x64-Release\_deps\m.css-src\documentation\doxygen.py", line 3688, in run
    extract_metadata(state, file)
  File "D:\Repositories\thread-pool\out\build\x64-Release\_deps\m.css-src\documentation\doxygen.py", line 2195, in extract_metadata
    if compounddef.attrib['kind'] not in ['namespace', 'group', 'class', 'struct', 'union', 'dir', 'file', 'page']:
AttributeError: 'NoneType' object has no attribute 'attrib'

I too run into issues when trying to install libgs.

Collecting libgs
  Using cached libgs-1.1.tar.gz (270 kB)
  Preparing metadata (setup.py) ... done
  Using cached libgs-0.11.tar.gz (272 kB)
  Preparing metadata (setup.py) ... done
ERROR: Cannot install libgs==0.11, libgs==1.1 and libgs==1.2.1 because these package versions have conflicting dependencies.

The conflict is caused by:
    libgs 1.2.1 depends on pandas==0.21.0
    libgs 1.1 depends on pandas==0.21.0
    libgs 0.11 depends on pandas==0.21.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

@TheLartians
Copy link
Owner

Hm that's strange, it could be that there is some conflict with different versions of python packages installed. Maybe you could try installing the dependencies in a virtual environment?

@DeveloperPaul123
Copy link

Possibly, but I stopped pursuing this and instead used an alternative doxygen theme.

@noctera
Copy link

noctera commented Feb 22, 2022

I get exactly the same error. Has anyone been able to solve it?

Python 3.10.2
pip 20.3.4

jinja2 and pygments are installed

@bongani-m
Copy link
Contributor

I found a fix: It looks like m.css in documentation/CMakeLists.txt needs to be updated to the latest commit hash
like below:

CPMAddPackage("gh:mosra/m.css#42d4a9a48f31f5df6e246c948403b54b50574a2a")

to:

CPMAddPackage("gh:mosra/m.css#a0d292ec311b97fefd21e93cdefb60f88d19ede6")

TheLartians pushed a commit that referenced this issue Mar 27, 2022
currently m.css commit hash will cause errors found in issue #126. Updating to the latest has fixes these problems

correct hash
@DeveloperPaul123
Copy link

Has this issue now been resolved?

@bsodmike
Copy link

I found a fix: It looks like m.css in documentation/CMakeLists.txt needs to be updated to the latest commit hash like below:

CPMAddPackage("gh:mosra/m.css#42d4a9a48f31f5df6e246c948403b54b50574a2a")

to:

CPMAddPackage("gh:mosra/m.css#a0d292ec311b97fefd21e93cdefb60f88d19ede6")

Mine is already the same, fresh install

cmake_minimum_required(VERSION 3.14...3.22)

project(GreeterDocs)

# ---- Dependencies ----

include(../cmake/CPM.cmake)

CPMAddPackage("gh:mosra/m.css#a0d292ec311b97fefd21e93cdefb60f88d19ede6")
CPMAddPackage(NAME Greeter SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/..)

Getting the same error as everyone else. Latest pip, python 3.9 etc.

@ClausKlein
Copy link
Contributor

I would prefer to only use stable tags for used packages.

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

No branches or pull requests

8 participants