Bug#1042643: libtext-markup-perl: FTBFS with Sphinx 7.1, docutils 0.20: dh_auto_test: error: /usr/bin/perl Build test --verbose 1 returned exit code 1

Lucas Nussbaum lucas at debian.org
Sun Jul 30 19:32:22 BST 2023


Source: libtext-markup-perl
Version: 0.24-1
Severity: important
Tags: ftbfs
User: python-modules-team at lists.alioth.debian.org
Usertags: sphinx7.1

Hi,

libtext-markup-perl fails to build with Sphinx 7.1 and docutils 0.20, both of which
are currently available in experimental.

Relevant part (hopefully):
>  debian/rules build
> dh build
>    dh_update_autotools_config
>    dh_autoreconf
>    dh_auto_configure
> 	/usr/bin/perl Build.PL --installdirs vendor --config "optimize=-g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" --config "ld=x86_64-linux-gnu-gcc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro"
> Checking prerequisites...
>   recommends:
>     *  Test::Pod is not installed
>     *  Test::Pod::Coverage is not installed
> 
> ERRORS/WARNINGS FOUND IN PREREQUISITES.  You may wish to install the versions
> of the modules indicated above before proceeding with this installation
> 
> Run 'Build installdeps' to install missing prerequisites.
> 
> Created MYMETA.yml and MYMETA.json
> Creating new 'Build' script for 'Text-Markup' version '0.24'
>    dh_auto_build
> 	/usr/bin/perl Build
> Building Text-Markup
>    dh_auto_test
> 	/usr/bin/perl Build test --verbose 1
> t/base.t ..... 
> 1..38
> ok 1 - use Text::Markup;
> ok 2 - Text::Markup->can(...)
> ok 3 - Should have core formats
> ok 4 - Get format matchers
> ok 5 - Should have core format matchers
> ok 6 - '(?^:p(?:od|m|l))' isa 'Regexp'
> ok 7 - '(?^:textile)' isa 'Regexp'
> ok 8 - '(?^:x?html?)' isa 'Regexp'
> ok 9 - '(?^:(?:m(?:edia)?)?wiki)' isa 'Regexp'
> ok 10 - '(?^:m(?:d(?:own)?|kdn?|arkdown))' isa 'Regexp'
> ok 11 - '(?^:tra?c)' isa 'Regexp'
> ok 12 - '(?^:re?st)' isa 'Regexp'
> ok 13 - '(?^:a(?:sc(?:iidoc)?|doc)?)' isa 'Regexp'
> ok 14 - '(?^:bb(?:code)?)' isa 'Regexp'
> ok 15 - '(?^:mm(?:d(?:own)?|kdn?|arkdown))' isa 'Regexp'
> ok 16 - '(?^:creole)' isa 'Regexp'
> ok 17 - Should be now have the "cool" parser
> ok 18 - An object of class 'Text::Markup' isa 'Text::Markup'
> ok 19 - Should have no default format
> ok 20 - An object of class 'Text::Markup' isa 'Text::Markup'
> ok 21 - Should have default format
> ok 22 - Should be able to find specific parser
> ok 23 - Should be able to find default format parser
> ok 24 - Should be find the specified default parser
> ok 25 - Should be able to guess the parser file the file name
> ok 26 - Should guess "cool" format file "foo.cool"
> ok 27 - Should not guess "cool" format file "foocool"
> ok 28 - Should not guess "cool" format file "foo.cool.txt"
> ok 29 - Should be now have the "cool" and "funky" parsers
> ok 30 - Should still guess "cool" format file "foo.cool"
> ok 31 - Should guess "funky" format file "foo.funky"
> ok 32 - Should guess "funky" format file "foo.funky.txt"
> ok 33 - Test the "cool" parser
> ok 34 - Test the "funky" parser
> ok 35 - Test the "cool" parser with options
> ok 36 - Test pod option to suppress HTML header
> ok 37 - Test pod options to suppress HTML header and footer
> ok 38 - Test the "none" parser
> ok
> 
>     #   Failed test 'Parse rest file'
>     #   at t/formats.t line 52.
>     #          got: '<?xml version="1.0" encoding="utf-8"?>
>     # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>     # <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
>     # <head>
>     # <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
>     # <title>I am a reST document</title>
>     # 
>     # </head>
>     # <body>
>     # <div class="document" id="i-am-a-rest-document">
>     # <h1 class="title">I am a reST document</h1>
>     # <h2 class="subtitle" id="and-i-am-its-subtitle">And I am its subtitle</h2>
>     # 
>     # <p><a class="reference external" href="http://docutils.sourceforge.net/">Rest</a> allows <em>inline</em> <strong>style</strong> and other stuff,
>     # but I guess this <tt class="docutils literal">code</tt> is enough.</p>
>     # <div class="directive-unknown">
>     # <strong>unknown: </strong><em>arg1 </em><em>arg2 </em><pre class="literal-block">
>     # We also support unknown directive, so that no content is lost if reST
>     # specialization is parsed.
>     # </pre>
>     # 
>     # </div>
>     # <p>Of course we may also find <span class="role-unknown">new roles</span>.</p>
>     # <div class="directive-module">
>     # <strong>module: </strong><em>mymodule </em><p>This is a module that doesn't <em>exist</em></p>
>     # <div class="directive-function">
>     # <strong>function: </strong><em>foo() </em><p>In Sphinx documentation you could find this stuff.</p>
>     # 
>     # </div>
>     # 
>     # </div>
>     # <pre class="code python literal-block">
>     # print "I have no title"
>     # </pre>
>     # </div>
>     # </body>
>     # </html>
>     # '
>     #     expected: '<?xml version="1.0" encoding="utf-8" ?>
>     # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>     # <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
>     # <head>
>     # <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
>     # <title>I am a reST document</title>
>     # 
>     # </head>
>     # <body>
>     # <div class="document" id="i-am-a-rest-document">
>     # <h1 class="title">I am a reST document</h1>
>     # <h2 class="subtitle" id="and-i-am-its-subtitle">And I am its subtitle</h2>
>     # 
>     # <p><a class="reference external" href="http://docutils.sourceforge.net/">Rest</a> allows <em>inline</em> <strong>style</strong> and other stuff,
>     # but I guess this <tt class="docutils literal">code</tt> is enough.</p>
>     # <div class="directive-unknown">
>     # <strong>unknown: </strong><em>arg1 </em><em>arg2 </em><pre class="literal-block">
>     # We also support unknown directive, so that no content is lost if reST
>     # specialization is parsed.
>     # </pre>
>     # 
>     # </div>
>     # <p>Of course we may also find <span class="role-unknown">new roles</span>.</p>
>     # <div class="directive-module">
>     # <strong>module: </strong><em>mymodule </em><p>This is a module that doesn't <em>exist</em></p>
>     # <div class="directive-function">
>     # <strong>function: </strong><em>foo() </em><p>In Sphinx documentation you could find this stuff.</p>
>     # 
>     # </div>
>     # 
>     # </div>
>     # <pre class="code python literal-block">
>     # print "I have no title"
>     # </pre>
>     # </div>
>     # </body>
>     # </html>
>     # '
>     # Looks like you failed 1 test of 7.
> 
> #   Failed test 'Testing rest format'
> #   at t/formats.t line 63.
> # Looks like you failed 1 test of 12.
> t/formats.t .. 
> ok 1 - use Text::Markup;
> # Subtest: Testing markdown format
>     1..10
>     ok 1 - use Text::Markup::Markdown;
>     ok 2 - markdown should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .md extension is markdown
>     ok 5 - Should guess that .mkdn extension is markdown
>     ok 6 - Should guess that .mkd extension is markdown
>     ok 7 - Should guess that .mdown extension is markdown
>     ok 8 - Should guess that .markdown extension is markdown
>     ok 9 - Parse markdown file
>     ok 10 - Parse empty markdown file
> ok 2 - Testing markdown format
> # Subtest: Testing html format
>     1..9
>     ok 1 - use Text::Markup::HTML;
>     ok 2 - html should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .html extension is html
>     ok 5 - Should guess that .htm extension is html
>     ok 6 - Should guess that .xhtml extension is html
>     ok 7 - Should guess that .xhtm extension is html
>     ok 8 - Parse html file
>     ok 9 - Parse empty html file
> ok 3 - Testing html format
> # Subtest: Testing pod format
>     1..8
>     ok 1 - use Text::Markup::Pod;
>     ok 2 - pod should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .pod extension is pod
>     ok 5 - Should guess that .pm extension is pod
>     ok 6 - Should guess that .pl extension is pod
>     ok 7 - Parse pod file
>     ok 8 - Parse empty pod file
> ok 4 - Testing pod format
> # Subtest: Testing trac format
>     1..7
>     ok 1 - use Text::Markup::Trac;
>     ok 2 - trac should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .trac extension is trac
>     ok 5 - Should guess that .trc extension is trac
>     ok 6 - Parse trac file
>     ok 7 - Parse empty trac file
> ok 5 - Testing trac format
> # Subtest: Testing textile format
>     1..6
>     ok 1 - use Text::Markup::Textile;
>     ok 2 - textile should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .textile extension is textile
>     ok 5 - Parse textile file
>     ok 6 - Parse empty textile file
> ok 6 - Testing textile format
> # Subtest: Testing mediawiki format
>     1..8
>     ok 1 - use Text::Markup::Mediawiki;
>     ok 2 - mediawiki should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .wiki extension is mediawiki
>     ok 5 - Should guess that .mwiki extension is mediawiki
>     ok 6 - Should guess that .mediawiki extension is mediawiki
>     ok 7 - Parse mediawiki file
>     ok 8 - Parse empty mediawiki file
> ok 7 - Testing mediawiki format
> # Subtest: Testing multimarkdown format
>     1..10
>     ok 1 - use Text::Markup::Multimarkdown;
>     ok 2 - multimarkdown should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .mmd extension is multimarkdown
>     ok 5 - Should guess that .mmkdn extension is multimarkdown
>     ok 6 - Should guess that .mmkd extension is multimarkdown
>     ok 7 - Should guess that .mmdown extension is multimarkdown
>     ok 8 - Should guess that .mmarkdown extension is multimarkdown
>     ok 9 - Parse multimarkdown file
>     ok 10 - Parse empty multimarkdown file
> ok 8 - Testing multimarkdown format
> # Subtest: Testing rest format
>     1..7
>     ok 1 - use Text::Markup::Rest;
>     ok 2 - rest should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .rest extension is rest
>     ok 5 - Should guess that .rst extension is rest
>     not ok 6 - Parse rest file
>     ok 7 - Parse empty rest file
> not ok 9 - Testing rest format
> # Subtest: Testing asciidoc format
>     1..0 # SKIP Text::Markup::Asciidoc not loading
> ok 10 # skip Text::Markup::Asciidoc not loading
> # Subtest: Testing bbcode format
>     1..7
>     ok 1 - use Text::Markup::Bbcode;
>     ok 2 - bbcode should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .bbcode extension is bbcode
>     ok 5 - Should guess that .bb extension is bbcode
>     ok 6 - Parse bbcode file
>     ok 7 - Parse empty bbcode file
> ok 11 - Testing bbcode format
> # Subtest: Testing creole format
>     1..6
>     ok 1 - use Text::Markup::Creole;
>     ok 2 - creole should be loaded
>     ok 3 - An object of class 'Text::Markup' isa 'Text::Markup'
>     ok 4 - Should guess that .creole extension is creole
>     ok 5 - Parse creole file
>     ok 6 - Parse empty creole file
> ok 12 - Testing creole format
> 1..12
> Dubious, test returned 1 (wstat 256, 0x100)
> Failed 1/12 subtests 
> 	(less 1 skipped subtest: 10 okay)
> 
> Test Summary Report
> -------------------
> t/formats.t (Wstat: 256 (exited 1) Tests: 12 Failed: 1)
>   Failed test:  9
>   Non-zero exit status: 1
> Files=2, Tests=50,  1 wallclock secs ( 0.03 usr  0.01 sys +  0.73 cusr  0.14 csys =  0.91 CPU)
> Result: FAIL
> Failed 1/2 test programs. 1/50 subtests failed.
> dh_auto_test: error: /usr/bin/perl Build test --verbose 1 returned exit code 1


