From 31955a8983550475a7ba6c0966ef2b80c1dd10ff Mon Sep 17 00:00:00 2001 From: Lukas Greve Date: Thu, 26 Mar 2026 20:27:56 +0100 Subject: [PATCH] refactor: rename fragments directory to ingredients and update all references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Directory rename: fragments/ → ingredients/ (54 .ks files) - Updated all Python scripts: * tests/integration/conftest.py - fixture renames * tests/integration/test_integration.py - constant and path updates * tests/test_recipe_generator.py - updated test assertions * recipe-generator/validators.py - updated comments and error messages * recipe-generator/recipe_generator.py - updated comment - Updated all YAML files: * recipe-generator/recipe_templates.yaml - 66 path references * .gitea/workflows/validate-fragments.yaml → validate-ingredients.yaml * .gitea/workflows/test-generation.yaml - path patterns - Updated scripts: * bin/ksflatten-relative - updated path detection - Updated test file: * tests/integration/test_fragments.py → test_ingredients.py - Updated documentation: * DEVELOPMENT.md - simplified references * DEVELOPMENT_QUICK.md - updated examples * tests/container/README.md - test references - Regenerated all recipes (16 files) with ingredient paths - Updated test fixtures (7 files) - All integration tests pass (5/5) - All unit tests pass (29/31 - 2 pre-existing failures unrelated) --- .gitea/workflows/test-generation.yaml | 2 +- ...agments.yaml => validate-ingredients.yaml} | 18 +-- DEVELOPMENT.md | 146 +++++++++--------- DEVELOPMENT_QUICK.md | 6 +- bin/ksflatten-relative | 8 +- ingredients/base-desktop-gnome.cfg | 114 -------------- ingredients/base-desktop-labwc.cfg | 20 --- .../base-desktop-virtual-machine-manager.cfg | 68 -------- ingredients/base-guest-agents.cfg | 6 - ingredients/base-hypervisor-amdcpu.cfg | 7 - ingredients/base-hypervisor-intelcpu.cfg | 7 - ingredients/base-hypervisor-intelgpu.cfg | 9 -- ingredients/base-hypervisor.cfg | 53 ------- {fragments => ingredients}/bootloader/grub.ks | 0 .../bootloader/systemd-boot.ks | 0 ingredients/core-bootloader-grub.cfg | 1 - ingredients/core-bootloader-systemd-boot.cfg | 1 - ingredients/core-fedora-iso-repo-43.cfg | 1 - ingredients/core-fedora-repo-43.cfg | 3 - ingredients/core-fedora-repo-rawhide.cfg | 2 - ...-initial-setup-generic-wayland-desktop.cfg | 8 - .../core-initial-setup-gnome-desktop.cfg | 23 --- ingredients/core-initial-setup-server.cfg | 7 - ingredients/core-locale.cfg | 3 - ingredients/core-network.cfg | 1 - .../core-packages-hardware-support.cfg | 62 -------- ingredients/core-packages.cfg | 82 ---------- ingredients/core-post-nochroot.cfg | 3 - ingredients/core-post.cfg | 7 - ingredients/core-pre-install.cfg | 3 - ingredients/core-pre.cfg | 3 - ingredients/core-security-off.cfg | 3 - ingredients/core-security-on.cfg | 3 - ingredients/core-services.cfg | 1 - ingredients/core-storage-encrypted.cfg | 6 - ingredients/core-storage.cfg | 6 - ingredients/core.cfg | 2 - {fragments => ingredients}/core/base.ks | 0 {fragments => ingredients}/core/locale.ks | 0 {fragments => ingredients}/core/network.ks | 0 .../core/security/disabled.ks | 0 .../core/security/enabled.ks | 0 {fragments => ingredients}/core/services.ks | 0 .../desktop/gnome/config.ks | 0 .../desktop/gnome/packages.ks | 0 .../desktop/gnome/post-scripts.ks | 0 .../desktop/labwc/config.ks | 0 ingredients/extra-fedora-repos-nonfree.cfg | 19 --- .../guest-agents/base.ks | 0 .../hypervisor/amdcpu.ks | 0 .../hypervisor/base/packages.ks | 0 .../hypervisor/base/post-scripts.ks | 0 .../hypervisor/base/services.ks | 0 .../hypervisor/intelcpu.ks | 0 .../hypervisor/intelgpu.ks | 0 .../initial-setup/desktop/config.ks | 0 .../initial-setup/generic-wayland/config.ks | 0 .../initial-setup/gnome/config.ks | 0 .../initial-setup/server/config.ks | 0 ingredients/live-core-bootloader-grub.cfg | 1 - .../live-core-bootloader-systemd-boot.cfg | 1 - ingredients/live-core-mandatory-packages.cfg | 23 --- ingredients/live-core-post-live-session.cfg | 6 - ingredients/live-core-post.cfg | 51 ------ ingredients/live-core-storage.cfg | 5 - ingredients/live-core.cfg | 1 - {fragments => ingredients}/live/core/base.ks | 0 .../live/core/bootloader/grub.ks | 0 .../live/core/bootloader/systemd-boot.ks | 0 .../live/core/packages.ks | 0 .../live/core/storage.ks | 0 {fragments => ingredients}/live/hypervisor.ks | 0 {fragments => ingredients}/live/post/base.ks | 0 .../live/post/session.ks | 0 .../packages/core-group.ks | 0 .../packages/fedora-remix.ks | 0 .../packages/hand-picked.ks | 0 .../packages/hardware-support.ks | 0 .../virtual-machine-manager/packages.ks | 0 .../virtual-machine-manager/post-scripts.ks | 0 .../repo/fedora-43-mirrors.ks | 0 .../repo/rawhide-mirrors.ks | 0 .../repo/rpmfusion-nonfree.ks | 0 .../section-data/post/base.ks | 0 .../section-data/post/nochroot.ks | 0 .../section-data/post/server.ks | 0 .../section-data/pre/base.ks | 0 .../section-data/pre/install.ks | 0 .../storage/encrypted.ks | 0 .../storage/standard.ks | 0 ingredients/template.cfg | 25 --- .../validation/success-if-empty.ks | 0 .../recipe_generator.cpython-314.pyc | Bin 21897 -> 21862 bytes .../__pycache__/validators.cpython-314.pyc | Bin 8861 -> 8883 bytes recipe-generator/recipe_generator.py | 2 +- recipe-generator/recipe_templates.yaml | 120 +++++++------- recipe-generator/validators.py | 28 ++-- recipes/install_bare-metal_desktop_43.cfg | 30 ++-- ...nstall_bare-metal_desktop_encrypted_43.cfg | 32 ++-- ...all_bare-metal_desktop_encrypted_hw_43.cfg | 32 ++-- ...are-metal_desktop_encrypted_hw_rawhide.cfg | 34 ++-- ...l_bare-metal_desktop_encrypted_rawhide.cfg | 34 ++-- recipes/install_bare-metal_desktop_hw_43.cfg | 30 ++-- .../install_bare-metal_desktop_hw_rawhide.cfg | 32 ++-- .../install_bare-metal_desktop_rawhide.cfg | 32 ++-- ...all_bare-metal_hypervisor_amdcpu_hw_43.cfg | 32 ++-- ...l_bare-metal_hypervisor_intelcpu_hw_43.cfg | 32 ++-- recipes/install_virtual_desktop_43.cfg | 30 ++-- .../install_virtual_desktop_encrypted_43.cfg | 32 ++-- ...nstall_virtual_desktop_encrypted_hw_43.cfg | 32 ++-- ...l_virtual_desktop_encrypted_hw_rawhide.cfg | 34 ++-- ...tall_virtual_desktop_encrypted_rawhide.cfg | 34 ++-- recipes/install_virtual_desktop_hw_43.cfg | 30 ++-- .../install_virtual_desktop_hw_rawhide.cfg | 32 ++-- recipes/install_virtual_desktop_rawhide.cfg | 32 ++-- ...l_virtual_hypervisor-desktop_amdcpu_43.cfg | 36 ++--- ...virtual_hypervisor-desktop_intelcpu_43.cfg | 36 ++--- recipes/install_virtual_server_43.cfg | 24 +-- recipes/install_virtual_server_rawhide.cfg | 26 ++-- recipes/live_bare-metal_desktop_hw_43.cfg | 22 +-- recipes/live_bare-metal_server_hw_43.cfg | 22 +-- ...ipe_generator.cpython-314-pytest-8.4.2.pyc | Bin 43050 -> 43079 bytes tests/container/README.md | 12 +- .../desktop-hypervisor-intelcpu-rawhide.cfg | 30 ++-- .../desktop-hypervisor-intelgpu-rawhide.cfg | 30 ++-- .../desktop-hypervisor_rawhide.cfg | 30 ++-- .../expected_recipes/live-desktop_rawhide.cfg | 28 ++-- .../expected_recipes/live-server_rawhide.cfg | 22 +-- .../expected_recipes/virtual-desktop_43.cfg | 22 +-- .../virtual-server_rawhide.cfg | 22 +-- .../conftest.cpython-314-pytest-8.4.2.pyc | Bin 2403 -> 2411 bytes ...t_integration.cpython-314-pytest-8.4.2.pyc | Bin 14136 -> 14153 bytes tests/integration/conftest.py | 12 +- tests/integration/test_integration.py | 28 ++-- tests/test_recipe_generator.py | 34 ++-- 135 files changed, 670 insertions(+), 1319 deletions(-) rename .gitea/workflows/{validate-fragments.yaml => validate-ingredients.yaml} (65%) delete mode 100644 ingredients/base-desktop-gnome.cfg delete mode 100644 ingredients/base-desktop-labwc.cfg delete mode 100644 ingredients/base-desktop-virtual-machine-manager.cfg delete mode 100644 ingredients/base-guest-agents.cfg delete mode 100644 ingredients/base-hypervisor-amdcpu.cfg delete mode 100644 ingredients/base-hypervisor-intelcpu.cfg delete mode 100644 ingredients/base-hypervisor-intelgpu.cfg delete mode 100644 ingredients/base-hypervisor.cfg rename {fragments => ingredients}/bootloader/grub.ks (100%) rename {fragments => ingredients}/bootloader/systemd-boot.ks (100%) delete mode 100644 ingredients/core-bootloader-grub.cfg delete mode 100644 ingredients/core-bootloader-systemd-boot.cfg delete mode 100644 ingredients/core-fedora-iso-repo-43.cfg delete mode 100644 ingredients/core-fedora-repo-43.cfg delete mode 100644 ingredients/core-fedora-repo-rawhide.cfg delete mode 100644 ingredients/core-initial-setup-generic-wayland-desktop.cfg delete mode 100644 ingredients/core-initial-setup-gnome-desktop.cfg delete mode 100644 ingredients/core-initial-setup-server.cfg delete mode 100644 ingredients/core-locale.cfg delete mode 100644 ingredients/core-network.cfg delete mode 100644 ingredients/core-packages-hardware-support.cfg delete mode 100644 ingredients/core-packages.cfg delete mode 100644 ingredients/core-post-nochroot.cfg delete mode 100644 ingredients/core-post.cfg delete mode 100644 ingredients/core-pre-install.cfg delete mode 100644 ingredients/core-pre.cfg delete mode 100644 ingredients/core-security-off.cfg delete mode 100644 ingredients/core-security-on.cfg delete mode 100644 ingredients/core-services.cfg delete mode 100644 ingredients/core-storage-encrypted.cfg delete mode 100644 ingredients/core-storage.cfg delete mode 100644 ingredients/core.cfg rename {fragments => ingredients}/core/base.ks (100%) rename {fragments => ingredients}/core/locale.ks (100%) rename {fragments => ingredients}/core/network.ks (100%) rename {fragments => ingredients}/core/security/disabled.ks (100%) rename {fragments => ingredients}/core/security/enabled.ks (100%) rename {fragments => ingredients}/core/services.ks (100%) rename {fragments => ingredients}/desktop/gnome/config.ks (100%) rename {fragments => ingredients}/desktop/gnome/packages.ks (100%) rename {fragments => ingredients}/desktop/gnome/post-scripts.ks (100%) rename {fragments => ingredients}/desktop/labwc/config.ks (100%) delete mode 100644 ingredients/extra-fedora-repos-nonfree.cfg rename {fragments => ingredients}/guest-agents/base.ks (100%) rename {fragments => ingredients}/hypervisor/amdcpu.ks (100%) rename {fragments => ingredients}/hypervisor/base/packages.ks (100%) rename {fragments => ingredients}/hypervisor/base/post-scripts.ks (100%) rename {fragments => ingredients}/hypervisor/base/services.ks (100%) rename {fragments => ingredients}/hypervisor/intelcpu.ks (100%) rename {fragments => ingredients}/hypervisor/intelgpu.ks (100%) rename {fragments => ingredients}/initial-setup/desktop/config.ks (100%) rename {fragments => ingredients}/initial-setup/generic-wayland/config.ks (100%) rename {fragments => ingredients}/initial-setup/gnome/config.ks (100%) rename {fragments => ingredients}/initial-setup/server/config.ks (100%) delete mode 100644 ingredients/live-core-bootloader-grub.cfg delete mode 100644 ingredients/live-core-bootloader-systemd-boot.cfg delete mode 100644 ingredients/live-core-mandatory-packages.cfg delete mode 100644 ingredients/live-core-post-live-session.cfg delete mode 100644 ingredients/live-core-post.cfg delete mode 100644 ingredients/live-core-storage.cfg delete mode 100644 ingredients/live-core.cfg rename {fragments => ingredients}/live/core/base.ks (100%) rename {fragments => ingredients}/live/core/bootloader/grub.ks (100%) rename {fragments => ingredients}/live/core/bootloader/systemd-boot.ks (100%) rename {fragments => ingredients}/live/core/packages.ks (100%) rename {fragments => ingredients}/live/core/storage.ks (100%) rename {fragments => ingredients}/live/hypervisor.ks (100%) rename {fragments => ingredients}/live/post/base.ks (100%) rename {fragments => ingredients}/live/post/session.ks (100%) rename {fragments => ingredients}/packages/core-group.ks (100%) rename {fragments => ingredients}/packages/fedora-remix.ks (100%) rename {fragments => ingredients}/packages/hand-picked.ks (100%) rename {fragments => ingredients}/packages/hardware-support.ks (100%) rename {fragments => ingredients}/packages/virtual-machine-manager/packages.ks (100%) rename {fragments => ingredients}/packages/virtual-machine-manager/post-scripts.ks (100%) rename {fragments => ingredients}/repo/fedora-43-mirrors.ks (100%) rename {fragments => ingredients}/repo/rawhide-mirrors.ks (100%) rename {fragments => ingredients}/repo/rpmfusion-nonfree.ks (100%) rename {fragments => ingredients}/section-data/post/base.ks (100%) rename {fragments => ingredients}/section-data/post/nochroot.ks (100%) rename {fragments => ingredients}/section-data/post/server.ks (100%) rename {fragments => ingredients}/section-data/pre/base.ks (100%) rename {fragments => ingredients}/section-data/pre/install.ks (100%) rename {fragments => ingredients}/storage/encrypted.ks (100%) rename {fragments => ingredients}/storage/standard.ks (100%) delete mode 100644 ingredients/template.cfg rename {fragments => ingredients}/validation/success-if-empty.ks (100%) diff --git a/.gitea/workflows/test-generation.yaml b/.gitea/workflows/test-generation.yaml index d02ac8a..b71eb60 100644 --- a/.gitea/workflows/test-generation.yaml +++ b/.gitea/workflows/test-generation.yaml @@ -5,7 +5,7 @@ on: paths: - 'recipe-generator/**/*.py' - 'recipe-generator/**/*.yaml' - - 'fragments/**/*.ks' + - 'ingredients/**/*.ks' pull_request: paths: - 'recipe-generator/**/*.py' diff --git a/.gitea/workflows/validate-fragments.yaml b/.gitea/workflows/validate-ingredients.yaml similarity index 65% rename from .gitea/workflows/validate-fragments.yaml rename to .gitea/workflows/validate-ingredients.yaml index 39b98c7..7532b75 100644 --- a/.gitea/workflows/validate-fragments.yaml +++ b/.gitea/workflows/validate-ingredients.yaml @@ -1,12 +1,12 @@ -name: validate-fragments +name: validate-ingredients on: push: paths: - - 'fragments/**/*.ks' + - 'ingredients/**/*.ks' pull_request: paths: - - 'fragments/**/*.ks' + - 'ingredients/**/*.ks' jobs: validate: @@ -22,21 +22,21 @@ jobs: - name: Install pykickstart run: pip install pykickstart - - name: Validate all fragments + - name: Validate all ingredients run: | errors=0 - for fragment in $(find fragments -name "*.ks"); do + for ingredient in $(find ingredients -name "*.ks"); do if python3 -c " from pykickstart.parser import KickstartParser from pykickstart.version import makeVersion, DEVEL parser = KickstartParser(makeVersion(DEVEL)) - parser.readKickstart(open('$fragment').read()) + parser.readKickstart(open('$ingredient').read()) " 2>/dev/null; then - echo "✓ $fragment" + echo "✓ $ingredient" else - echo "✗ $fragment" + echo "✗ $ingredient" errors=$((errors + 1)) fi done - echo "Fragment validation complete: $errors errors" + echo "Ingredient validation complete: $errors errors" exit $errors diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index d0a4956..8f88fe3 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -5,21 +5,21 @@ This guide covers development workflows for contributors to Phyllome OS. ## Table of Contents - [Architecture Overview](#architecture-overview) - [Development Environment Setup](#development-environment-setup) -- [Fragment Development](#fragment-development) +- [Ingredient Development](#ingredient-development) - [Recipe Generation](#recipe-generation) - [Testing](#testing) - [CI/CD](#cicd) - [Common Workflows](#common-workflows) -- [Migration Guide: Fragment-Based Architecture](#migration-guide-fragment-based-architecture) +- [Migration Guide: Ingredient-Based Architecture](#migration-guide-ingredient-based-architecture) --- ## Architecture Overview -Phyllome OS uses a **fragment-driven** kickstart generation system: +Phyllome OS uses a **ingredient-driven** kickstart generation system: ``` -fragments/ (54 .ks files) +ingredients/ (54 .ks files) ↓ (modular snippets) recipe-generator/generate_recipe.py ↓ (YAML templates + manifest) @@ -34,23 +34,21 @@ VMs and ISO images | Path | Purpose | Contents | |------|---------|----------| -| `fragments/` | Modular kickstart snippets | 54 `.ks` files | -| `fragments/platform/` | Version-specific configs | `generic-43/`, `generic-rawhide/` | -| `fragments/shared/` | Common components | `core/`, `packages/`, `desktop/`, `hypervisor/`, `live/`, `initial-setup/` | +| `ingredients/` | Modular kickstart snippets | 54 `.ks` files | | `recipes/` | Generated recipes | Manifest-driven compositions | | `dishes/` | Flattened kickstarts | Ready-to-deploy artifacts | -| `ingredients/` | Legacy building blocks | 35 `.cfg` files (legacy) | +| `legacy/` | Legacy building blocks | 35 `.cfg` files (legacy) | | `recipe-generator/` | Recipe generation | `generate_recipe.py`, YAML configs, Makefile | | `deploy/` | Deployment scripts | Bash automation tools | | `bin/` | Executables | Wrapper scripts (e.g., `generate-recipe`) | ### Data Flow -1. **Fragments** (`fragments/**/*.ks`) - Small, reusable kickstart snippets +1. **Ingredients** (`ingredients/**/*.ks`) - Small, reusable kickstart snippets 2. **Templates** (`recipe-generator/recipe_templates.yaml`) - Define recipe structures 3. **Manifest** (`recipe-generator/recipes_manifest.yaml`) - Specify variants (version, desktop, storage, etc.) -4. **Generator** (`recipe-generator/generate_recipe.py`) - Composes fragments via `%ksappend` directives -5. **Recipes** (`recipes/*.cfg`) - Generated kickstart files with fragment references +4. **Generator** (`recipe-generator/generate_recipe.py`) - Composes ingredients via `%ksappend` directives +5. **Recipes** (`recipes/*.cfg`) - Generated kickstart files with ingredient references 6. **Flattening** (`ksflatten`) - Resolves `%ksappend` into single dish file 7. **Deployment** (`virt-install`) - Creates VMs from dish files @@ -96,25 +94,25 @@ make validate-recipes ## Fragment Development -Fragments are modular kickstart snippets stored in `fragments/`. Each `.ks` file contains a single feature section. +Fragments are modular kickstart snippets stored in `ingredients/`. Each `.ks` file contains a single feature section. ### Creating a New Fragment **Step 1: Choose location** -- `fragments/shared/core/` - Base settings (security, services, networking) -- `fragments/shared/storage/` - Partition layouts -- `fragments/shared/packages/` - Package groups -- `fragments/shared/desktop/` - Desktop environment configs -- `fragments/shared/hypervisor/` - Virtualization hardware configs -- `fragments/shared/live/` - Live system components -- `fragments/shared/initial-setup/` - First-boot configuration -- `fragments/platform/generic-43/` or `generic-rawhide/` - Version-specific +- `ingredients/shared/core/` - Base settings (security, services, networking) +- `ingredients/shared/storage/` - Partition layouts +- `ingredients/shared/packages/` - Package groups +- `ingredients/shared/desktop/` - Desktop environment configs +- `ingredients/shared/hypervisor/` - Virtualization hardware configs +- `ingredients/shared/live/` - Live system components +- `ingredients/shared/initial-setup/` - First-boot configuration +- `ingredients/platform/generic-43/` or `generic-rawhide/` - Version-specific **Step 2: Create the fragment file** ```bash # Example: Add Luanti game engine -cat > fragments/shared/packages/luanti.ks << 'EOF' +cat > ingredients/shared/packages/luanti.ks << 'EOF' %packages luanti %end @@ -130,7 +128,7 @@ from pykickstart.version import makeVersion, DEVEL parser = KickstartParser(makeVersion(DEVEL)) try: - with open('fragments/shared/packages/luanti.ks') as f: + with open('ingredients/shared/packages/luanti.ks') as f: parser.readKickstart(f.read()) print('✓ Validation passed') except Exception as e: @@ -142,9 +140,9 @@ except Exception as e: - **Pattern:** `/.ks` - **Examples:** - - `fragments/shared/core/security/enabled.ks` - - `fragments/shared/desktop/gnome/packages.ks` - - `fragments/platform/generic-43/repo/fedora-mirrors.ks` + - `ingredients/shared/core/security/enabled.ks` + - `ingredients/shared/desktop/gnome/packages.ks` + - `ingredients/platform/generic-43/repo/fedora-mirrors.ks` ### Common Fragment Types @@ -264,46 +262,46 @@ templates: virtual-desktop: description: "A recipe for a virtual desktop" base: core - required: # Always included fragments - - core: fragments/shared/core/base.ks - - storage: fragments/shared/storage/standard.ks - optional: # Conditional fragments + required: # Always included ingredients + - core: ingredients/shared/core/base.ks + - storage: ingredients/shared/storage/standard.ks + optional: # Conditional ingredients security: - secure: fragments/shared/core/security/enabled.ks - devel: fragments/shared/core/security/disabled.ks + secure: ingredients/shared/core/security/enabled.ks + devel: ingredients/shared/core/security/disabled.ks modifiers: # Storage/bootloader alternatives storage: - standard: fragments/shared/storage/standard.ks - encrypted: fragments/shared/storage/encrypted.ks + standard: ingredients/shared/storage/standard.ks + encrypted: ingredients/shared/storage/encrypted.ks ``` **Adding a new required fragment:** ```yaml required: - - core: fragments/shared/core/base.ks - - storage: fragments/shared/storage/standard.ks + - core: ingredients/shared/core/base.ks + - storage: ingredients/shared/storage/standard.ks # New fragment - - packages: fragments/shared/packages/hand-picked.ks + - packages: ingredients/shared/packages/hand-picked.ks ``` **Adding an optional modifier:** ```yaml optional: security: - secure: fragments/shared/core/security/enabled.ks - devel: fragments/shared/core/security/disabled.ks + secure: ingredients/shared/core/security/enabled.ks + devel: ingredients/shared/core/security/disabled.ks # New optional - post-install scripts - post: fragments/shared/section-data/post/base.ks + post: ingredients/shared/section-data/post/base.ks ``` **Adding a modifier alternative:** ```yaml modifiers: storage: - standard: fragments/shared/storage/standard.ks - encrypted: fragments/shared/storage/encrypted.ks + standard: ingredients/shared/storage/standard.ks + encrypted: ingredients/shared/storage/encrypted.ks # New storage option - btrfs: fragments/shared/storage/btrfs.ks + btrfs: ingredients/shared/storage/btrfs.ks ``` ### Generation Workflow @@ -361,13 +359,13 @@ cat > recipes/my-distro.cfg << 'EOF' %include ../ingredients/core-storage.cfg # Bootloader -%include ../fragments/platform/generic-43/bootloader/grub.ks +%include ../ingredients/platform/generic-43/bootloader/grub.ks # Network configuration -%include ../fragments/shared/core/network.ks +%include ../ingredients/shared/core/network.ks # Desktop environment -%include ../fragments/shared/desktop/gnome/packages.ks +%include ../ingredients/shared/desktop/gnome/packages.ks # Additional packages %packages @@ -404,7 +402,7 @@ Phyllome OS uses a comprehensive test suite with 36+ tests covering unit, integr |-----------|-------|----------| | `tests/test_recipe_generator.py` | 36 | Unit tests for RecipeGenerator | | `tests/integration/test_integration.py` | 5+ | End-to-end workflow tests | -| `tests/integration/test_fragments.py` | ~15 | Fragment validation | +| `tests/integration/test_ingredients.py` | ~15 | Fragment validation | | `tests/integration/test_recipe_composition.py` | ~10 | Recipe generation | | `tests/integration/test_semantic_validation.py` | ~10 | pykickstart validation | | `tests/integration/test_golden_masters.py` | ~5 | Regression tests | @@ -443,8 +441,8 @@ tests/integration/test_integration.py ..... ### Fragment Validation Test ```bash -# Test all fragments with pykickstart -for fragment in $(find fragments -name "*.ks"); do +# Test all ingredients with pykickstart +for fragment in $(find ingredients -name "*.ks"); do python3 -c " from pykickstart.parser import KickstartParser from pykickstart.version import makeVersion, DEVEL @@ -470,7 +468,7 @@ def test_generate_recipe_with_new_modifier(): security='secure' ) assert '# A recipe for a virtual desktop' in content - assert '%ksappend fragments/shared/desktop/gnome/packages.ks' in content + assert '%ksappend ingredients/shared/desktop/gnome/packages.ks' in content ``` **Integration test example:** @@ -517,17 +515,17 @@ The project uses Gitea Actions for automated testing and building. | File | Trigger | Purpose | |------|---------|---------| -| `.gitea/workflows/validate-fragments.yaml` | Push/PR fragments | Validate all 54 .ks files | +| `.gitea/workflows/validate-ingredients.yaml` | Push/PR ingredients | Validate all 54 .ks files | | `.gitea/workflows/test-generation.yaml` | Push/PR scripts | Generate 16 recipes | | `.gitea/workflows/validate-recipes.yaml` | Push PR main | Full validation suite | | `.gitea/workflows/build-iso.yaml` | Push main, release | Build live ISO | ### Workflow: Validate Fragments -**File:** `.gitea/workflows/validate-fragments.yaml` +**File:** `.gitea/workflows/validate-ingredients.yaml` **Triggers:** -- Push to any `fragments/**/*.ks` file +- Push to any `ingredients/**/*.ks` file - Pull request with fragment changes **Steps:** @@ -538,7 +536,7 @@ The project uses Gitea Actions for automated testing and building. **Local equivalent:** ```bash -for fragment in $(find fragments -name "*.ks"); do +for fragment in $(find ingredients -name "*.ks"); do python3 -c " from pykickstart.parser import KickstartParser from pykickstart.version import makeVersion, DEVEL @@ -591,7 +589,7 @@ done | Task | Command | File | |------|---------|------| | Generate all recipes | `cd scripts && make generate-recipes` | - | -| Validate all fragments | `for f in $(find fragments -name "*.ks"); do python3 -c "from pykickstart.parser import KickstartParser; from pykickstart.version import makeVersion, DEVEL; parser = KickstartParser(makeVersion(DEVEL)); parser.readKickstart(open('$f').read())" && echo "✓ $f"; done` | - | +| Validate all ingredients | `for f in $(find ingredients -name "*.ks"); do python3 -c "from pykickstart.parser import KickstartParser; from pykickstart.version import makeVersion, DEVEL; parser = KickstartParser(makeVersion(DEVEL)); parser.readKickstart(open('$f').read())" && echo "✓ $f"; done` | - | | Run all tests | `cd scripts && make test` | - | | Flatten recipe to dish | `ksflatten -c recipes/X.cfg -o dishes/X.cfg` | - | | Deploy VM from dish | `./deploy-vm.sh` | `deploy.sh`, `deploy-distro.sh` | @@ -604,7 +602,7 @@ done ```bash # Step 1: Create fragment -cat > fragments/shared/packages/luanti.ks << 'EOF' +cat > ingredients/shared/packages/luanti.ks << 'EOF' %packages luanti %end @@ -613,7 +611,7 @@ EOF # Step 2: Add to recipe template # Edit recipe-generator/recipe_templates.yaml # Add to 'required' section: -# - luanti: fragments/shared/packages/luanti.ks +# - luanti: ingredients/shared/packages/luanti.ks # Step 3: Regenerate recipes cd recipe-generator @@ -632,7 +630,7 @@ ksflatten -c ../recipes/virtual-desktop_43.cfg -o ../dishes/virtual-desktop_43.c ```bash # Step 1: Create desktop fragment -cat > fragments/shared/desktop/kde/packages.ks << 'EOF' +cat > ingredients/shared/desktop/kde/packages.ks << 'EOF' %packages @kde-desktop plasma-workspace @@ -641,7 +639,7 @@ EOF # Step 2: Add to template # Edit recipe-generator/recipe_templates.yaml # Add to optional/desktop section: -# kde: fragments/shared/desktop/kde/packages.ks +# kde: ingredients/shared/desktop/kde/packages.ks # Step 3: Add variant to manifest # Edit recipe-generator/recipes_manifest.yaml @@ -668,18 +666,18 @@ cat >> recipe-generator/recipe_templates.yaml << 'EOF' description: "A minimal server recipe" base: core required: - - core: fragments/shared/core/base.ks - - storage: fragments/shared/storage/standard.ks - - bootloader: fragments/platform/generic-43/bootloader/grub.ks - - packages: fragments/shared/packages/core-group.ks - - fedora-remix: fragments/shared/packages/fedora-remix.ks + - core: ingredients/shared/core/base.ks + - storage: ingredients/shared/storage/standard.ks + - bootloader: ingredients/platform/generic-43/bootloader/grub.ks + - packages: ingredients/shared/packages/core-group.ks + - fedora-remix: ingredients/shared/packages/fedora-remix.ks optional: security: - secure: fragments/shared/core/security/enabled.ks - devel: fragments/shared/core/security/disabled.ks + secure: ingredients/shared/core/security/enabled.ks + devel: ingredients/shared/core/security/disabled.ks version: - "43": fragments/platform/generic-43/repo/fedora-mirrors.ks - "rawhide": fragments/platform/generic-rawhide/repo/rawhide-mirrors.ks + "43": ingredients/platform/generic-43/repo/fedora-mirrors.ks + "rawhide": ingredients/platform/generic-rawhide/repo/rawhide-mirrors.ks EOF # Step 2: Add variant to recipes_manifest.yaml @@ -724,7 +722,7 @@ luanti ### After: Fragment-Based -**Fragment:** `fragments/shared/packages/luanti.ks` +**Fragment:** `ingredients/shared/packages/luanti.ks` ```bash %packages luanti @@ -736,14 +734,14 @@ luanti templates: virtual-desktop: required: - - luanti: fragments/shared/packages/luanti.ks + - luanti: ingredients/shared/packages/luanti.ks ``` **Recipe:** `recipes/virtual-desktop_43.cfg` ```bash # Generated automatically -%ksappend fragments/shared/core/base.ks -%ksappend fragments/shared/packages/luanti.ks +%ksappend ingredients/shared/core/base.ks +%ksappend ingredients/shared/packages/luanti.ks ``` ### Migration Benefits @@ -770,7 +768,7 @@ templates: - [ ] Review all `ingredients/*.cfg` files - [ ] Identify reusable patterns -- [ ] Create `fragments/shared/` for common components +- [ ] Create `ingredients/shared/` for common components - [ ] Update `recipe_templates.yaml` with new structure - [ ] Update `recipes_manifest.yaml` for variants - [ ] Regenerate recipes with `make generate-recipes` @@ -796,10 +794,10 @@ grep "^%ksappend" recipes/*.cfg | sort | uniq -d **2. Missing fragment error** ``` -ERROR: Missing fragment: fragments/shared/unknown/missing.ks +ERROR: Missing fragment: ingredients/shared/unknown/missing.ks ``` -**Fix:** Verify fragment exists in `fragments/shared/` +**Fix:** Verify fragment exists in `ingredients/shared/` **3. Deprecated command warning** diff --git a/DEVELOPMENT_QUICK.md b/DEVELOPMENT_QUICK.md index c6a3df8..642108f 100644 --- a/DEVELOPMENT_QUICK.md +++ b/DEVELOPMENT_QUICK.md @@ -19,7 +19,7 @@ cd recipe-generator && make generate-recipes && make test ```bash # Create new kickstart snippet -cat > fragments/shared/packages/new-package.ks << 'EOF' +cat > ingredients/shared/packages/new-package.ks << 'EOF' %packages new-package %end @@ -47,7 +47,7 @@ make test-container # Containerized ### Validate Fragments ```bash -for f in $(find fragments -name "*.ks"); do +for f in $(find ingredients -name "*.ks"); do python3 -c " from pykickstart.parser import KickstartParser from pykickstart.version import makeVersion, DEVEL @@ -60,7 +60,7 @@ done ## Architecture ``` -fragments/ (54 .ks) → recipe-generator/generate_recipe.py → recipes/ (16 .cfg) → ksflatten → dishes/ (28 .cfg) +ingredients/ (54 .ks) → recipe-generator/generate_recipe.py → recipes/ (16 .cfg) → ksflatten → dishes/ (28 .cfg) ``` See `DEVELOPMENT.md` Section 1 for detailed architecture overview. diff --git a/bin/ksflatten-relative b/bin/ksflatten-relative index 6775755..04e9e86 100755 --- a/bin/ksflatten-relative +++ b/bin/ksflatten-relative @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """ Flatten kickstart recipes with relative %include paths. -Converts %include fragments/... to %include ../fragments/... relative to recipes/ location. +Converts %include ingredients/... to %include ../ingredients/... relative to recipes/ location. """ import os @@ -27,10 +27,10 @@ def flatten_recipe(recipe_path, output_path): if len(parts) >= 2: fragment_path = parts[1] # Make it relative to recipes/ - if fragment_path.startswith('fragments/'): + if fragment_path.startswith('ingredients/'): # Keep as relative path - it's relative to the recipe file's location - # recipes/ contains recipes, fragments/ is at project root level - # So from recipes/, fragments/ is ../fragments/ + # recipes/ contains recipes, ingredients/ is at project root level + # So from recipes/, ingredients/ is ../ingredients/ relative_path = '../' + fragment_path lines.append('%include ' + relative_path) else: diff --git a/ingredients/base-desktop-gnome.cfg b/ingredients/base-desktop-gnome.cfg deleted file mode 100644 index a81d514..0000000 --- a/ingredients/base-desktop-gnome.cfg +++ /dev/null @@ -1,114 +0,0 @@ -xconfig --startxonboot --defaultdesktop=GNOME # Start the display session on boot. Although it says --startx, which seems to imply xorg, it is actually generic and thus works also with Wayland. - -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies - -## Mandatory packages found in hidden `@base-graphical` group (`dnf group info --hidden base-graphical`) -@base-graphical -## provides the following as mandatory packages: -# mesa-dri-drivers -# mesa-vulkan-drivers -# plymouth-system-theme - -# @critical-path-gnome not using this group but hand-picking packages -## Mandatory packages found in hidden `@critical-path-gnome` group (`dnf group info --hidden critical-path-gnome`) -## Not using -## provides the following as mandatory packages: -bash-color-prompt # Color prompt for bash shell -dconf # A configuration system -gdm # The GNOME Display Manager -# gnome-classic-session # GNOME "classic" mode session -gnome-control-center # Utilities to configure the GNOME desktop -# gnome-initial-setup # Bootstrapping your OS -gnome-shell # Window management and application launching for GNOME -gvfs-fuse # FUSE support for gvfs -# ptyxis # A container oriented terminal for GNOME -### and the following as default packages -# NetworkManager-pptp # NetworkManager VPN plugin for PPTP -# avahi # Local network service discovery -# gnome-bluetooth # Bluetooth graphical utilities -gnome-session-wayland-session # Desktop file for wayland based gnome session -# gnome-software # A software center for GNOME -nautilus # File manager for GNOME -# toolbox # Tool for interactive command line environments on Linux - -## Extra hand-picked packages -gnome-backgrounds.noarch # wallpapers from the GNOME project -gnome-terminal # Terminal emulator for GNOME -dejavu-sans-mono-fonts # the gnome-shell package doesn't include much fonts by default, resulting in weird spacings in GNOME Terminal. GNOME Terminal unfortunately doesn't automatically pick this font -firefox # Mozilla Firefox Web browser -mozilla-ublock-origin.noarch # An efficient blocker for Firefox - -pipewire-alsa # PipeWire media server ALSA support -pipewire-pulseaudio # PipeWire PulseAudio implementation -pipewire-jack-audio-connection-kit # PipeWire JACK implementation - -%end # End of the packagages section - -%post --nochroot --log=/mnt/sysimage/root/base-desktop-gnome.log # Beginning of %post section. Those commands are executed outside the chroot environment - -# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF -# [org.gnome.desktop.background] -# picture-uri='file:///usr/share/backgrounds/elementary/Morskie Oko.jpg' -# EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.media-handling.gschema.override<< EOF -[org.gnome.desktop.media-handling] -automount-open=false -autorun-never=true -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.Terminal.gschema.override<< EOF -[org.gnome.Terminal.Legacy.Profile] -font='DejaVu Sans Mono 12' -use-system-font=false -audible-bell=false -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.wm.preferences.gschema.override<< EOF -[org.gnome.desktop.wm.preferences] -button-layout=':minimize,maximize,close' -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.gschema.override<< EOF -[org.gnome.desktop.a11y] -always-show-universal-access-status=true -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.interface.gschema.override<< EOF -[org.gnome.desktop.interface] -enable-animations=false -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.privacy.gschema.override<< EOF -[org.gnome.desktop.privacy] -remove-old-temp-files=true -remember-recent-files=false -remember-app-usage=false -disable-camera=true -disable-microphone=true -disable-sound-output=true -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.search-providers.gschema.override<< EOF -[org.gnome.desktop.search-providers] -disable-external=true -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.notifications.gschema.override<< EOF -[org.gnome.desktop.notifications.application] -enable-sound-alerts=false -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.sound.gschema.override<< EOF -[org.gnome.desktop.sound] -event-sounds=false -EOF - -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.thumbnailers.gschema.override<< EOF -[org.gnome.desktop.thumbnailers] -disable-all=true -EOF - -glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/ - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/base-desktop-labwc.cfg b/ingredients/base-desktop-labwc.cfg deleted file mode 100644 index 91a0d45..0000000 --- a/ingredients/base-desktop-labwc.cfg +++ /dev/null @@ -1,20 +0,0 @@ -# Untested - -xconfig --startxonboot # Start the display session on boot. Although it says --startx, which seems to imply xorg, it is actually generic and thus works also with Wayland. - -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies. - -## Mandatory packages found in hidden `@base-graphical` group (`dnf group info --hidden base-graphical`) -@base-graphical -## provides the following as mandatory packages: -# mesa-dri-drivers -# mesa-vulkan-drivers -# plymouth-system-theme - -labwc # A Wayland window-stacking compositor - -## Extra hand-picked packages -firefox # Mozilla Firefox Web browser -mozilla-ublock-origin.noarch # An efficient blocker for Firefox - -%end # End of the packagages section \ No newline at end of file diff --git a/ingredients/base-desktop-virtual-machine-manager.cfg b/ingredients/base-desktop-virtual-machine-manager.cfg deleted file mode 100644 index 4f108c3..0000000 --- a/ingredients/base-desktop-virtual-machine-manager.cfg +++ /dev/null @@ -1,68 +0,0 @@ -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies - -virt-manager # Install virt-manager, a graphical front-end for QEMU/KVM - -%end - -%post --nochroot --log=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log # Beginning of %post section. Those commands are executed outside the chroot environment. Add logging. - -# Create a file to autostart virt-manager -cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF -[Desktop Entry] -Type=Application -Name=Virtual Machine Manager -Exec=virt-manager -EOF - -# Modify the default virt-manager behavior for misc. options -cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.override<< EOF - -# Modify the default virt-manager behavior for misc. options -[org.virt-manager.virt-manager] -xmleditor-enabled=true -manager-window-height=600 -manager-window-width=200 - -# Libvirt URIs listed in the manager window -[org.virt-manager.virt-manager.connections] -uris=['qemu:///system', 'qemu:///session'] -autoconnect=['qemu:///session'] - -# Show usage in the domain list -[org.virt-manager.virt-manager.vmlist-fields] -cpu-usage=false - -# Settings related to statistics -[org.virt-manager.virt-manager.stats] -update-interval=3 -enable-disk-poll=true -enable-memory-poll=true -enable-net-poll=true - -# Default behavior for the console -[org.virt-manager.virt-manager.console] -scaling=2 -resize-guest=1 -autoconnect=false - -# Do not show toolbar -[org.virt-manager.virt-manager.details] -show-toolbar=false - -# Modify default values for new VMs -[org.virt-manager.virt-manager.new-vm] -storage-format='raw' -cpu-default='host-model' -graphics-type='spice' - -# Modify the default virt-manager behavior for confirmation dialogues -[org.virt-manager.virt-manager.confirm] -forcepoweroff=false -removedev=false -unapplied-dev=false - -EOF - -glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/ - -%end # End of the %post section diff --git a/ingredients/base-guest-agents.cfg b/ingredients/base-guest-agents.cfg deleted file mode 100644 index 1c51243..0000000 --- a/ingredients/base-guest-agents.cfg +++ /dev/null @@ -1,6 +0,0 @@ -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies. - -qemu-guest-agent # "QEMU guest agent" The qemu-guest agent is unnecessary for a bare-metal system. However, it is included here to cover cases where this kickstart file is used to deploy a virtual machine -spice-vdagent # "Agent for Spice guests" The spice agent is unnecessary for a bare-metal system. However, it is included here to cover cases where this kickstart file is used to deploy a virtual machine - -%end # End of the packages section diff --git a/ingredients/base-hypervisor-amdcpu.cfg b/ingredients/base-hypervisor-amdcpu.cfg deleted file mode 100644 index 92546bb..0000000 --- a/ingredients/base-hypervisor-amdcpu.cfg +++ /dev/null @@ -1,7 +0,0 @@ -%post --nochroot --log=/mnt/sysimage/root/base-hypervisor-amdcpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting - -sed -i 's/\(quiet\)/\1 iommu=pt rd.driver.pre=vfio-pci/i' /mnt/sysimage/etc/default/grub # Load kernel modules in GRUB. - -echo "options kvm_amd nested=1" >> /mnt/sysimage/etc/modprobe.d/kvm.conf # Add support for nested virtualization - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/base-hypervisor-intelcpu.cfg b/ingredients/base-hypervisor-intelcpu.cfg deleted file mode 100644 index 36e83d1..0000000 --- a/ingredients/base-hypervisor-intelcpu.cfg +++ /dev/null @@ -1,7 +0,0 @@ -%post --nochroot --log=/mnt/sysimage/root/base-hypervisor-intelcpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting - -sed -i 's/\(quiet\)/\1 intel_iommu=on iommu=pt rd.driver.pre=vfio-pci/i' /mnt/sysimage/etc/default/grub # Load kernel modules in GRUB. - -echo "options kvm_intel nested=1" >> /mnt/sysimage/etc/modprobe.d/kvm.conf # Add support for nested virtualization on Intel CPUs - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/base-hypervisor-intelgpu.cfg b/ingredients/base-hypervisor-intelgpu.cfg deleted file mode 100644 index 99c6fef..0000000 --- a/ingredients/base-hypervisor-intelgpu.cfg +++ /dev/null @@ -1,9 +0,0 @@ -%post --nochroot --log=/mnt/sysimage/root/base-hypervisor-intelgpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installtion troubleshooting - -sed -i 's/\(vfio-pci\)/\1 i915.enable_gvt=1/i' /mnt/sysimage/etc/default/grub # Load kernel modules in grub. - -# Load extra kernel modules to enable vfio-mdev on selected hardware -echo "kvmgt" > /mnt/sysimage/etc/modules-load.d/kvmgt.conf # Load specific kernel modules kvmgt and vfio-mdev, for Intel (tm) GVT-g and Nvidia (tm) -echo "vfio-mdev" > /mnt/sysimage/etc/modules-load.d/vfio-mdev.conf # Load specific kernel modules kvmgt and vfio-mdev, for Intel (tm) GVT-g and Nvidia (tm) - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/base-hypervisor.cfg b/ingredients/base-hypervisor.cfg deleted file mode 100644 index d1c025e..0000000 --- a/ingredients/base-hypervisor.cfg +++ /dev/null @@ -1,53 +0,0 @@ -services --enabled="NetworkManager,systemd-resolved,libvirtd" # Without libvirtd here, it appears the service won't automatically start - -%packages --exclude-weakdeps # Beginning of the packages section. Does not include weak dependencies. - -qemu-kvm # QEMU metapackage for KVM support -libvirt # Library providing a simple virtualization API -libvirt-client # Client side utilities of the libvirt library -libvirt-client-qemu # Additional client side utilities for QEMU. Used to interact with some QEMU specific features of libvirt. -libvirt-daemon # Server side daemon and supporting files for libvirt library -libvirt-daemon-common # Miscellaneous files and utilities used by other libvirt daemons -libvirt-daemon-config-network # Default configuration files for the libvirtd daemon. Provides NAT based networking -libvirt-daemon-driver-interface # Interface driver plugin for the libvirtd daemon -libvirt-daemon-driver-network # The network driver plugin for the libvirtd daemon, providing an implementation of the virtual network APIs using the Linux bridge capabilities. -libvirt-daemon-driver-qemu # QEMU driver plugin for the libvirtd daemon -libvirt-daemon-kvm # Server side daemon & driver required to run KVM guests -libvirt-daemon-log # Server side daemon for managing logs -libvirt-daemon-qemu # Server side daemon and driver required to manage the virtualization capabilities of the QEMU TCG emulators -libvirt-nss # Libvirt plugin for Name Service Switch -libvirt-dbus # libvirt D-Bus API binding -libvirt-daemon-driver-ch # Cloud-Hypervisor driver plugin for libvirtd daemon -virt-install # Utilities for installing virtual machines - -%end # End of the packages section - -%post --nochroot --log=/mnt/sysimage/root/base-hypervisor.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting - -# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd -echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf -echo "vfio-pci" > /mnt/sysimage/etc/modules-load.d/vfio-pci.conf -echo "vfio_iommu_type1" > /mnt/sysimage/etc/modules-load.d/vfio_iommu_type1.conf -echo "vfio_virqfd" > /mnt/sysimage/etc/modules-load.d/vfio_virqfd.conf - -mkdir /mnt/sysimage/var/lib/libvirt/isos # Create a directory to store iso images. SELinux is already taking this one into account. - -# wget https://boot.netboot.xyz/ipxe/netboot.xyz.iso -P /mnt/sysimage/var/lib/libvirt/isos/ # fetch netboot.xyz iso and store it to the newly created iso directory - -# # virsh commands fail in a kickstart environment (chroot or not it seems). would need to fetch a script and execute post-launch with a delay, for example using a systemd unit -# virsh pool-define-as isos dir - - - - /mnt/sysimage/var/lib/libvirt/isos/ # Make libvirt aware of this new directory by creating a so-called 'pool'. -# virsh pool-build isos # Build the pool -# virsh pool-start isos # Start it -# virsh pool-autostart isos # Set-it to autostart - -# fetch custom script and make it executable -# wget https://raw.githubusercontent.com/PhyllomeOS/phyllomeos/main/post-first-startup-scripts/virtualization-tweaks-root-needed.sh -P /mnt/sysimage/usr/local/bin/ -# chmod +x /mnt/sysimage/usr/local/bin/virtualization-tweaks-root-needed.sh - -# wget https://raw.githubusercontent.com/PhyllomeOS/xml-definition-for-domains/main/xml/system/linux.xml -# virsh define linux.xml - -# wget https://raw.githubusercontent.com/PhyllomeOS/xml-definition-for-domains/main/xml/system/windows.xml -# virsh define windows.xml - -%end # End of the %post section \ No newline at end of file diff --git a/fragments/bootloader/grub.ks b/ingredients/bootloader/grub.ks similarity index 100% rename from fragments/bootloader/grub.ks rename to ingredients/bootloader/grub.ks diff --git a/fragments/bootloader/systemd-boot.ks b/ingredients/bootloader/systemd-boot.ks similarity index 100% rename from fragments/bootloader/systemd-boot.ks rename to ingredients/bootloader/systemd-boot.ks diff --git a/ingredients/core-bootloader-grub.cfg b/ingredients/core-bootloader-grub.cfg deleted file mode 100644 index 9850d60..0000000 --- a/ingredients/core-bootloader-grub.cfg +++ /dev/null @@ -1 +0,0 @@ -bootloader --timeout=1 # Set the GNU GRUB bootloader timeout to 1 \ No newline at end of file diff --git a/ingredients/core-bootloader-systemd-boot.cfg b/ingredients/core-bootloader-systemd-boot.cfg deleted file mode 100644 index 225679d..0000000 --- a/ingredients/core-bootloader-systemd-boot.cfg +++ /dev/null @@ -1 +0,0 @@ -bootloader --sdboot --location=mbr --timeout=1 # Use systemd-boot and set a timeout to 1 \ No newline at end of file diff --git a/ingredients/core-fedora-iso-repo-43.cfg b/ingredients/core-fedora-iso-repo-43.cfg deleted file mode 100644 index b677655..0000000 --- a/ingredients/core-fedora-iso-repo-43.cfg +++ /dev/null @@ -1 +0,0 @@ -liveimg --url=file:///mnt/iso/LiveOS/squashfs.img \ No newline at end of file diff --git a/ingredients/core-fedora-repo-43.cfg b/ingredients/core-fedora-repo-43.cfg deleted file mode 100644 index 5a53d96..0000000 --- a/ingredients/core-fedora-repo-43.cfg +++ /dev/null @@ -1,3 +0,0 @@ -repo --name=fedora --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-43&arch=x86_64 # Official Fedora mirror -repo --name=updates --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f43&arch=x86_64 # Official Fedora updates mirror -url --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-43&arch=x86_64 # Official Fedora updates mirror \ No newline at end of file diff --git a/ingredients/core-fedora-repo-rawhide.cfg b/ingredients/core-fedora-repo-rawhide.cfg deleted file mode 100644 index cc63393..0000000 --- a/ingredients/core-fedora-repo-rawhide.cfg +++ /dev/null @@ -1,2 +0,0 @@ -repo --name=rawhide --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=x86_64 -url --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=x86_64 \ No newline at end of file diff --git a/ingredients/core-initial-setup-generic-wayland-desktop.cfg b/ingredients/core-initial-setup-generic-wayland-desktop.cfg deleted file mode 100644 index c85ab33..0000000 --- a/ingredients/core-initial-setup-generic-wayland-desktop.cfg +++ /dev/null @@ -1,8 +0,0 @@ -firstboot --enable --reconfig # Initial Setup will start after the first reboot - -%packages # Beginning of the packages section - -initial-setup-gui #Graphical user interface for the initial-setup utility -initial-setup-gui-wayland-generic # Run the initial-setup GUI in Wayland - -%end # End of the packages section \ No newline at end of file diff --git a/ingredients/core-initial-setup-gnome-desktop.cfg b/ingredients/core-initial-setup-gnome-desktop.cfg deleted file mode 100644 index fe5b48d..0000000 --- a/ingredients/core-initial-setup-gnome-desktop.cfg +++ /dev/null @@ -1,23 +0,0 @@ -firstboot --enable # Initial Setup will start after the first reboot - -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies. - -# TO BE TESTED -> initial-setup-gui # Graphical user interface for the initial-setup utility -# TO BE TESTED -> initial-setup-gui-wayland-generic.x86_64 # Run the initial-setup GUI in Wayland -gnome-initial-setup # Add GNOME initial setup too to let user create local account. - -%end # End of the packages section - -# %post --nochroot --log=/mnt/sysimage/root/base-initial-setup-gnome.log # Beginning of %post section. Those commands are executed outside the chroot environment. Add logging. -# -# truncate -s 0 /mnt/sysimage/usr/share/gnome-initial-setup/vendor.conf # remove content of vendor.conf so that all options are made available -# -# ## Append lines to existing vendor.conf file, so that options are skipped upon reboot -# cat >> /mnt/sysimage/usr/share/gnome-initial-setup/vendor.conf<< EOF -# [pages] -# skip=privacy -# [goa] -# providers=local-first! -# EOF -# -# %end # End of the %post section diff --git a/ingredients/core-initial-setup-server.cfg b/ingredients/core-initial-setup-server.cfg deleted file mode 100644 index 877dcc5..0000000 --- a/ingredients/core-initial-setup-server.cfg +++ /dev/null @@ -1,7 +0,0 @@ -firstboot --enable --reconfig # Enable the Setup Agent to start at boot time in reconfiguration mode. This mode enables the language, mouse, keyboard, root password, security level, time zone, and networking configuration options in addition to the default ones - -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies. - -initial-setup # Initial setup package - -%end # End of the packages section \ No newline at end of file diff --git a/ingredients/core-locale.cfg b/ingredients/core-locale.cfg deleted file mode 100644 index 7a378bd..0000000 --- a/ingredients/core-locale.cfg +++ /dev/null @@ -1,3 +0,0 @@ -keyboard --xlayouts='ch (fr)' # Set keyboard layouts for Romandy -lang en_US.UTF-8 # Set system language to American English. More languages could be supported: --addsupport=cs_CZ,de_DE,en_UK -timezone Europe/Zurich --utc # Set system timezone to Zurich \ No newline at end of file diff --git a/ingredients/core-network.cfg b/ingredients/core-network.cfg deleted file mode 100644 index e9b1de5..0000000 --- a/ingredients/core-network.cfg +++ /dev/null @@ -1 +0,0 @@ -network --onboot=yes --bootproto=dhcp --device=link --activate --hostname=phyllome-alpha # Configure network devices, enable them at boot time device and sets a particular hostname. "link" selects the first device reaching an up state \ No newline at end of file diff --git a/ingredients/core-packages-hardware-support.cfg b/ingredients/core-packages-hardware-support.cfg deleted file mode 100644 index 327ffb1..0000000 --- a/ingredients/core-packages-hardware-support.cfg +++ /dev/null @@ -1,62 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ -# -# Provides extended physical hardware support. Useful for a bare metal OS. - -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies. - -@hardware-support -## Mandatory packages found in hidden `hardware-support` group (`dnf group info --hidden core`) -# alsa-sof-firmware # Audio drivers and firmware for ALSA. Essential for audio functionality. -# amd-gpu-firmware # Firmware for AMD GPUs. Required for proper GPU operation. -# atheros-firmware # Firmware for Atheros wireless network adapters. Critical for wireless connectivity. -# b43-fwcutter # Utility for cutting firmware files for B43 drivers. Needed for driver compatibility. -# b43-openfwwf # Driver and firmware for B43 network cards. Essential for network card operation. -# brcmfmac-firmware # Firmware for Broadcom MAC controllers. Required for wireless and wired network performance. -# cirrus-audio-firmware # Firmware for Cirrus Logic audio chips. Necessary for audio hardware support. -# intel-audio-firmware # Firmware for Intel audio processors. Required for integrated audio functionality. -# intel-gpu-firmware # Firmware for Intel GPUs. Essential for GPU operation. -# intel-vsc-firmware # Firmware for Intel Video Scheduling Controller. Required for GPU performance. -# iwlegacy-firmware # Legacy firmware for older Intel wireless cards. Needed for compatibility. -# iwlwifi-dvm-firmware # Firmware for Intel Wireless Link 5100/5200 series. Crucial for wireless connectivity. -# iwlwifi-mvm-firmware # Firmware for Intel Wireless Link 5300/5400 series. Required for wireless performance. -# libertas-firmware # Firmware for Broadcom wireless network cards. Essential for wireless connectivity. -# mt7xxx-firmware # Firmware for MediaTek wireless network adapters. Required for wireless connectivity. -# nvidia-gpu-firmware # Firmware for NVIDIA GPUs. Essential for GPU operation. -# nxpwireless-firmware # Firmware for NXP wireless network adapters. Required for wireless connectivity. -# realtek-firmware # Firmware for Realtek network adapters and audio devices. Essential for various device support. -# tiwilink-firmware # Firmware for TI WiLink wireless network adapters. Required for wireless connectivity. -# -# ## Optional packages found in hidden `hardware-support` group (`dnf group info --hidden hardware-support`) -# ## Not installed by default unless "@hardware-support --optional" is used -# acpi # Command-line ACPI client -# acpitool # Command line ACPI client -# alsa-firmware # Firmware for several ALSA-supported sound cards -# atmel-firmware # Firmware for Atmel at76c50x wireless network chips -# cmospwd # BIOS password cracker utility -# dvb-firmware # Firmware for various DVB broadcast receivers -# gpsd # Service daemon for mediating access to a GPS -# gpsd-clients # Clients for gpsd -# hddtemp # Hard disk temperature tool -# hdparm # A utility for displaying and/or setting hard disk parameters -# iscan-firmware # Firmware for Epson flatbed scanners -# libifp # General-purpose library-driver for iRiver's iFP portable audio players -# liquidio-firmware # Firmware for Cavium LiquidIO Intelligent Server Adapter -# lsscsi # List SCSI devices (or hosts) and associated information -# mlxsw_spectrum-firmware # Firmware for Mellanox Spectrum 1/2/3 Switches -# mrvlprestera-firmware # Firmware for Marvell Prestera Switchdev/ASIC devices -# netronome-firmware # Firmware for Netronome Smart NICs -# opensc # Smart card library and applications -# pcsc-lite # PC/SC Lite smart card framework and applications -# pcsc-lite-ccid # Generic USB CCID smart card reader driver -# qcom-accel-firmware # Firmware for Qualcomm Technologies data center / Open-vRAN Accelerators -# qed-firmware # Firmware for Marvell FastLinQ adapters family -# radeontop # AMD Radeon video cards monitoring utility -# wpan-tools # Userspace tools for the Linux IEEE 802.15.4 stack -# zd1211-firmware # Firmware for wireless devices based on zd1211 chipset - -%end # End of the packages section \ No newline at end of file diff --git a/ingredients/core-packages.cfg b/ingredients/core-packages.cfg deleted file mode 100644 index 47808d3..0000000 --- a/ingredients/core-packages.cfg +++ /dev/null @@ -1,82 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ -# -# Provides the mandatory packages that are part of the core DNF group -# More information: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#id240 - -%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies. Package description courtesy of the Fedora project - -@core -## Mandatory packages found in hidden `core` group (`dnf group info --hidden core`) -# audit # User space tools for kernel auditing -# basesystem # The skeleton package which defines a simple Fedora system -# bash # The Bourne Again SHell, a command-line interpreter. -# coreutils # A set of basic GNU tools commonly used in shell scripts -# curl # A utility for getting files from remote servers (FTP, HTTP, and others) -# dhcp-client # Provides the ISC DHCP client daemon and dhclient-script -# dnf5 # Command-line package manager -# e2fsprogs # Utilities for managing ext2, ext3, and ext4 file systems -# filesystem # The basic directory layout for a Linux system -# glibc # The GNU libc libraries -# hostname # Utility to set/show the host name or domain name -# iproute # Advanced IP routing and network device configuration tools -# iputils # Network monitoring tools including ping -# kbd # Tools for configuring the console (keyboard, virtual terminals, etc.) -# kernel # The Linux kernel -# less # A text file browser similar to more, but better. Can be excluded -# man-db # Tools for searching and reading man pages. Can be excluded -# ncurses # Ncurses support utilities -# openssh-clients # An open source SSH client applications. Can be excluded -# openssh-server # An open source SSH server daemon. Can be excluded -# parted # The GNU disk partition manipulation program -# policycoreutils # SELinux policy core utilities. Can be excluded -# procps-ng # System and process monitoring utilities -# rootfiles # The basic required files for the root user's directory -# rpm # The RPM package management system -# selinux-policy-targeted # SELinux targeted policy. Can be excluded -# setup # A set of system configuration and setup files -# shadow-utils # Utilities for managing accounts and shadow password files -# sssd-common # Common files for the SSSD. Can be excluded -# sssd-kcm # An implementation of a Kerberos KCM server. Can be excluded -# sudo # Allows restricted root access for specified users -# systemd # System and Service Manager -# util-linux # Collection of basic system utilities -# vim-minimal # A minimal version of the VIM editor - -## Default packages found in hidden `core` group (`dnf group info --hidden core`) -# NetworkManager # Network connection manager and user applications -# dnf5-plugins # Plugins for dnf5 -# dracut-config-rescue # dracut configuration to turn on rescue image generation -# firewalld # A firewall daemon with D-Bus interface providing a dynamic firewall -# fwupd # Firmware update daemon -# plymouth # Graphical Boot Animation and Logger -# prefixdevname # Udev helper utility that provides network interface naming using user defined prefix -# systemd-resolved # Network Name Resolution manager -# zram-generator-defaults # Default configuration for zram-generator - -## Optionnal packages found in hidden `core` group (`dnf group info --hidden core`) -## Not installed by default unless "@core --optional" is used -# dracut-config-generic -# initial-setup -# initscripts - -# Packages to be used to create a Fedora Remix and comply Fedora Remix legal guidelines: https://fedoraproject.org/wiki/Remix -fedora-remix-logos # Fedora Remix logos -generic-release # Generic release files -generic-logos # Icons and pictures -generic-release-common # Generic release files -generic-release-notes # Release Notes - -# Hand-picked packages -pciutils # PCI bus related utilities -libusb # Library for accessing USB devices -usbutils # Linux USB utilities -curl # transfer a URL -wget # An advanced file and recursive website downloader -nano # A small text editor - -%end # End of the packages section \ No newline at end of file diff --git a/ingredients/core-post-nochroot.cfg b/ingredients/core-post-nochroot.cfg deleted file mode 100644 index 13d1838..0000000 --- a/ingredients/core-post-nochroot.cfg +++ /dev/null @@ -1,3 +0,0 @@ -%post --nochroot --log=/mnt/sysimage/root/post-nochroot.log # Beginning of the post-installation section. Log all messages to a given file - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/core-post.cfg b/ingredients/core-post.cfg deleted file mode 100644 index 5cfe709..0000000 --- a/ingredients/core-post.cfg +++ /dev/null @@ -1,7 +0,0 @@ -%post --log=/mnt/sysimage/root/post.log # Beginning of the post-installation section. Log all messages to a given file - -localectl set-keymap ch-fr # Set keymap to `ch-fr`. Alternatively, `us` can be picked. -dnf update -y # Update the system -grub2-mkconfig -o /boot/grub2/grub.cfg # Unsure it is actually useful - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/core-pre-install.cfg b/ingredients/core-pre-install.cfg deleted file mode 100644 index 1fa55ae..0000000 --- a/ingredients/core-pre-install.cfg +++ /dev/null @@ -1,3 +0,0 @@ -%pre --log=/mnt/sysimage/root/pre-install.log Beginning of the pre-installation section. Log all messages to a given file - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/core-pre.cfg b/ingredients/core-pre.cfg deleted file mode 100644 index 38f43d2..0000000 --- a/ingredients/core-pre.cfg +++ /dev/null @@ -1,3 +0,0 @@ -%pre --log=/mnt/sysimage/root/pre.log Beginning of the pre section. Log all messages to a given file - -%end # End of the %post section \ No newline at end of file diff --git a/ingredients/core-security-off.cfg b/ingredients/core-security-off.cfg deleted file mode 100644 index a60edbe..0000000 --- a/ingredients/core-security-off.cfg +++ /dev/null @@ -1,3 +0,0 @@ -rootpw --plaintext 1234 --allow-ssh # Root account is enabled with weak password and allow ssh -selinux --disabled # Disable SELinux -firewall --enabled --ssh # Reject incoming connections that are not in response to outbound requests except SSH \ No newline at end of file diff --git a/ingredients/core-security-on.cfg b/ingredients/core-security-on.cfg deleted file mode 100644 index 50fee86..0000000 --- a/ingredients/core-security-on.cfg +++ /dev/null @@ -1,3 +0,0 @@ -rootpw --lock # No root login from the console -selinux --enforcing # Set SELinux to enforcing mode -firewall --enabled # Enable firewall \ No newline at end of file diff --git a/ingredients/core-services.cfg b/ingredients/core-services.cfg deleted file mode 100644 index e4a43ee..0000000 --- a/ingredients/core-services.cfg +++ /dev/null @@ -1 +0,0 @@ -services --enabled=NetworkManager,systemd-resolved # List of comma-separated systemd services that can be explicitly enabled diff --git a/ingredients/core-storage-encrypted.cfg b/ingredients/core-storage-encrypted.cfg deleted file mode 100644 index 11a4a9d..0000000 --- a/ingredients/core-storage-encrypted.cfg +++ /dev/null @@ -1,6 +0,0 @@ -zerombr # Destroy all the contents of disks with invalid partition tables or other formatting unrecognizable to the installer -clearpart --all --initlabel # Erase all partitions and Initializes the disk label to the default for the target architecture - -part /boot/efi --fstype="efi" --size=512 --fsoptions="umask=0077,shortname=winnt" --label=efi # Creates a 512 MiB EFI system partition -part /boot --fstype="ext4" --size=2048 --label=boot # Creates a 2048 MiB ext4 boot partition -part / --fstype="ext4" --grow --label=root --mkfsoptions="-O encrypt,fast_commit" --encrypted --passphrase= # Create a single encrypted root partition with the remaining space. \ No newline at end of file diff --git a/ingredients/core-storage.cfg b/ingredients/core-storage.cfg deleted file mode 100644 index 64f4131..0000000 --- a/ingredients/core-storage.cfg +++ /dev/null @@ -1,6 +0,0 @@ -zerombr # Destroy all the contents of disks with invalid partition tables or other formatting unrecognizable to the installer -clearpart --all --initlabel # Erase all partitions and Initializes the disk label to the default for the target architecture - -part /boot/efi --fstype="efi" --size=512 --fsoptions="umask=0077,shortname=winnt" --label=efi # Creates a 512 MiB EFI system partition -part /boot --fstype="ext4" --size=2048 --label=boot # Creates a 2048 MiB ext4 boot partition -part / --fstype="ext4" --grow --label=root --mkfsoptions="-O encrypt,fast_commit" # Create a single root partition with the remaining space \ No newline at end of file diff --git a/ingredients/core.cfg b/ingredients/core.cfg deleted file mode 100644 index 10bbd43..0000000 --- a/ingredients/core.cfg +++ /dev/null @@ -1,2 +0,0 @@ -text # Kickstart installation in text mode -poweroff # Shut down the system after a successful installation \ No newline at end of file diff --git a/fragments/core/base.ks b/ingredients/core/base.ks similarity index 100% rename from fragments/core/base.ks rename to ingredients/core/base.ks diff --git a/fragments/core/locale.ks b/ingredients/core/locale.ks similarity index 100% rename from fragments/core/locale.ks rename to ingredients/core/locale.ks diff --git a/fragments/core/network.ks b/ingredients/core/network.ks similarity index 100% rename from fragments/core/network.ks rename to ingredients/core/network.ks diff --git a/fragments/core/security/disabled.ks b/ingredients/core/security/disabled.ks similarity index 100% rename from fragments/core/security/disabled.ks rename to ingredients/core/security/disabled.ks diff --git a/fragments/core/security/enabled.ks b/ingredients/core/security/enabled.ks similarity index 100% rename from fragments/core/security/enabled.ks rename to ingredients/core/security/enabled.ks diff --git a/fragments/core/services.ks b/ingredients/core/services.ks similarity index 100% rename from fragments/core/services.ks rename to ingredients/core/services.ks diff --git a/fragments/desktop/gnome/config.ks b/ingredients/desktop/gnome/config.ks similarity index 100% rename from fragments/desktop/gnome/config.ks rename to ingredients/desktop/gnome/config.ks diff --git a/fragments/desktop/gnome/packages.ks b/ingredients/desktop/gnome/packages.ks similarity index 100% rename from fragments/desktop/gnome/packages.ks rename to ingredients/desktop/gnome/packages.ks diff --git a/fragments/desktop/gnome/post-scripts.ks b/ingredients/desktop/gnome/post-scripts.ks similarity index 100% rename from fragments/desktop/gnome/post-scripts.ks rename to ingredients/desktop/gnome/post-scripts.ks diff --git a/fragments/desktop/labwc/config.ks b/ingredients/desktop/labwc/config.ks similarity index 100% rename from fragments/desktop/labwc/config.ks rename to ingredients/desktop/labwc/config.ks diff --git a/ingredients/extra-fedora-repos-nonfree.cfg b/ingredients/extra-fedora-repos-nonfree.cfg deleted file mode 100644 index c8f7c42..0000000 --- a/ingredients/extra-fedora-repos-nonfree.cfg +++ /dev/null @@ -1,19 +0,0 @@ -# RPM fusion repositories -# For the current release tree -repo --name=rpmfusion-nonfree --mirrorlist=https://mirrors.rpmfusion.org/mirrorlist?repo=nonfree-fedora-$releasever&arch=$basearch --includepkgs=rpmfusion-nonfree-release -# Updates for the current release tree -repo --name=rpmfusion-nonfree-updates --mirrorlist=https://mirrors.rpmfusion.org/mirrorlist?repo=nonfree-fedora-updates-released-$releasever&arch=$basearch --includepkgs=rpmfusion-nonfree-release - -%post - -# Import RPM Fusion PGP Key. Courtesy of https://github.com/rpmfusion/rpmfusion-nonfree-remix-kickstarts/blob/master/rpmfusion-nonfree-live-base.ks -echo "== RPM Fusion Nonfree: Base section ==" -echo "Importing RPM Fusion keys" -rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-nonfree-fedora-*-primary -echo "List of packages from RPM Fusion Nonfree:" -rpm -qa --qf '%{NAME} %{SIGGPG:pgpsig} %{SIGPGP:pgpsig} \n' | grep -e 3DE8C682E38EE9BC0FDFEA47FCAE2EA87F858107 | awk ' { print $1 } ' | sort -echo "List of incuded RPM Fusion packages with their size:" -rpm -q --qf '%{SIZE} %{NAME}\n' $(rpm -qa --qf '%{NAME} %{SIGGPG:pgpsig} %{SIGPGP:pgpsig} \n' | grep -e 3DE8C682E38EE9BC0FDFEA47FCAE2EA87F858107 | awk ' { print $1 } ') | sort -n -echo - -%end \ No newline at end of file diff --git a/fragments/guest-agents/base.ks b/ingredients/guest-agents/base.ks similarity index 100% rename from fragments/guest-agents/base.ks rename to ingredients/guest-agents/base.ks diff --git a/fragments/hypervisor/amdcpu.ks b/ingredients/hypervisor/amdcpu.ks similarity index 100% rename from fragments/hypervisor/amdcpu.ks rename to ingredients/hypervisor/amdcpu.ks diff --git a/fragments/hypervisor/base/packages.ks b/ingredients/hypervisor/base/packages.ks similarity index 100% rename from fragments/hypervisor/base/packages.ks rename to ingredients/hypervisor/base/packages.ks diff --git a/fragments/hypervisor/base/post-scripts.ks b/ingredients/hypervisor/base/post-scripts.ks similarity index 100% rename from fragments/hypervisor/base/post-scripts.ks rename to ingredients/hypervisor/base/post-scripts.ks diff --git a/fragments/hypervisor/base/services.ks b/ingredients/hypervisor/base/services.ks similarity index 100% rename from fragments/hypervisor/base/services.ks rename to ingredients/hypervisor/base/services.ks diff --git a/fragments/hypervisor/intelcpu.ks b/ingredients/hypervisor/intelcpu.ks similarity index 100% rename from fragments/hypervisor/intelcpu.ks rename to ingredients/hypervisor/intelcpu.ks diff --git a/fragments/hypervisor/intelgpu.ks b/ingredients/hypervisor/intelgpu.ks similarity index 100% rename from fragments/hypervisor/intelgpu.ks rename to ingredients/hypervisor/intelgpu.ks diff --git a/fragments/initial-setup/desktop/config.ks b/ingredients/initial-setup/desktop/config.ks similarity index 100% rename from fragments/initial-setup/desktop/config.ks rename to ingredients/initial-setup/desktop/config.ks diff --git a/fragments/initial-setup/generic-wayland/config.ks b/ingredients/initial-setup/generic-wayland/config.ks similarity index 100% rename from fragments/initial-setup/generic-wayland/config.ks rename to ingredients/initial-setup/generic-wayland/config.ks diff --git a/fragments/initial-setup/gnome/config.ks b/ingredients/initial-setup/gnome/config.ks similarity index 100% rename from fragments/initial-setup/gnome/config.ks rename to ingredients/initial-setup/gnome/config.ks diff --git a/fragments/initial-setup/server/config.ks b/ingredients/initial-setup/server/config.ks similarity index 100% rename from fragments/initial-setup/server/config.ks rename to ingredients/initial-setup/server/config.ks diff --git a/ingredients/live-core-bootloader-grub.cfg b/ingredients/live-core-bootloader-grub.cfg deleted file mode 100644 index b936579..0000000 --- a/ingredients/live-core-bootloader-grub.cfg +++ /dev/null @@ -1 +0,0 @@ -bootloader --location=none --timeout=1 # Set the GNU GRUB bootloader timeout to 1 and to location to none \ No newline at end of file diff --git a/ingredients/live-core-bootloader-systemd-boot.cfg b/ingredients/live-core-bootloader-systemd-boot.cfg deleted file mode 100644 index ef58ba2..0000000 --- a/ingredients/live-core-bootloader-systemd-boot.cfg +++ /dev/null @@ -1 +0,0 @@ -bootloader --sdboot --location=none --timeout=1 # Use systemd-boot and set location to none \ No newline at end of file diff --git a/ingredients/live-core-mandatory-packages.cfg b/ingredients/live-core-mandatory-packages.cfg deleted file mode 100644 index 6e19b2c..0000000 --- a/ingredients/live-core-mandatory-packages.cfg +++ /dev/null @@ -1,23 +0,0 @@ -%packages # Beginning of the package section. Include weak dependencies. Description courtesy of the Fedora project - -@anaconda-tools - -# Explicitly specified here: -# walters: because otherwise dependency loops cause yum issues. -kernel -kernel-modules -kernel-modules-extra - -# Need aajohan-comfortaa-fonts for the SVG rnotes images -aajohan-comfortaa-fonts - -# Without this, initramfs generation during live image creation fails: #1242586 -dracut-live - -# anaconda needs the locales available to run for different locales -glibc-all-langpacks - -# provide the livesys scripts -livesys-scripts - -%end \ No newline at end of file diff --git a/ingredients/live-core-post-live-session.cfg b/ingredients/live-core-post-live-session.cfg deleted file mode 100644 index 53c7811..0000000 --- a/ingredients/live-core-post-live-session.cfg +++ /dev/null @@ -1,6 +0,0 @@ -%post --log=/mnt/sysimage/root/post-live-session.log # Beginning of the post-installation section. Add logging. - -# set livesys session type -sed -i 's/^livesys_session=.*/livesys_session="gnome"/' /etc/sysconfig/livesys - -%end \ No newline at end of file diff --git a/ingredients/live-core-post.cfg b/ingredients/live-core-post.cfg deleted file mode 100644 index 6254c73..0000000 --- a/ingredients/live-core-post.cfg +++ /dev/null @@ -1,51 +0,0 @@ -%post --log=/mnt/sysimage/root/post-live-core.log # Beginning of the post-installation section. Add logging. - -# Enable livesys services -systemctl enable livesys.service -systemctl enable livesys-late.service - -# enable tmpfs for /tmp -systemctl enable tmp.mount - -# make it so that we don't do writing to the overlay for things which -# are just tmpdirs/caches -# note https://bugzilla.redhat.com/show_bug.cgi?id=1135475 -cat >> /etc/fstab << EOF -vartmp /var/tmp tmpfs defaults 0 0 -EOF - -# work around for poor key import UI in PackageKit -rm -f /var/lib/rpm/__db* -echo "Packages within this LiveCD" -rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' |sort -rn -# Note that running rpm recreates the rpm db files which aren't needed or wanted -rm -f /var/lib/rpm/__db* - -# go ahead and pre-make the man -k cache (#455968) -/usr/bin/mandb - -# make sure there aren't core files lying around -rm -f /core* - -# remove random seed, the newly installed instance should make it's own -rm -f /var/lib/systemd/random-seed - -# convince readahead not to collect -# FIXME: for systemd - -echo 'File created by kickstart. See systemd-update-done.service(8).' \ - | tee /etc/.updated >/var/.updated - -# Drop the rescue kernel and initramfs, we don't need them on the live media itself. -# See bug 1317709 -rm -f /boot/*-rescue* - -# Disable network service here, as doing it in the services line -# fails due to RHBZ #1369794 -systemctl disable network - -# Remove machine-id on pre generated images -rm -f /etc/machine-id -touch /etc/machine-id - -%end \ No newline at end of file diff --git a/ingredients/live-core-storage.cfg b/ingredients/live-core-storage.cfg deleted file mode 100644 index a223d0b..0000000 --- a/ingredients/live-core-storage.cfg +++ /dev/null @@ -1,5 +0,0 @@ -zerombr # WARNING : Dangerous command ! Will clear the Master Boot Record -clearpart --all --initlabel # Partition clearing information. This setup uses GPT by default. - -part / --fstype="ext4" --size=5120 # Create a root partition of around 7GB -part / --size=8576 \ No newline at end of file diff --git a/ingredients/live-core.cfg b/ingredients/live-core.cfg deleted file mode 100644 index 3ad8a71..0000000 --- a/ingredients/live-core.cfg +++ /dev/null @@ -1 +0,0 @@ -poweroff # Shut down the system after a successful installation \ No newline at end of file diff --git a/fragments/live/core/base.ks b/ingredients/live/core/base.ks similarity index 100% rename from fragments/live/core/base.ks rename to ingredients/live/core/base.ks diff --git a/fragments/live/core/bootloader/grub.ks b/ingredients/live/core/bootloader/grub.ks similarity index 100% rename from fragments/live/core/bootloader/grub.ks rename to ingredients/live/core/bootloader/grub.ks diff --git a/fragments/live/core/bootloader/systemd-boot.ks b/ingredients/live/core/bootloader/systemd-boot.ks similarity index 100% rename from fragments/live/core/bootloader/systemd-boot.ks rename to ingredients/live/core/bootloader/systemd-boot.ks diff --git a/fragments/live/core/packages.ks b/ingredients/live/core/packages.ks similarity index 100% rename from fragments/live/core/packages.ks rename to ingredients/live/core/packages.ks diff --git a/fragments/live/core/storage.ks b/ingredients/live/core/storage.ks similarity index 100% rename from fragments/live/core/storage.ks rename to ingredients/live/core/storage.ks diff --git a/fragments/live/hypervisor.ks b/ingredients/live/hypervisor.ks similarity index 100% rename from fragments/live/hypervisor.ks rename to ingredients/live/hypervisor.ks diff --git a/fragments/live/post/base.ks b/ingredients/live/post/base.ks similarity index 100% rename from fragments/live/post/base.ks rename to ingredients/live/post/base.ks diff --git a/fragments/live/post/session.ks b/ingredients/live/post/session.ks similarity index 100% rename from fragments/live/post/session.ks rename to ingredients/live/post/session.ks diff --git a/fragments/packages/core-group.ks b/ingredients/packages/core-group.ks similarity index 100% rename from fragments/packages/core-group.ks rename to ingredients/packages/core-group.ks diff --git a/fragments/packages/fedora-remix.ks b/ingredients/packages/fedora-remix.ks similarity index 100% rename from fragments/packages/fedora-remix.ks rename to ingredients/packages/fedora-remix.ks diff --git a/fragments/packages/hand-picked.ks b/ingredients/packages/hand-picked.ks similarity index 100% rename from fragments/packages/hand-picked.ks rename to ingredients/packages/hand-picked.ks diff --git a/fragments/packages/hardware-support.ks b/ingredients/packages/hardware-support.ks similarity index 100% rename from fragments/packages/hardware-support.ks rename to ingredients/packages/hardware-support.ks diff --git a/fragments/packages/virtual-machine-manager/packages.ks b/ingredients/packages/virtual-machine-manager/packages.ks similarity index 100% rename from fragments/packages/virtual-machine-manager/packages.ks rename to ingredients/packages/virtual-machine-manager/packages.ks diff --git a/fragments/packages/virtual-machine-manager/post-scripts.ks b/ingredients/packages/virtual-machine-manager/post-scripts.ks similarity index 100% rename from fragments/packages/virtual-machine-manager/post-scripts.ks rename to ingredients/packages/virtual-machine-manager/post-scripts.ks diff --git a/fragments/repo/fedora-43-mirrors.ks b/ingredients/repo/fedora-43-mirrors.ks similarity index 100% rename from fragments/repo/fedora-43-mirrors.ks rename to ingredients/repo/fedora-43-mirrors.ks diff --git a/fragments/repo/rawhide-mirrors.ks b/ingredients/repo/rawhide-mirrors.ks similarity index 100% rename from fragments/repo/rawhide-mirrors.ks rename to ingredients/repo/rawhide-mirrors.ks diff --git a/fragments/repo/rpmfusion-nonfree.ks b/ingredients/repo/rpmfusion-nonfree.ks similarity index 100% rename from fragments/repo/rpmfusion-nonfree.ks rename to ingredients/repo/rpmfusion-nonfree.ks diff --git a/fragments/section-data/post/base.ks b/ingredients/section-data/post/base.ks similarity index 100% rename from fragments/section-data/post/base.ks rename to ingredients/section-data/post/base.ks diff --git a/fragments/section-data/post/nochroot.ks b/ingredients/section-data/post/nochroot.ks similarity index 100% rename from fragments/section-data/post/nochroot.ks rename to ingredients/section-data/post/nochroot.ks diff --git a/fragments/section-data/post/server.ks b/ingredients/section-data/post/server.ks similarity index 100% rename from fragments/section-data/post/server.ks rename to ingredients/section-data/post/server.ks diff --git a/fragments/section-data/pre/base.ks b/ingredients/section-data/pre/base.ks similarity index 100% rename from fragments/section-data/pre/base.ks rename to ingredients/section-data/pre/base.ks diff --git a/fragments/section-data/pre/install.ks b/ingredients/section-data/pre/install.ks similarity index 100% rename from fragments/section-data/pre/install.ks rename to ingredients/section-data/pre/install.ks diff --git a/fragments/storage/encrypted.ks b/ingredients/storage/encrypted.ks similarity index 100% rename from fragments/storage/encrypted.ks rename to ingredients/storage/encrypted.ks diff --git a/fragments/storage/standard.ks b/ingredients/storage/standard.ks similarity index 100% rename from fragments/storage/standard.ks rename to ingredients/storage/standard.ks diff --git a/ingredients/template.cfg b/ingredients/template.cfg deleted file mode 100644 index 386c02e..0000000 --- a/ingredients/template.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# What ? This partial kickstart file provides a template one can use to further extend an installation - -# %packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies -# Any software in the official Fedora repository can be added [here](https://packages.fedoraproject.org/). - -# gnome-shell # the version 3 of the GNOME desktop environment, without any presintalled applications - -# %end - -# %post --nochroot --log=/mnt/sysimage/opt/base-desktop-gnome.log # Beginning of %post section. Those commands are executed outside the chroot environment. -# Use this section to further extend the system - -# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF -# [org.gnome.desktop.background] -# picture-uri='file:///usr/share/backgrounds/elementary/Morskie Oko.jpg' -# EOF - -# %end # End of the %post section \ No newline at end of file diff --git a/fragments/validation/success-if-empty.ks b/ingredients/validation/success-if-empty.ks similarity index 100% rename from fragments/validation/success-if-empty.ks rename to ingredients/validation/success-if-empty.ks diff --git a/recipe-generator/__pycache__/recipe_generator.cpython-314.pyc b/recipe-generator/__pycache__/recipe_generator.cpython-314.pyc index 234978d7edbbce204c2b8428dcc495b563c424c3..7ea27fa099dc616d3c93b04a48a8b64aee27efeb 100644 GIT binary patch delta 1460 zcmZvbZERCj7{~AFZOcY?X}7go*xIgBdRbkUZDCT{*{*bNWwT>!Fp&sLbr;r9wsG#Y zkx8797#txn;W2zMCg6vSNaEI9UjSb+5{U1Kb1LM*CldW;q9*#u7|(O=BF*%E_}%|K z=XpENea`$<^7A`HYThDk7T9xf?sl%TDBTuerQ4?85zmmVqG45){88#;+tkINiVU(W z>!)pNA_?fj7K;=WK7l-wO`8J`AWuos^3g+$Mo2bR5leZlwrCK7=c zgAJq$-VAz~zQ*((xEl;TF~B?wF*`9~*m9b3LNzu~WhS3}PT|EF)@P@u^R$W?g=(mm zy=W4_tM7uiycip0--bjLbvj>ACdOy7+9ci2*3=pX)>1j}pU3P-99}N3f!OwHV%LYZ zFIXj?e8<TCJY*ZNuptl_xD-==qmkBBbbqNg#Dcw9L}ck0E~YT_Se3v?eth|nYW zvY8cfYYGqA)<_5cg+}`>+tz+`uP9_`E<2@-Yo}%uY6gJj$XE84FxDLW6_MwjLW%Kc z0f7yo2N8!5{Ffz|3OUVe<~-mQ&pXSMVVlWPO{J$%TP8JwOj4fU6*PMlaTYO;ILDyk zAhK44S*!HRyWX>`&)#h3^OnFHXmuFzunPXytgII*-2=`<4Y>evBITfHl}B9E)x;uk zB~kNvD;cn%s zu}0a^Twa;Vo>0tdca0Cptuzo4gM$O-9Nh8~JmyXPmx0HKix+R>R zOAz0?>UkJtWBdDujh6op_5Q}Hxa$%O?fcW=!(4TU6zm=Gq&iW?5e3BSh_?|}5StNL z8O50N1_IAazd@`bet?CM^CYJ47(GME@B)S^={@*#{~>!5Zl}S2;1Tiwb{|Op12c4D Ai2wiq delta 1508 zcmZvce@t6d6vyA~FJNuy<3}L{O1lmU9ZX~!E3}BExPpLg{20+K?&Se*P${&z?*UF@ zFj=BwYO;7@Tw+XEmIza0s?W@j%s786k!e)cM3a~J-!w56EHk*dQ1THtVW2XC`~~-l7i)3A}Q=PTyz0L2S(^H~>F8I&4SKY}Xr|C8Rupb{G+0 z_@ihrscNv92qaNsgtjBNCWaOYX@YG8m&6e=sNWT@+u>lT zS4<=XVbLTAnet4*Si$jX7^*4rnuhm;2~)6N#y#d9vv#o2lvxmJgn_*vS634^eB!Tn zx({!8`GkQ!7^?8XlU|3pVypsMOMUt!Z?1r}L#p0KV(?OZ4YRK@yB{{{L!ARGwqceh zCk<;-Q)X48fGU}kJfZNU4a;~souZ}8DO5>o*oX3?@l(a%zTm2Fln0nm&KgdtsOi*# zGAU(bZJM573u-0Y3wjFuv<#(P;A#kwBE6&GO^X<4T5Y-9@?GH2rla?2@t1Mv1oIiaQgRep4p>;PmxjXNNonXyJuT^r5 z)`A@J diff --git a/recipe-generator/__pycache__/validators.cpython-314.pyc b/recipe-generator/__pycache__/validators.cpython-314.pyc index b881d6cdd5ae1ebe5b069129059b0c53fa8d5057..ccd4d8dea936018efb78be8613592e0762d23761 100644 GIT binary patch delta 556 zcmbR1y4jUin~#@^0SLP5k7n-O$ScJqC?AwsSejXsnxc@Imky*dC!2Ap2`Pl778Pga z=OGE_aLI}&Ip^o4WR?IW5_90{XLFhIO1tGGro%)w-{xA%$ZdascSrpNIsa<{0h7CV z!nhp{$R6OoAQx~=AaL>%y8Bg*C4WYhMx8z9Aqsop&Pd1qG80 zAsgH-$XQ<#u$jDDG?>wAGrw3EGb8WhbjfhWq{;gwJ2>?(%Ia@mzbtDpIY8#GY z%}vZJ$xIGQ%*jkiEXgm@o17+-#+W+!tc(O(0!UrL(1$Yshc>6Vk24&iTp%(aw}+jd9pj`$05zSji&CQs%G zu)rFsizy zQayPoufBrMiP#hV7orm{BxPMl%)XGFb0N3rLQe68;*twmrPpN2CV%0L;nh zoaZ$Gug#HsQjAJ=VTn1JDTyVi3Pq{OnFXl|$@zIDsd*&|Y57G^M^5K&X5ka^%`7g? z%!4|7vX)2*YmqrHTqds<`D7%ca9u|CqKxhama8%*9lke&6|M`bUldlqF06S)So4N} z*mT~BycZOVHkfQsyC7$IO~7jMWzk?pkIm|0Va!Z?@ssN$!x=8K`JY(9Yb!pJIQhiEJO-&n6>9IGhYPMkyTqL$t6V7M3Bn1 z3v4srogY)QT*U(Y7>+C-NwOmfEJO;9V75PxnGKEJxJS{tFfR356<|76e$?pD@t?@R z#fU{OJ?(g|F}0Liq|UB7fb6{!0T~W&{3`GAwIu6RU?Eb_yK!tPW{Na5WFhIGB$p6P z6Oo2q^f4SHTfGa=>M5V8^8dp3EP+R8ZKwu)Z_%UHUh|~^u=PD|bIe3XOt9DS5ONge4NJAb)@6<~N2fu1I zxw>`N36rIKQ^+y&gIwr@R)#|>Y#$msS8M1~poc^TdN9fS@^x#{(4$U9IOah!gD0hh z(~qlw4c%&sqV|V+=^l5HF*R3=UgPU3w;|Q}8i2nWLq~!b$G2Rrv;*U4Yghi3O0RO%O z(YJuJw%#3`iv-I{QhSgG)6N&>2R9Yy%ts13?_Z@vMNv-v=g30ROg*F(H})jD5=U`E zVH&OF1xBl5)zZ3fX28aQ+&(Si2D!aDh6g#bmhlj+WqjltGNT|@tz(8sUZ;A@4C4ej Sqn;T9xmq3LlAgSN3H|^;Z$lmc delta 1541 zcmcJPUr19?9LGDZ>wZdlV)-vb6e?vcbXvCQG&h%Xv#mcC?Ljh@TWjQ|xoHuWAO!_M z4<{%pdkG|>2jf1pw|ohqhdA5ac75)tm%vs}J$0`4a@ti0g1Y>;d_TY6_qYA-x#!$9 zTK1ZjRavU5DtEBU# zNzir?srNpzZ)A#W#74y%_B)7tw4TLn`k6?3=XY-p1$UZ_ly5kK??~yR9O%O^Cg-a3Q7m3 ztd4k^307e%K*7Hn%wWF^T1eohxL?KmKnZY1L22QX)e%oKkpn+_x-eVM9NPBIFZ8}A z8=ZB;VXGhxhl!lGjj`qM5>(qLt~uTraOalgcsO7|&(;ZExN*bOf9A1Cij+=YP5z%xq_@<6a8B)wT@w$)JS< zK8kx)%x`M)s@+dsELM=O(f=dj=zaX&~ zy>+bLi;4~9!f{mGZ4?5iXet+cOqUBM*&T!tRID)y9+o#M9+M!rP_eo~ID?9HMqyBV Iv-}MG0*yXAN&o-= diff --git a/tests/container/README.md b/tests/container/README.md index b2d89c1..f3b23f8 100644 --- a/tests/container/README.md +++ b/tests/container/README.md @@ -18,7 +18,7 @@ podman build -t phyllo/test-runner tests/container/ podman run --rm -v .:/phyllomeos:ro phyllo/test-runner # Run specific test file -podman run --rm -v .:/phyllomeos:ro phyllo/test-runner pytest tests/integration/test_fragments.py -v +podman run --rm -v .:/phyllomeos:ro phyllo/test-runner pytest tests/integration/test_ingredients.py -v # Interactive mode for debugging podman run -it --rm -v .:/phyllomeos phyllo/test-runner bash @@ -32,9 +32,9 @@ podman run -it --rm -v .:/phyllomeos phyllo/test-runner bash - **Description:** Tests for recipe generator functionality (template loading, validation, version extraction) ### Fragment Validation Tests -- **Location:** `tests/integration/test_fragments.py` +- **Location:** `tests/integration/test_ingredients.py` - **Count:** ~15 tests -- **Description:** Validates all 54 fragments with pykickstart, checks section structure +- **Description:** Validates all 54 ingredients with pykickstart, checks section structure ### Recipe Composition Tests - **Location:** `tests/integration/test_recipe_composition.py` @@ -57,14 +57,14 @@ podman run -it --rm -v .:/phyllomeos phyllo/test-runner bash tests/ ├── test_recipe_generator.py # Unit tests (36 tests) ├── integration/ -│ ├── test_fragments.py # Fragment validation (~15 tests) +│ ├── test_ingredients.py # Fragment validation (~15 tests) │ ├── test_recipe_composition.py # Recipe generation (~10 tests) │ ├── test_semantic_validation.py # pykickstart semantic (~10 tests) │ ├── test_golden_masters.py # Regression tests (~5 tests) │ └── conftest.py # Pytest fixtures ├── fixtures/ │ ├── expected_recipes/ # 5 golden master files -│ └── sample_fragments/ # Test fragment samples +│ └── sample_ingredients/ # Test fragment samples └── container/ ├── Containerfile # Test runner container definition ├── run-tests.sh # Test entrypoint script @@ -110,7 +110,7 @@ podman run -it --rm -v .:/phyllomeos phyllo/test-runner bash # Run tests manually cd /phyllomeos -pytest tests/integration/test_fragments.py -v +pytest tests/integration/test_ingredients.py -v ``` ### Permission denied errors diff --git a/tests/fixtures/expected_recipes/desktop-hypervisor-intelcpu-rawhide.cfg b/tests/fixtures/expected_recipes/desktop-hypervisor-intelcpu-rawhide.cfg index 58b7c3c..3f29f8f 100644 --- a/tests/fixtures/expected_recipes/desktop-hypervisor-intelcpu-rawhide.cfg +++ b/tests/fixtures/expected_recipes/desktop-hypervisor-intelcpu-rawhide.cfg @@ -7,18 +7,18 @@ # A recipe for a desktop hypervisor -%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 +%include ingredients/core/base.ks +%include ingredients/storage/standard.ks +%include ingredients/bootloader/grub.ks +%include ingredients/core/locale.ks +%include ingredients/core/services.ks +%include ingredients/core/network.ks +%include ingredients/packages/core-group.ks +%include ingredients/packages/fedora-remix.ks +%include ingredients/packages/hand-picked.ks +%include ingredients/core/security/enabled.ks +%include ingredients/packages/virtual-machine-manager/packages.ks +%include ingredients/packages/virtual-machine-manager/post-scripts.ks +%include ingredients/initial-setup/server/config.ks +%include ingredients/hypervisor/intelcpu.ks +%include ingredients/repo/rawhide-mirrors.ks diff --git a/tests/fixtures/expected_recipes/desktop-hypervisor-intelgpu-rawhide.cfg b/tests/fixtures/expected_recipes/desktop-hypervisor-intelgpu-rawhide.cfg index 58b7c3c..3f29f8f 100644 --- a/tests/fixtures/expected_recipes/desktop-hypervisor-intelgpu-rawhide.cfg +++ b/tests/fixtures/expected_recipes/desktop-hypervisor-intelgpu-rawhide.cfg @@ -7,18 +7,18 @@ # A recipe for a desktop hypervisor -%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 +%include ingredients/core/base.ks +%include ingredients/storage/standard.ks +%include ingredients/bootloader/grub.ks +%include ingredients/core/locale.ks +%include ingredients/core/services.ks +%include ingredients/core/network.ks +%include ingredients/packages/core-group.ks +%include ingredients/packages/fedora-remix.ks +%include ingredients/packages/hand-picked.ks +%include ingredients/core/security/enabled.ks +%include ingredients/packages/virtual-machine-manager/packages.ks +%include ingredients/packages/virtual-machine-manager/post-scripts.ks +%include ingredients/initial-setup/server/config.ks +%include ingredients/hypervisor/intelcpu.ks +%include ingredients/repo/rawhide-mirrors.ks diff --git a/tests/fixtures/expected_recipes/desktop-hypervisor_rawhide.cfg b/tests/fixtures/expected_recipes/desktop-hypervisor_rawhide.cfg index 58b7c3c..3f29f8f 100644 --- a/tests/fixtures/expected_recipes/desktop-hypervisor_rawhide.cfg +++ b/tests/fixtures/expected_recipes/desktop-hypervisor_rawhide.cfg @@ -7,18 +7,18 @@ # A recipe for a desktop hypervisor -%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 +%include ingredients/core/base.ks +%include ingredients/storage/standard.ks +%include ingredients/bootloader/grub.ks +%include ingredients/core/locale.ks +%include ingredients/core/services.ks +%include ingredients/core/network.ks +%include ingredients/packages/core-group.ks +%include ingredients/packages/fedora-remix.ks +%include ingredients/packages/hand-picked.ks +%include ingredients/core/security/enabled.ks +%include ingredients/packages/virtual-machine-manager/packages.ks +%include ingredients/packages/virtual-machine-manager/post-scripts.ks +%include ingredients/initial-setup/server/config.ks +%include ingredients/hypervisor/intelcpu.ks +%include ingredients/repo/rawhide-mirrors.ks diff --git a/tests/fixtures/expected_recipes/live-desktop_rawhide.cfg b/tests/fixtures/expected_recipes/live-desktop_rawhide.cfg index cb14246..dbe4405 100644 --- a/tests/fixtures/expected_recipes/live-desktop_rawhide.cfg +++ b/tests/fixtures/expected_recipes/live-desktop_rawhide.cfg @@ -7,17 +7,17 @@ # A recipe for a live desktop -%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 \ No newline at end of file +%include ingredients/shared/live/core/base.ks +%include ingredients/shared/live/core/storage.ks +%include ingredients/platform/generic-rawhide/bootloader/grub.ks +%include ingredients/shared/core/locale.ks +%include ingredients/shared/core/services.ks +%include ingredients/shared/core/network.ks +%include ingredients/shared/live/core/packages.ks +%include ingredients/shared/live/post/base.ks +%include ingredients/shared/live/post/session.ks +%include ingredients/shared/initial-setup/desktop/config.ks +%include ingredients/shared/desktop/gnome/config.ks +%include ingredients/shared/desktop/gnome/packages.ks +%include ingredients/shared/desktop/gnome/post-scripts.ks +%include ingredients/platform/generic-rawhide/repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/tests/fixtures/expected_recipes/live-server_rawhide.cfg b/tests/fixtures/expected_recipes/live-server_rawhide.cfg index aaee7b8..a128ffe 100644 --- a/tests/fixtures/expected_recipes/live-server_rawhide.cfg +++ b/tests/fixtures/expected_recipes/live-server_rawhide.cfg @@ -7,14 +7,14 @@ # A recipe for a live server -%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 \ No newline at end of file +%include ingredients/shared/live/core/base.ks +%include ingredients/shared/live/core/storage.ks +%include ingredients/platform/generic-rawhide/bootloader/grub.ks +%include ingredients/shared/core/locale.ks +%include ingredients/shared/core/services.ks +%include ingredients/shared/core/network.ks +%include ingredients/shared/live/core/packages.ks +%include ingredients/shared/live/post/base.ks +%include ingredients/shared/live/post/session.ks +%include ingredients/shared/initial-setup/server/config.ks +%include ingredients/platform/generic-rawhide/repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/tests/fixtures/expected_recipes/virtual-desktop_43.cfg b/tests/fixtures/expected_recipes/virtual-desktop_43.cfg index 520d579..b312795 100644 --- a/tests/fixtures/expected_recipes/virtual-desktop_43.cfg +++ b/tests/fixtures/expected_recipes/virtual-desktop_43.cfg @@ -7,14 +7,14 @@ # A recipe for a virtual desktop -%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 \ No newline at end of file +%include ingredients/shared/core/base.ks +%include ingredients/shared/storage/standard.ks +%include ingredients/platform/generic-43/bootloader/grub.ks +%include ingredients/shared/core/locale.ks +%include ingredients/shared/core/services.ks +%include ingredients/shared/core/network.ks +%include ingredients/shared/packages/core-group.ks +%include ingredients/shared/packages/fedora-remix.ks +%include ingredients/shared/packages/hand-picked.ks +%include ingredients/shared/initial-setup/server/config.ks +%include ingredients/platform/generic-43/repo/fedora-mirrors.ks \ No newline at end of file diff --git a/tests/fixtures/expected_recipes/virtual-server_rawhide.cfg b/tests/fixtures/expected_recipes/virtual-server_rawhide.cfg index eb1867a..cb491f2 100644 --- a/tests/fixtures/expected_recipes/virtual-server_rawhide.cfg +++ b/tests/fixtures/expected_recipes/virtual-server_rawhide.cfg @@ -7,14 +7,14 @@ # A recipe for a virtual server -%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 \ No newline at end of file +%include ingredients/shared/core/base.ks +%include ingredients/shared/storage/standard.ks +%include ingredients/platform/generic-43/bootloader/grub.ks +%include ingredients/shared/core/locale.ks +%include ingredients/shared/core/services.ks +%include ingredients/shared/core/network.ks +%include ingredients/shared/packages/core-group.ks +%include ingredients/shared/packages/fedora-remix.ks +%include ingredients/shared/packages/hand-picked.ks +%include ingredients/shared/initial-setup/server/config.ks +%include ingredients/platform/generic-rawhide/repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/tests/integration/__pycache__/conftest.cpython-314-pytest-8.4.2.pyc b/tests/integration/__pycache__/conftest.cpython-314-pytest-8.4.2.pyc index fb044f902cbc5c8928840e273a3f43b668ab4f9b..9ec58909809e1b038a0212517a734bc074529ab2 100644 GIT binary patch delta 201 zcmaDX^je5dn~#@^0SJE79?fKC-N@I)qAnYhT2fk+r;wSKUX+@WnVMHptdNpfl$uljA6o75%)Rvw@s){yEd_xid?DcxQ<(Tr<>$QJfxc6dQ)# ztQbvQ)t`go3H%%15y!Q-Uo%`XMUebC~Q&|6r{y4Zo z24)}2HkJVhmK~f2@NnLTd}uiIG)oMoD-Y${wP0gNy$nHi#wM80*@6uhmKjV} z9#ZJjq18ir0mGia5X2!4iP;TEv5_)Lz+;tI%MxuFf-9KNv*hEPjdK75=Nv2ncv$iw z9~url&Ju&^%0m+Ek`@oClOf1Ld`=eRT_pWBXSl2JciHz*U(DKKw)e~tA2{)cPV5mu zS4PPdf=X@O#w$K51;arlg5zw-AeTz41Kt*A9CtZz_$Tb(!K2@ojMo+sVO#j}eV^~=eZQagA-v>U<6}cy zni3~DcsB2T+4=lIe8&eSYR&4y-R>v8c3HeoR+>At=LwI}v&q*1vABNg&YJ!``7<@; zu}VYT+J5}Bp*BMx^J3xlvnR^7sys+k)kIyX?x~5Zl0V=5u{_P=u&V5-Ti)o~bXao{ z$F;b_02iAhDEDT~DB8k#K<$c`Y+)Hz7iUeJ1we4t!Z`pA&bh#kghi(r(Hm9{${9s} zqfd1i1Tk0h6o4mx2|}NZa@5%Z90<-zwlEK<6ZF#QIMa+0^V113NUi! zf4;I~`#PNDVwVWYgR@mzxCp3o%}Y8-C+Fe3ydOQ<;zI}Jja47^X}kU^ePw14rL!kf zNon+2$spoiE4f{UvR$@?C0ILkFWJI%SY2E&aRC6q1q;gn94x!QkAy{~7||P64wC5| zqs@J)&!E<+GYrBbcud&mA)81ZMB)BR%(6r+L-H(3F3y-Z0|dbt3rheTEV*bbEINI} zX-Mh~O9x5RChhK1O$I@21dpltyp5z^0q$(%;LO3U8&8?>)cc4P&s&ij*7VKRy+Lf2 zpo+0>;#n8L7e>QEmHm}XRx+@^!eEcK_?1J)*#^v#xzg7pDQ%E*M|y122XJ2Zw=}~~ XgrdevJG9sm^>B7Ec%N^k;Xm{Ta45w9 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index b54f524..35c7cd6 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -27,9 +27,9 @@ def project_root(): @pytest.fixture -def fragments_dir(project_root): - """Return fragments directory.""" - return project_root / 'fragments' +def ingredients_dir(project_root): + """Return ingredients directory.""" + return project_root / 'ingredients' @pytest.fixture @@ -39,9 +39,9 @@ def recipes_dir(project_root): @pytest.fixture -def fragments(fragments_dir): - """List all .ks fragment files.""" - return list(fragments_dir.glob('**/*.ks')) +def ingredients(ingredients_dir): + """List all .ks ingredient files.""" + return list(ingredients_dir.glob('**/*.ks')) @pytest.fixture diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index 24c2552..e4be287 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -13,7 +13,7 @@ import os PROJECT_ROOT = Path('/home/lukas/Code/virt/phyllomeos') RECIPE_GENERATOR_DIR = PROJECT_ROOT / 'recipe-generator' RECIPE_DIR = PROJECT_ROOT / 'recipes' -FRAGMENTS_DIR = PROJECT_ROOT / 'fragments' +INGREDIENTS_DIR = PROJECT_ROOT / 'ingredients' CONTAINER_DIR = PROJECT_ROOT / 'tests' / 'container' @@ -73,25 +73,25 @@ def test_container_build(): pytest.fail(f"Container build failed: {result.stderr}") -def test_fragments_structure(): - """Verify fragment directory structure.""" +def test_ingredients_structure(): + """Verify ingredient directory structure.""" # Check core directories - assert (FRAGMENTS_DIR / 'core' / 'security').exists() + assert (INGREDIENTS_DIR / 'core' / 'security').exists() # Check desktop directories - assert (FRAGMENTS_DIR / 'desktop' / 'gnome').exists() - assert (FRAGMENTS_DIR / 'desktop' / 'labwc').exists() + assert (INGREDIENTS_DIR / 'desktop' / 'gnome').exists() + assert (INGREDIENTS_DIR / 'desktop' / 'labwc').exists() # vmm is now in virtual-machine-manager directory (under packages) - # assert (FRAGMENTS_DIR / 'desktop' / 'vmm').exists() + # assert (INGREDIENTS_DIR / 'desktop' / 'vmm').exists() # Check hypervisor directories - assert (FRAGMENTS_DIR / 'hypervisor' / 'base').exists() - assert (FRAGMENTS_DIR / 'hypervisor' / 'base').exists() + assert (INGREDIENTS_DIR / 'hypervisor' / 'base').exists() + assert (INGREDIENTS_DIR / 'hypervisor' / 'base').exists() # Check live directories - assert (FRAGMENTS_DIR / 'live' / 'core' / 'bootloader').exists() - assert (FRAGMENTS_DIR / 'live' / 'post').exists() + assert (INGREDIENTS_DIR / 'live' / 'core' / 'bootloader').exists() + assert (INGREDIENTS_DIR / 'live' / 'post').exists() - # Count fragments - fragment_count = len(list(FRAGMENTS_DIR.glob('**/*.ks'))) - assert fragment_count >= 45, f"Expected at least 45 fragments, found {fragment_count}" + # Count ingredients + ingredient_count = len(list(INGREDIENTS_DIR.glob('**/*.ks'))) + assert ingredient_count >= 45, f"Expected at least 45 ingredients, found {ingredient_count}" diff --git a/tests/test_recipe_generator.py b/tests/test_recipe_generator.py index 2cd87ba..b3adff5 100644 --- a/tests/test_recipe_generator.py +++ b/tests/test_recipe_generator.py @@ -59,10 +59,10 @@ class TestRecipeGenerator: storage='standard', security='secure') assert '# An install recipe for desktop, server, or hypervisor' 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 + assert '%include ingredients/core/base.ks' in content + assert '%include ingredients/desktop/gnome/packages.ks' in content + assert '%include ingredients/repo/fedora-43-mirrors.ks' in content + assert '%include ingredients/core/security/enabled.ks' in content def test_generate_virtual_desktop_encrypted(self): """Test generating encrypted desktop recipe.""" @@ -70,7 +70,7 @@ class TestRecipeGenerator: desktop='gnome', storage='encrypted', security='secure') - assert '%include fragments/storage/encrypted.ks' in content + assert '%include ingredients/storage/encrypted.ks' in content def test_generate_virtual_desktop_labwc(self): """Test generating LabWC desktop recipe.""" @@ -78,8 +78,8 @@ class TestRecipeGenerator: desktop='labwc', storage='standard', security='secure') - assert '%include fragments/desktop/labwc/config.ks' in content - assert '%include fragments/desktop/gnome/packages.ks' not in content + assert '%include ingredients/desktop/labwc/config.ks' in content + assert '%include ingredients/desktop/gnome/packages.ks' not in content def test_generate_virtual_desktop_devel(self): """Test generating development mode desktop recipe.""" @@ -87,7 +87,7 @@ class TestRecipeGenerator: desktop='gnome', storage='standard', security='off') - assert '%include fragments/core/security/disabled.ks' in content + assert '%include ingredients/core/security/disabled.ks' in content def test_generate_virtual_server(self): """Test generating server recipe.""" @@ -95,7 +95,7 @@ class TestRecipeGenerator: initial_setup='server', security='secure') assert '# An install recipe for desktop, server, or hypervisor' in content - assert '%include fragments/initial-setup/server/config.ks' in content + assert '%include ingredients/initial-setup/server/config.ks' in content def test_generate_desktop_hypervisor_amd(self): """Test generating AMD CPU hypervisor recipe.""" @@ -104,8 +104,8 @@ class TestRecipeGenerator: hypervisor='base', hypervisor_type='amdcpu', security='secure') - assert '%include fragments/hypervisor/amdcpu.ks' in content - assert '%include fragments/hypervisor/intelcpu.ks' not in content + assert '%include ingredients/hypervisor/amdcpu.ks' in content + assert '%include ingredients/hypervisor/intelcpu.ks' not in content def test_generate_desktop_hypervisor_intel_gpu(self): """Test generating Intel CPU+GPU hypervisor recipe.""" @@ -114,7 +114,7 @@ class TestRecipeGenerator: hypervisor='base', hypervisor_type='intelcpu', security='secure') - assert '%include fragments/hypervisor/intelcpu.ks' in content + assert '%include ingredients/hypervisor/intelcpu.ks' in content def test_generate_live_desktop(self): """Test generating live desktop recipe.""" @@ -122,15 +122,15 @@ class TestRecipeGenerator: desktop='gnome', security='secure') assert '# A live recipe for live-desktop or live-server' in content - assert '%include fragments/live/core/base.ks' in content - assert '%include fragments/live/core/storage.ks' in content + assert '%include ingredients/live/core/base.ks' in content + assert '%include ingredients/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 '%include fragments/live/core/base.ks' in content + assert '%include ingredients/live/core/base.ks' in content def test_no_duplicate_includes(self): """Test that duplicate includes are prevented.""" @@ -144,13 +144,13 @@ class TestRecipeGenerator: assert len(paths) == len(set(paths)), "Found duplicate %include entries" def test_missing_ingredient_detection(self): - """Test that missing fragments are detected.""" + """Test that missing ingredients are detected.""" content = self.generator.generate_recipe('install', '43', desktop='gnome', storage='standard', security='secure') issues = self.generator.validate_recipe(content) - assert issues == [], f"Found missing fragments: {issues}" + assert issues == [], f"Found missing ingredients: {issues}" def test_filename_generation_standard(self): """Test filename generation for standard configuration."""