Ubuntu 24 - Axii w clean fails
Clean build files of module 'deps/libffi' ...
Clean build files of module 'deps/godot/headless' ...
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/fabi/axii/armarx_setup/app/click.py:66 in <module> │
│ │
│ 63 if __name__ == '__main__': │
│ 64 │ try: │
│ 65 │ │ try: │
│ ❱ 66 │ │ │ return_code = entry_point.main(prog_name="axii", standalone_mode=False) │
│ 67 │ │ except (KeyboardInterrupt, click.Abort) as e: │
│ 68 │ │ │ raise error.UserAborted() from e │
│ 69 │ except error.AxiiError as e: │
│ │
│ /home/fabi/workspace/setup/.venv_noble/lib/python3.12/site-packages/click/core.py:1059 in main │
│ │
│ 1056 │ │ try: │
│ 1057 │ │ │ try: │
│ 1058 │ │ │ │ with self.make_context(prog_name, args, **extra) as ctx: │
│ ❱ 1059 │ │ │ │ │ rv = self.invoke(ctx) │
│ 1060 │ │ │ │ │ if not standalone_mode: │
│ 1061 │ │ │ │ │ │ return rv │
│ 1062 │ │ │ │ │ # it's not safe to `ctx.exit(rv)` here! │
│ │
│ /home/fabi/workspace/setup/.venv_noble/lib/python3.12/site-packages/click/core.py:1665 in invoke │
│ │
│ 1662 │ │ │ │ super().invoke(ctx) │
│ 1663 │ │ │ │ sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) │
│ 1664 │ │ │ │ with sub_ctx: │
│ ❱ 1665 │ │ │ │ │ return _process_result(sub_ctx.command.invoke(sub_ctx)) │
│ 1666 │ │ │
│ 1667 │ │ # In chain mode we create the contexts step by step, but after the │
│ 1668 │ │ # base command has been invoked. Because at that point we do not │
│ │
│ /home/fabi/workspace/setup/.venv_noble/lib/python3.12/site-packages/click/core.py:1665 in invoke │
│ │
│ 1662 │ │ │ │ super().invoke(ctx) │
│ 1663 │ │ │ │ sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) │
│ 1664 │ │ │ │ with sub_ctx: │
│ ❱ 1665 │ │ │ │ │ return _process_result(sub_ctx.command.invoke(sub_ctx)) │
│ 1666 │ │ │
│ 1667 │ │ # In chain mode we create the contexts step by step, but after the │
│ 1668 │ │ # base command has been invoked. Because at that point we do not │
│ │
│ /home/fabi/workspace/setup/.venv_noble/lib/python3.12/site-packages/click/core.py:1401 in invoke │
│ │
│ 1398 │ │ │ echo(style(message, fg="red"), err=True) │
│ 1399 │ │ │
│ 1400 │ │ if self.callback is not None: │
│ ❱ 1401 │ │ │ return ctx.invoke(self.callback, **ctx.params) │
│ 1402 │ │
│ 1403 │ def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: │
│ 1404 │ │ """Return a list of completions for the incomplete value. Looks │
│ │
│ /home/fabi/workspace/setup/.venv_noble/lib/python3.12/site-packages/click/core.py:767 in invoke │
│ │
│ 764 │ │ │
│ 765 │ │ with augment_usage_errors(__self): │
│ 766 │ │ │ with ctx: │
│ ❱ 767 │ │ │ │ return __callback(*args, **kwargs) │
│ 768 │ │
│ 769 │ def forward( │
│ 770 │ │ __self, __cmd: "Command", *args: t.Any, **kwargs: t.Any # noqa: B902 │
│ │
│ /home/fabi/axii/armarx_setup/cli/workspace/commands.py:477 in workspace_clean │
│ │
│ 474 │ common.bootstrap(ensure_installation=True, print_logo=True) │
│ 475 │ │
│ 476 │ try: │
│ ❱ 477 │ │ integration.clean(**kwargs) │
│ 478 │ except error.NoWorkspaceActive as e: │
│ 479 │ │ integration.no_workspace_active(e, action="clean modules") │
│ 480 │
│ │
│ /home/fabi/axii/armarx_setup/cli/workspace/integration.py:464 in clean │
│ │
│ 461 │ from armarx_setup.core.workspace import Workspace │
│ 462 │ │
│ 463 │ ws = Workspace.load_active_workspace(enforce_os_fingerprint=False) │
│ ❱ 464 │ ws.clean(**kwargs) │
│ 465 │ ws.env_file.remove("AXII_WORKSPACE_OS_FINGERPRINT", "workspace") │
│ 466 │ ws.generate_env() │
│ 467 │
│ │
│ /home/fabi/axii/armarx_setup/core/workspace/workspace.py:862 in clean │
│ │
│ 859 │ │ return None │
│ 860 │ │
│ 861 │ def clean(self, **kwargs) -> ty.Dict[str, ty.Optional[StepResult]]: │
│ ❱ 862 │ │ return self._step_with_options(lambda m, build, venv: m.clean(build=build, venv= │
│ 863 │ │
│ 864 │ def test(self, **kwargs): │
│ 865 │ │ from rich.table import Table │
│ │
│ /home/fabi/axii/armarx_setup/core/workspace/workspace.py:796 in _step_with_options │
│ │
│ 793 │ │ │ if sort: │
│ 794 │ │ │ │ return self.for_each_module_in_alphabetical_order(run_step, **kwargs) │
│ 795 │ │ │ else: │
│ ❱ 796 │ │ │ │ return self.for_each_module_in_dependency_chain(run_step, **kwargs) │
│ 797 │ │
│ 798 │ def _check_for_deprecated_install_module(self): │
│ 799 │ │ from armarx_setup.core.module.module import Module │
│ │
│ /home/fabi/axii/armarx_setup/core/workspace/workspace.py:340 in │
│ for_each_module_in_dependency_chain │
│ │
│ 337 │ def for_each_module_in_dependency_chain( │
│ 338 │ │ │ self, func: Callable[..., Any], *args, **kwargs │
│ 339 │ ) -> Dict[str, Any]: │
│ ❱ 340 │ │ return {module.name: func(module, *args, **kwargs) │
│ 341 │ │ │ │ for module in self.module_graph.get_dependency_chain()} │
│ 342 │ │
│ 343 │ def get_modules_in_dependency_chain(self) -> List["Module"]: │
│ │
│ /home/fabi/axii/armarx_setup/core/workspace/workspace.py:772 in run_step │
│ │
│ 769 │ │ │ module = self.module_graph.find_module_explaining_path(path, ws_path=self.pa │
│ 770 │ │ │
│ 771 │ │ def run_step(module: "Module", **kwargs): │
│ ❱ 772 │ │ │ step_result = module_fn(module, **kwargs) │
│ 773 │ │ │ if isinstance(step_result, StepResult): │
│ 774 │ │ │ │ ignore_errors = "ignore_errors" in kwargs and kwargs["ignore_errors"] │
│ 775 │ │ │ │ if step_result.status == StepResultStatus.FAILURE and not ignore_errors: │
│ │
│ /home/fabi/axii/armarx_setup/core/workspace/workspace.py:862 in <lambda> │
│ │
│ 859 │ │ return None │
│ 860 │ │
│ 861 │ def clean(self, **kwargs) -> ty.Dict[str, ty.Optional[StepResult]]: │
│ ❱ 862 │ │ return self._step_with_options(lambda m, build, venv: m.clean(build=build, venv= │
│ 863 │ │
│ 864 │ def test(self, **kwargs): │
│ 865 │ │ from rich.table import Table │
│ │
│ /home/fabi/axii/armarx_setup/core/module/module.py:268 in clean │
│ │
│ 265 │ │ if self.build is not None and build: │
│ 266 │ │ │ console.print(f"[b]Clean build files of module '{self.name}' ...[/]") │
│ 267 │ │ │ self.build.clean() │
│ ❱ 268 │ │ if self.prepare is not None and self.prepare.python is not None and venv: │
│ 269 │ │ │ console.print(f"[b]Clean Python virtual environments of module '{self.name}' │
│ 270 │ │ │ self.prepare.python.clean_venvs() │
│ 271 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: 'SubStepAdapter' object has no attribute 'python'
❗ Error: AttributeError'SubStepAdapter' object has no attribute 'python'.
``