Opvolger/ansible/tasks/build-kernel.yaml
2024-12-01 21:28:16 +01:00

142 lines
No EOL
4.3 KiB
YAML

- name: Git checkout linux-firmware
ansible.builtin.git:
repo: 'git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git'
depth: 1
dest: "{{ kernel.target }}/source/linux-firmware"
- name: Download extra firmwares
block:
- name: Download firmware
ansible.builtin.get_url:
url: "{{ item }}"
dest: "{{ kernel.target }}/source/linux-firmware/{{ item | basename }}"
loop: "{{ kernel.extra_firmware_download }}"
when: kernel.extra_firmware_download is defined
- name: When download zip
block:
- set_fact:
download_url: "{{ kernel.download | replace('[version]',kernel.version) }}"
- name: Get Kernel source tar.gz
block:
- name: Creates directory
ansible.builtin.file:
path: "{{ kernel.target }}"
state: directory
- name: Get stats of kernel tar.gz
stat:
path: "{{ kernel.target }}/{{ download_url | basename }}"
register: kernelfile
- name: download kernel source
get_url:
url: "{{ download_url }}"
dest: "{{ kernel.target }}/{{ download_url | basename }}"
when: not kernelfile.stat.exists
- name: Creates source directory
ansible.builtin.file:
path: "{{ kernel.target }}/source"
state: directory
- name: Get set kernel directory
stat:
path: "{{ kernel.target }}/source/linux-{{ kernel.version }}"
register: kernel_dir_stat
- name: Get set kernel directory
set_fact:
kernel_dir: "{{ kernel.target }}/source/linux-{{ kernel.version }}"
- name: Unarchive the kernel
ansible.builtin.unarchive:
src: "{{ kernel.target }}/{{ download_url| basename }}"
dest: "{{ kernel.target }}/source"
remote_src: yes
when: not kernel_dir_stat.stat.exists
when: kernel.download is defined
- name: When git location
block:
- name: Git checkout kernel
ansible.builtin.git:
repo: '{{ kernel.git.repo }}'
dest: '{{ kernel.git.checkout_dir }}'
force: true
version: '{{ kernel.git.version }}'
- name: Get set kernel directory
set_fact:
kernel_dir: "{{ kernel.git.checkout_dir }}"
when: kernel.git is defined
- name: Get stats of defconfig_backup
stat:
path: "{{ kernel_dir }}/arch/riscv/configs/defconfig_backup"
register: defconfig_backup
- name: Create backup of defconfig
ansible.builtin.copy:
src: "{{ kernel_dir }}/arch/riscv/configs/defconfig"
dest: "{{ kernel_dir }}/arch/riscv/configs/defconfig_backup"
remote_src: yes
when: not defconfig_backup.stat.exists
- name: Copy back defconfig_backup to defconfig
ansible.builtin.copy:
src: "{{ kernel_dir }}/arch/riscv/configs/defconfig_backup"
dest: "{{ kernel_dir }}/arch/riscv/configs/defconfig"
remote_src: yes
when: kernel.defconfig is not defined
- name: Copy {{ kernel.defconfig }} to defconfig
ansible.builtin.copy:
src: "{{ kernel_dir }}/arch/riscv/configs/{{ kernel.defconfig }}"
dest: "{{ kernel_dir }}/arch/riscv/configs/defconfig"
remote_src: yes
when: kernel.defconfig is defined
- name: Replace text
replace:
path: "{{ kernel_dir }}/arch/riscv/configs/defconfig"
regexp: '=m'
replace: '=y'
when: kernel.replace_m_for_y
- name: Add to configfile
ansible.builtin.shell: echo "{{ item.key }}={{ item.value }}" >> {{ kernel_dir }}/arch/riscv/configs/defconfig
when: not (item.value is string and item.value != 'n' and item.value != 'y')
loop: "{{ lookup('ansible.builtin.dict', kernel.add_to_config) }}"
- name: Add to configfile string
ansible.builtin.shell: echo '{{ item.key }}="{{ item.value }}"' >> {{ kernel_dir }}/arch/riscv/configs/defconfig
when: item.value is string and item.value != 'n' and item.value != 'y'
loop: "{{ lookup('ansible.builtin.dict', kernel.add_to_config) }}"
- name: Create default RISC-V config
community.general.make:
make: make
chdir: "{{ kernel_dir }}"
jobs: '{{ build_jobs }}'
params:
CROSS_COMPILE: riscv64-linux-gnu-
ARCH: riscv
defconfig:
- name: Replace text
replace:
path: "{{ kernel_dir }}/.config"
regexp: '=m'
replace: '=y'
when: kernel.replace_m_for_y
- name: Build kernel
community.general.make:
make: make
chdir: "{{ kernel_dir }}"
jobs: '{{ build_jobs }}'
params: '{{ kernel.build_params }}'
environment: "{{ kernel.extra_environment_vars }}"