Package: src:python-blessed
Version: 1.21.0-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202512/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:python-blessed, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --with sphinxdoc --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:317: python3.14 setup.py clean 
/<<PKGBUILDDIR>>/setup.py:22: DeprecationWarning: codecs.open() is deprecated. 
Use open() instead.
  return codecs.open(fname, 'r', 'utf8').read()
/usr/lib/python3/dist-packages/setuptools/dist.py:759: 
SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!

        
********************************************************************************
        Please consider removing the following classifiers in favor of a SPDX 
license expression:

        License :: OSI Approved :: MIT License

        See 
https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license 
for details.

[... snipped ...]

tests/test_sequences.py::test_split_seqs_term_right[xterm] PASSED 
       [ 80%]
tests/test_sequences.py::test_split_seqs_term_right[screen] 
PASSED       [ 80%]
tests/test_sequences.py::test_split_seqs_term_right[ansi] PASSED  
       [ 80%]
tests/test_sequences.py::test_split_seqs_term_right[vt220] PASSED 
       [ 80%]
tests/test_sequences.py::test_split_seqs_term_right[rxvt] PASSED  
       [ 81%]
tests/test_sequences.py::test_split_seqs_term_right[cons25] 
PASSED       [ 81%]
tests/test_sequences.py::test_split_seqs_term_right[linux] PASSED 
       [ 81%]
tests/test_sequences.py::test_split_seqs_maxsplit3_and_term_right[xterm] 
PASSED [ 81%]
tests/test_sequences.py::test_split_seqs_maxsplit3_and_term_right[screen] 
PASSED [ 82%]
tests/test_sequences.py::test_split_seqs_maxsplit3_and_term_right[ansi] 
PASSED [ 82%]
tests/test_sequences.py::test_split_seqs_maxsplit3_and_term_right[vt220] 
PASSED [ 82%]
tests/test_sequences.py::test_split_seqs_maxsplit3_and_term_right[rxvt] 
PASSED [ 82%]
tests/test_sequences.py::test_split_seqs_maxsplit3_and_term_right[cons25] 
PASSED [ 83%]
tests/test_sequences.py::test_split_seqs_maxsplit3_and_term_right[linux] 
PASSED [ 83%]
tests/test_sequences.py::test_formatting_other_string[xterm] 
PASSED      [ 83%]
tests/test_sequences.py::test_formatting_other_string[screen] 
PASSED     [ 83%]
tests/test_sequences.py::test_formatting_other_string[ansi] 
PASSED       [ 84%]
tests/test_sequences.py::test_formatting_other_string[vt220] 
PASSED      [ 84%]
tests/test_sequences.py::test_formatting_other_string[rxvt] 
PASSED       [ 84%]
tests/test_sequences.py::test_formatting_other_string[cons25] 
PASSED     [ 84%]
tests/test_sequences.py::test_formatting_other_string[linux] 
PASSED      [ 84%]
tests/test_sequences.py::test_termcap_match_optional PASSED       
       [ 85%]
tests/test_sequences.py::test_truncate[xterm] PASSED              
       [ 85%]
tests/test_sequences.py::test_truncate[screen] PASSED             
       [ 85%]
tests/test_sequences.py::test_truncate[ansi] PASSED               
       [ 85%]
tests/test_sequences.py::test_truncate[vt220] PASSED              
       [ 86%]
tests/test_sequences.py::test_truncate[rxvt] PASSED               
       [ 86%]
tests/test_sequences.py::test_truncate[cons25] PASSED             
       [ 86%]
tests/test_sequences.py::test_truncate[linux] PASSED              
       [ 86%]
tests/test_sequences.py::test_truncate_wide_end[xterm] PASSED     
       [ 87%]
tests/test_sequences.py::test_truncate_wide_end[screen] PASSED    
       [ 87%]
tests/test_sequences.py::test_truncate_wide_end[ansi] PASSED      
       [ 87%]
tests/test_sequences.py::test_truncate_wide_end[vt220] PASSED     
       [ 87%]
