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: Chuck Lever <chuck.lever@oracle.com>
Subject: [PATCH v2 16/33] bootlinux: Relocate tasks that select a kernel .config
Date: Sun, 27 Jul 2025 18:14:16 -0700	[thread overview]
Message-ID: <20250728011434.3197091-17-mcgrof@kernel.org> (raw)
In-Reply-To: <20250728011434.3197091-1-mcgrof@kernel.org>

From: Chuck Lever <chuck.lever@oracle.com>

Move the tasks that select the kernel .config to build into a
subrole. A dynamic "include_tasks" is used so that eventually these
tasks can be completely skipped when the bootlinux playbook is asked
only to install kernel packages.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 playbooks/roles/bootlinux/tasks/config.yml | 89 +++++++++++++++++++++
 playbooks/roles/bootlinux/tasks/main.yml   | 91 +---------------------
 2 files changed, 92 insertions(+), 88 deletions(-)
 create mode 100644 playbooks/roles/bootlinux/tasks/config.yml

diff --git a/playbooks/roles/bootlinux/tasks/config.yml b/playbooks/roles/bootlinux/tasks/config.yml
new file mode 100644
index 00000000..5cf03e7f
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/config.yml
@@ -0,0 +1,89 @@
+---
+- name: Check whether config-kdevops exists
+  stat:
+    path: "{{ role_path }}/templates/config-kdevops"
+  register: config_kdevops
+  delegate_to: localhost
+
+- name: Found config-kdevops, using it for template
+  set_fact:
+    linux_config: "config-kdevops"
+  when: config_kdevops.stat.exists
+
+- name: No config-kdevops, looking for {{ target_linux_config }}
+  set_fact:
+    linux_config: "{{ target_linux_config }}"
+  when: not config_kdevops.stat.exists
+
+- name: Check if specific kernel config exists for {{ target_linux_ref }}
+  stat:
+    path: "{{ role_path }}/templates/{{ target_linux_config }}"
+  register: kernel_config
+  delegate_to: localhost
+
+- name: Find all linux-next configs if a your custom config-kdevops and ref config was not found
+  find:
+    paths: "{{ role_path }}/templates"
+    patterns: "config-next*"
+    file_type: file
+    recurse: no
+  register: found_configs
+  delegate_to: localhost
+  when:
+    - not config_kdevops.stat.exists
+    - not kernel_config.stat.exists
+
+- name: Extract the date from the filenames
+  set_fact:
+    configs_with_dates: "{{ configs_with_dates | default([]) + [{'file': item.path, 'date': (item.path | regex_search('config-next-(\\d{8})')).split('-')[-1]}] }}"
+  loop: "{{ found_configs.files }}"
+  when:
+    - not config_kdevops.stat.exists
+    - not kernel_config.stat.exists
+    - item.path is search('config-next-(\\d{8})')
+  no_log: true
+  delegate_to: localhost
+
+- name: Sort configs based on date extracted from filename
+  set_fact:
+    sorted_configs: "{{ configs_with_dates | selectattr('date', 'defined') | sort(attribute='date', reverse=True) | map(attribute='file') | list }}"
+  when:
+    - not config_kdevops.stat.exists
+    - not kernel_config.stat.exists
+    - configs_with_dates | length > 0
+  delegate_to: localhost
+
+- name: Set latest linux-next config if configs are found
+  set_fact:
+    latest_linux_next_config: "{{ sorted_configs[0] }}"
+  when:
+    - not config_kdevops.stat.exists and not kernel_config.stat.exists
+    - sorted_configs | length > 0
+  delegate_to: localhost
+
+- name: Use the specific kernel config or fallback to the latest linux-next
+  set_fact:
+    linux_config: "{{ target_linux_config | default('') if kernel_config.stat.exists else (latest_linux_next_config | default('') | basename) }}"
+  when:
+    - not config_kdevops.stat.exists
+    - not kernel_config.stat.exists
+    - latest_linux_next_config is defined
+  delegate_to: localhost
+
+- name: Verify config used
+  debug:
+    msg: "Linux config used: {{ role_path }}/templates/{{ linux_config }}"
+  delegate_to: localhost
+
+- name: Verify that the Linux configuration file exists
+  stat:
+    path: "{{ role_path }}/templates/{{ linux_config }}"
+  register: config_stat
+  delegate_to: localhost
+  when: linux_config is defined
+
+- name: Fail if the configuration file does not exist
+  fail:
+    msg: "The configuration file {{ role_path }}/templates/{{ linux_config }} does not exist."
+  when: not config_stat.stat.exists
+  delegate_to: localhost
diff --git a/playbooks/roles/bootlinux/tasks/main.yml b/playbooks/roles/bootlinux/tasks/main.yml
index 7671389c..9c43c1e5 100644
--- a/playbooks/roles/bootlinux/tasks/main.yml
+++ b/playbooks/roles/bootlinux/tasks/main.yml
@@ -223,94 +223,9 @@
   run_once: true
   delegate_to: localhost
 
