Re: [PATCH v2 09/15] bootlinux: fix os detection for 9p build dependency installation
Daniel Gomez <[email protected]> Fri, 7 Nov 2025 21:00:40 +0100
| Newsgroups | dev.linux.lists.kdevops |
|---|---|
| Organization | kernel.org |
| Message-ID | <[email protected]> |
On 07/11/2025 20.22, Chuck Lever wrote: > On 10/29/25 8:40 AM, Daniel Gomez wrote: >> From: Daniel Gomez <[email protected]> >> >> Dependency installation for 9P builds was checking ansible_os_family, >> which references the target guest's OS instead of the control host where >> packages are actually installed. This caused incorrect packages to be >> installed when building Fedora guests on Debian hosts. >> >> Replace ansible_os_family checks with Kconfig distro variables >> (distro_debian_based, distro_fedora, etc.) which correctly detect >> the control host's distribution. Add fallback defaults to ensure the >> variables are always defined for standalone role usage. >> >> Generated-by: Claude AI >> Suggested-by: Chuck Lever <[email protected]> > > Hrm. I might not have understood the whole picture. > > Yes, distro_yada_based does pick the controller's OS version. > But so does ansible_os_family when the task is running on > localhost. Just a reminder that we control where tasks are deployed with --limit and/or hosts: field in bootlinux.yml. For this case, IIRC, the playbook was run for baseline:dev but tasks were "delegated_to" localhost. > > I just hit a problem with the "build linux on a separate > target node" configuration, where the target is running > Debian 11 and the controller is running Fedora 41. The > bootlinux install-deps/main.yml checks were coming to > the wrong conclusion. Can you share the output? And the --limit argument used in this case? FYI, I normally enable CONFIG_KDEVOPS_MAKE_VERBOSE=y) which prints: make bringup + make linux-clone ==> [guestfs/kdevops_nodes.yaml] + ansible-playbook playbooks/gen_nodes.yml --extra-vars=@./extra_vars.yaml ... ==> [linux-clone-9p] + ansible-playbook --limit localhost playbooks/bootlinux.yml '--extra-vars=target_linux_git=/mirror/linux.git ... ... > > So if build.yml was running on the controller, then > ansible_os_family should have been "Debian" for you. > Question is, where was it running? For 9p, I'll bet it > was running on the targets; it might need to run on I think that is correct. It gets a bit more tricky when we have baseline:dev but we also use during the role execution the "delegate_to" localhost. > both localhost and the targets in this case. I thought about that option too but then, some/most of the tasks should be executed on the guests. That path will require to exclude the controller node from them.