tests/test_sequences.py::test_truncate_wide_end[rxvt] PASSED      
       [ 88%]
tests/test_sequences.py::test_truncate_wide_end[cons25] PASSED    
       [ 88%]
tests/test_sequences.py::test_truncate_wide_end[linux] PASSED     
       [ 88%]
tests/test_sequences.py::test_truncate_wcwidth_clipping[xterm] 
PASSED    [ 88%]
tests/test_sequences.py::test_truncate_wcwidth_clipping[screen] 
PASSED   [ 88%]
tests/test_sequences.py::test_truncate_wcwidth_clipping[ansi] 
PASSED     [ 89%]
tests/test_sequences.py::test_truncate_wcwidth_clipping[vt220] 
PASSED    [ 89%]
tests/test_sequences.py::test_truncate_wcwidth_clipping[rxvt] 
PASSED     [ 89%]
tests/test_sequences.py::test_truncate_wcwidth_clipping[cons25] 
PASSED   [ 89%]
tests/test_sequences.py::test_truncate_wcwidth_clipping[linux] 
PASSED    [ 90%]
tests/test_sequences.py::test_truncate_padding[xterm] PASSED      
       [ 90%]
tests/test_sequences.py::test_truncate_padding[screen] PASSED     
       [ 90%]
tests/test_sequences.py::test_truncate_padding[ansi] PASSED       
       [ 90%]
tests/test_sequences.py::test_truncate_padding[vt220] PASSED      
       [ 91%]
tests/test_sequences.py::test_truncate_padding[rxvt] PASSED       
       [ 91%]
tests/test_sequences.py::test_truncate_padding[cons25] PASSED     
       [ 91%]
tests/test_sequences.py::test_truncate_padding[linux] PASSED      
       [ 91%]
tests/test_sequences.py::test_truncate_default[xterm] PASSED      
       [ 92%]
tests/test_sequences.py::test_truncate_default[screen] PASSED     
       [ 92%]
tests/test_sequences.py::test_truncate_default[ansi] PASSED       
       [ 92%]
tests/test_sequences.py::test_truncate_default[vt220] PASSED      
       [ 92%]
tests/test_sequences.py::test_truncate_default[rxvt] PASSED       
       [ 92%]
tests/test_sequences.py::test_truncate_default[cons25] PASSED     
       [ 93%]
tests/test_sequences.py::test_truncate_default[linux] PASSED      
       [ 93%]
tests/test_sequences.py::test_supports_index[xterm] PASSED        
       [ 93%]
tests/test_sequences.py::test_supports_index[screen] PASSED       
       [ 93%]
tests/test_sequences.py::test_supports_index[ansi] PASSED         
       [ 94%]
tests/test_sequences.py::test_supports_index[vt220] PASSED        
       [ 94%]
tests/test_sequences.py::test_supports_index[rxvt] PASSED         
       [ 94%]
tests/test_sequences.py::test_supports_index[cons25] PASSED       
       [ 94%]
tests/test_sequences.py::test_supports_index[linux] PASSED        
       [ 95%]
tests/test_wrap.py::test_SequenceWrapper_invalid_width PASSED     
       [ 95%]
tests/test_wrap.py::test_SequenceWrapper[1-kwargs0] PASSED        
       [ 95%]
tests/test_wrap.py::test_SequenceWrapper[1-kwargs1] PASSED        
       [ 95%]
tests/test_wrap.py::test_SequenceWrapper[1-kwargs2] PASSED        
       [ 96%]
tests/test_wrap.py::test_SequenceWrapper[1-kwargs3] PASSED        
       [ 96%]
tests/test_wrap.py::test_SequenceWrapper[1-kwargs4] PASSED        
       [ 96%]
tests/test_wrap.py::test_SequenceWrapper[1-kwargs5] FAILED        
       [ 96%]

=================================== FAILURES ===================================
_______________________ test_SequenceWrapper[1-kwargs5] 
________________________

