refactor: Move recipe generator to cook/ directory and fix flattening bugs

- Move recipe-generator/ to cook/ for cleaner structure

- Fix ksflatten-relative path conversion to handle all %include paths

- Fix validation exit code to only fail on actual errors

- All recipes now generate and flatten successfully via make all
This commit is contained in:
Lukas Greve
2026-03-27 14:02:59 +01:00
parent 288ed0a249
commit 3ffb079981
137 changed files with 673 additions and 675 deletions
+6 -6
View File
@@ -19,23 +19,23 @@ install-deps:
pip install -r requirements.txt pip install -r requirements.txt
generate-recipes: generate-recipes:
rm -f ../recipes/*.cfg rm -f recipes/*.cfg
python3 generate_recipe.py \ python3 generate_recipe.py \
--manifest recipes_manifest.yaml \ --manifest recipes_manifest.yaml \
--output-dir ../recipes/ --output-dir recipes/
validate-recipes: validate-recipes:
python3 generate_recipe.py \ python3 generate_recipe.py \
--validate ../recipes/*.cfg --validate recipes/*.cfg
flatten-dishes: flatten-dishes:
@echo "Flattening recipes to dishes..." @echo "Flattening recipes to dishes..."
@python ../bin/ksflatten-relative ../recipes ../dishes @python bin/ksflatten-relative recipes dishes
clean-dishes: clean-dishes:
rm -f ../dishes/*.cfg rm -f dishes/*.cfg
@echo "✓ Flattened dishes removed. Run 'make flatten-dishes' to regenerate." @echo "✓ Flattened dishes removed. Run 'make flatten-dishes' to regenerate."
clean: clean:
rm -f ../recipes/*.cfg rm -f recipes/*.cfg
@echo "Generated recipes removed. Edit recipes_manifest.yaml and run 'make generate-recipes' to regenerate. Run 'make clean-dishes' to remove flattened dishes." @echo "Generated recipes removed. Edit recipes_manifest.yaml and run 'make generate-recipes' to regenerate. Run 'make clean-dishes' to remove flattened dishes."
@@ -27,14 +27,12 @@ def flatten_recipe(recipe_path, output_path):
if len(parts) >= 2: if len(parts) >= 2:
fragment_path = parts[1] fragment_path = parts[1]
# Make it relative to recipes/ # Make it relative to recipes/
# From recipes/, ingredients/ is at ../ingredients/
if fragment_path.startswith('ingredients/'): if fragment_path.startswith('ingredients/'):
# Keep as relative path - it's relative to the recipe file's location
# recipes/ contains recipes, ingredients/ is at project root level
# So from recipes/, ingredients/ is ../ingredients/
relative_path = '../' + fragment_path relative_path = '../' + fragment_path
lines.append('%include ' + relative_path)
else: else:
lines.append(line) relative_path = '../ingredients/' + fragment_path
lines.append('%include ' + relative_path)
else: else:
lines.append(line) lines.append(line)
else: else:
+1 -1
View File
@@ -338,7 +338,7 @@ def handle_validation_results(all_issues: List, strict: bool) -> None:
sys.exit(1) sys.exit(1)
# Exit with error if any issues found # Exit with error if any issues found
if total_errors > 0 or all_issues: if total_errors > 0:
sys.exit(1) sys.exit(1)
else: else:
# All recipes validated successfully # All recipes validated successfully
+96
View File
@@ -0,0 +1,96 @@
# Recipe Templates for Phyllome OS Kickstart Generator
# Each template defines the structure for a recipe type
# Fragment paths use relative paths from project root
templates:
# Install recipe - for desktop, server, or hypervisor
install:
description: "An install recipe for desktop, server, or hypervisor"
base: core
required:
- core: core/base.ks
- { path: repo/fedora-43-mirrors.ks, replaceable: true }
- { path: storage/standard.ks, replaceable: true }
- { path: bootloader/grub.ks, replaceable: true }
- core/locale.ks
- core/services.ks
- core/network.ks
- packages/core-group.ks
- packages/fedora-remix.ks
- packages/hand-picked.ks
- { path: core/security/enabled.ks, replaceable: true }
- { path: initial-setup/server/config.ks, replaceable: true }
modifiers:
version:
"43": repo/fedora-43-mirrors.ks
"rawhide": repo/rawhide-mirrors.ks
storage:
standard: storage/standard.ks
encrypted: storage/encrypted.ks
desktop:
gnome:
- desktop/gnome/config.ks
- desktop/gnome/packages.ks
- desktop/gnome/post-scripts.ks
labwc:
- desktop/labwc/config.ks
security:
secure: core/security/enabled.ks
"off": core/security/disabled.ks
initial-setup:
server: initial-setup/server/config.ks
desktop: initial-setup/desktop/config.ks
gnome: initial-setup/gnome/config.ks
generic-wayland: initial-setup/generic-wayland/config.ks
hypervisor_type:
amdcpu: hypervisor/amdcpu.ks
intelcpu: hypervisor/intelcpu.ks
intelgpu: hypervisor/intelgpu.ks
hypervisor:
base:
- hypervisor/base/packages.ks
- hypervisor/base/services.ks
- hypervisor/base/post-scripts.ks
desktop:
- packages/virtual-machine-manager/packages.ks
- packages/virtual-machine-manager/post-scripts.ks
bootloader:
grub: bootloader/grub.ks
systemd-boot: bootloader/systemd-boot.ks
optional:
hardware-support: packages/hardware-support.ks
guest-agents: guest-agents/base.ks
# Live recipe - for live-desktop or live-server
live:
description: "A live recipe for live-desktop or live-server"
base: live-core
required:
- live-core: live/core/base.ks
- { path: repo/fedora-43-mirrors.ks, replaceable: true }
- { path: live/core/storage.ks, replaceable: true }
- { path: live/core/bootloader/grub.ks, replaceable: true }
- core/locale.ks
- core/services.ks
- core/network.ks
- live/core/packages.ks
- live/post/base.ks
- live/post/session.ks
- repo/rpmfusion-nonfree.ks
modifiers:
version:
"43": repo/fedora-43-mirrors.ks
"rawhide": repo/rawhide-mirrors.ks
storage:
standard: live/core/storage.ks
encrypted: live/core/storage.ks
bootloader:
grub: live/core/bootloader/grub.ks
systemd-boot: live/core/bootloader/systemd-boot.ks
optional:
hardware-support: packages/hardware-support.ks
guest-agents: guest-agents/base.ks
hypervisor: live/hypervisor.ks
security:
secure: core/security/enabled.ks
"off": core/security/disabled.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include storage/encrypted.ks
@@ -0,0 +1,26 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include storage/encrypted.ks
%include repo/rawhide-mirrors.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include storage/encrypted.ks
@@ -0,0 +1,26 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include storage/encrypted.ks
%include repo/rawhide-mirrors.ks
@@ -0,0 +1,24 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include repo/rawhide-mirrors.ks
@@ -0,0 +1,24 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include repo/rawhide-mirrors.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include hypervisor/base/packages.ks
%include hypervisor/base/services.ks
%include hypervisor/base/post-scripts.ks
%include hypervisor/amdcpu.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include hypervisor/base/packages.ks
%include hypervisor/base/services.ks
%include hypervisor/base/post-scripts.ks
%include hypervisor/intelcpu.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include storage/encrypted.ks
@@ -0,0 +1,26 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include storage/encrypted.ks
%include repo/rawhide-mirrors.ks
@@ -0,0 +1,25 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# An install recipe for desktop, server, or hypervisor
%include core/base.ks
%include repo/fedora-43-mirrors.ks
%include storage/standard.ks
%include bootloader/grub.ks
%include core/locale.ks
%include core/services.ks
%include core/network.ks
%include packages/core-group.ks
%include packages/fedora-remix.ks
%include packages/hand-picked.ks
%include core/security/enabled.ks
%include initial-setup/server/config.ks
%include desktop/gnome/config.ks
%include desktop/gnome/packages.ks
%include desktop/gnome/post-scripts.ks
%include storage/encrypted.ks

Some files were not shown because too many files have changed in this diff Show More