Package: src:python-handy-archives
Version: 0.2.0-5
Severity: serious
Control: fixed -1 0.2.0-7
Tags: ftbfs trixie

Dear maintainer:

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

[ Note: The bug is marked as fixed with the version in forky/sid, but
  packages in trixie must still build in trixie ].

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/trixie/

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-handy-archives, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
tests/test_zipfile.py::TestStoredTestZip64InSmallFiles::test_absolute_arcnames 
PASSED [ 52%]
tests/test_zipfile.py::TestStoredTestZip64InSmallFiles::test_append 
PASSED [ 52%]
tests/test_zipfile.py::TestStoredTestZip64InSmallFiles::test_bad_zip64_extra 
FAILED [ 53%]
tests/test_zipfile.py::TestStoredTestZip64InSmallFiles::test_generated_valid_zip64_extra
 FAILED [ 53%]
tests/test_zipfile.py::TestDeflateTestZip64InSmallFiles::test_basic 
PASSED [ 54%]
tests/test_zipfile.py::TestDeflateTestZip64InSmallFiles::test_too_many_files 
PASSED [ 54%]
tests/test_zipfile.py::TestDeflateTestZip64InSmallFiles::test_too_many_files_append
 PASSED [ 55%]
tests/test_zipfile.py::TestBzip2TestZip64InSmallFiles::test_basic 
PASSED [ 55%]
tests/test_zipfile.py::TestBzip2TestZip64InSmallFiles::test_too_many_files 
PASSED [ 55%]
tests/test_zipfile.py::TestBzip2TestZip64InSmallFiles::test_too_many_files_append
 PASSED [ 56%]
tests/test_zipfile.py::TestLzmaTestZip64InSmallFiles::test_basic 
PASSED  [ 56%]
tests/test_zipfile.py::TestLzmaTestZip64InSmallFiles::test_too_many_files 
PASSED [ 57%]
tests/test_zipfile.py::TestLzmaTestZip64InSmallFiles::test_too_many_files_append
 PASSED [ 57%]
tests/test_zipfile.py::TestStoredWriter::test_close_after_close 
PASSED   [ 58%]
tests/test_zipfile.py::TestStoredWriter::test_write_after_close 
PASSED   [ 58%]
tests/test_zipfile.py::TestDeflateWriter::test_close_after_close 
PASSED  [ 59%]
tests/test_zipfile.py::TestDeflateWriter::test_write_after_close 
PASSED  [ 59%]
tests/test_zipfile.py::TestBzip2Writer::test_close_after_close 
PASSED    [ 60%]
tests/test_zipfile.py::TestBzip2Writer::test_write_after_close 
PASSED    [ 60%]
tests/test_zipfile.py::TestLzmaWriter::test_close_after_close 
PASSED     [ 61%]
tests/test_zipfile.py::TestLzmaWriter::test_write_after_close 
PASSED     [ 61%]
tests/test_zipfile.py::TestExtract::test_extract PASSED           
       [ 62%]
tests/test_zipfile.py::TestExtract::test_extract_with_target 
PASSED      [ 62%]
tests/test_zipfile.py::TestExtract::test_extract_with_target_pathlike 
PASSED [ 63%]
tests/test_zipfile.py::TestExtract::test_extract_all PASSED       
       [ 63%]
tests/test_zipfile.py::TestExtract::test_extract_all_with_target 
PASSED  [ 64%]
tests/test_zipfile.py::TestExtract::test_extract_all_with_target_pathlike 
PASSED [ 64%]
tests/test_zipfile.py::TestExtract::test_sanitize_windows_name 
PASSED    [ 65%]
tests/test_zipfile.py::TestExtract::test_extract_hackers_arcnames_common_cases 
PASSED [ 65%]
tests/test_zipfile.py::TestExtract::test_extract_hackers_arcnames_windows_only 
SKIPPED [ 66%]
tests/test_zipfile.py::TestExtract::test_extract_hackers_arcnames_posix_only 
PASSED [ 66%]
tests/test_zipfile.py::TestsOther::test_open_via_zip_info PASSED  
       [ 66%]