many_columns = 1
kwargs = {'break_long_words': True, 'drop_whitespace': True, 
'subsequent_indent': ''}

    
@pytest.mark.parametrize("kwargs",
 TEXTWRAP_KEYWORD_COMBINATIONS)
    def test_SequenceWrapper(many_columns, 
kwargs):
        """Test that text wrapping matches internal extra 
options."""
        @as_subprocess
        def child(width, pgraph, 
kwargs):
            # build a test paragraph, along with a very colorful 
version
            term = TestTerminal()
            attributes = 
('bright_red', 
'on_bright_blue', 
'underline', 
'reverse',
                          
'red_reverse', 
'red_on_white', 
'on_bright_white')
            
term.bright_red('x')
            
term.on_bright_blue('x')
            
term.underline('x')
            
term.reverse('x')
            
term.red_reverse('x')
            
term.red_on_white('x')
            
term.on_bright_white('x')
    
            pgraph_colored = 
u''.join(
                getattr(term, (attributes[idx % 
len(attributes)]))(char)
                if char != 
u' ' 
else u' 
'
                for idx, char in 
enumerate(pgraph))
    
            internal_wrapped = textwrap.wrap(pgraph, width=width, 
**kwargs)
            my_wrapped = term.wrap(pgraph, width=width, 
**kwargs)
            my_wrapped_colored = term.wrap(pgraph_colored, width=width, 
**kwargs)
    
            # ensure we textwrap ascii the same as 
python
            assert internal_wrapped == 
my_wrapped
    
            # ensure content matches for each line, when the sequences 
are
            # stripped back off of each line
            for left, right in 
zip(internal_wrapped, my_wrapped_colored):
                assert left == 
term.strip_seqs(right)
    
            # ensure our colored textwrap is the same paragraph 
length
            assert (len(internal_wrapped) == 
len(my_wrapped_colored))
    
>       child(width=many_columns, kwargs=kwargs,
              pgraph=u' Z! a bc defghij 
klmnopqrstuvw<<>>xyz012345678900 ' * 
2)

tests/test_wrap.py:88: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.accessories.as_subprocess object at 0x7feb0c1e9680>, args = ()
kwargs = {'kwargs': {'break_long_words': True, 'drop_whitespace': True, 
'subsequent_indent': ''}, 'pgraph': ' Z! a bc defghij 
klmnopqrstuvw<<>>xyz012345678900  Z! a bc defghij 
klmnopqrstuvw<<>>xyz012345678900 ', 'width': 1}
pid_testrunner = 345, pid = 1097, master_fd = 11
_exc = b'  File "/<<PKGBUILDDIR>>/tests/accessories.py", line 78, in 
__call__\r\n    self.f... \',\x1b[39;49;00m\x1b[90m\x1b[39;49;00m...\r\n  \r\n  
...Full output truncated (89 lines hidden), use \'-vv\' to show'

    def __call__(self, 
*args, **kwargs):  # pylint: 
disable=too-many-locals,too-complex
        if IS_WINDOWS:
            self.func(*args, **kwargs)
            return
    
        pid_testrunner = os.getpid()
        pid, master_fd = pty.fork()  # pylint: 
disable=possibly-used-before-assignment
        if pid == 
self._CHILD_PID:
            # child process executes function, raises 
exception
            # if failed, causing a non-zero exit code, using 
the
            # protected _exit() function of ``os``; to prevent 
the
            # 'SystemExit' exception from being 
thrown.
            cov = init_subproc_coverage(
                
"@as_subprocess-{pid};{func_name}(*{args},
 
**{kwargs})"
                .format(pid=os.getpid(), 
func_name=self.func,
                        args=args, kwargs=kwargs))
            try:
                self.func(*args, **kwargs)
            except Exception:  # pylint: 
disable=broad-except
                e_type, e_value, e_tb = sys.exc_info()
                o_err = 
[line.rstrip().encode('utf-8') 
for line in 
traceback.format_tb(e_tb)]
                
o_err.append(('-=' * 
20).encode('ascii'))
                
