Bug 2216878

Summary: Invalid C++ Declaration When Building Breathe on Rawhide(39) since doxygen 1.9.7
Product: [Fedora] Fedora Reporter: Daniel Milnes <daniel>
Component: python-breatheAssignee: Dan Čermák <dan.cermak>
Status: NEW --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 39CC: aviso, cstratak, dan.cermak, dradez, epel-packagers-sig, ksurma, mhroncok, python-packagers-sig, than, thrnciar, trix
Target Milestone: ---Keywords: Upgrades
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2168842, 2231791    

Description Daniel Milnes 2023-06-23 01:10:34 UTC
The `python-breathe` RPM does not currently work when building against Rawhide. Whilst running `sphinx-build`, a C++ error is thrown which kills the build:

sphinx.errors.SphinxWarning: /builddir/breathe/documentation/source/specific.rst:195:Invalid C++ declaration: Expected identifier in nested name. [error at 0]

The C++ file it's referencing is https://github.com/breathe-doc/breathe/blob/main/examples/specific/cpp_anon.h

Logs from a scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=102469036

Reproducible: Always

Steps to Reproduce:
1. fedpkg clone python-breathe
2. fedpkg --release f39 mockbuild
Actual Results:  
The build is aborted with this error:

sphinx.errors.SphinxWarning: /builddir/breathe/documentation/source/specific.rst:195:Invalid C++ declaration: Expected identifier in nested name. [error at 0]

Expected Results:  
The RPM should build successfully.

There haven't been any commits to dist-git since the last release to Rawhide (https://bodhi.fedoraproject.org/updates/FEDORA-2023-74beae3e8f), but building that commit no longer works. Building the previous commit (the one currently on FC38) on FC39 throws the same error, but builds correctly against FC38.

Comment 1 Miro Hrončok 2023-07-01 14:02:14 UTC
This blocks the Python 3.12 rebuild of several other packages.

Comment 2 Tom Rix 2023-07-01 20:40:04 UTC
struct ClassWithAnonEntities {                                                                                                                             
        struct {                                                                                                                                           
                int structMember;                                                                                                                          
        };                                                                                                                                                 
                                                                                                                                                           
        union {                                                                                                                                            
                int unionMember;                                                                                                                           
        };                                                                                                                                                 
                                                                                                                                                           
        enum {                                                                                                                                             
                Enumerator                                                                                                                                 
        };                                                                                                                                                 
}; 
from cpp_anon.h, is valid. it builds with gcc,g++ 
the problem is likely with sphinx

Comment 3 Miro Hrončok 2023-07-01 21:30:18 UTC
reading sources... [100%] variable
> /usr/lib/python3.11/site-packages/sphinx/util/logging.py(427)filter()
-> raise exc
(Pdb) 
make[1]: Leaving directory '/builddir/build/BUILD/breathe-4.35.0/documentation'
fatal: not a git repository (or any of the parent directories): .git
Exception occurred while building, starting debugger:
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/sphinx/cmd/build.py", line 284, in build_main
    app.build(args.force_all, args.filenames)
  File "/usr/lib/python3.11/site-packages/sphinx/application.py", line 347, in build
    self.builder.build_update()
  File "/usr/lib/python3.11/site-packages/sphinx/builders/__init__.py", line 311, in build_update
    self.build(to_build,
  File "/usr/lib/python3.11/site-packages/sphinx/builders/__init__.py", line 326, in build
    with logging.pending_warnings():
  File "/usr/lib64/python3.11/contextlib.py", line 144, in __exit__
    next(self.gen)
  File "/usr/lib/python3.11/site-packages/sphinx/util/logging.py", line 222, in pending_warnings
    memhandler.flushTo(logger)
  File "/usr/lib/python3.11/site-packages/sphinx/util/logging.py", line 187, in flushTo
    logger.handle(record)
  File "/usr/lib64/python3.11/logging/__init__.py", line 1644, in handle
    self.callHandlers(record)
  File "/usr/lib64/python3.11/logging/__init__.py", line 1706, in callHandlers
    hdlr.handle(record)
  File "/usr/lib64/python3.11/logging/__init__.py", line 974, in handle
    rv = self.filter(record)
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/logging/__init__.py", line 830, in filter
    result = f.filter(record)
             ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/sphinx/util/logging.py", line 427, in filter
    raise exc
sphinx.errors.SphinxWarning: /builddir/build/BUILD/breathe-4.35.0/documentation/source/specific.rst:195:Invalid C++ declaration: Expected identifier in nested name. [error at 0]
  
  ^
make[1]: *** [Makefile:56: html] Error 2
make: *** [Makefile:7: html] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.oRkb7n (%build)
    Bad exit status from /var/tmp/rpm-tmp.oRkb7n (%build)


Koschei does not indicate this was caused by a change in Sphinx, but by an update of doxygen:

https://koschei.fedoraproject.org/build/15522602


Previous such problems were attributed to breathe: https://github.com/sphinx-doc/sphinx/issues/9433

Comment 4 Miro Hrončok 2023-07-03 11:08:16 UTC
I used an older doxygen build (doxygen-1.9.6-7.fc39) to unblock the Python 3.12 rebuild.

Comment 5 Karolina Surma 2023-07-03 11:43:45 UTC
I reraised the issue upstream adding the findings from my debug attempt: https://github.com/breathe-doc/breathe/issues/935

Comment 6 Tom Rix 2023-07-03 12:17:59 UTC
Why is this not a doxygen bug ?

Comment 7 Miro Hrončok 2023-07-03 12:33:35 UTC
It might be.

Comment 8 Fedora Release Engineering 2023-08-16 07:14:59 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 39 development cycle.
Changing version to 39.