tests/test_zipfile.py::TestsOther::test_writestr_extended_local_header_issue1202
 PASSED [ 67%]
tests/test_zipfile.py::TestsOther::test_close PASSED              
       [ 67%]
tests/test_zipfile.py::TestsOther::test_close_on_exception PASSED 
       [ 68%]
tests/test_zipfile.py::TestsOther::test_unsupported_version 
PASSED       [ 68%]
tests/test_zipfile.py::TestsOther::test_read_unicode_filenames 
SKIPPED   [ 69%]
tests/test_zipfile.py::TestsOther::test_write_unicode_filenames 
PASSED   [ 69%]
tests/test_zipfile.py::TestsOther::test_read_after_write_unicode_filenames 
PASSED [ 70%]
tests/test_zipfile.py::TestsOther::test_exclusive_create_zip_file 
PASSED [ 70%]
tests/test_zipfile.py::TestsOther::test_create_non_existent_file_for_append 
PASSED [ 71%]
tests/test_zipfile.py::TestsOther::test_close_erroneous_file 
PASSED      [ 71%]
tests/test_zipfile.py::TestsOther::test_is_zip_erroneous_file 
PASSED     [ 72%]
tests/test_zipfile.py::TestsOther::test_damaged_zipfile PASSED    
       [ 72%]
tests/test_zipfile.py::TestsOther::test_is_zip_valid_file PASSED  
       [ 73%]
tests/test_zipfile.py::TestsOther::test_non_existent_file_raises_OSError 
PASSED [ 73%]
tests/test_zipfile.py::TestsOther::test_empty_file_raises_BadZipFile 
PASSED [ 74%]
tests/test_zipfile.py::TestsOther::test_closed_zip_raises_ValueError 
PASSED [ 74%]
tests/test_zipfile.py::TestsOther::test_bad_constructor_mode 
PASSED      [ 75%]
tests/test_zipfile.py::TestsOther::test_bad_open_mode PASSED      
       [ 75%]
tests/test_zipfile.py::TestsOther::test_read0 PASSED              
       [ 76%]
tests/test_zipfile.py::TestsOther::test_open_non_existent_item 
PASSED    [ 76%]
tests/test_zipfile.py::TestsOther::test_bad_compression_mode 
PASSED      [ 77%]
tests/test_zipfile.py::TestsOther::test_unsupported_compression 
PASSED   [ 77%]
tests/test_zipfile.py::TestsOther::test_null_byte_in_filename 
PASSED     [ 77%]
tests/test_zipfile.py::TestsOther::test_comments PASSED           
       [ 78%]
tests/test_zipfile.py::TestsOther::test_unicode_comment PASSED    
       [ 78%]
tests/test_zipfile.py::TestsOther::test_change_comment_in_empty_archive 
PASSED [ 79%]
tests/test_zipfile.py::TestsOther::test_change_comment_in_nonempty_archive 
PASSED [ 79%]
tests/test_zipfile.py::TestsOther::test_empty_zipfile PASSED      
       [ 80%]
tests/test_zipfile.py::TestsOther::test_open_empty_file PASSED    
       [ 80%]
tests/test_zipfile.py::TestsOther::test_zipfile_with_short_extra_field 
PASSED [ 81%]
tests/test_zipfile.py::TestsOther::test_open_conflicting_handles 
PASSED  [ 81%]
tests/test_zipfile.py::TestsOther::test_seek_tell PASSED          
       [ 82%]