o_err.extend([_exc.rstrip().encode('utf-8')
 for _exc in
                              traceback.format_exception_only(
                                  e_type, e_value)])
                os.write(sys.__stdout__.fileno(), 
b'\n'.join(o_err))
                os.close(sys.__stdout__.fileno())
                os.close(sys.__stderr__.fileno())
                os.close(sys.__stdin__.fileno())
                if cov is not 
None:
                    cov.stop()
                    cov.save()
                os._exit(1)
            else:
                if cov is not 
None:
                    cov.stop()
                    cov.save()
                os._exit(0)
    
        # detect rare fork in test runner, when bad bugs 
happen
        if pid_testrunner != os.getpid():
            print('TEST RUNNER HAS FORKED, 
{0}=>{1}: 
EXIT'
                  .format(pid_testrunner, os.getpid()), 
file=sys.stderr)
            os._exit(1)
    
        exc_output = TextType()
        decoder = 
codecs.getincrementaldecoder(self.encoding)()
        while True:
            try:
                _exc = os.read(master_fd, 65534)
            except OSError:
                # linux EOF
                break
            if not _exc:
                # bsd EOF
                break
            exc_output += decoder.decode(_exc)
    
        # parent process asserts exit code is 0, causing 
test
        # to fail if child process raised an 
exception/assertion
        pid, status = os.waitpid(pid, 0)
        os.close(master_fd)
    
        # Display any output written by child 
process
        # (esp. any AssertionError exceptions written to 
stderr).
        exc_output_msg = 'Output in child 
process:\n%s\n%s\n%s'
 % (
            
u'=' * 
40, exc_output, 
u'=' * 
40,)
>       assert exc_output == 
> '', exc_output_msg
               ^^^^^^^^^^^^^^^^
E       AssertionError: Output in child process:
E       ========================================
E         File "/<<PKGBUILDDIR>>/tests/accessories.py", line 78, in 
__call__

E           self.func(*args, **kwargs)

E           ~~~~~~~~~^^^^^^^^^^^^^^^^^

E         File "/<<PKGBUILDDIR>>/tests/test_wrap.py", line 78, in child

E           assert internal_wrapped == my_wrapped

E       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

E       AssertionError: assert ['Z', '!', 'a...'c', 'd', ...] == [' ', 
'Z', '!...'b', 'c', ...]

E         

E         At index 0 diff: 
'Z' != 
' '

E         Right contains one more item: 
'0'

E         

E         Full diff:

E           [

E         -     ' ',...

E         

E         ...Full output truncated (89 lines hidden), use '-vv' to 
show
E       ========================================

tests/accessories.py:128: AssertionError
- generated xml file: /<<PKGBUILDDIR>>/.tox/results.{envname}.xml -

---------- coverage: platform linux, python 3.13.11-final-0 ----------
Coverage XML written to file coverage.xml

=========================== short test summary info 
============================
SKIPPED [1] tests/test_full_keyboard.py:40: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:85: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:135: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:147: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:159: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:172: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:185: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:199: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:213: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:244: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:284: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:317: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:351: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:379: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:410: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:444: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:478: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:511: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:546: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:581: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:596: TEST_RAW not specified
SKIPPED [1] tests/test_full_keyboard.py:621: TEST_RAW not specified
SKIPPED [1] tests/test_full_keyboard.py:649: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:664: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:684: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:700: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:715: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:727: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:741: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:757: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:769: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:783: Timing-sensitive tests 
please do not run on build farms.
SKIPPED [1] tests/test_full_keyboard.py:799: Timing-sensitive tests 
please do not run on build farms.
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures 
!!!!!!!!!!!!!!!!!!!!!!!!!!!
================== 1 failed, 377 passed, 33 
skipped in 14.04s ==================
E: pybuild pybuild:389: test: plugin custom failed with: exit code=1: 
python3.13 -m pytest -v -x -rs
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 
3.13" returned exit code 13
make[1]: *** [debian/rules:17: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:7: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

Reply via email to