public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Luis Chamberlain <mcgrof@kernel.org>
To: Chuck Lever <cel@kernel.org>, Daniel Gomez <da.gomez@kruces.com>,
	kdevops@lists.linux.dev
Cc: Luis Chamberlain <mcgrof@kernel.org>
Subject: [PATCH 23/40] bootlinux: fix missing make command when using 9P builds
Date: Sun, 27 Jul 2025 17:17:42 -0700	[thread overview]
Message-ID: <20250728001800.3188617-24-mcgrof@kernel.org> (raw)
In-Reply-To: <20250728001800.3188617-1-mcgrof@kernel.org>

When bootlinux_9p is enabled, the kernel build happens on the host
and is shared with guests via 9P. However, the install step still
runs on the guest with 'make modules_install install', which requires
make to be present on the guest.

When the 9p build tasks were moved to a separate subrole, the
reorganization included logic to skip all dependency installation
when 9P is enabled, based on the assumption that guests wouldn't
need build tools. This assumption was incorrect - while guests don't
need the full kernel build toolchain, they still need basic tools
like 'make' to run the installation commands.

The current logic skips all dependency installation when 9P is enabled,
causing the error:
  "[Errno 2] No such file or directory: b'make'"

This commit adds a new install-minimal-deps task that ensures essential
build tools (make, gcc, kmod) are installed on guests even when using
9P builds. This allows the kernel installation to succeed while still
avoiding the full build dependency installation that isn't needed for
9P setups.

The fix properly separates the concerns: full build dependencies are
still skipped for 9P (since building happens on the host), but minimal
tools required for installation are ensured to be present.

Fixes: d0d54b450b0d ("bootlinux: Move 9p build tasks to a subrole")
Generated-by: Claude AI
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 .../install-minimal-deps/debian/main.yml      | 19 +++++++++++++
 .../tasks/install-minimal-deps/main.yml       | 15 +++++++++++
 .../install-minimal-deps/redhat/main.yml      | 27 +++++++++++++++++++
 .../tasks/install-minimal-deps/suse/main.yml  | 13 +++++++++
 playbooks/roles/bootlinux/tasks/main.yml      |  8 ++++++
 5 files changed, 82 insertions(+)
 create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
 create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
 create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
 create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml

diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
new file mode 100644
index 00000000..9fd6834f
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
@@ -0,0 +1,19 @@
+---
+# Install minimal dependencies needed for kernel installation on Debian
+# This is used when bootlinux_9p is enabled and the build happens on the host
+
+- name: Update apt cache
+  become: yes
+  become_method: sudo
+  apt:
+    update_cache: yes
+
+- name: Install minimal build tools for kernel installation
+  become: yes
+  become_method: sudo
+  apt:
+    name:
+      - make
+      - gcc
+      - kmod
+    state: present
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
new file mode 100644
index 00000000..d1e9f675
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
@@ -0,0 +1,15 @@
+---
+- name: Debian-specific minimal setup
+  ansible.builtin.import_tasks: debian/main.yml
+  when:
+    - ansible_os_family == "Debian"
+
+- name: SuSE-specific minimal setup
+  ansible.builtin.import_tasks: suse/main.yml
+  when:
+    - ansible_os_family == "Suse"
+
+- name: Red Hat-specific minimal setup
+  ansible.builtin.import_tasks: redhat/main.yml
+  when:
+    - ansible_os_family == "RedHat"
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
new file mode 100644
index 00000000..c5cd6fbf
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
@@ -0,0 +1,27 @@
+---
+# Install minimal dependencies needed for kernel installation on Red Hat
+# This is used when bootlinux_9p is enabled and the build happens on the host
+
+- name: Install minimal build tools for kernel installation
+  become: yes
+  become_method: sudo
+  yum:
+    name:
+      - make
+      - gcc
+      - kmod
+    state: present
+  when:
+    - ansible_facts['distribution_major_version']|int < 8
+
+- name: Install minimal build tools for kernel installation (dnf)
+  become: yes
+  become_method: sudo
+  dnf:
+    name:
+      - make
+      - gcc
+      - kmod
+    state: present
+  when:
+    - ansible_facts['distribution_major_version']|int >= 8
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
new file mode 100644
index 00000000..a17768f9
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
@@ -0,0 +1,13 @@
+---
+# Install minimal dependencies needed for kernel installation on SUSE
+# This is used when bootlinux_9p is enabled and the build happens on the host
+
+- name: Install minimal build tools for kernel installation
+  become: yes
+  become_method: sudo
+  zypper:
+    name:
+      - make
+      - gcc
+      - kmod-compat
+    state: present
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/main.yml b/playbooks/roles/bootlinux/tasks/main.yml
index 2e5d950e..e908f313 100644
--- a/playbooks/roles/bootlinux/tasks/main.yml
+++ b/playbooks/roles/bootlinux/tasks/main.yml
@@ -19,6 +19,14 @@
   ansible.builtin.import_tasks:
     file: install-deps/main.yml
 
+# When using 9P builds, we still need make on the guest for modules_install
+- name: Install essential build tools for 9P builds
+  ansible.builtin.import_tasks:
+    file: install-minimal-deps/main.yml
+  when:
+    - bootlinux_9p|bool
+    - not workflow_linux_packaged|bool
+
 # We do this regardless of what distro you use
 - name: Install b4
   become: yes
