Source: python-pyeclib
Version: 1.6.1-2
Severity: serious
Tags: ftbfs
Justification: FTBFS

This package failed build from source during a rebuild. Interestingly,
this was a build with Python 3.13 available, and the 3.13 part passed
tests, but 3.12.6 triggered a test failure. I can reproduce this in sid
without Python 3.13.

Log snippet:

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==== 30 passed, 4 skipped, 1 deselected, 3859 warnings in 74.88s (0:01:14) =====
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build; 
python3.12 -m pytest -v -k 'not test_get_metadata_memory_usage'
============================= test session starts ==============================
platform linux -- Python 3.12.6, pytest-8.3.2, pluggy-1.5.0 -- 
/usr/bin/python3.12
cachedir: .pytest_cache
rootdir: /<<PKGBUILDDIR>>
plugins: typeguard-4.3.0
collecting ... collected 35 items / 1 deselected / 34 selected

test/test_pyeclib_api.py::TestNullDriver::test_null_driver PASSED        [  2%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_attribute_error_in_the_error_handling
 PASSED [  5%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_decode_reconstruct_with_fragment_iterator
 PASSED [  8%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_encode_invalid_params PASSED 
[ 11%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_get_metadata_formatted PASSED 
[ 14%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_get_segment_byterange_info 
PASSED [ 17%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_get_segment_info PASSED [ 20%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_get_segment_info_memory_usage 
PASSED [ 23%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_greedy_decode_reconstruct_combination
 PASSED [ 26%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_import_error_in_the_error_handling
 PASSED [ 29%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_invalid_km_args PASSED [ 32%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_liberasurecode_insufficient_frags_error
 PASSED [ 35%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_min_parity_fragments_needed 
PASSED [ 38%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_missing_required_args PASSED 
[ 41%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_pyeclib_driver_repr_expression
 PASSED [ 44%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_rs PASSED              [ 47%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_small_encode PASSED    [ 50%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_valid_algo PASSED      [ 52%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_valid_ec_types PASSED  [ 55%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_verify_fragment_inline_chksum_fail
 PASSED [ 58%]
test/test_pyeclib_api.py::TestPyECLibDriver::test_verify_fragment_inline_chksum_succeed
 PASSED [ 61%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_flat_xor_hd_3_available 
PASSED [ 64%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_flat_xor_hd_4_available 
PASSED [ 67%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_isa_l_rs_cauchy_available 
PASSED [ 70%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_isa_l_rs_vand_available 
PASSED [ 73%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_jerasure_rs_cauchy_available
 PASSED [ 76%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_jerasure_rs_vand_available 
PASSED [ 79%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_liberasurecode_rs_vand_available
 PASSED [ 82%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_libphazr_available SKIPPED 
[ 85%]
test/test_pyeclib_api.py::TestBackendsEnabled::test_shss_available SKIPPED [ 
88%]
test/test_pyeclib_c.py::TestPyECLib::test_codes FAILED                   [ 91%]
test/test_pyeclib_c.py::TestPyECLib::test_libphazr SKIPPED (libphazr...) [ 94%]
test/test_pyeclib_c.py::TestPyECLib::test_shss SKIPPED (shss backend...) [ 97%]
test/test_pyeclib_c.py::TestPyECLib::test_xor_code PASSED                [100%]

=================================== FAILURES ===================================
____________________________ TestPyECLib.test_codes ____________________________

self = <test.test_pyeclib_c.TestPyECLib testMethod=test_codes>

    def test_codes(self):
        for ec_type in self.iter_available_types(self.rs_types):
            for i in range(len(self.num_datas)):
                success = self._test_get_required_fragments(
                    self.num_datas[i], self.num_parities[i], ec_type)
                self.assertTrue(success)
    
            for i in range(len(self.num_datas)):
                for size_str in self.sizes:
                    avg_time = self.time_encode(
                        self.num_datas[i], self.num_parities[i], ec_type.value,
                        self.num_parities[i] + 1, size_str, self.iterations)
    
                    print("Encode (%s): %s" %
                          (size_str, self.get_throughput(avg_time, size_str)))
    
            for i in range(len(self.num_datas)):
                for size_str in self.sizes:
                    success, avg_time = self.time_decode(
                        self.num_datas[i], self.num_parities[i], ec_type.value,
                        self.num_parities[i] + 1, size_str, self.iterations)
    
                    self.assertTrue(success)
                    print("Decode (%s): %s" %
                          (size_str, self.get_throughput(avg_time, size_str)))
    
            for i in range(len(self.num_datas)):
                for size_str in self.sizes:
>                   success, avg_time = self.time_range_decode(
                        self.num_datas[i], self.num_parities[i], ec_type.value,
                        self.num_parities[i] + 1, size_str, self.iterations)

test/test_pyeclib_c.py:455: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <test.test_pyeclib_c.TestPyECLib testMethod=test_codes>, num_data = 12
num_parity = 3, ec_type = 7, hd = 4, file_size = '101-K', iterations = 100

    def time_range_decode(self,
                          num_data, num_parity, ec_type, hd,
                          file_size, iterations):
        """
        :return 2-tuple, (success, average decode time)
        """
        timer = Timer()
        tsum = 0
        handle = pyeclib_c.init(num_data, num_parity, ec_type, hd)
        whole_file_bytes = self.get_tmp_file(file_size).read()
        success = True
    
        begins = [int(random.randint(0, len(whole_file_bytes) - 1))
                  for i in range(3)]
        ends = [int(random.randint(begins[i], len(whole_file_bytes)))
                for i in range(3)]
    
        ranges = list(zip(begins, ends))
    
        fragments = pyeclib_c.encode(handle, whole_file_bytes)
        orig_fragments = fragments[:]
    
        for i in range(iterations):
            num_missing = hd - 1
            for j in range(num_missing):
                num_frags_left = len(fragments)
                idx = random.randint(0, num_frags_left - 1)
                fragments.pop(idx)
    
            timer.start()
>           decoded_file_ranges = pyeclib_c.decode(handle,
                                                   fragments,
                                                   len(fragments[0]),
                                                   ranges)
E           pyeclib.ec_iface.ECInvalidParameter: pyeclib_c_decode invalid range 
ERROR: Invalid arguments. Please inspect syslog for liberasurecode error report.

test/test_pyeclib_c.py:227: ECInvalidParameter
----------------------------- Captured stdout call -----------------------------
Encode (101-K): 2413.953524
Encode (202-K): 2775.046373
Encode (303-K): 2849.110236
Encode (101-K): 1568.341431
Encode (202-K): 1745.142862
Encode (303-K): 1794.20899
Encode (101-K): 1131.627365
Encode (202-K): 1256.450065
Encode (303-K): 1293.063074
Decode (101-K): 2464.653852
Decode (202-K): 2625.013657
Decode (303-K): 2693.500015
Decode (101-K): 1518.204867
Decode (202-K): 1640.14443
Decode (303-K): 1671.894798
Decode (101-K): 1097.928426
Decode (202-K): 1185.212853
Decode (303-K): 1228.218097
Range Decode (101-K): 2381.653477
Range Decode (202-K): 2830.297004
Range Decode (303-K): 2754.745116
Range Decode (101-K): 1518.313695
Range Decode (202-K): 1660.524485
Range Decode (303-K): 1613.74692
Range Decode (101-K): 1111.40913
Range Decode (202-K): 1186.740168
Range Decode (303-K): 1186.812204
Reconstruct (101-K): 9696.147951
Reconstruct (202-K): 12868.30814
Reconstruct (303-K): 13634.52539
Reconstruct (101-K): 9059.553122
Reconstruct (202-K): 11232.26048
Reconstruct (303-K): 11273.6105
Reconstruct (101-K): 7992.918943
Reconstruct (202-K): 9822.042754
Reconstruct (303-K): 10355.88422
Encode (101-K): 1568.167261
Encode (202-K): 1944.615226
Encode (303-K): 2078.595561
Encode (101-K): 1125.434245
Encode (202-K): 1393.685695
Encode (303-K): 1491.426222
Encode (101-K): 889.7996261
Encode (202-K): 1079.009957
Encode (303-K): 1156.454503
Decode (101-K): 1354.948677
Decode (202-K): 1737.769271
Decode (303-K): 1864.435937
Decode (101-K): 987.9998694
Decode (202-K): 1253.290447
Decode (303-K): 1357.582934
Decode (101-K): 767.0608652
Decode (202-K): 972.9552228
Decode (303-K): 1059.785947
Range Decode (101-K): 1422.848567
Range Decode (202-K): 1859.715984
Range Decode (303-K): 1891.998202
Range Decode (101-K): 992.4904622
Range Decode (202-K): 1316.217816
Range Decode (303-K): 1399.070986
Range Decode (101-K): 762.6007273
Range Decode (202-K): 1028.16539
Range Decode (303-K): 1032.408416
Reconstruct (101-K): 2616.582483
Reconstruct (202-K): 3696.550646
Reconstruct (303-K): 4326.527242
Reconstruct (101-K): 2691.902548
Reconstruct (202-K): 3769.070724
Reconstruct (303-K): 4345.908806
Reconstruct (101-K): 2743.327963
Reconstruct (202-K): 3704.956306
Reconstruct (303-K): 4290.304882
Encode (101-K): 3881.124178
Encode (202-K): 4510.964796
Encode (303-K): 4686.459591
Encode (101-K): 3198.85754
Encode (202-K): 3658.086473
Encode (303-K): 3780.90058
Encode (101-K): 2765.174308
Encode (202-K): 3071.970297
Encode (303-K): 3175.438789
Decode (101-K): 3137.495956
Decode (202-K): 3766.3899
Decode (303-K): 3795.580181
Decode (101-K): 2713.281906
Decode (202-K): 3167.642756
Decode (303-K): 3241.695011
Decode (101-K): 2352.294431
Decode (202-K): 2755.372233
Decode (303-K): 2805.895198
Range Decode (101-K): 3330.644736
Range Decode (202-K): 3785.405272
Range Decode (303-K): 3923.056373
Range Decode (101-K): 2776.77441
Range Decode (202-K): 3280.479374
Range Decode (303-K): 3583.662161
Range Decode (101-K): 2380.315244
Range Decode (202-K): 2559.511232
Range Decode (303-K): 3140.75255
Reconstruct (101-K): 4810.090882
Reconstruct (202-K): 6964.075358
Reconstruct (303-K): 8029.277938
Reconstruct (101-K): 4781.856914
Reconstruct (202-K): 6929.331872
Reconstruct (303-K): 8147.673497
Reconstruct (101-K): 4778.620462
Reconstruct (202-K): 6915.192687
Reconstruct (303-K): 8127.35251
Encode (101-K): 464.2767787
Encode (202-K): 436.3800942
Encode (303-K): 433.0802903
Encode (101-K): 254.8333117
Encode (202-K): 251.467523
Encode (303-K): 250.3031335
Encode (101-K): 176.7201485
Encode (202-K): 172.7772254
Encode (303-K): 174.0568174
Decode (101-K): 253.9685999
Decode (202-K): 265.2636383
Decode (303-K): 275.3652823
Decode (101-K): 162.0208993
Decode (202-K): 152.4301417
Decode (303-K): 153.3749589
Decode (101-K): 128.0831294
Decode (202-K): 131.4739066
Decode (303-K): 131.3721127
Range Decode (101-K): 256.4391804
Range Decode (202-K): 281.4174374
Range Decode (303-K): 285.2384282
Range Decode (101-K): 163.3465993
Range Decode (202-K): 173.5928485
Range Decode (303-K): 178.9703905
Range Decode (101-K): 131.9201749
Range Decode (202-K): 131.1943859
Range Decode (303-K): 129.6713726
Reconstruct (101-K): 2744.572102
Reconstruct (202-K): 2491.104078
Reconstruct (303-K): 3065.745433
Reconstruct (101-K): 2115.690476
Reconstruct (202-K): 3256.39714
Reconstruct (303-K): 2341.675472
Reconstruct (101-K): 1669.588555
Reconstruct (202-K): 2185.434915
Reconstruct (303-K): 1519.366504
Encode (101-K): 3858.4999
Encode (202-K): 4331.540941
Encode (303-K): 4562.954589
Encode (101-K): 3177.264712
Encode (202-K): 3530.794332
Encode (303-K): 3726.357168
Encode (101-K): 2726.729557
Encode (202-K): 3008.377687
Encode (303-K): 3138.425722
Decode (101-K): 3045.468756
Decode (202-K): 3744.417766
Decode (303-K): 3649.839495
Decode (101-K): 2580.245487
Decode (202-K): 3110.998781
Decode (303-K): 3195.4794
Decode (101-K): 2276.573001
Decode (202-K): 2689.68066
Decode (303-K): 2730.537593
Range Decode (101-K): 3152.673246
Range Decode (202-K): 4218.529217
Range Decode (303-K): 3898.506433
=============================== warnings summary ===============================
.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py: 13 warnings
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:206: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    pyeclib_drivers.append(ECDriver(k=12, m=2, ec_type=_type1,

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py: 13 warnings
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:208: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    pyeclib_drivers.append(ECDriver(k=11, m=2, ec_type=_type1,

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py: 13 warnings
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:210: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    pyeclib_drivers.append(ECDriver(k=10, m=2, ec_type=_type1,

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py: 13 warnings
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:212: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    pyeclib_drivers.append(ECDriver(k=8, m=4, ec_type=_type1,

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py::TestPyECLibDriver::test_get_metadata_formatted
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:374: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    pyeclib_driver = ECDriver(k=k, m=m, ec_type=ec_type,

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py::TestPyECLibDriver::test_invalid_km_args
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:151: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    ECDriver(ec_type=ec_type, k=-100, m=1)

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py::TestPyECLibDriver::test_invalid_km_args
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:157: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    ECDriver(ec_type=ec_type, k=1, m=-100)

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py: 1900 warnings
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:693: 
DeprecationWarning: distutils Version classes are deprecated. Use 
packaging.version instead.
    if StrictVersion(LIBERASURECODE_VERSION) < \

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py: 1900 warnings
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:694: 
DeprecationWarning: distutils Version classes are deprecated. Use 
packaging.version instead.
    StrictVersion('1.2.0'):

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py::TestPyECLibDriver::test_valid_algo
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:195: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    ECDriver(k=10, m=5, ec_type=_type)

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py::TestPyECLibDriver::test_valid_ec_types
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:175: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    ECDriver(k=_k, m=_m, ec_type=_type, validate=True)

.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py::TestBackendsEnabled::test_jerasure_rs_cauchy_available
.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py::TestBackendsEnabled::test_jerasure_rs_vand_available
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build/test/test_pyeclib_api.py:813: 
FutureWarning: Jerasure support is deprecated and may be removed in a future 
release
    ECDriver(k=k, m=m, ec_type=ec_type)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED test/test_pyeclib_c.py::TestPyECLib::test_codes - pyeclib.ec_iface.ECI...
= 1 failed, 29 passed, 4 skipped, 1 deselected, 3859 warnings in 75.75s 
(0:01:15) =
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_py/build; python3.12 -m pytest -v -k 
'not test_get_metadata_memory_usage'
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13 
3.12" returned exit code 13
make: *** [debian/rules:11: build-arch] Error 25
dpkg-buildpackage: error: debian/rules build-arch subprocess returned exit 
status 2
--------------------------------------------------------------------------------
Build finished at 2024-09-12T14:04:14Z

If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/artifact/704976/

As instructed from the error, I also looked at syslog and found:

Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Could not properly 
partition the fragments!
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Could not properly 
partition the fragments!
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Invalid fragment 
header (get meta chksum)!
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Invalid fragment 
header information!
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Invalid fragment 
header (get meta chksum)!
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Invalid fragment 
header information!
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Invalid fragment 
header (get meta chksum)!
... this pattern repeats for around 4000 lines ...
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: Invalid fragment 
header information!
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: 
liberasurecode_instance_create: dynamic linking error libshss.so.1: cannot open 
shared object file: No such file or directory
Sep 12 14:55:29 autopkgtest-lxd-vkqdte liberasurecode[3869]: 
liberasurecode_instance_create: dynamic linking error libphazr.so.1: cannot 
open shared object file: No such file or directory

Thanks,

Stefano

Reply via email to