The full build log is available from:
http://qa-logs.debian.net/2023/07/30/exp/libtext-markup-perl_0.24-1_unstable_sphinx-exp.log

Please see [1] for Sphinx changelog and [2] for Docutils changelog.

Also see [3] for the list of deprecated/removed APIs in Sphinx and possible
alternatives to them.

Some notable changes in Sphinx 6 and Sphinx 7:

- Sphinx no longer includes jquery.js and underscore.js by default.
  Please use python3-sphinxcontrib.jquery package if you are using a custom
  template and it still needs jquery.

- The setup.py build_sphinx command was removed. Please instead call
  sphinx-build or "python3 -m sphinx" directly.

- For packages using the extlinks extension, the caption should contain
  exactly one "%s" placeholder (if caption is not None).

In case you have questions, please Cc sphinx at packages.debian.org on reply.

[1]: https://www.sphinx-doc.org/en/master/changes.html
[2]: https://repo.or.cz/docutils.git/blob/refs/tags/docutils-0.20.1:/RELEASE-NOTES.txt
[3]: https://www.sphinx-doc.org/en/master/extdev/deprecated.html#dev-deprecated-apis

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=sphinx7.1;users=python-modules-team@lists.alioth.debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=sphinx7.1&fusertaguser=python-modules-team@lists.alioth.debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects



More information about the pkg-perl-maintainers mailing list