-- 
2.47.2


  parent reply	other threads:[~2025-07-28  0:18 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-28  0:17 [PATCH 00/40] remove vagrant and bootlinux shape up Luis Chamberlain
2025-07-28  0:17 ` [PATCH 01/40] vagrant: remove entire vagrant configuration directory Luis Chamberlain
2025-07-28  0:17 ` [PATCH 02/40] kconfigs: fix Kconfig references after vagrant removal Luis Chamberlain
2025-07-28  0:17 ` [PATCH 03/40] scripts: remove Vagrant-specific scripts and Makefiles Luis Chamberlain
2025-07-28  0:17 ` [PATCH 04/40] playbooks: remove Vagrant-specific playbooks and roles Luis Chamberlain
2025-07-28  0:17 ` [PATCH 05/40] gitignore: remove Vagrant-specific ignore patterns Luis Chamberlain
2025-07-28  0:17 ` [PATCH 06/40] docs: remove Vagrant-specific documentation files Luis Chamberlain
2025-07-28  0:17 ` [PATCH 07/40] Remove all remaining Vagrant references from codebase Luis Chamberlain
2025-07-28  0:17 ` [PATCH 08/40] AuthorDate: Fri Jul 25 14:23:00 2025 -0400 Luis Chamberlain
2025-07-28  0:17 ` [PATCH 09/40] ansible.cfg: Explicitly set the ssh user Luis Chamberlain
2025-07-28  0:24   ` Chuck Lever
2025-07-28  0:27     ` Luis Chamberlain
2025-07-28  0:36       ` Chuck Lever
2025-07-28  0:17 ` [PATCH 10/40] fstests: local NFS list Luis Chamberlain
2025-07-28  0:17 ` [PATCH 11/40] terraform: Clean up the destroy tasks Luis Chamberlain
2025-07-28  0:17 ` [PATCH 12/40] Switch to the cloud.terraform.terraform module Luis Chamberlain
2025-07-28  0:17 ` [PATCH 13/40] terraform: Make use of the new "terraform_output" module Luis Chamberlain
2025-07-28  0:17 ` [PATCH 14/40] terraform: Move "wait_for_connection" out of the terraform playbook Luis Chamberlain
2025-07-28  0:17 ` [PATCH 15/40] terraform: Remove "delegate_to: localhost" Luis Chamberlain
2025-07-28  0:17 ` [PATCH 16/40] terraform: Replace scripts/status_terraform.sh Luis Chamberlain
2025-07-28  0:17 ` [PATCH 17/40] Kconfig: Convert the 9p option to a choice menu Luis Chamberlain
2025-07-28  0:17 ` [PATCH 18/40] bootlinux: fix making 9p default if using libvirt Luis Chamberlain
2025-07-28  0:17 ` [PATCH 19/40] bootlinux: Relocate tasks that select a kernel .config Luis Chamberlain
2025-07-28  0:17 ` [PATCH 20/40] bootlinux: Simplify tasks that select the kernel .config to build Luis Chamberlain
2025-07-28  0:17 ` [PATCH 21/40] bootlinux: Select the kernel .config earlier Luis Chamberlain
2025-07-28  0:17 ` [PATCH 22/40] bootlinux: Move 9p build tasks to a subrole Luis Chamberlain
2025-07-28  0:17 ` Luis Chamberlain [this message]
2025-07-28  0:17 ` [PATCH 24/40] guestsfs: ensure linux directory exists Luis Chamberlain
2025-07-28  0:17 ` [PATCH 25/40] bootlinux: Move tasks for building on target nodes to a subrole Luis Chamberlain
2025-07-28  0:17 ` [PATCH 26/40] bootlinux: Clean up a grub set-up task Luis Chamberlain
2025-07-28  0:17 ` [PATCH 27/40] bootlinux: Harden update-grub/install.yml Luis Chamberlain
2025-07-28  0:17 ` [PATCH 28/40] bootlinux: fix grub_boot_number_cmd undefined error in update-grub Luis Chamberlain
2025-07-28  0:17 ` [PATCH 29/40] bootlinux: fix kernel_release_file.stat " Luis Chamberlain
2025-07-28  0:17 ` [PATCH 30/40] Add a guest/instance for building the test kernel Luis Chamberlain
2025-07-28  0:17 ` [PATCH 31/40] bootlinux: Add a new builder choice Luis Chamberlain
2025-07-28  0:17 ` [PATCH 32/40] workflows: Add a kconfig setting for installing kernels via package Luis Chamberlain
2025-07-28  0:17 ` [PATCH 33/40] bootlinux: Enclose tasks to find kernel release name in a block: Luis Chamberlain
2025-07-28  0:17 ` [PATCH 34/40] bootlinux: Pick up kernel release info for pre-built packages Luis Chamberlain
2025-07-28  0:17 ` [PATCH 35/40] bootlinux: Install pre-built kernels from packages Luis Chamberlain
2025-07-28  0:17 ` [PATCH 36/40] bootlinux: Add an option to build with clang instead of gcc Luis Chamberlain
2025-07-28  0:17 ` [PATCH 37/40] Makefile: add make style for style checking Luis Chamberlain
2025-07-28  0:17 ` [PATCH 38/40] CLAUDE.md: new workflow guide for hosts and nodes Luis Chamberlain
2025-07-28  0:17 ` [PATCH 39/40] CLAUDE.md: add don't BS rules Luis Chamberlain
2025-07-28  0:17 ` [PATCH 40/40] gen_nodes/gen_hosts: avoid usage of fs_config_path on task names Luis Chamberlain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250728001800.3188617-24-mcgrof@kernel.org \
    --to=mcgrof@kernel.org \
    --cc=cel@kernel.org \
    --cc=da.gomez@kruces.com \
    --cc=kdevops@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox