Automate flattening: convert %ksappend to %include for ksflatten compatibility

This commit is contained in:
Lukas Greve
2026-03-26 14:04:52 +01:00
parent 8c0c3907d4
commit 7f2f150fd2
81 changed files with 2682 additions and 4760 deletions
@@ -7,18 +7,18 @@
# A recipe for a desktop hypervisor
%ksappend fragments/core/base.ks
%ksappend fragments/storage/standard.ks
%ksappend fragments/bootloader/grub.ks
%ksappend fragments/core/locale.ks
%ksappend fragments/core/services.ks
%ksappend fragments/core/network.ks
%ksappend fragments/packages/core-group.ks
%ksappend fragments/packages/fedora-remix.ks
%ksappend fragments/packages/hand-picked.ks
%ksappend fragments/core/security/enabled.ks
%ksappend fragments/packages/virtual-machine-manager/packages.ks
%ksappend fragments/packages/virtual-machine-manager/post-scripts.ks
%ksappend fragments/initial-setup/server/config.ks
%ksappend fragments/hypervisor/intelcpu.ks
%ksappend fragments/repo/rawhide-mirrors.ks
%include fragments/core/base.ks
%include fragments/storage/standard.ks
%include fragments/bootloader/grub.ks
%include fragments/core/locale.ks
%include fragments/core/services.ks
%include fragments/core/network.ks
%include fragments/packages/core-group.ks
%include fragments/packages/fedora-remix.ks
%include fragments/packages/hand-picked.ks
%include fragments/core/security/enabled.ks
%include fragments/packages/virtual-machine-manager/packages.ks
%include fragments/packages/virtual-machine-manager/post-scripts.ks
%include fragments/initial-setup/server/config.ks
%include fragments/hypervisor/intelcpu.ks
%include fragments/repo/rawhide-mirrors.ks
@@ -7,18 +7,18 @@
# A recipe for a desktop hypervisor
%ksappend fragments/core/base.ks
%ksappend fragments/storage/standard.ks
%ksappend fragments/bootloader/grub.ks
%ksappend fragments/core/locale.ks
%ksappend fragments/core/services.ks
%ksappend fragments/core/network.ks
%ksappend fragments/packages/core-group.ks
%ksappend fragments/packages/fedora-remix.ks
%ksappend fragments/packages/hand-picked.ks
%ksappend fragments/core/security/enabled.ks
%ksappend fragments/packages/virtual-machine-manager/packages.ks
%ksappend fragments/packages/virtual-machine-manager/post-scripts.ks
%ksappend fragments/initial-setup/server/config.ks
%ksappend fragments/hypervisor/intelcpu.ks
%ksappend fragments/repo/rawhide-mirrors.ks
%include fragments/core/base.ks
%include fragments/storage/standard.ks
%include fragments/bootloader/grub.ks
%include fragments/core/locale.ks
%include fragments/core/services.ks
%include fragments/core/network.ks
%include fragments/packages/core-group.ks
%include fragments/packages/fedora-remix.ks
%include fragments/packages/hand-picked.ks
%include fragments/core/security/enabled.ks
%include fragments/packages/virtual-machine-manager/packages.ks
%include fragments/packages/virtual-machine-manager/post-scripts.ks
%include fragments/initial-setup/server/config.ks
%include fragments/hypervisor/intelcpu.ks
%include fragments/repo/rawhide-mirrors.ks
@@ -7,18 +7,18 @@
# A recipe for a desktop hypervisor
%ksappend fragments/core/base.ks
%ksappend fragments/storage/standard.ks
%ksappend fragments/bootloader/grub.ks
%ksappend fragments/core/locale.ks
%ksappend fragments/core/services.ks
%ksappend fragments/core/network.ks
%ksappend fragments/packages/core-group.ks
%ksappend fragments/packages/fedora-remix.ks
%ksappend fragments/packages/hand-picked.ks
%ksappend fragments/core/security/enabled.ks
%ksappend fragments/packages/virtual-machine-manager/packages.ks
%ksappend fragments/packages/virtual-machine-manager/post-scripts.ks
%ksappend fragments/initial-setup/server/config.ks
%ksappend fragments/hypervisor/intelcpu.ks
%ksappend fragments/repo/rawhide-mirrors.ks
%include fragments/core/base.ks
%include fragments/storage/standard.ks
%include fragments/bootloader/grub.ks
%include fragments/core/locale.ks
%include fragments/core/services.ks
%include fragments/core/network.ks
%include fragments/packages/core-group.ks
%include fragments/packages/fedora-remix.ks
%include fragments/packages/hand-picked.ks
%include fragments/core/security/enabled.ks
%include fragments/packages/virtual-machine-manager/packages.ks
%include fragments/packages/virtual-machine-manager/post-scripts.ks
%include fragments/initial-setup/server/config.ks
%include fragments/hypervisor/intelcpu.ks
%include fragments/repo/rawhide-mirrors.ks
+14 -14
View File
@@ -7,17 +7,17 @@
# A recipe for a live desktop
%ksappend fragments/shared/live/core/base.ks
%ksappend fragments/shared/live/core/storage.ks
%ksappend fragments/platform/generic-rawhide/bootloader/grub.ks
%ksappend fragments/shared/core/locale.ks
%ksappend fragments/shared/core/services.ks
%ksappend fragments/shared/core/network.ks
%ksappend fragments/shared/live/core/packages.ks
%ksappend fragments/shared/live/post/base.ks
%ksappend fragments/shared/live/post/session.ks
%ksappend fragments/shared/initial-setup/desktop/config.ks
%ksappend fragments/shared/desktop/gnome/config.ks
%ksappend fragments/shared/desktop/gnome/packages.ks
%ksappend fragments/shared/desktop/gnome/post-scripts.ks
%ksappend fragments/platform/generic-rawhide/repo/rawhide-mirrors.ks
%include fragments/shared/live/core/base.ks
%include fragments/shared/live/core/storage.ks
%include fragments/platform/generic-rawhide/bootloader/grub.ks
%include fragments/shared/core/locale.ks
%include fragments/shared/core/services.ks
%include fragments/shared/core/network.ks
%include fragments/shared/live/core/packages.ks
%include fragments/shared/live/post/base.ks
%include fragments/shared/live/post/session.ks
%include fragments/shared/initial-setup/desktop/config.ks
%include fragments/shared/desktop/gnome/config.ks
%include fragments/shared/desktop/gnome/packages.ks
%include fragments/shared/desktop/gnome/post-scripts.ks
%include fragments/platform/generic-rawhide/repo/rawhide-mirrors.ks
+11 -11
View File
@@ -7,14 +7,14 @@
# A recipe for a live server
%ksappend fragments/shared/live/core/base.ks
%ksappend fragments/shared/live/core/storage.ks
%ksappend fragments/platform/generic-rawhide/bootloader/grub.ks
%ksappend fragments/shared/core/locale.ks
%ksappend fragments/shared/core/services.ks
%ksappend fragments/shared/core/network.ks
%ksappend fragments/shared/live/core/packages.ks
%ksappend fragments/shared/live/post/base.ks
%ksappend fragments/shared/live/post/session.ks
%ksappend fragments/shared/initial-setup/server/config.ks
%ksappend fragments/platform/generic-rawhide/repo/rawhide-mirrors.ks
%include fragments/shared/live/core/base.ks
%include fragments/shared/live/core/storage.ks
%include fragments/platform/generic-rawhide/bootloader/grub.ks
%include fragments/shared/core/locale.ks
%include fragments/shared/core/services.ks
%include fragments/shared/core/network.ks
%include fragments/shared/live/core/packages.ks
%include fragments/shared/live/post/base.ks
%include fragments/shared/live/post/session.ks
%include fragments/shared/initial-setup/server/config.ks
%include fragments/platform/generic-rawhide/repo/rawhide-mirrors.ks
+11 -11
View File
@@ -7,14 +7,14 @@
# A recipe for a virtual desktop
%ksappend fragments/shared/core/base.ks
%ksappend fragments/shared/storage/standard.ks
%ksappend fragments/platform/generic-43/bootloader/grub.ks
%ksappend fragments/shared/core/locale.ks
%ksappend fragments/shared/core/services.ks
%ksappend fragments/shared/core/network.ks
%ksappend fragments/shared/packages/core-group.ks
%ksappend fragments/shared/packages/fedora-remix.ks
%ksappend fragments/shared/packages/hand-picked.ks
%ksappend fragments/shared/initial-setup/server/config.ks
%ksappend fragments/platform/generic-43/repo/fedora-mirrors.ks
%include fragments/shared/core/base.ks
%include fragments/shared/storage/standard.ks
%include fragments/platform/generic-43/bootloader/grub.ks
%include fragments/shared/core/locale.ks
%include fragments/shared/core/services.ks
%include fragments/shared/core/network.ks
%include fragments/shared/packages/core-group.ks
%include fragments/shared/packages/fedora-remix.ks
%include fragments/shared/packages/hand-picked.ks
%include fragments/shared/initial-setup/server/config.ks
%include fragments/platform/generic-43/repo/fedora-mirrors.ks
+11 -11
View File
@@ -7,14 +7,14 @@
# A recipe for a virtual server
%ksappend fragments/shared/core/base.ks
%ksappend fragments/shared/storage/standard.ks
%ksappend fragments/platform/generic-43/bootloader/grub.ks
%ksappend fragments/shared/core/locale.ks
%ksappend fragments/shared/core/services.ks
%ksappend fragments/shared/core/network.ks
%ksappend fragments/shared/packages/core-group.ks
%ksappend fragments/shared/packages/fedora-remix.ks
%ksappend fragments/shared/packages/hand-picked.ks
%ksappend fragments/shared/initial-setup/server/config.ks
%ksappend fragments/platform/generic-rawhide/repo/rawhide-mirrors.ks
%include fragments/shared/core/base.ks
%include fragments/shared/storage/standard.ks
%include fragments/platform/generic-43/bootloader/grub.ks
%include fragments/shared/core/locale.ks
%include fragments/shared/core/services.ks
%include fragments/shared/core/network.ks
%include fragments/shared/packages/core-group.ks
%include fragments/shared/packages/fedora-remix.ks
%include fragments/shared/packages/hand-picked.ks
%include fragments/shared/initial-setup/server/config.ks
%include fragments/platform/generic-rawhide/repo/rawhide-mirrors.ks
+1 -1
View File
@@ -43,7 +43,7 @@ def test_validate_all_generated_recipes():
for recipe_file in RECIPE_DIR.glob('*.cfg'):
content = recipe_file.read_text()
assert len(content) > 0, f"Recipe {recipe_file.name} is empty"
assert '%ksappend' in content, f"Recipe {recipe_file.name} missing %ksappend"
assert '%include' in content, f"Recipe {recipe_file.name} missing %include"
def test_make_targets():
+17 -17
View File
@@ -60,10 +60,10 @@ class TestRecipeGenerator:
storage='standard',
security='secure')
assert '# An install recipe for desktop, server, or hypervisor' in content
assert '%ksappend fragments/core/base.ks' in content
assert '%ksappend fragments/desktop/gnome/packages.ks' in content
assert '%ksappend fragments/repo/fedora-43-mirrors.ks' in content
assert '%ksappend fragments/core/security/enabled.ks' in content
assert '%include fragments/core/base.ks' in content
assert '%include fragments/desktop/gnome/packages.ks' in content
assert '%include fragments/repo/fedora-43-mirrors.ks' in content
assert '%include fragments/core/security/enabled.ks' in content
def test_generate_virtual_desktop_encrypted(self):
"""Test generating encrypted desktop recipe."""
@@ -71,7 +71,7 @@ class TestRecipeGenerator:
desktop='gnome',
storage='encrypted',
security='secure')
assert '%ksappend fragments/storage/encrypted.ks' in content
assert '%include fragments/storage/encrypted.ks' in content
def test_generate_virtual_desktop_labwc(self):
"""Test generating LabWC desktop recipe."""
@@ -79,8 +79,8 @@ class TestRecipeGenerator:
desktop='labwc',
storage='standard',
security='secure')
assert '%ksappend fragments/desktop/labwc/config.ks' in content
assert '%ksappend fragments/desktop/gnome/packages.ks' not in content
assert '%include fragments/desktop/labwc/config.ks' in content
assert '%include fragments/desktop/gnome/packages.ks' not in content
def test_generate_virtual_desktop_devel(self):
"""Test generating development mode desktop recipe."""
@@ -88,7 +88,7 @@ class TestRecipeGenerator:
desktop='gnome',
storage='standard',
security='off')
assert '%ksappend fragments/core/security/disabled.ks' in content
assert '%include fragments/core/security/disabled.ks' in content
def test_generate_virtual_server(self):
"""Test generating server recipe."""
@@ -96,7 +96,7 @@ class TestRecipeGenerator:
initial_setup='server',
security='secure')
assert '# An install recipe for desktop, server, or hypervisor' in content
assert '%ksappend fragments/initial-setup/server/config.ks' in content
assert '%include fragments/initial-setup/server/config.ks' in content
def test_generate_desktop_hypervisor_amd(self):
"""Test generating AMD CPU hypervisor recipe."""
@@ -105,8 +105,8 @@ class TestRecipeGenerator:
hypervisor='base',
hypervisor_type='amdcpu',
security='secure')
assert '%ksappend fragments/hypervisor/amdcpu.ks' in content
assert '%ksappend fragments/hypervisor/intelcpu.ks' not in content
assert '%include fragments/hypervisor/amdcpu.ks' in content
assert '%include fragments/hypervisor/intelcpu.ks' not in content
def test_generate_desktop_hypervisor_intel_gpu(self):
"""Test generating Intel CPU+GPU hypervisor recipe."""
@@ -115,7 +115,7 @@ class TestRecipeGenerator:
hypervisor='base',
hypervisor_type='intelcpu',
security='secure')
assert '%ksappend fragments/hypervisor/intelcpu.ks' in content
assert '%include fragments/hypervisor/intelcpu.ks' in content
def test_generate_live_desktop(self):
"""Test generating live desktop recipe."""
@@ -123,15 +123,15 @@ class TestRecipeGenerator:
desktop='gnome',
security='secure')
assert '# A live recipe for live-desktop or live-server' in content
assert '%ksappend fragments/live/core/base.ks' in content
assert '%ksappend fragments/live/core/storage.ks' in content
assert '%include fragments/live/core/base.ks' in content
assert '%include fragments/live/core/storage.ks' in content
def test_generate_live_server(self):
"""Test generating live server recipe."""
content = self.generator.generate_recipe('live', 'rawhide',
security='secure')
assert '# A live recipe for live-desktop or live-server' in content
assert '%ksappend fragments/live/core/base.ks' in content
assert '%include fragments/live/core/base.ks' in content
def test_no_duplicate_includes(self):
"""Test that duplicate includes are prevented."""
@@ -140,9 +140,9 @@ class TestRecipeGenerator:
hypervisor='base',
hypervisor_type='intelcpu',
security='secure')
includes = [line for line in content.split('\n') if line.startswith('%ksappend')]
includes = [line for line in content.split('\n') if line.startswith('%include')]
paths = [line.split()[1] for line in includes]
assert len(paths) == len(set(paths)), "Found duplicate %ksappend entries"
assert len(paths) == len(set(paths)), "Found duplicate %include entries"
def test_missing_ingredient_detection(self):
"""Test that missing fragments are detected."""