*** This log is abridged to its last 1000 lines: aspect="aspect", ) grid.run() run_in_subprocess(run_grid_module) > info = gs.raster_info("slope") python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py:231: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ dist.x86_64-alpine-linux-musl/etc/python/grass/script/raster.py:94: in raster_info s = read_command("r.info", flags="gre", map=map, env=env) dist.x86_64-alpine-linux-musl/etc/python/grass/script/core.py:554: in read_command return handle_errors(returncode, stdout, args, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ returncode = 1, result = '', args = ('r.info',) kwargs = {'env': None, 'flags': 'gre', 'map': 'slope'} def handle_errors(returncode, result, args, kwargs): """Error handler for :func:`run_command()` and similar functions The functions which are using this function to handle errors, can be typically called with an *errors* parameter. This function can handle one of the following values: raise, fatal, status, exit, and ignore. The value raise is a default. If returncode is 0, *result* is returned, unless ``errors="status"`` is set. If *kwargs* dictionary contains key ``errors``, the value is used to determine the return value and the behavior on error. The value ``errors="raise"`` is a default in which case a ``CalledModuleError`` exception is raised. For ``errors="fatal"``, the function calls :func:`fatal()` which has its own rules on what happens next. For ``errors="status"``, the *returncode* will be returned. This is useful, e.g., for cases when the exception-based error handling mechanism is not desirable or the return code has some meaning not necessarily interpreted as an error by the caller. For ``errors="exit"``, ``sys.exit()`` is called with the *returncode*, so it behaves similarly to a Bash script with ``set -e``. No additional error message or exception is produced. This might be useful for a simple script where error message produced by the called module provides sufficient information about what happened to the end user. Finally, for ``errors="ignore"``, the value of *result* will be passed in any case regardless of the *returncode*. """ def get_module_and_code(args, kwargs): """Get module name and formatted command""" # TODO: construction of the whole command is far from perfect args = make_command(*args, **kwargs) # Since we are in error handler, let's be extra cautious # about an empty command. if args: module = args[0] else: module = None code = " ".join(args) return module, code handler = kwargs.get("errors", "raise") if handler.lower() == "status": return returncode if returncode == 0: return result if handler.lower() == "ignore": return result elif handler.lower() == "fatal": module, code = get_module_and_code(args, kwargs) fatal( _( "Module {module} ({code}) failed with" " non-zero return code {returncode}" ).format(module=module, code=code, returncode=returncode) ) elif handler.lower() == "exit": sys.exit(returncode) else: module, code = get_module_and_code(args, kwargs) > raise CalledModuleError(module=module, code=code, returncode=returncode) E grass.exceptions.CalledModuleError: Module run `r.info -gre map=slope` ended with an error. E The subprocess ended with a non-zero return code: 1. See errors above the traceback or in the error output. dist.x86_64-alpine-linux-musl/etc/python/grass/script/core.py:366: CalledModuleError ----------------------------- Captured stderr call ----------------------------- Preliminary surface calculations... Calculating surface 1 (of 1)... r.surf.fractal complete. Raster map created. Process Process-26: Traceback (most recent call last): File "/usr/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap self.run() File "/usr/lib/python3.12/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py", line 227, in run_grid_module grid.run() File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/dist.x86_64-alpine-linux-musl/etc/python/grass/pygrass/modules/grid/grid.py", line 645, in run self._actual_run(patch=patch) File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/dist.x86_64-alpine-linux-musl/etc/python/grass/pygrass/modules/grid/grid.py", line 659, in _actual_run pool = mltp.Pool(processes=self.processes) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 119, in Pool return Pool(processes, initializer, initargs, maxtasksperchild, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/pool.py", line 191, in __init__ self._setup_queues() File "/usr/lib/python3.12/multiprocessing/pool.py", line 346, in _setup_queues self._inqueue = self._ctx.SimpleQueue() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 113, in SimpleQueue return SimpleQueue(ctx=self.get_context()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/queues.py", line 363, in __init__ self._rlock = ctx.Lock() ^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 68, in Lock return Lock(ctx=self.get_context()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/synchronize.py", line 169, in __init__ SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx) File "/usr/lib/python3.12/multiprocessing/synchronize.py", line 57, in __init__ sl = self._semlock = _multiprocessing.SemLock( ^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied ERROR: Raster map not found ____________________________ test_tiling[10-None-4] ____________________________ tmp_path = PosixPath('/tmp/pytest-of-udu/pytest-0/test_tiling_10_None_4_0') width = 10, height = None, processes = 4 @pytest.mark.parametrize( "width, height, processes", [ (None, None, max_processes()), (10, None, max_processes()), (None, 5, max_processes()), ], ) def test_tiling(tmp_path, width, height, processes): """Check auto adjusted tile size based on processes""" location = "test" gs.core._create_location_xy(tmp_path, location) # pylint: disable=protected-access with gs.setup.init(tmp_path / location): gs.run_command("g.region", s=0, n=50, w=0, e=50, res=1) surface = "surface" gs.run_command("r.surf.fractal", output=surface) def run_grid_module(): grid = GridModule( "r.slope.aspect", width=width, height=height, overlap=2, processes=processes, elevation=surface, slope="slope", aspect="aspect", ) grid.run() run_in_subprocess(run_grid_module) > info = gs.raster_info("slope") python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py:231: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ dist.x86_64-alpine-linux-musl/etc/python/grass/script/raster.py:94: in raster_info s = read_command("r.info", flags="gre", map=map, env=env) dist.x86_64-alpine-linux-musl/etc/python/grass/script/core.py:554: in read_command return handle_errors(returncode, stdout, args, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ returncode = 1, result = '', args = ('r.info',) kwargs = {'env': None, 'flags': 'gre', 'map': 'slope'} def handle_errors(returncode, result, args, kwargs): """Error handler for :func:`run_command()` and similar functions The functions which are using this function to handle errors, can be typically called with an *errors* parameter. This function can handle one of the following values: raise, fatal, status, exit, and ignore. The value raise is a default. If returncode is 0, *result* is returned, unless ``errors="status"`` is set. If *kwargs* dictionary contains key ``errors``, the value is used to determine the return value and the behavior on error. The value ``errors="raise"`` is a default in which case a ``CalledModuleError`` exception is raised. For ``errors="fatal"``, the function calls :func:`fatal()` which has its own rules on what happens next. For ``errors="status"``, the *returncode* will be returned. This is useful, e.g., for cases when the exception-based error handling mechanism is not desirable or the return code has some meaning not necessarily interpreted as an error by the caller. For ``errors="exit"``, ``sys.exit()`` is called with the *returncode*, so it behaves similarly to a Bash script with ``set -e``. No additional error message or exception is produced. This might be useful for a simple script where error message produced by the called module provides sufficient information about what happened to the end user. Finally, for ``errors="ignore"``, the value of *result* will be passed in any case regardless of the *returncode*. """ def get_module_and_code(args, kwargs): """Get module name and formatted command""" # TODO: construction of the whole command is far from perfect args = make_command(*args, **kwargs) # Since we are in error handler, let's be extra cautious # about an empty command. if args: module = args[0] else: module = None code = " ".join(args) return module, code handler = kwargs.get("errors", "raise") if handler.lower() == "status": return returncode if returncode == 0: return result if handler.lower() == "ignore": return result elif handler.lower() == "fatal": module, code = get_module_and_code(args, kwargs) fatal( _( "Module {module} ({code}) failed with" " non-zero return code {returncode}" ).format(module=module, code=code, returncode=returncode) ) elif handler.lower() == "exit": sys.exit(returncode) else: module, code = get_module_and_code(args, kwargs) > raise CalledModuleError(module=module, code=code, returncode=returncode) E grass.exceptions.CalledModuleError: Module run `r.info -gre map=slope` ended with an error. E The subprocess ended with a non-zero return code: 1. See errors above the traceback or in the error output. dist.x86_64-alpine-linux-musl/etc/python/grass/script/core.py:366: CalledModuleError ----------------------------- Captured stderr call ----------------------------- Preliminary surface calculations... Calculating surface 1 (of 1)... r.surf.fractal complete. Raster map created. Process Process-27: Traceback (most recent call last): File "/usr/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap self.run() File "/usr/lib/python3.12/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py", line 227, in run_grid_module grid.run() File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/dist.x86_64-alpine-linux-musl/etc/python/grass/pygrass/modules/grid/grid.py", line 645, in run self._actual_run(patch=patch) File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/dist.x86_64-alpine-linux-musl/etc/python/grass/pygrass/modules/grid/grid.py", line 659, in _actual_run pool = mltp.Pool(processes=self.processes) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 119, in Pool return Pool(processes, initializer, initargs, maxtasksperchild, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/pool.py", line 191, in __init__ self._setup_queues() File "/usr/lib/python3.12/multiprocessing/pool.py", line 346, in _setup_queues self._inqueue = self._ctx.SimpleQueue() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 113, in SimpleQueue return SimpleQueue(ctx=self.get_context()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/queues.py", line 363, in __init__ self._rlock = ctx.Lock() ^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 68, in Lock return Lock(ctx=self.get_context()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/synchronize.py", line 169, in __init__ SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx) File "/usr/lib/python3.12/multiprocessing/synchronize.py", line 57, in __init__ sl = self._semlock = _multiprocessing.SemLock( ^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied ERROR: Raster map not found ____________________________ test_tiling[None-5-4] _____________________________ tmp_path = PosixPath('/tmp/pytest-of-udu/pytest-0/test_tiling_None_5_4_0') width = None, height = 5, processes = 4 @pytest.mark.parametrize( "width, height, processes", [ (None, None, max_processes()), (10, None, max_processes()), (None, 5, max_processes()), ], ) def test_tiling(tmp_path, width, height, processes): """Check auto adjusted tile size based on processes""" location = "test" gs.core._create_location_xy(tmp_path, location) # pylint: disable=protected-access with gs.setup.init(tmp_path / location): gs.run_command("g.region", s=0, n=50, w=0, e=50, res=1) surface = "surface" gs.run_command("r.surf.fractal", output=surface) def run_grid_module(): grid = GridModule( "r.slope.aspect", width=width, height=height, overlap=2, processes=processes, elevation=surface, slope="slope", aspect="aspect", ) grid.run() run_in_subprocess(run_grid_module) > info = gs.raster_info("slope") python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py:231: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ dist.x86_64-alpine-linux-musl/etc/python/grass/script/raster.py:94: in raster_info s = read_command("r.info", flags="gre", map=map, env=env) dist.x86_64-alpine-linux-musl/etc/python/grass/script/core.py:554: in read_command return handle_errors(returncode, stdout, args, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ returncode = 1, result = '', args = ('r.info',) kwargs = {'env': None, 'flags': 'gre', 'map': 'slope'} def handle_errors(returncode, result, args, kwargs): """Error handler for :func:`run_command()` and similar functions The functions which are using this function to handle errors, can be typically called with an *errors* parameter. This function can handle one of the following values: raise, fatal, status, exit, and ignore. The value raise is a default. If returncode is 0, *result* is returned, unless ``errors="status"`` is set. If *kwargs* dictionary contains key ``errors``, the value is used to determine the return value and the behavior on error. The value ``errors="raise"`` is a default in which case a ``CalledModuleError`` exception is raised. For ``errors="fatal"``, the function calls :func:`fatal()` which has its own rules on what happens next. For ``errors="status"``, the *returncode* will be returned. This is useful, e.g., for cases when the exception-based error handling mechanism is not desirable or the return code has some meaning not necessarily interpreted as an error by the caller. For ``errors="exit"``, ``sys.exit()`` is called with the *returncode*, so it behaves similarly to a Bash script with ``set -e``. No additional error message or exception is produced. This might be useful for a simple script where error message produced by the called module provides sufficient information about what happened to the end user. Finally, for ``errors="ignore"``, the value of *result* will be passed in any case regardless of the *returncode*. """ def get_module_and_code(args, kwargs): """Get module name and formatted command""" # TODO: construction of the whole command is far from perfect args = make_command(*args, **kwargs) # Since we are in error handler, let's be extra cautious # about an empty command. if args: module = args[0] else: module = None code = " ".join(args) return module, code handler = kwargs.get("errors", "raise") if handler.lower() == "status": return returncode if returncode == 0: return result if handler.lower() == "ignore": return result elif handler.lower() == "fatal": module, code = get_module_and_code(args, kwargs) fatal( _( "Module {module} ({code}) failed with" " non-zero return code {returncode}" ).format(module=module, code=code, returncode=returncode) ) elif handler.lower() == "exit": sys.exit(returncode) else: module, code = get_module_and_code(args, kwargs) > raise CalledModuleError(module=module, code=code, returncode=returncode) E grass.exceptions.CalledModuleError: Module run `r.info -gre map=slope` ended with an error. E The subprocess ended with a non-zero return code: 1. See errors above the traceback or in the error output. dist.x86_64-alpine-linux-musl/etc/python/grass/script/core.py:366: CalledModuleError ----------------------------- Captured stderr call ----------------------------- Preliminary surface calculations... Calculating surface 1 (of 1)... r.surf.fractal complete. Raster map created. Process Process-28: Traceback (most recent call last): File "/usr/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap self.run() File "/usr/lib/python3.12/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py", line 227, in run_grid_module grid.run() File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/dist.x86_64-alpine-linux-musl/etc/python/grass/pygrass/modules/grid/grid.py", line 645, in run self._actual_run(patch=patch) File "/home/udu/aports/community/grass-gis/src/grass-8.4.1/dist.x86_64-alpine-linux-musl/etc/python/grass/pygrass/modules/grid/grid.py", line 659, in _actual_run pool = mltp.Pool(processes=self.processes) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 119, in Pool return Pool(processes, initializer, initargs, maxtasksperchild, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/pool.py", line 191, in __init__ self._setup_queues() File "/usr/lib/python3.12/multiprocessing/pool.py", line 346, in _setup_queues self._inqueue = self._ctx.SimpleQueue() ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 113, in SimpleQueue return SimpleQueue(ctx=self.get_context()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/queues.py", line 363, in __init__ self._rlock = ctx.Lock() ^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/context.py", line 68, in Lock return Lock(ctx=self.get_context()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/multiprocessing/synchronize.py", line 169, in __init__ SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx) File "/usr/lib/python3.12/multiprocessing/synchronize.py", line 57, in __init__ sl = self._semlock = _multiprocessing.SemLock( ^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied ERROR: Raster map not found _________________________ test_with_init_in_subprocess _________________________ tmp_path = PosixPath('/tmp/pytest-of-udu/pytest-0/test_with_init_in_subprocess0') def test_with_init_in_subprocess(tmp_path): """Check creation when running in a subprocess""" def workload(queue): """Transfer the return value using queue""" queue.put(create_and_get_srid(tmp_path)) > epsg = run_in_subprocess(workload) python/grass/script/tests/grass_script_core_location_test.py:57: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python/grass/script/tests/grass_script_core_location_test.py:18: in run_in_subprocess queue = multiprocessing.Queue() /usr/lib/python3.12/multiprocessing/context.py:103: in Queue return Queue(maxsize, ctx=self.get_context()) /usr/lib/python3.12/multiprocessing/queues.py:43: in __init__ self._rlock = ctx.Lock() /usr/lib/python3.12/multiprocessing/context.py:68: in Lock return Lock(ctx=self.get_context()) /usr/lib/python3.12/multiprocessing/synchronize.py:169: in __init__ SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , kind = 1, value = 1, maxvalue = 1 def __init__(self, kind, value, maxvalue, *, ctx): if ctx is None: ctx = context._default_context.get_context() self._is_fork_ctx = ctx.get_start_method() == 'fork' unlink_now = sys.platform == 'win32' or self._is_fork_ctx for i in range(100): try: > sl = self._semlock = _multiprocessing.SemLock( kind, value, maxvalue, self._make_name(), unlink_now) E PermissionError: [Errno 13] Permission denied /usr/lib/python3.12/multiprocessing/synchronize.py:57: PermissionError _______________ test_init_finish_global_functions_capture_strerr _______________ tmp_path = PosixPath('/tmp/pytest-of-udu/pytest-0/test_init_finish_global_functi1') def test_init_finish_global_functions_capture_strerr(tmp_path): """Check that init and finish global functions work""" def init_finish(queue): gs.set_capture_stderr(True) location = "test" gs.core._create_location_xy( # pylint: disable=protected-access tmp_path, location ) gs.setup.init(tmp_path / location) gs.run_command("g.region", flags="p") queue.put(os.environ["GISRC"]) gs.setup.finish() > session_file = run_in_subprocess(init_finish) python/grass/script/tests/grass_script_setup_test.py:79: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python/grass/script/tests/grass_script_setup_test.py:21: in run_in_subprocess queue = multiprocessing.Queue() /usr/lib/python3.12/multiprocessing/context.py:103: in Queue return Queue(maxsize, ctx=self.get_context()) /usr/lib/python3.12/multiprocessing/queues.py:43: in __init__ self._rlock = ctx.Lock() /usr/lib/python3.12/multiprocessing/context.py:68: in Lock return Lock(ctx=self.get_context()) /usr/lib/python3.12/multiprocessing/synchronize.py:169: in __init__ SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , kind = 1, value = 1, maxvalue = 1 def __init__(self, kind, value, maxvalue, *, ctx): if ctx is None: ctx = context._default_context.get_context() self._is_fork_ctx = ctx.get_start_method() == 'fork' unlink_now = sys.platform == 'win32' or self._is_fork_ctx for i in range(100): try: > sl = self._semlock = _multiprocessing.SemLock( kind, value, maxvalue, self._make_name(), unlink_now) E PermissionError: [Errno 13] Permission denied /usr/lib/python3.12/multiprocessing/synchronize.py:57: PermissionError =============================== warnings summary =============================== ../../../../../../../usr/lib/python3.12/site-packages/_pytest/config/__init__.py:1441 /usr/lib/python3.12/site-packages/_pytest/config/__init__.py:1441: PytestConfigWarning: Unknown config option: timeout self._warn_or_fail_if_strict(f"Unknown config option: {key}\n") -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED lib/gis/tests/lib_gis_env_test.py::test_reading_respects_change_of_session FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_processes[1] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_processes[2] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_processes[3] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_processes[4] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_processes[None] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[5-5] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[5-10] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[5-50] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[10-5] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[10-10] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[10-50] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[50-5] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[50-10] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling_schemes[50-50] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_overlaps[0] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_overlaps[1] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_overlaps[2] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_overlaps[5] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_cleans[surface-False] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_cleans[non_exist_surface-False] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_patching_backend[None] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_patching_backend[r.patch] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_patching_backend[RasterRow] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling[None-None-4] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling[10-None-4] FAILED python/grass/pygrass/modules/tests/grass_pygrass_grid_test.py::test_tiling[None-5-4] FAILED python/grass/script/tests/grass_script_core_location_test.py::test_with_init_in_subprocess FAILED python/grass/script/tests/grass_script_setup_test.py::test_init_finish_global_functions_capture_strerr ERROR python/grass/jupyter/tests/seriesmap_test.py::test_default_init - grass... ERROR python/grass/jupyter/tests/seriesmap_test.py::test_render_layers - gras... ERROR python/grass/jupyter/tests/timeseriesmap_test.py::test_collect_layers ERROR python/grass/jupyter/tests/timeseriesmap_test.py::test_default_init - g... ERROR python/grass/jupyter/tests/timeseriesmap_test.py::test_render_layers[False] ERROR python/grass/jupyter/tests/timeseriesmap_test.py::test_render_layers[True] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_defaults - grass.e... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_line - grass.excep... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_json - grass.excep... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_csv[None-,] - gras... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_csv[,-,] - grass.e... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_csv[;-;] - grass.e... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_csv[tab-\t] - gras... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_columns_list - gra... ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_columns_delta_gran ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_json_empty_result ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_plain_empty_result[plain] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_plain_empty_result[line] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_no_header_accepted[csv] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_no_header_accepted[plain] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_no_header_rejected[json] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_no_header_rejected[yaml] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_other_methods_json[delta] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_other_methods_json[deltagaps] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_other_methods_json[gran] ERROR temporal/t.rast.list/tests/t_rast_list_test.py::test_gran_json - grass.... = 29 failed, 74 passed, 3 skipped, 15 deselected, 1 warning, 26 errors in 41.67s = >>> ERROR: grass-gis: check failed >>> grass-gis: Uninstalling dependencies... (1/373) Purging .makedepends-grass-gis (20251010.031425) (2/373) Purging proj-util (9.6.0-r0) (3/373) Purging libpq-dev (17.6-r0) (4/373) Purging proj-dev (9.6.0-r0) (5/373) Purging bison (3.8.2-r2) (6/373) Purging cairo-dev (1.18.4-r0) (7/373) Purging cairo-tools (1.18.4-r0) (8/373) Purging xcb-util-dev (0.4.1-r3) (9/373) Purging util-macros (1.20.1-r0) (10/373) Purging xcb-util (0.4.1-r3) (11/373) Purging doxygen (1.13.2-r0) (12/373) Purging fftw-dev (3.3.10-r6) (13/373) Purging fftw-double-libs (3.3.10-r6) (14/373) Purging fftw-long-double-libs (3.3.10-r6) (15/373) Purging fftw-single-libs (3.3.10-r6) (16/373) Purging flex (2.6.4-r7) (17/373) Purging m4 (1.4.19-r4) (18/373) Purging font-urw-base35 (20200910-r0) (19/373) Purging geos-dev (3.13.1-r0) (20/373) Purging glu-dev (9.0.3-r4) (21/373) Purging glu (9.0.3-r4) (22/373) Purging gnutls-dev (3.8.8-r0) (23/373) Purging gnutls-c++ (3.8.8-r0) (24/373) Purging graphviz (12.2.1-r0) Executing graphviz-12.2.1-r0.pre-deinstall (25/373) Purging font-cantarell (0.303.1-r2) (26/373) Purging grep (3.12-r0) (27/373) Purging mariadb-connector-c-dev (3.3.10-r0) (28/373) Purging mariadb-connector-c (3.3.10-r0) (29/373) Purging mesa-dev (25.1.9-r0) (30/373) Purging libxdamage-dev (1.1.6-r5) (31/373) Purging libxshmfence-dev (1.3.3-r0) (32/373) Purging mesa-gles (25.1.9-r0) (33/373) Purging mesa-rusticl (25.1.9-r0) (34/373) Purging clang20-headers (20.1.8-r0) (35/373) Purging libclc (20.1.8-r0) (36/373) Purging mesa-xatracker (25.1.9-r0) (37/373) Purging netcdf-dev (4.9.3-r0) (38/373) Purging netcdf (4.9.3-r0) (39/373) Purging openblas-dev (0.3.28-r0) (40/373) Purging gfortran (14.2.0-r6) (41/373) Purging liblapacke (0.3.28-r0) (42/373) Purging openblas-ilp64 (0.3.28-r0) (43/373) Purging opencl-dev (2024.05.08-r0) (44/373) Purging opencl-headers (2024.05.08-r0) (45/373) Purging opencl (2024.05.08-r0) (46/373) Purging openjpeg-dev (2.5.3-r0) (47/373) Purging openjpeg-tools (2.5.3-r0) (48/373) Purging pdal-dev (2.8.4-r1) (49/373) Purging libpdal-plugins (2.8.4-r1) (50/373) Purging pdal (2.8.4-r1) (51/373) Purging py3-numpy-dev (2.2.4-r1) (52/373) Purging py3-wxpython-pyc (4.2.1-r5) (53/373) Purging py3-wxpython (4.2.1-r5) (54/373) Purging py3-numpy-tests (2.2.4-r1) (55/373) Purging py3-numpy-pyc (2.2.4-r1) (56/373) Purging py3-numpy (2.2.4-r1) (57/373) Purging py3-pillow-pyc (11.2.1-r0) (58/373) Purging py3-pillow (11.2.1-r0) (59/373) Purging py3-six-pyc (1.17.0-r0) (60/373) Purging py3-six (1.17.0-r0) (61/373) Purging tiff-dev (4.7.1-r0) (62/373) Purging libtiffxx (4.7.1-r0) (63/373) Purging unixodbc-dev (2.3.12-r0) (64/373) Purging pngquant (3.0.3-r0) (65/373) Purging py3-pytest-pyc (8.3.5-r0) (66/373) Purging py3-pytest (8.3.5-r0) (67/373) Purging py3-iniconfig-pyc (2.1.0-r0) (68/373) Purging py3-iniconfig (2.1.0-r0) (69/373) Purging py3-pluggy-pyc (1.5.0-r0) (70/373) Purging py3-pluggy (1.5.0-r0) (71/373) Purging py3-py-pyc (1.11.0-r4) (72/373) Purging py3-py (1.11.0-r4) (73/373) Purging at-spi2-core (2.56.5-r0) (74/373) Purging clang20-libs (20.1.8-r0) (75/373) Purging cpd (0.5.5-r1) (76/373) Purging curl-dev (8.14.1-r2) (77/373) Purging dbus-daemon-launch-helper (1.16.2-r1) (78/373) Purging fgt (0.4.11-r0) (79/373) Purging fontconfig-dev (2.15.0-r3) (80/373) Purging freetype-dev (2.13.3-r0) (81/373) Purging gdal-dev (3.10.3-r2) (82/373) Purging glib-dev (2.84.4-r0) (83/373) Purging bzip2-dev (1.0.8-r6) (84/373) Purging docbook-xsl (1.79.2-r11) (85/373) Purging docbook-xsl-ns (1.79.2-r11) Executing docbook-xsl-ns-1.79.2-r11.pre-deinstall (86/373) Purging docbook-xsl-nons (1.79.2-r11) Executing docbook-xsl-nons-1.79.2-r11.pre-deinstall (87/373) Purging docbook-xml (4.5-r10) Executing docbook-xml-4.5-r10.pre-deinstall (88/373) Purging gettext-dev (0.24.1-r0) (89/373) Purging gettext-asprintf (0.24.1-r0) (90/373) Purging gettext (0.24.1-r0) (91/373) Purging py3-packaging-pyc (25.0-r0) (92/373) Purging py3-packaging (25.0-r0) (93/373) Purging py3-parsing-pyc (3.2.3-r0) (94/373) Purging py3-parsing (3.2.3-r0) (95/373) Purging wxwidgets-webview (3.2.5-r1) (96/373) Purging webkit2gtk-4.1 (2.48.1-r1) (97/373) Purging xdg-dbus-proxy (0.1.6-r0) (98/373) Purging dbus (1.16.2-r1) (99/373) Purging gnome-keyring-pam (48.0-r0) (100/373) Purging gnome-keyring (48.0-r0) (101/373) Purging gcr (3.41.2-r1) (102/373) Purging graphviz-libs (12.2.1-r0) (103/373) Purging gst-plugins-bad (1.26.3-r0) (104/373) Purging gstreamer-ptp-helper (1.26.3-r0) (105/373) Purging harfbuzz-icu (11.2.1-r0) (106/373) Purging hdf5-cpp (1.14.4.2-r1) (107/373) Purging hdf5-hl (1.14.4.2-r1) (108/373) Purging hyphen (2.8.8-r3) (109/373) Purging libass (0.17.3-r0) (110/373) Purging libcap-ng (0.8.5-r0) (111/373) Purging libdc1394 (2.2.7-r0) (112/373) Purging libde265 (1.0.15-r1) (113/373) Purging libdrm-dev (2.4.124-r0) (114/373) Purging libffi-dev (3.4.8-r0) (115/373) Purging linux-headers (6.14.2-r0) (116/373) Purging libfreeaptx (0.2.2-r0) (117/373) Purging libgd (2.3.3-r10) (118/373) Purging libimagequant (4.2.2-r0) (119/373) Purging libjpeg-turbo-dev (3.1.0-r0) (120/373) Purging libturbojpeg (3.1.0-r0) (121/373) Purging libldac (2.0.2.3-r1) (122/373) Purging libmanette (0.2.12-r0) (123/373) Purging libmodplug (0.8.9.0-r3) (124/373) Purging libnice (0.1.22-r0) (125/373) Purging libpciaccess-dev (0.18.1-r0) (126/373) Purging libpng-dev (1.6.47-r0) (127/373) Purging libpq (17.6-r0) (128/373) Purging libpsl-dev (0.21.5-r3) (129/373) Purging libpsl-utils (0.21.5-r3) (130/373) Purging libraw1394 (2.1.2-r5) (131/373) Purging librsvg (2.60.0-r0) (132/373) Purging librtmp (2.4_git20190330-r5) (133/373) Purging libseccomp (2.6.0-r0) (134/373) Purging libsndfile (1.2.2-r2) (135/373) Purging libsoup3 (3.6.5-r0) (136/373) Purging glib-networking (2.80.1-r1) (137/373) Purging gsettings-desktop-schemas (48.0-r0) (138/373) Purging libsrt (1.5.3-r1) (139/373) Purging libsrtp (2.6.0-r0) (140/373) Purging libtasn1-dev (4.20.0-r0) (141/373) Purging libtasn1-progs (4.20.0-r0) (142/373) Purging libunibreak (6.1-r0) (143/373) Purging libva (2.22.0-r1) (144/373) Purging libwebp-dev (1.5.0-r0) (145/373) Purging libwebpdecoder (1.5.0-r0) (146/373) Purging libwebpdemux (1.5.0-r0) (147/373) Purging libwebpmux (1.5.0-r0) (148/373) Purging libwoff2enc (1.0.2-r4) (149/373) Purging libxfixes-dev (6.0.1-r4) (150/373) Purging libxkbcommon-x11 (1.8.1-r2) (151/373) Purging libxml2-dev (2.13.9-r0) (152/373) Purging libxml2-utils (2.13.9-r0) (153/373) Purging libxpm (3.5.17-r0) (154/373) Purging libxrender-dev (0.9.12-r0) (155/373) Purging libxslt (1.1.43-r3) (156/373) Purging libxt (1.3.1-r0) (157/373) Purging libxxf86vm-dev (1.1.6-r0) (158/373) Purging libzbar (0.23.93-r1) (159/373) Purging linux-pam (1.7.0-r4) (160/373) Purging mpg123-libs (1.32.10-r0) (161/373) Purging neon (0.33.0-r0) (162/373) Purging nettle-dev (3.10.1-r0) (163/373) Purging gmp-dev (6.3.0-r3) (164/373) Purging nghttp2-dev (1.65.0-r0) (165/373) Purging openal-soft-libs (1.24.2-r0) (166/373) Purging openh264 (2.6.0-r0) (167/373) Purging openscenegraph (3.6.5-r16) (168/373) Purging openssl-dev (3.5.4-r0) (169/373) Purging p11-kit-dev (0.25.5-r2) (170/373) Purging pcre2-dev (10.43-r1) (171/373) Purging libedit-dev (20250104.3.1-r1) (172/373) Purging bsd-compat-headers (0.7.2-r6) (173/373) Purging libedit (20250104.3.1-r1) (174/373) Purging zlib-dev (1.3.1-r2) (175/373) Purging libpcre2-16 (10.43-r1) (176/373) Purging pixman-dev (0.46.4-r0) (177/373) Purging sbc (2.0-r2) (178/373) Purging soundtouch (2.3.3-r0) (179/373) Purging spandsp (0.0.6-r5) (180/373) Purging spirv-llvm-translator-libs (20.1.2-r0) (181/373) Purging util-linux-dev (2.41-r9) (182/373) Purging libfdisk (2.41-r9) (183/373) Purging liblastlog2 (2.41-r9) (184/373) Purging libsmartcols (2.41-r9) (185/373) Purging utmps-libs (0.1.3.1-r0) (186/373) Purging vo-aacenc (0.1.3-r3) (187/373) Purging vo-amrwbenc (0.1.3-r3) (188/373) Purging vulkan-loader (1.4.313.0-r0) (189/373) Purging wxwidgets-gtk3 (3.2.5-r1) (190/373) Purging xcb-proto-pyc (1.17.0-r0) (191/373) Purging xz-dev (5.8.1-r0) (192/373) Purging xz (5.8.1-r0) (193/373) Purging zstd-dev (1.5.7-r0) (194/373) Purging zstd (1.5.7-r0) (195/373) Purging gst-plugins-base (1.26.3-r0) (196/373) Purging flite (2.2-r5) (197/373) Purging alsa-lib (1.2.14-r0) (198/373) Purging libavif (1.3.0-r0) (199/373) Purging aom-libs (3.12.1-r0) (200/373) Purging gdal (3.10.3-r2) (201/373) Purging armadillo (14.2.2-r0) (202/373) Purging liblapack (0.3.28-r0) (203/373) Purging arpack (3.8.0-r3) (204/373) Purging openblas (0.3.28-r0) (205/373) Purging gcr-base (3.41.2-r1) (206/373) Purging gspell (1.14.0-r1) (207/373) Purging iso-codes (4.17.0-r0) (208/373) Purging gtk+3.0 (3.24.50-r0) Executing gtk+3.0-3.24.50-r0.post-deinstall (209/373) Purging gobject-introspection (1.84.0-r0) (210/373) Purging gtk-update-icon-cache (3.24.50-r0) (211/373) Purging hicolor-icon-theme (0.18-r0) (212/373) Purging libatk-bridge-2.0 (2.56.5-r0) (213/373) Purging at-spi2-core-libs (2.56.5-r0) (214/373) Purging cups-libs (2.4.11-r0) (215/373) Purging avahi-libs (0.8-r21) (216/373) Purging blosc (1.21.6-r0) (217/373) Purging sfcgal (2.0.0-r0) (218/373) Purging boost1.84-serialization (1.84.0-r3) (219/373) Purging brotli-dev (1.1.0-r2) (220/373) Purging brotli (1.1.0-r2) (221/373) Purging brunsli-libs (0.1-r1) (222/373) Purging c-ares-dev (1.34.5-r0) (223/373) Purging pango (1.56.3-r0) Executing pango-1.56.3-r0.pre-deinstall (224/373) Purging cairo-gobject (1.18.4-r0) (225/373) Purging librasterlite2 (1.1.0_beta1-r7) (226/373) Purging cairo (1.18.4-r0) (227/373) Purging cdparanoia-libs (10.2-r14) (228/373) Purging dbus-libs (1.16.2-r1) (229/373) Purging directfb (1.7.7-r8) (230/373) Purging libproxy (0.5.10-r0) (231/373) Purging duktape-libs (2.7.0-r2) (232/373) Purging enchant2-libs (2.8.10-r0) (233/373) Purging libgudev (238-r0) (234/373) Purging hidapi (0.14.0-r0) (235/373) Purging eudev-libs (3.2.14-r5) (236/373) Purging expat-dev (2.7.3-r0) (237/373) Purging expat (2.7.3-r0) (238/373) Purging faac (1.31.1-r0) (239/373) Purging fdk-aac (2.0.2-r4) (240/373) Purging libxft (2.3.8-r3) (241/373) Purging fontconfig (2.15.0-r3) (242/373) Purging harfbuzz (11.2.1-r0) (243/373) Purging freetype (2.13.3-r0) (244/373) Purging fribidi (1.0.16-r1) (245/373) Purging libnotify (0.8.6-r0) (246/373) Purging gdk-pixbuf (2.42.12-r1) Executing gdk-pixbuf-2.42.12-r1.pre-deinstall (247/373) Purging shared-mime-info (2.4-r6) Executing shared-mime-info-2.4-r6.post-deinstall (248/373) Purging libspatialite (5.1.0-r4) (249/373) Purging librttopo (1.1.0-r6) (250/373) Purging geos (3.13.1-r0) (251/373) Purging gettext-libs (0.24.1-r0) (252/373) Purging libjxl (0.10.3-r2) (253/373) Purging giflib (5.2.2-r1) (254/373) Purging gstreamer (1.26.3-r0) (255/373) Purging wxwidgets (3.2.5-r1) (256/373) Purging libsecret (0.21.7-r0) (257/373) Purging graphene (1.10.8-r5) (258/373) Purging libatk-1.0 (2.56.5-r0) (259/373) Purging glib (2.84.4-r0) (260/373) Purging gnu-libiconv-libs (1.17-r2) (261/373) Purging gnutls (3.8.8-r0) (262/373) Purging graphite2 (1.3.14-r6) (263/373) Purging gsm (1.0.22-r3) (264/373) Purging hdf5 (1.14.4.2-r1) (265/373) Purging mesa-gl (25.1.9-r0) (266/373) Purging mesa-egl (25.1.9-r0) (267/373) Purging mesa-gbm (25.1.9-r0) (268/373) Purging mesa (25.1.9-r0) (269/373) Purging libdrm (2.4.124-r0) (270/373) Purging libpciaccess (0.18.1-r0) (271/373) Purging hwdata-pci (0.395-r0) (272/373) Purging xerces-c (3.2.5-r2) (273/373) Purging icu-libs (76.1-r1) (274/373) Purging icu-data-en (76.1-r1) (275/373) Purging openexr-libopenexr (3.3.2-r0) (276/373) Purging imath (3.1.12-r0) (277/373) Purging json-c (0.18-r1) (278/373) Purging lame-libs (3.100-r5) (279/373) Purging lcms2 (2.16-r0) (280/373) Purging lerc (4.0.0-r0) (281/373) Purging libaec (1.1.3-r0) (282/373) Purging libarchive (3.8.1-r0) (283/373) Purging libmount (2.41-r9) (284/373) Purging libblkid (2.41-r9) (285/373) Purging libxext-dev (1.3.6-r2) (286/373) Purging libx11-dev (1.8.11-r0) (287/373) Purging xtrans (1.5.2-r0) (288/373) Purging libxcb-dev (1.17.0-r0) (289/373) Purging xcb-proto (1.17.0-r0) (290/373) Purging libxdmcp-dev (1.1.5-r1) (291/373) Purging libxi (1.8.2-r0) (292/373) Purging libxv (1.0.13-r0) (293/373) Purging libxrandr (1.5.4-r1) (294/373) Purging libxinerama (1.1.5-r4) (295/373) Purging libxtst (1.2.5-r0) (296/373) Purging libxxf86vm (1.1.6-r0) (297/373) Purging libxext (1.3.6-r2) (298/373) Purging libxcursor (1.2.3-r0) (299/373) Purging libxdamage (1.1.6-r5) (300/373) Purging libxrender (0.9.12-r0) (301/373) Purging libxcomposite (0.4.6-r5) (302/373) Purging libxfixes (6.0.1-r4) (303/373) Purging libx11 (1.8.11-r0) (304/373) Purging libxcb (1.17.0-r0) (305/373) Purging libxdmcp (1.1.5-r1) (306/373) Purging libbsd (0.12.2-r0) (307/373) Purging libdav1d (1.5.1-r0) (308/373) Purging openexr-libopenexrcore (3.3.2-r0) (309/373) Purging libdeflate (1.23-r0) (310/373) Purging libeconf (0.6.3-r0) (311/373) Purging libelf (0.193-r0) (312/373) Purging libepoxy (1.5.10-r1) (313/373) Purging libevdev (1.13.3-r0) (314/373) Purging libflac (1.4.3-r1) (315/373) Purging libgcrypt (1.10.3-r1) (316/373) Purging libgeotiff (1.7.3-r2) (317/373) Purging libgfortran (14.2.0-r6) (318/373) Purging libgmpxx (6.3.0-r3) (319/373) Purging libgpg-error (1.55-r0) (320/373) Purging libhwy (1.0.7-r1) (321/373) Purging libsm (1.2.5-r0) (322/373) Purging libice (1.1.2-r0) (323/373) Purging libidn2-dev (2.3.7-r0) (324/373) Purging libyuv (0.0.1887.20251502-r1) (325/373) Purging proj (9.6.0-r0) (326/373) Purging tiff (4.7.1-r0) (327/373) Purging libjpeg-turbo (3.1.0-r0) (328/373) Purging libmd (1.1.0-r0) (329/373) Purging libtheora (1.1.1-r18) (330/373) Purging libvorbis (1.3.7-r2) (331/373) Purging libogg (1.3.5-r5) (332/373) Purging libpcre2-32 (10.43-r1) (333/373) Purging libpng (1.6.47-r0) (334/373) Purging libqb3 (1.2.0-r0) (335/373) Purging libquadmath (14.2.0-r6) (336/373) Purging libwebp (1.5.0-r0) (337/373) Purging libsharpyuv (1.5.0-r0) (338/373) Purging libsz (1.1.3-r0) (339/373) Purging p11-kit (0.25.5-r2) (340/373) Purging libtasn1 (4.20.0-r0) (341/373) Purging libusb (1.0.28-r0) (342/373) Purging libuuid (2.41-r9) (343/373) Purging libwoff2common (1.0.2-r4) (344/373) Purging libxau-dev (1.0.12-r0) (345/373) Purging libxau (1.0.12-r0) (346/373) Purging libxkbcommon (1.8.1-r2) (347/373) Purging xkeyboard-config (2.43-r0) (348/373) Purging llvm20-libs (20.1.8-r0) (349/373) Purging libxml2 (2.13.9-r0) (350/373) Purging libxshmfence (1.3.3-r0) (351/373) Purging lz4-libs (1.10.0-r0) (352/373) Purging minizip (1.3.1-r0) (353/373) Purging nettle (3.10.1-r0) (354/373) Purging openexr-libilmthread (3.3.2-r0) (355/373) Purging openexr-libiex (3.3.2-r0) (356/373) Purging openjpeg (2.5.3-r0) (357/373) Purging opus (1.5.2-r1) (358/373) Purging orc (0.4.40-r1) (359/373) Purging pixman (0.46.4-r0) (360/373) Purging qhull (2020.2-r3) (361/373) Purging sdl2-compat (2.32.56-r0) (362/373) Purging sdl3 (3.2.16-r0) (363/373) Purging skalibs-libs (2.14.4.0-r0) (364/373) Purging spirv-tools (1.4.313.0-r0) (365/373) Purging sqlite-dev (3.49.2-r1) (366/373) Purging sqlite (3.49.2-r1) (367/373) Purging tslib (1.23-r0) (368/373) Purging unixodbc (2.3.12-r0) (369/373) Purging wayland-libs-cursor (1.23.1-r3) (370/373) Purging wayland-libs-client (1.23.1-r3) (371/373) Purging wayland-libs-egl (1.23.1-r3) (372/373) Purging wayland-libs-server (1.23.1-r3) (373/373) Purging xorgproto (2024.1-r0) Executing busybox-1.37.0-r19.trigger OK: 296 MiB in 89 packages