Package: src:datalad
Version: 1.1.3-2
Severity: serious
Tags: ftbfs
Dear maintainer:
During a rebuild of all packages in unstable, your package failed to build:
--------------------------------------------------------------------------------
[...]
debian/rules build
dh build --with python3 --buildsystem=pybuild
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
debian/rules override_dh_auto_configure
make[1]: Entering directory '/build/reproducible-path/datalad-1.1.3'
# cheap fake of an installed datalad, so we get .egg-info with entry points
/usr/bin/make bin
make[2]: Entering directory '/build/reproducible-path/datalad-1.1.3'
mkdir -p bin
PYTHONPATH="bin:" python3 setup.py develop --install-dir bin
running develop
/usr/lib/python3/dist-packages/setuptools/command/develop.py:41:
EasyInstallDeprecationWarning: easy_install command is deprecated.
!!
[... snipped ...]
----------
s: str
what to append to 'datalad ' invocation
expected: iterable of str
What entries to expect - would raise AssertionError if any is
not present in output
exit_code: int, optional
If incomplete/malformed we seems to get 2, most frequently used
so default
Returns
-------
list of str
Entries output
"""
if os.path.exists(out_fn): # reuse but ensure it is gone
os.unlink(out_fn)
comp_line = f'datalad {s}'
runner.run(
comp_line.split(' '),
env=dict(os.environ,
_ARGCOMPLETE='1',
_ARGCOMPLETE_STDOUT_FILENAME=out_fn,
COMP_LINE=comp_line,
# without -1 seems to get "finished completion",
someone can investigate more
COMP_POINT=str(len(comp_line)-1), # always at the end
ATM
))
with open(out_fn, 'rb') as f:
entries = f.read().split(b'\x0b')
entries = [e.decode() for e in entries]
diff = set(expected).difference(entries)
if diff:
raise AssertionError(
f"Entries {sorted(diff)} were expected but not found in the
completion output: {entries}"
)
return entries # for extra analyzes if so desired
all_commands = get_all_commands()
get_completions('i', {'install'})
datalad/cli/tests/test_main.py:421:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
datalad/cli/tests/test_main.py:401: in get_completions
runner.run(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <datalad.runner.runner.WitlessRunner object at 0x7f032c717790>
cmd = ['datalad', 'i']
protocol = <class 'datalad.runner.coreprotocols.NoCapture'>, stdin = None
cwd = None
env = {'APT_CONFIG': '/var/lib/sbuild/apt.conf', 'ASFLAGS': '',
'ASFLAGS_FOR_BUILD': '', 'CCACHE_DIR':
'/build/reproducible-path/datalad-1.1.3/.pybuild/ccache', ...}
timeout = None, exception_on_error = True, kwargs = {}, applied_cwd = None
applied_env = {'APT_CONFIG': '/var/lib/sbuild/apt.conf', 'ASFLAGS': '',
'ASFLAGS_FOR_BUILD': '', 'CCACHE_DIR':
'/build/reproducible-path/datalad-1.1.3/.pybuild/ccache', ...}
threaded_runner = <datalad.runner.nonasyncrunner.ThreadedRunner object at
0x7f032c717b30>
results_or_iterator = {'code': 1, 'stderr': '', 'stdout': ''}
results = {'code': 1, 'stderr': '', 'stdout': ''}, return_code = 1
def run(self,
cmd: list | str,
protocol: type[WitlessProtocol] | None = None,
stdin: bytes | IO | Queue | None = None,
cwd: PathLike | str | None = None,
env: dict | None = None,
timeout: float | None = None,
exception_on_error: bool = True,
**kwargs) -> dict | _ResultGenerator:
"""Execute a command and communicate with it.
Parameters
----------
cmd : list or str
Sequence of program arguments. Passing a single string causes
execution via the platform shell.
protocol : WitlessProtocol, optional
Protocol class handling interaction with the running process
(e.g. output capture). A number of pre-crafted classes are
provided (e.g `KillOutput`, `NoCapture`, `GitProgress`).
If the protocol has the GeneratorMixIn-mixin, the run-method
will return an iterator and can therefore be used in a for-clause.
stdin : file-like, bytes, Queue, or None
If stdin is a file-like, it will be directly used as stdin for the
subprocess. The caller is responsible for writing to it and closing
it.
If stdin is a bytes, it will be fed to stdin of the subprocess.
If all data is written, stdin will be closed.
If stdin is a Queue, all elements (bytes) put into the Queue will
be passed to stdin until None is read from the queue. If None is read,
stdin of the subprocess is closed.
cwd : str or path-like, optional
If given, commands are executed with this path as PWD,
the PWD of the parent process is used otherwise. Overrides
any `cwd` given to the constructor.
env : dict, optional
Environment to be used for command execution. If given, it will
completely replace any environment provided to theconstructor. If
`cwd` is given, 'PWD' in the environment is set to its value.
This must be a complete environment definition, no values
from the current environment will be inherited. Overrides
any `env` given to the constructor.
timeout: float, optional
None or the seconds after which a timeout callback is
invoked, if no progress was made in communicating with
the sub-process, or if waiting for the subprocess exit
took more than the specified time. See the protocol and
`ThreadedRunner` descriptions for a more detailed discussion
on timeouts.
exception_on_error : bool, optional
This argument is first interpreted if the protocol is a subclass
of `GeneratorMixIn`. If it is `True` (default), a
`CommandErrorException` is raised by the generator if the
sub process exited with a return code not equal to zero. If the
parameter is `False`, no exception is raised. In both cases the
return code can be read from the attribute `return_code` of
the generator. Then this argument interpreted within this function
to not raise `CommandError` if value is False in case of non-0 exit.
kwargs :
Passed to the Protocol class constructor.
Returns
-------
dict | _ResultGenerator
If the protocol is not a subclass of `GeneratorMixIn`, the
result of protocol._prepare_result will be returned.
If the protocol is a subclass of `GeneratorMixIn`, a Generator, i.e.
a `_ResultGenerator`, will be returned. This allows to use this
method in constructs like:
for protocol_output in runner.run():
...
Where the iterator yields whatever protocol.pipe_data_received
sends into the generator.
If all output was yielded and the process has terminated, the
generator will raise StopIteration(return_code), where
return_code is the return code of the process. The return code
of the process will also be stored in the "return_code"-attribute
of the runner. So you could write:
gen = runner.run()
for file_descriptor, data in gen:
...
# get the return code of the process
result = gen.return_code
Raises
------
CommandError
On execution failure (non-zero exit code) this exception is
raised which provides the command (cmd), stdout, stderr,
exit code (status), and a message identifying the failed
command, as properties.
FileNotFoundError
When a given executable does not exist.
"""
if protocol is None:
# by default let all subprocess stream pass through
protocol = NoCapture
applied_cwd = cwd or self.cwd
applied_env = self._get_adjusted_env(
env=env or self.env,
cwd=applied_cwd,
)
lgr.debug(
'Run %r (protocol_class=%s) (cwd=%s)',
cmd,
protocol.__name__,
applied_cwd
)
threaded_runner = ThreadedRunner(
cmd=cmd,
protocol_class=protocol,
stdin=stdin,
protocol_kwargs=kwargs,
timeout=timeout,
exception_on_error=exception_on_error,
cwd=applied_cwd,
env=applied_env
)
results_or_iterator = threaded_runner.run()
if issubclass(protocol, GeneratorMixIn):
return results_or_iterator
results = cast(dict, results_or_iterator)
# log before any exception is raised
lgr.debug("Finished %r with status %s", cmd, results['code'])
# make it such that we always blow if a protocol did not report
# a return code at all or it was non-0 and we were not asked ignore
# errors
return_code = results.get('code', None)
if return_code is None or (return_code and exception_on_error):
# the runner has a better idea, doc string warns Protocol
# implementations not to return these
results.pop('cmd', None)
results.pop('cwd', None)
raise CommandError(
# whatever the results were, we carry them forward
cmd=cmd,
cwd=applied_cwd,
**results,
)
E datalad.runner.exception.CommandError: CommandError: 'datalad i'
failed with exitcode 1
datalad/runner/runner.py:242: CommandError
__________________________________ test_setup __________________________________
def test_setup():
# insufficient arguments
check_setup_parser([], 2)
datalad/cli/tests/test_parser.py:73:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
args = [], exit_code = 2
def check_setup_parser(args, exit_code=None):
parser = None
with patch('sys.stderr', new_callable=StringIO) as cmerr:
with patch('sys.stdout', new_callable=StringIO) as cmout:
if exit_code is not None:
with assert_raises(SystemExit) as cm:
E Failed: DID NOT RAISE <class 'SystemExit'>
datalad/cli/tests/test_parser.py:60: Failed
____________________________ test_run_datalad_help _____________________________
cmd = 'datalad --help'
def check_run_and_get_output(cmd):
runner = WitlessRunner()
try:
# suppress log output happen it was set to high values
with patch.dict('os.environ', {'DATALAD_LOG_LEVEL': 'WARN'}):
output = runner.run(
["datalad", "--help"],
protocol=StdOutErrCapture)
datalad/tests/test_installed.py:32:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <datalad.runner.runner.WitlessRunner object at 0x7f032d3d83d0>
cmd = ['datalad', '--help']
protocol = <class 'datalad.runner.coreprotocols.StdOutErrCapture'>, stdin = None
cwd = None, env = None, timeout = None, exception_on_error = True, kwargs = {}
applied_cwd = None, applied_env = None
threaded_runner = <datalad.runner.nonasyncrunner.ThreadedRunner object at
0x7f032d3d93d0>
results_or_iterator = {'code': 2, 'stderr': 'usage: datalad [-c
(:name|name=value)] [-C PATH] [--cmd] [-l LEVEL]\n
[--on-failu...to-figshare, no-annex, check-dates, unlock, uninstall,
create-test-dataset, sshrun, shell-completion)\n', 'stdout': ''}
results = {'code': 2, 'stderr': 'usage: datalad [-c (:name|name=value)] [-C
PATH] [--cmd] [-l LEVEL]\n [--on-failu...to-figshare, no-annex,
check-dates, unlock, uninstall, create-test-dataset, sshrun,
shell-completion)\n', 'stdout': ''}
return_code = 2
def run(self,
cmd: list | str,
protocol: type[WitlessProtocol] | None = None,
stdin: bytes | IO | Queue | None = None,
cwd: PathLike | str | None = None,
env: dict | None = None,
timeout: float | None = None,
exception_on_error: bool = True,
**kwargs) -> dict | _ResultGenerator:
"""Execute a command and communicate with it.
Parameters
----------
cmd : list or str
Sequence of program arguments. Passing a single string causes
execution via the platform shell.
protocol : WitlessProtocol, optional
Protocol class handling interaction with the running process
(e.g. output capture). A number of pre-crafted classes are
provided (e.g `KillOutput`, `NoCapture`, `GitProgress`).
If the protocol has the GeneratorMixIn-mixin, the run-method
will return an iterator and can therefore be used in a for-clause.
stdin : file-like, bytes, Queue, or None
If stdin is a file-like, it will be directly used as stdin for the
subprocess. The caller is responsible for writing to it and closing
it.
If stdin is a bytes, it will be fed to stdin of the subprocess.
If all data is written, stdin will be closed.
If stdin is a Queue, all elements (bytes) put into the Queue will
be passed to stdin until None is read from the queue. If None is read,
stdin of the subprocess is closed.
cwd : str or path-like, optional
If given, commands are executed with this path as PWD,
the PWD of the parent process is used otherwise. Overrides
any `cwd` given to the constructor.
env : dict, optional
Environment to be used for command execution. If given, it will
completely replace any environment provided to theconstructor. If
`cwd` is given, 'PWD' in the environment is set to its value.
This must be a complete environment definition, no values
from the current environment will be inherited. Overrides
any `env` given to the constructor.
timeout: float, optional
None or the seconds after which a timeout callback is
invoked, if no progress was made in communicating with
the sub-process, or if waiting for the subprocess exit
took more than the specified time. See the protocol and
`ThreadedRunner` descriptions for a more detailed discussion
on timeouts.
exception_on_error : bool, optional
This argument is first interpreted if the protocol is a subclass
of `GeneratorMixIn`. If it is `True` (default), a
`CommandErrorException` is raised by the generator if the
sub process exited with a return code not equal to zero. If the
parameter is `False`, no exception is raised. In both cases the
return code can be read from the attribute `return_code` of
the generator. Then this argument interpreted within this function
to not raise `CommandError` if value is False in case of non-0 exit.
kwargs :
Passed to the Protocol class constructor.
Returns
-------
dict | _ResultGenerator
If the protocol is not a subclass of `GeneratorMixIn`, the
result of protocol._prepare_result will be returned.
If the protocol is a subclass of `GeneratorMixIn`, a Generator, i.e.
a `_ResultGenerator`, will be returned. This allows to use this
method in constructs like:
for protocol_output in runner.run():
...
Where the iterator yields whatever protocol.pipe_data_received
sends into the generator.
If all output was yielded and the process has terminated, the
generator will raise StopIteration(return_code), where
return_code is the return code of the process. The return code
of the process will also be stored in the "return_code"-attribute
of the runner. So you could write:
gen = runner.run()
for file_descriptor, data in gen:
...
# get the return code of the process
result = gen.return_code
Raises
------
CommandError
On execution failure (non-zero exit code) this exception is
raised which provides the command (cmd), stdout, stderr,
exit code (status), and a message identifying the failed
command, as properties.
FileNotFoundError
When a given executable does not exist.
"""
if protocol is None:
# by default let all subprocess stream pass through
protocol = NoCapture
applied_cwd = cwd or self.cwd
applied_env = self._get_adjusted_env(
env=env or self.env,
cwd=applied_cwd,
)
lgr.debug(
'Run %r (protocol_class=%s) (cwd=%s)',
cmd,
protocol.__name__,
applied_cwd
)
threaded_runner = ThreadedRunner(
cmd=cmd,
protocol_class=protocol,
stdin=stdin,
protocol_kwargs=kwargs,
timeout=timeout,
exception_on_error=exception_on_error,
cwd=applied_cwd,
env=applied_env
)
results_or_iterator = threaded_runner.run()
if issubclass(protocol, GeneratorMixIn):
return results_or_iterator
results = cast(dict, results_or_iterator)
# log before any exception is raised
lgr.debug("Finished %r with status %s", cmd, results['code'])
# make it such that we always blow if a protocol did not report
# a return code at all or it was non-0 and we were not asked ignore
# errors
return_code = results.get('code', None)
if return_code is None or (return_code and exception_on_error):
# the runner has a better idea, doc string warns Protocol
# implementations not to return these
results.pop('cmd', None)
results.pop('cwd', None)
raise CommandError(
# whatever the results were, we carry them forward
cmd=cmd,
cwd=applied_cwd,
**results,
)
E datalad.runner.exception.CommandError: CommandError: 'datalad
--help' failed with exitcode 2 [err: 'usage: datalad [-c (:name|name=value)]
[-C PATH] [--cmd] [-l LEVEL]
E [--on-failure {ignore,continue,stop}]
E [--report-status
{success,failure,ok,notneeded,impossible,error}]
E [--report-type {dataset,file}]
E [-f
{generic,json,json_pp,tailored,disabled,'<template>'}]
E [--dbg] [--idbg] [--version]
E
{create-sibling-github,create-sibling-gitlab,create-sibling-gogs,create-sibling-gin,create-sibling-gitea,create-sibling-ria,create-sibling,siblings,update,subdatasets,drop,remove,addurls,copy-file,download-url,foreach-dataset,install,rerun,run-procedure,create,save,status,clone,get,push,run,diff,configuration,wtf,clean,add-archive-content,add-readme,export-archive,export-archive-ora,export-to-figshare,no-annex,check-dates,unlock,uninstall,create-test-dataset,sshrun,shell-completion}
E ...
E datalad: error: argument
{create-sibling-github,create-sibling-gitlab,create-sibling-gogs,create-sibling-gin,create-sibling-gitea,create-sibling-ria,create-sibling,siblings,update,subdatasets,drop,remove,addurls,copy-file,download-url,foreach-dataset,install,rerun,run-procedure,create,save,status,clone,get,push,run,diff,configuration,wtf,clean,add-archive-content,add-readme,export-archive,export-archive-ora,export-to-figshare,no-annex,check-dates,unlock,uninstall,create-test-dataset,sshrun,shell-completion}:
invalid choice: '/build/reproducible-path/datalad-1.1.3/bin/datalad' (choose
from create-sibling-github, create-sibling-gitlab, create-sibling-gogs,
create-sibling-gin, create-sibling-gitea, create-sibling-ria, create-sibling,
siblings, update, subdatasets, drop, remove, addurls, copy-file, download-url,
foreach-dataset, install, rerun, run-procedure, create, save, status, clone,
get, push, run, diff, configuration, wtf, clean, add-archive-content,
add-readme, export-archive, export-archive-ora, export-to-figshare, no-annex,
check-dates, unlock, uninstall, create-test-dataset, sshrun, shell-completion)']
datalad/runner/runner.py:242: CommandError
During handling of the above exception, another exception occurred:
@assert_cwd_unchanged
def test_run_datalad_help():
out, err = check_run_and_get_output("datalad --help")
datalad/tests/test_installed.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cmd = 'datalad --help'
def check_run_and_get_output(cmd):
runner = WitlessRunner()
try:
# suppress log output happen it was set to high values
with patch.dict('os.environ', {'DATALAD_LOG_LEVEL': 'WARN'}):
output = runner.run(
["datalad", "--help"],
protocol=StdOutErrCapture)
except CommandError as e:
raise AssertionError("'datalad --help' failed to start normally. "
"Exited with %d and output %s" % (e.code,
(e.stdout, e.stderr)))
E AssertionError: 'datalad --help' failed to start normally. Exited with 2 and output
('', "usage: datalad [-c (:name|name=value)] [-C PATH] [--cmd] [-l LEVEL]\n
[--on-failure {ignore,continue,stop}]\n [--report-status
{success,failure,ok,notneeded,impossible,error}]\n [--report-type
{dataset,file}]\n [-f
{generic,json,json_pp,tailored,disabled,'<template>'}]\n [--dbg] [--idbg]
[--version]\n
{create-sibling-github,create-sibling-gitlab,create-sibling-gogs,create-sibling-gin,create-sibling-gitea,create-sibling-ria,create-sibling,siblings,update,subdatasets,drop,remove,addurls,copy-file,download-url,foreach-dataset,install,rerun,run-procedure,create,save,status,clone,get,push,run,diff,configuration,wtf,clean,add-archive-content,add-readme,export-archive,export-archive-ora,export-to-figshare,no-annex,check-dates,unlock,uninstall,create-test-dataset,sshrun,shell-completion}\n
...\ndatalad: error: argument
{create-sibling-github,create-sibling-gitlab,create-sibling-gogs,create-sibling-gin,create-sibling-gitea,create-sibling-ria,create-sibling,siblings,update,subdatasets,drop,remove,addurls,copy-file,download-url,foreach-dataset,install,rerun,run-procedure,create,save,status,clone,get,push,run,diff,configuration,wtf,clean,add-archive-content,add-readme,export-archive,export-archive-ora,export-to-figshare,no-annex,check-dates,unlock,uninstall,create-test-dataset,sshrun,shell-completion}:
invalid choice: '/build/reproducible-path/datalad-1.1.3/bin/datalad' (choose from
create-sibling-github, create-sibling-gitlab, create-sibling-gogs, create-sibling-gin,
create-sibling-gitea, create-sibling-ria, create-sibling, siblings, update, subdatasets, drop,
remove, addurls, copy-file, download-url, foreach-dataset, install, rerun, run-procedure,
create, save, status, clone, get, push, run, diff, configuration, wtf, clean,
add-archive-content, add-readme, export-archive, export-archive-ora, export-to-figshare,
no-annex, check-dates, unlock, uninstall, create-test-dataset, sshrun,
shell-completion)\n")
datalad/tests/test_installed.py:36: AssertionError
=============================== warnings summary ===============================
.pybuild/cpython3_3.12_datalad/build/datalad/downloaders/tests/test_http.py: 13
warnings
/usr/lib/python3/dist-packages/httpretty/core.py:1077: DeprecationWarning:
datetime.datetime.utcnow() is deprecated and scheduled for removal in a future
version. Use timezone-aware objects to represent datetimes in UTC:
datetime.datetime.now(datetime.UTC).
now = datetime.utcnow()
.pybuild/cpython3_3.12_datalad/build/datalad/downloaders/tests/test_http.py: 1
warning
.pybuild/cpython3_3.12_datalad/build/datalad/downloaders/tests/test_shub.py: 3
warnings
.pybuild/cpython3_3.12_datalad/build/datalad/local/tests/test_add_archive_content.py:
3 warnings
.pybuild/cpython3_3.12_datalad/build/datalad/local/tests/test_addurls.py: 1
warning
.pybuild/cpython3_3.12_datalad/build/datalad/local/tests/test_copy_file.py: 2
warnings
.pybuild/cpython3_3.12_datalad/build/datalad/local/tests/test_download_url.py:
5 warnings
.pybuild/cpython3_3.12_datalad/build/datalad/runner/tests/test_nonasyncrunner.py:
1 warning
.pybuild/cpython3_3.12_datalad/build/datalad/support/tests/test_annexrepo.py: 7
warnings
.pybuild/cpython3_3.12_datalad/build/datalad/support/tests/test_locking.py: 2
warnings
/usr/lib/python3.12/multiprocessing/popen_fork.py:66: DeprecationWarning:
This process (pid=778939) is multi-threaded, use of fork() may lead to
deadlocks in the child.
self.pid = os.fork()
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED datalad/cli/tests/test_main.py::test_version - assert 2 == 0
FAILED datalad/cli/tests/test_main.py::test_help_np - assert 2 == 0
FAILED datalad/cli/tests/test_main.py::test_dashh - assert 2 == 0
FAILED datalad/cli/tests/test_main.py::test_combined_short_option - assert 't...
FAILED datalad/cli/tests/test_main.py::test_incorrect_option[opts0-error:
(invalid|too few arguments|unrecognized argument)]
FAILED datalad/cli/tests/test_main.py::test_incorrect_option[opts1-error:
(invalid|too few arguments|unrecognized argument)]
FAILED datalad/cli/tests/test_main.py::test_incorrect_option[opts2-error:
(invalid|too few arguments|unrecognized argument)]
FAILED datalad/cli/tests/test_main.py::test_incorrect_option[opts3-error:
(invalid|too few arguments|unrecognized argument)]
FAILED datalad/cli/tests/test_main.py::test_script_shims[datalad] - datalad.r...
FAILED datalad/cli/tests/test_main.py::test_completion - datalad.runner.excep...
FAILED datalad/cli/tests/test_parser.py::test_setup - Failed: DID NOT RAISE <...
FAILED datalad/tests/test_installed.py::test_run_datalad_help - AssertionErro...
= 12 failed, 1095 passed, 105 skipped, 57 deselected, 2 xfailed, 1 xpassed, 38
warnings in 883.65s (0:14:43) =
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd
/build/reproducible-path/datalad-1.1.3/.pybuild/cpython3_3.12_datalad/build;
python3.12 -m pytest -s -v -k 'not test_test and not
test_subprocess_return_code_capture and not test_gracefull_death' -c
/build/reproducible-path/datalad-1.1.3/tox.ini
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13
3.12" --test-pytest returned exit code 13
make[1]: *** [debian/rules:44: override_dh_auto_test] Error 25
make[1]: Leaving directory '/build/reproducible-path/datalad-1.1.3'
make: *** [debian/rules:25: build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
--------------------------------------------------------------------------------
The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:
https://people.debian.org/~sanvila/build-logs/202411/
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 could not 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 affects, so that this is still visible in the BTS web
page for this package.
Thanks.