### build-kernel This playbook is used to automatically build a kernel with an ACS overrides patch applied as well as Valve's fsync patches. The ACS patch is useful to isolate PCI-e devices to their own IOMMU group for VFIO passthrough. The fsync patches improve Proton performance. See this page for ACS kernel configuration details: https://copr.fedorainfracloud.org/coprs/jlay/kernel-acspatch/ ### Requirements - Inventory with one host - `hosts-local` provided as a sample inventory for localhost - This host must be running Fedora (builds use mock) ### Usage #### Notes Target Fedora version is controlled by the variable `fedora_version` in [./playbook.yml](./playbook.yml) Patch to apply is determined by the `patch_file` variable, stored in [./payload/](./payload) Patches for many different kernel versions provided, the highest version available should be current/working. Patch versions only change when `diffs` change. #### Output: ``` $ ansible-playbook -i buildserver playbook.yml -b --ask-become-pass BECOME password: PLAY [buildservers] ******************************************************************************************************************************************* TASK [Gathering Facts] **************************************************************************************************************************************** ok: [buildserver] TASK [Ensure fedpkg is installed] ***************************************************************************************************************************** changed: [buildserver] TASK [Find old mock chroots] ********************************************************************************************************************************** ok: [buildserver] TASK [Clean old mock chroots] ********************************************************************************************************************************* TASK [Clean old build dir] ************************************************************************************************************************************ ok: [buildserver] TASK [Clone f32 kernel to /tmp/f32_kernel] ******************************************************************************************************************** changed: [buildserver] TASK [Copy patch to build dir] ******************************************************************************************************************************** changed: [buildserver] TASK [Copy newpatch.sh on master branch, for 5.6 on f31] ****************************************************************************************************** changed: [buildserver] TASK [Apply patch and build kernel (logs in /tmp/f32_kernel/results_kernel/*)] ******************************************************************************** changed: [buildserver] => (item=./scripts/newpatch.sh acso-5.4.6.patch) changed: [buildserver] => (item=/usr/bin/sed -i -e 's/%define buildid .*$/%define buildid .acspatch/' kernel.spec) changed: [buildserver] => (item=/usr/bin/make release) changed: [buildserver] => (item=fedpkg mockbuild) TASK [Find RPMs in /tmp/f32_kernel/results_kernel/*/*/*.rpm] ************************************************************************************************** ok: [buildserver] TASK [Copy RPMs to /tmp/ (local)] ***************************************************************************************************************************** [...] PLAY RECAP **************************************************************************************************************************************************** buildserver : ok=10 changed=6 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 ```