Package: src:eumdac Version: 3.0.0-1.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:eumdac, so that this is still visible in the BTS web page for this package. Thanks. -------------------------------------------------------------------------------- [...] debian/rules clean dh clean --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild I: pybuild base:317: python3.14 setup.py clean running clean removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_eumdac/build' (and everything under it) 'build/bdist.linux-x86_64' does not exist -- can't clean it 'build/scripts-3.14' does not exist -- can't clean it I: pybuild base:317: python3.13 setup.py clean running clean removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_eumdac/build' (and everything under it) 'build/bdist.linux-x86_64' does not exist -- can't clean it 'build/scripts-3.13' does not exist -- can't clean it dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild [... snipped ...] "Download complete: MockProduct", "Removing successfully finished order", ) > assert_eumdac_output(args, expected) tests/test_cli_sh.py:131: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_cli_sh.py:62: in assert_eumdac_output out, err = eumdac(args) ^^^^^^^^^^^^ tests/test_cli_sh.py:53: in eumdac cli(args) eumdac/cli.py:1752: in cli parser_search.add_argument( /usr/lib/python3.14/argparse.py:1530: in add_argument kwargs = self._get_positional_kwargs(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = ArgumentParser(prog='python3.14 -m pytest search', usage=None, description='Search for products', formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True) dest = 'print_help' kwargs = {'action': <class 'eumdac.cli.HelpAction'>, 'help': '==SUPPRESS==', 'nargs': 0} nargs = 0 def _get_positional_kwargs(self, dest, **kwargs): # make sure required is not specified if 'required' in kwargs: msg = "'required' is an invalid argument for positionals" raise TypeError(msg) # mark positional arguments as required if at least one is # always required nargs = kwargs.get('nargs') if nargs == 0: > raise ValueError('nargs for positionals must be != 0') E ValueError: nargs for positionals must be != 0 /usr/lib/python3.14/argparse.py:1665: ValueError __________________________ test_skip_download_product __________________________ temp_credentials = PosixPath('config_dir_test_skip_download_product/credentials') temp_output_dir = PosixPath('output_dir_test_skip_download_product') @unittest.skipIf(INTEGRATION_TESTING, "Covered by unit testing") def test_skip_download_product(temp_credentials, temp_output_dir): args = f"download -c MockCollection -p MockProduct -o {temp_output_dir} --test".split() expected = ("Processing", "Using order", "Output directory:", "Skip") # First run to ensure the file exists already > eumdac(args) tests/test_cli_sh.py:140: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_cli_sh.py:53: in eumdac cli(args) eumdac/cli.py:1752: in cli parser_search.add_argument( /usr/lib/python3.14/argparse.py:1530: in add_argument kwargs = self._get_positional_kwargs(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = ArgumentParser(prog='python3.14 -m pytest search', usage=None, description='Search for products', formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True) dest = 'print_help' kwargs = {'action': <class 'eumdac.cli.HelpAction'>, 'help': '==SUPPRESS==', 'nargs': 0} nargs = 0 def _get_positional_kwargs(self, dest, **kwargs): # make sure required is not specified if 'required' in kwargs: msg = "'required' is an invalid argument for positionals" raise TypeError(msg) # mark positional arguments as required if at least one is # always required nargs = kwargs.get('nargs') if nargs == 0: > raise ValueError('nargs for positionals must be != 0') E ValueError: nargs for positionals must be != 0 /usr/lib/python3.14/argparse.py:1665: ValueError _________________________ test_download_product_entry __________________________ temp_credentials = PosixPath('config_dir_test_download_product_entry/credentials') temp_output_dir = PosixPath('output_dir_test_download_product_entry') @unittest.skipIf(INTEGRATION_TESTING, "Covered by unit testing") def test_download_product_entry(temp_credentials, temp_output_dir): args = f"download -c MockCollection -p MockProduct --entry *.nc -o {temp_output_dir} --test".split() # we expect a folder with the product name to be created when --entry is given expected = ( "Processing", "Using order", "Output directory:", ( "order_does_not_matter", [ "Job 1: Preparing download", "Job 1: Preparing download", "Job 1: Download complete", "Job 1: Download complete", ], ), "Removing successfully finished order", ) > assert_eumdac_output(args, expected) tests/test_cli_sh.py:163: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_cli_sh.py:62: in assert_eumdac_output out, err = eumdac(args) ^^^^^^^^^^^^ tests/test_cli_sh.py:53: in eumdac cli(args) eumdac/cli.py:1752: in cli parser_search.add_argument( /usr/lib/python3.14/argparse.py:1530: in add_argument kwargs = self._get_positional_kwargs(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = ArgumentParser(prog='python3.14 -m pytest search', usage=None, description='Search for products', formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True) dest = 'print_help' kwargs = {'action': <class 'eumdac.cli.HelpAction'>, 'help': '==SUPPRESS==', 'nargs': 0} nargs = 0 def _get_positional_kwargs(self, dest, **kwargs): # make sure required is not specified if 'required' in kwargs: msg = "'required' is an invalid argument for positionals" raise TypeError(msg) # mark positional arguments as required if at least one is # always required nargs = kwargs.get('nargs') if nargs == 0: > raise ValueError('nargs for positionals must be != 0') E ValueError: nargs for positionals must be != 0 /usr/lib/python3.14/argparse.py:1665: ValueError ___________________________ test_download_output_dir ___________________________ temp_credentials = PosixPath('config_dir_test_download_output_dir/credentials') temp_output_dir = PosixPath('output_dir_test_download_output_dir') @unittest.skipIf(INTEGRATION_TESTING, "Covered by unit testing") def test_download_output_dir(temp_credentials, temp_output_dir): args = f"download -c MockCollection --time-range 2020-03-01 2020-03-01T12:15 -o {temp_output_dir} --test".split() expected = ( "Processing", "Using order", "Output directory:", ( "order_does_not_matter", [ "Job 1: Preparing download", "Job 2: Preparing download", "Job 1: Download complete", "Job 2: Download complete", ], ), "Removing successfully finished order", ) > assert_eumdac_output(args, expected) tests/test_cli_sh.py:184: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_cli_sh.py:62: in assert_eumdac_output out, err = eumdac(args) ^^^^^^^^^^^^ tests/test_cli_sh.py:53: in eumdac cli(args) eumdac/cli.py:1752: in cli parser_search.add_argument( /usr/lib/python3.14/argparse.py:1530: in add_argument kwargs = self._get_positional_kwargs(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = ArgumentParser(prog='python3.14 -m pytest search', usage=None, description='Search for products', formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True) dest = 'print_help' kwargs = {'action': <class 'eumdac.cli.HelpAction'>, 'help': '==SUPPRESS==', 'nargs': 0} nargs = 0 def _get_positional_kwargs(self, dest, **kwargs): # make sure required is not specified if 'required' in kwargs: msg = "'required' is an invalid argument for positionals" raise TypeError(msg) # mark positional arguments as required if at least one is # always required nargs = kwargs.get('nargs') if nargs == 0: > raise ValueError('nargs for positionals must be != 0') E ValueError: nargs for positionals must be != 0 /usr/lib/python3.14/argparse.py:1665: ValueError =============================== warnings summary =============================== .pybuild/cpython3_3.14_eumdac/build/tests/test_request.py::test_request_should_retry[0] /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_eumdac/build/eumdac/request.py:103: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC). utc_endtime = datetime.utcfromtimestamp(timestamp) .pybuild/cpython3_3.14_eumdac/build/tests/test_request.py::test_request_should_retry[0] /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_eumdac/build/eumdac/request.py:104: 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). duration = utc_endtime - datetime.utcnow() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_cli.py::TestCommandLineInterface::test_describe_collection FAILED tests/test_cli.py::TestCommandLineInterface::test_describe_list_collections FAILED tests/test_cli.py::TestCommandLineInterface::test_describe_product - V... FAILED tests/test_cli.py::TestCommandLineInterface::test_describe_product_flat FAILED tests/test_cli.py::TestCommandLineInterface::test_load_credentials - V... FAILED tests/test_cli.py::TestCommandLineInterface::test_load_credentials_corrupted_file FAILED tests/test_cli.py::TestCommandLineInterface::test_load_credentials_file_not_found FAILED tests/test_cli.py::TestCommandLineInterface::test_local_tailor_instances FAILED tests/test_cli.py::TestCommandLineInterface::test_local_tailor_set - V... FAILED tests/test_cli.py::TestCommandLineInterface::test_local_tailor_show - ... FAILED tests/test_cli.py::TestCommandLineInterface::test_pipe_in - ValueError... FAILED tests/test_cli.py::TestCommandLineInterface::test_print_help - ValueEr... FAILED tests/test_cli.py::TestCommandLineInterface::test_print_version - Valu... FAILED tests/test_cli.py::TestCommandLineInterface::test_search - ValueError:... FAILED tests/test_cli.py::TestCommandLineInterface::test_search_bbox - ValueE... FAILED tests/test_cli.py::TestCommandLineInterface::test_set_credentials - Va... FAILED tests/test_cli_mtg.py::TestCommandLineInterface::test_download_coverage FAILED tests/test_cli_s3.py::TestCommandLineInterface::test_sen3_search_params FAILED tests/test_cli_sh.py::test_set_credentials - ValueError: nargs for pos... FAILED tests/test_cli_sh.py::test_download_product - ValueError: nargs for po... FAILED tests/test_cli_sh.py::test_skip_download_product - ValueError: nargs f... FAILED tests/test_cli_sh.py::test_download_product_entry - ValueError: nargs ... FAILED tests/test_cli_sh.py::test_download_output_dir - ValueError: nargs for... ERROR tests/test_cli_sh.py::test_download_product - FileNotFoundError: [Errno... ERROR tests/test_cli_sh.py::test_skip_download_product - FileNotFoundError: [... ERROR tests/test_cli_sh.py::test_download_product_entry - FileNotFoundError: ... ERROR tests/test_cli_sh.py::test_download_output_dir - FileNotFoundError: [Er... ======= 23 failed, 92 passed, 3 skipped, 2 warnings, 4 errors in 42.49s ======== E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_eumdac/build; python3.14 -m pytest tests I: pybuild base:317: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_eumdac/build; python3.13 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0 rootdir: /<<PKGBUILDDIR>> plugins: typeguard-4.4.4 collected 118 items tests/test_cli.py ................. [ 14%] tests/test_cli_mtg.py .. [ 16%] tests/test_cli_s3.py ss. [ 18%] tests/test_cli_sh.py ......... [ 26%] tests/test_collection.py ............... [ 38%] tests/test_customisation.py ..s.. [ 43%] tests/test_datastore.py .. [ 44%] tests/test_datatailor.py ....... [ 50%] tests/test_download_app.py ....... [ 56%] tests/test_job_id.py ..... [ 61%] tests/test_local_datatailor.py .. [ 62%] tests/test_lockfile.py .. [ 64%] tests/test_order.py ........ [ 71%] tests/test_order_concurrency.py . [ 72%] tests/test_product.py .... [ 75%] tests/test_request.py ....... [ 81%] tests/test_tailor_app.py ................. [ 95%] tests/test_token.py ..... [100%] =============================== warnings summary =============================== .pybuild/cpython3_3.13_eumdac/build/tests/test_request.py::test_request_should_retry[0] /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_eumdac/build/eumdac/request.py:103: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC). utc_endtime = datetime.utcfromtimestamp(timestamp) .pybuild/cpython3_3.13_eumdac/build/tests/test_request.py::test_request_should_retry[0] /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_eumdac/build/eumdac/request.py:104: 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). duration = utc_endtime - datetime.utcnow() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ================= 115 passed, 3 skipped, 2 warnings in 50.69s ================== dh_auto_test: error: pybuild --test -i python{version} -p "3.14 3.13" returned exit code 13 make: *** [debian/rules:11: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 --------------------------------------------------------------------------------

