Hi Helmut and all!

On Sun, Sep 26, 2021 at 07:37:13PM +0200, Helmut Grohne wrote:
> I'm reporting this bug on behalf of Alexey Brodkin as the original
> reporter on irc.
>
> cyrus-sasl2 fails to build from source in unstable on amd64. A build
> ends as follows:
>
> [...skipping warnings which are not fatal...]
>
> | Exception occurred: File 
> "/usr/lib/python3/dist-packages/docutils/writers/manpage.py", line 171, in 
> __init__
> |     self.settings = settings = document.settings
> | AttributeError: 'CyrusManualPageBuilder' object has no attribute 'settings'
> | The full traceback has been saved in /tmp/sphinx-err-3nha1qoj.log, if you 
> want to report the issue to the developers.
>
> [...]
>
> It built fine yesterday and today sphinx got uploaded to unstable. That
> seems like a very plausible reason, right? I've put Dmitry in the loop.

Yes, it is caused by a change in Sphinx.

CyrusManualPageTranslator inherits from Sphinx' ManualPageTranslator and
calls the super-class constructor as follows:

  BaseTranslator.__init__(self, builder, *args, **kwds)

However, starting with Sphinx 2.0 it should be called with document as the
first argument and builder as the second one [1]. The old way of calling it
raised a warning for some time and was completely removed in Sphinx 4.0.

The full traceback is:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/sphinx/cmd/build.py", line 280, in 
build_main
    app.build(args.force_all, filenames)
  File "/usr/lib/python3/dist-packages/sphinx/application.py", line 337, in 
build
    self.builder.build_update()
  File "/usr/lib/python3/dist-packages/sphinx/builders/__init__.py", line 290, 
in build_update
    self.build(['__all__'], to_build)
  File "/usr/lib/python3/dist-packages/sphinx/builders/__init__.py", line 357, 
in build
    self.write(docnames, list(updated_docnames), method)
  File 
"/cyrus-sasl2-2.1.27+dfsg/build-heimdal/docsrc/exts/sphinxlocal/builders/manpage.py",
 line 86, in write
    docwriter.write(largetree, destination)
  File "/usr/lib/python3/dist-packages/docutils/writers/__init__.py", line 78, 
in write
    self.translate()
  File 
"/cyrus-sasl2-2.1.27+dfsg/build-heimdal/docsrc/exts/sphinxlocal/writers/manpage.py",
 line 37, in translate
    visitor = CyrusManualPageTranslator(self.builder, self.document)
  File 
"/cyrus-sasl2-2.1.27+dfsg/build-heimdal/docsrc/exts/sphinxlocal/writers/manpage.py",
 line 49, in __init__
    BaseTranslator.__init__(self, builder, *args, **kwds)
  File "/usr/lib/python3/dist-packages/sphinx/writers/manpage.py", line 82, in 
__init__
    super().__init__(document, builder)
  File "/usr/lib/python3/dist-packages/sphinx/util/docutils.py", line 460, in 
__init__
    super().__init__(document)
  File "/usr/lib/python3/dist-packages/docutils/writers/manpage.py", line 171, 
in __init__
    self.settings = settings = document.settings
AttributeError: 'CyrusManualPageBuilder' object has no attribute 'settings'

cyrus-sasl2's Sphinx extension passes builder in place of document, which
causes this error.

[1]: https://github.com/sphinx-doc/sphinx/pull/5828

--
Dmitry Shachnev

Attachment: signature.asc
Description: PGP signature

Reply via email to