-- name: Check whether config-kdevops exists
-  stat:
-    path: "{{ role_path }}/templates/config-kdevops"
-  register: config_kdevops
-  delegate_to: localhost
-
-- name: Found config-kdevops, using it for template
-  set_fact:
-    linux_config: "config-kdevops"
-  when: config_kdevops.stat.exists
-
-- name: No config-kdevops, looking for {{ target_linux_config }}
-  set_fact:
-    linux_config: "{{ target_linux_config }}"
-  when: not config_kdevops.stat.exists
-
-- name: Check if specific kernel config exists for {{ target_linux_ref }}
-  stat:
-    path: "{{ role_path }}/templates/{{ target_linux_config }}"
-  register: kernel_config
-  delegate_to: localhost
-
-- name: Find all linux-next configs if a your custom config-kdevops and ref config was not found
-  find:
-    paths: "{{ role_path }}/templates"
-    patterns: "config-next*"
-    file_type: file
-    recurse: no
-  register: found_configs
-  delegate_to: localhost
-  when:
-    - not config_kdevops.stat.exists
-    - not kernel_config.stat.exists
-
-- name: Extract the date from the filenames
-  set_fact:
-    configs_with_dates: "{{ configs_with_dates | default([]) + [{'file': item.path, 'date': (item.path | regex_search('config-next-(\\d{8})')).split('-')[-1]}] }}"
-  loop: "{{ found_configs.files }}"
-  when:
-    - not config_kdevops.stat.exists
-    - not kernel_config.stat.exists
-    - item.path is search('config-next-(\\d{8})')
-  no_log: true
-  delegate_to: localhost
-
-- name: Sort configs based on date extracted from filename
-  set_fact:
-    sorted_configs: "{{ configs_with_dates | selectattr('date', 'defined') | sort(attribute='date', reverse=True) | map(attribute='file') | list }}"
-  when:
-    - not config_kdevops.stat.exists
-    - not kernel_config.stat.exists
-    - configs_with_dates | length > 0
-  delegate_to: localhost
-
-- name: Set latest linux-next config if configs are found
-  set_fact:
-    latest_linux_next_config: "{{ sorted_configs[0] }}"
-  when:
-    - not config_kdevops.stat.exists and not kernel_config.stat.exists
-    - sorted_configs | length > 0
-  delegate_to: localhost
-
-- name: Use the specific kernel config or fallback to the latest linux-next
-  set_fact:
-    linux_config: "{{ target_linux_config | default('') if kernel_config.stat.exists else (latest_linux_next_config | default('') | basename) }}"
-  when:
-    - not config_kdevops.stat.exists
-    - not kernel_config.stat.exists
-    - latest_linux_next_config is defined
-  delegate_to: localhost
-
-- name: Verify config used
-  debug:
-    msg: "Linux config used: {{ role_path }}/templates/{{ linux_config }}"
-  delegate_to: localhost
-
-- name: Verify that the Linux configuration file exists
-  stat:
-    path: "{{ role_path }}/templates/{{ linux_config }}"
-  register: config_stat
-  delegate_to: localhost
-  when: linux_config is defined
-
-- name: Fail if the configuration file does not exist
-  fail:
-    msg: "The configuration file {{ role_path }}/templates/{{ linux_config }} does not exist."
-  when: not config_stat.stat.exists
-  delegate_to: localhost
+- name: Select the .config file for building the test kernel
+  ansible.builtin.include_tasks:
+    file: "{{ role_path }}/tasks/config.yml"
 
 - name: Copy configuration for Linux {{ target_linux_tree }} to the target nodes
   template:
-- 
2.47.2


  parent reply	other threads:[~2025-07-28  1:14 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-28  1:14 [PATCH v2 00/33] remove vagrant and bootlinux shape up Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 01/33] vagrant: remove entire vagrant configuration directory Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 02/33] kconfigs: fix Kconfig references after vagrant removal Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 03/33] scripts: remove Vagrant-specific scripts and Makefiles Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 04/33] playbooks: remove Vagrant-specific playbooks and roles Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 05/33] gitignore: remove Vagrant-specific ignore patterns Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 06/33] docs: remove Vagrant-specific documentation files Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 07/33] Remove all remaining Vagrant references from codebase Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 08/33] terraform: Clean up the destroy tasks Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 09/33] Switch to the cloud.terraform.terraform module Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 10/33] terraform: Make use of the new "terraform_output" module Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 11/33] terraform: Move "wait_for_connection" out of the terraform playbook Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 12/33] terraform: Remove "delegate_to: localhost" Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 13/33] terraform: Replace scripts/status_terraform.sh Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 14/33] Kconfig: Convert the 9p option to a choice menu Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 15/33] bootlinux: fix making 9p default if using libvirt Luis Chamberlain
2025-07-28  1:14 ` Luis Chamberlain [this message]
2025-07-28  1:14 ` [PATCH v2 17/33] bootlinux: Simplify tasks that select the kernel .config to build Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 18/33] bootlinux: Select the kernel .config earlier Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 19/33] bootlinux: Move 9p build tasks to a subrole Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 20/33] bootlinux: Move tasks for building on target nodes " Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 21/33] bootlinux: Clean up a grub set-up task Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 22/33] bootlinux: Harden update-grub/install.yml Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 23/33] Add a guest/instance for building the test kernel Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 24/33] bootlinux: Add a new builder choice Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 25/33] workflows: Add a kconfig setting for installing kernels via package Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 26/33] bootlinux: Enclose tasks to find kernel release name in a block: Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 27/33] bootlinux: Pick up kernel release info for pre-built packages Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 28/33] bootlinux: Install pre-built kernels from packages Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 29/33] bootlinux: Add an option to build with clang instead of gcc Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 30/33] Makefile: add make style for style checking Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 31/33] CLAUDE.md: new workflow guide for hosts and nodes Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 32/33] CLAUDE.md: add don't BS rules Luis Chamberlain
2025-07-28  1:14 ` [PATCH v2 33/33] gen_nodes/gen_hosts: avoid usage of fs_config_path on task names Luis Chamberlain
2025-07-29 20:07 ` [PATCH v2 00/33] remove vagrant and bootlinux shape up 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=20250728011434.3197091-17-mcgrof@kernel.org \
    --to=mcgrof@kernel.org \
    --cc=cel@kernel.org \
    --cc=chuck.lever@oracle.com \
    --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