tests/test_zipfile.py::TestsOther::test_decompress_without_3rd_party_library 
PASSED [ 82%]
tests/test_zipfile.py::TestStoredBadCrc::test_testzip_with_bad_crc 
PASSED [ 83%]
tests/test_zipfile.py::TestStoredBadCrc::test_read_with_bad_crc 
PASSED   [ 83%]
tests/test_zipfile.py::TestDeflateBadCrcTests::test_testzip_with_bad_crc 
PASSED [ 84%]
tests/test_zipfile.py::TestDeflateBadCrcTests::test_read_with_bad_crc 
PASSED [ 84%]
tests/test_zipfile.py::TestBzip2BadCrc::test_testzip_with_bad_crc 
PASSED [ 85%]
tests/test_zipfile.py::TestBzip2BadCrc::test_read_with_bad_crc 
PASSED    [ 85%]
tests/test_zipfile.py::TestLzmaBadCrc::test_testzip_with_bad_crc 
PASSED  [ 86%]
tests/test_zipfile.py::TestLzmaBadCrc::test_read_with_bad_crc 
PASSED     [ 86%]
tests/test_zipfile.py::TestDecryption::test_no_password PASSED    
       [ 87%]
tests/test_zipfile.py::TestDecryption::test_bad_password PASSED   
       [ 87%]
tests/test_zipfile.py::TestDecryption::test_good_password PASSED  
       [ 88%]
tests/test_zipfile.py::TestDecryption::test_unicode_password 
PASSED      [ 88%]
tests/test_zipfile.py::TestDecryption::test_seek_tell PASSED      
       [ 88%]
tests/test_zipfile.py::TestStoredTestsWithRandomBinaryFiles::test_read 
PASSED [ 89%]
tests/test_zipfile.py::TestStoredTestsWithRandomBinaryFiles::test_open 
PASSED [ 89%]
tests/test_zipfile.py::TestStoredTestsWithRandomBinaryFiles::test_random_open 
PASSED [ 90%]
tests/test_zipfile.py::TesteflateTestsWithRandomBinaryFiles::test_read 
PASSED [ 90%]
tests/test_zipfile.py::TesteflateTestsWithRandomBinaryFiles::test_open 
PASSED [ 91%]
tests/test_zipfile.py::TesteflateTestsWithRandomBinaryFiles::test_random_open 
PASSED [ 91%]
tests/test_zipfile.py::TestBzip2TestsWithRandomBinaryFiles::test_read 
PASSED [ 92%]
tests/test_zipfile.py::TestBzip2TestsWithRandomBinaryFiles::test_open 
PASSED [ 92%]
tests/test_zipfile.py::TestBzip2TestsWithRandomBinaryFiles::test_random_open 
PASSED [ 93%]
tests/test_zipfile.py::TestLzmaTestsWithRandomBinaryFiles::test_read 
PASSED [ 93%]
tests/test_zipfile.py::TestLzmaTestsWithRandomBinaryFiles::test_open 
PASSED [ 94%]
tests/test_zipfile.py::TestLzmaTestsWithRandomBinaryFiles::test_random_open 
PASSED [ 94%]
tests/test_zipfile.py::TestsWithMultipleOpens::test_same_file 
PASSED     [ 95%]
tests/test_zipfile.py::TestsWithMultipleOpens::test_different_file 
PASSED [ 95%]
tests/test_zipfile.py::TestsWithMultipleOpens::test_interleaved 
PASSED   [ 96%]
tests/test_zipfile.py::TestsWithMultipleOpens::test_read_after_close 
PASSED [ 96%]
tests/test_zipfile.py::TestsWithMultipleOpens::test_read_after_write 
PASSED [ 97%]
tests/test_zipfile.py::TestsWithMultipleOpens::test_write_after_read 
PASSED [ 97%]
tests/test_zipfile.py::TestsWithMultipleOpens::test_write_while_reading 
PASSED [ 98%]
tests/test_zipfile.py::TestWithDirectory::test_extract_dir SKIPPED 
(...) [ 98%]
tests/test_zipfile.py::TestWithDirectory::test_bug_6050 SKIPPED 
(unk...) [ 99%]
tests/test_zipfile.py::TestWithDirectory::test_write_dir PASSED   
       [ 99%]
tests/test_zipfile.py::TestWithDirectory::test_writestr_dir 
PASSED       [100%]

=================================== FAILURES ===================================
_____________ TestStoredTestZip64InSmallFiles.test_bad_zip64_extra 
_____________

self = <tests.test_zipfile.TestStoredTestZip64InSmallFiles object at 
0x7f440dcf1f30>
zip64_smallfiles = 
PosixPathPlus('/tmp/pytest-of-sbuild/pytest-0/test_bad_zip64_extra0/@test_88_tmp')

    @min_version(3.7)
    def test_bad_zip64_extra(self, zip64_smallfiles):
        # zip64 file size present, no fields in extra, expecting one, equals
        # missing file size.
        missing_file_size_extra = self.make_zip64_file(file_size_64_set=True)
        with pytest.raises(zipfile.BadZipFile) as e:
                ZipFile(io.BytesIO(missing_file_size_extra))
        assert "file size" in str(e.value).lower()
    
        # zip64 file size present, zip64 compress size present, one field in
        # extra, expecting two, equals missing compress size.
        missing_compress_size_extra = self.make_zip64_file(
                        file_size_64_set=True,
                        file_size_extra=True,
                        compress_size_64_set=True,
                        )
        with pytest.raises(zipfile.BadZipFile) as e:
                ZipFile(io.BytesIO(missing_compress_size_extra))
>       assert "compress size" in str(e.value).lower()
E    AssertionError: assert 'compress size' in 'corrupt zip64 end of 
central directory record'
E     +  where 'corrupt zip64 end of central directory record' = 
<built-in method lower of str object at 0x7f440f4de0d0>()
E     +    where <built-in method lower of str object at 
0x7f440f4de0d0> = 'Corrupt zip64 end of central directory record'.lower
E     +      where 'Corrupt zip64 end of central directory record' = 
str(BadZipFile('Corrupt zip64 end of central directory record'))
E     +        where BadZipFile('Corrupt zip64 end of central 
directory record') = <ExceptionInfo BadZipFile('Corrupt zip64 end of central 
directory record') tblen=5>.value

tests/test_zipfile.py:1114: AssertionError
_______ 
TestStoredTestZip64InSmallFiles.test_generated_valid_zip64_extra _______

self = <tests.test_zipfile.TestStoredTestZip64InSmallFiles object at 
0x7f440db8e8d0>
zip64_smallfiles = 
PosixPathPlus('/tmp/pytest-of-sbuild/pytest-0/test_generated_valid_zip64_ext0/@test_88_tmp')

    def test_generated_valid_zip64_extra(self, zip64_smallfiles):
    
        # These values are what is set in the make_zip64_file method.
        expected_file_size = 8
        expected_compress_size = 8
        expected_header_offset = 0
        expected_content = b"test1234"
    
        # Loop through the various valid combinations of zip64 masks
        # present and extra fields present.
        params = (
                        {"file_size_64_set": True, "file_size_extra": True},
                        {"compress_size_64_set": True, "compress_size_extra": 
True},
                        {"header_offset_64_set": True, "header_offset_extra": 
True},
                        )
    
        for r in range(1, len(params) + 1):
                for combo in itertools.combinations(params, r):
                        kwargs = {}
                        for c in combo:
                                kwargs.update(c)
>                       with 
> ZipFile(io.BytesIO(self.make_zip64_file(**kwargs))) as zf:

tests/test_zipfile.py:1193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.13/zipfile/__init__.py:1401: in __init__
    self._RealGetContents()
/usr/lib/python3.13/zipfile/__init__.py:1464: in _RealGetContents
    endrec = _EndRecData(fp)
/usr/lib/python3.13/zipfile/__init__.py:342: in _EndRecData
    return _EndRecData64(fpin, filesize - sizeEndCentDir, endrec)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

fpin = <_io.BytesIO object at 0x7f440ce6bbf0>, offset = 124
endrec = [b'PK\x05\x06', 0, 0, 1, 1, 58, ...]

    def _EndRecData64(fpin, offset, endrec):
        """
        Read the ZIP64 end-of-archive records and use that to update endrec
        """
        offset -= sizeEndCentDir64Locator
        if offset < 0:
            # The file is not large enough to contain a ZIP64
            # end-of-archive record, so just return the end record we were 
given.
            return endrec
        fpin.seek(offset)
        data = fpin.read(sizeEndCentDir64Locator)
        if len(data) != sizeEndCentDir64Locator:
            raise OSError("Unknown I/O error")
        sig, diskno, reloff, disks = struct.unpack(structEndArchive64Locator, 
data)
        if sig != stringEndArchive64Locator:
            return endrec
    
        if diskno != 0 or disks > 1:
            raise BadZipFile("zipfiles that span multiple disks are not 
supported")
    
        offset -= sizeEndCentDir64
        if reloff > offset:
            raise BadZipFile("Corrupt zip64 end of central directory locator")
        # First, check the assumption that there is no prepended data.
        fpin.seek(reloff)
        extrasz = offset - reloff
        data = fpin.read(sizeEndCentDir64)
        if len(data) != sizeEndCentDir64:
            raise OSError("Unknown I/O error")
        if not data.startswith(stringEndArchive64) and reloff != offset:
            # Since we already have seen the Zip64 EOCD Locator, it's
            # possible we got here because there is prepended data.
            # Assume no 'zip64 extensible data'
            fpin.seek(offset)
            extrasz = 0
            data = fpin.read(sizeEndCentDir64)
            if len(data) != sizeEndCentDir64:
                raise OSError("Unknown I/O error")
        if not data.startswith(stringEndArchive64):
            raise BadZipFile("Zip64 end of central directory record not found")
    
        sig, sz, create_version, read_version, disk_num, disk_dir, \
            dircount, dircount2, dirsize, diroffset = \
            struct.unpack(structEndArchive64, data)
        if (diroffset + dirsize != reloff or
            sz + 12 != sizeEndCentDir64 + extrasz):
>           raise BadZipFile("Corrupt zip64 end of central directory record")
E           zipfile.BadZipFile: Corrupt zip64 end of central directory 
record

/usr/lib/python3.13/zipfile/__init__.py:298: BadZipFile
============================= slowest 25 durations =============================
0.31s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithRandomBinaryFiles::test_read
0.31s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithRandomBinaryFiles::test_open
0.29s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithRandomBinaryFiles::test_random_open
0.11s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_read1_10
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_readline_read
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_compresslevel_basic
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_readlines
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_iterlines
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_basic
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_readline
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_read1
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_random_open
0.10s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_open
0.08s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithRandomBinaryFiles::test_open
0.08s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithRandomBinaryFiles::test_read
0.07s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithRandomBinaryFiles::test_random_open
0.05s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestZip64InSmallFiles::test_basic
0.04s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithSourceFile::test_basic
0.04s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithSourceFile::test_compresslevel_basic
0.03s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithSourceFile::test_read1_10
0.03s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithSourceFile::test_open
0.03s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestLzmaTestsWithSourceFile::test_open_with_pathlike
0.03s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithSourceFile::test_readline_read
0.03s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithSourceFile::test_readlines
0.03s call     
.pybuild/cpython3_3.13/build/tests/test_zipfile.py::TestBzip2TestsWithSourceFile::test_iterlines
=========================== short test summary info 
============================
FAILED 
tests/test_zipfile.py::TestStoredTestZip64InSmallFiles::test_bad_zip64_extra
 - AssertionError: assert 'compress size' in 'corrupt zip64 end of central 
dir...
FAILED 
tests/test_zipfile.py::TestStoredTestZip64InSmallFiles::test_generated_valid_zip64_extra
 - zipfile.BadZipFile: Corrupt zip64 end of central directory record
============ 2 failed, 202 passed, 5 
skipped, 4 deselected in 3.62s ============
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest -v 
--ignore=tests/test_tarfile.py -k 'not test_unpack_archive_xztar and not 
test_unpack_archive_gztar and not test_unpack_archive_tar and not 
test_unpack_archive_bztar'
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 
returned exit code 13
make: *** [debian/rules:8: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

Reply via email to