From 8ad35892232c913770f8ad95db32a55c27930afc Mon Sep 17 00:00:00 2001 From: Lukas Greve Date: Fri, 4 Sep 2026 13:55:24 +0200 Subject: [PATCH] feat: add Fedora 44 support alongside Fedora 43 - add fedora-44-mirrors ingredient and register it in the repository choices - expand the desktop variant matrix to [43, 44, rawhide] (48 dishes) - bump CI workflows and deploy fallback URL to Fedora 44 - cover both release repositories in tests --- .gitea/workflows/build-iso.yaml | 16 ++++++++-------- .gitea/workflows/build-iso_more-recent.yaml | 4 ++-- README.md | 12 ++++++------ cook/ingredients/repo/fedora-44-mirrors.ks | 5 +++++ cook/recipe_templates.yaml | 1 + cook/recipes_manifest.yaml | 9 +++++---- cook/tests/test_generator.py | 8 ++++++++ deploy/deploy-distro.sh | 2 +- 8 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 cook/ingredients/repo/fedora-44-mirrors.ks diff --git a/.gitea/workflows/build-iso.yaml b/.gitea/workflows/build-iso.yaml index 860c079..623d089 100644 --- a/.gitea/workflows/build-iso.yaml +++ b/.gitea/workflows/build-iso.yaml @@ -39,11 +39,11 @@ jobs: - name: Initialize mock run: | - mock -r fedora-43-x86_64 --init + mock -r fedora-44-x86_64 --init - name: Install required packages run: | - mock -r fedora-43-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart livecd-tools + mock -r fedora-44-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart livecd-tools - name: Generate dishes run: | @@ -52,23 +52,23 @@ jobs: - name: Copy configuration file to mock run: | - mock -r fedora-43-x86_64 --copyin dishes/desktop_43_standard_grub_gnome_guest-agents.cfg /builddir + mock -r fedora-44-x86_64 --copyin dishes/desktop_44_standard_grub_gnome_guest-agents.cfg /builddir - name: Build ISO with livemedia-creator run: | - mock -r fedora-43-x86_64 --shell --enable-network --isolation=simple << 'EOF' + mock -r fedora-44-x86_64 --shell --enable-network --isolation=simple << 'EOF' cd /builddir - livemedia-creator --ks desktop_43_standard_grub_gnome_guest-agents.cfg --no-virt --resultdir /var/lmc --project phyllomeos --make-iso --volid phyllomeos --iso-only --iso-name desktop-43.iso --releasever 43 --macboot + livemedia-creator --ks desktop_44_standard_grub_gnome_guest-agents.cfg --no-virt --resultdir /var/lmc --project phyllomeos --make-iso --volid phyllomeos --iso-only --iso-name desktop-44.iso --releasever 44 --macboot EOF - name: Upload ISO as artifact uses: actions/upload-artifact@v3 with: - name: desktop-43.iso - path: /var/lmc/desktop-43.iso + name: desktop-44.iso + path: /var/lmc/desktop-44.iso if-no-files-found: error - name: Cleanup mock environment if: always() run: | - mock -r fedora-43-x86_64 --clean + mock -r fedora-44-x86_64 --clean diff --git a/.gitea/workflows/build-iso_more-recent.yaml b/.gitea/workflows/build-iso_more-recent.yaml index 81be60a..1d6e38a 100644 --- a/.gitea/workflows/build-iso_more-recent.yaml +++ b/.gitea/workflows/build-iso_more-recent.yaml @@ -6,8 +6,8 @@ on: - "v*.*.*" env: - FEDORA_VERSION: 43 - KICKSTART_FILE: desktop_43_standard_grub_gnome_guest-agents + FEDORA_VERSION: 44 + KICKSTART_FILE: desktop_44_standard_grub_gnome_guest-agents jobs: checkout: diff --git a/README.md b/README.md index 841905f..c1bf4fa 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Provided that some dependencies are met (`libvirt` is running on your computer, chmod +x deploy.sh ``` -- Execute it and pick a dish, e.g. `desktop_43_standard_grub_gnome_guest-agents`, when prompted: +- Execute it and pick a dish, e.g. `desktop_44_standard_grub_gnome_guest-agents`, when prompted: ``` ./deploy.sh @@ -19,19 +19,19 @@ Executing: ./deploy/core-count.sh System has more than 2 core (nproc --all: 6). [...] Available files: -1. desktop_43_standard_grub_gnome +1. desktop_44_standard_grub_gnome [...] -8. desktop_43_standard_grub_gnome_guest-agents +8. desktop_44_standard_grub_gnome_guest-agents [...] Enter the number of the file you want to select: 8 -You selected: desktop_43_standard_grub_gnome_guest-agents +You selected: desktop_44_standard_grub_gnome_guest-agents Starting install... Retrieving 'vmlinuz' | 16 MB 00:00:00 Retrieving 'initrd.img' | 161 MB 00:00:05 Allocating 'virtinst-n0km88yy-vmlinuz' | 16 MB 00:00:00 Transferring 'virtinst-qxr2jxcb-initrd.img' | 161 MB 00:00:00 -Allocating 'desktop_43_standard_grub_gnome_guest-agents.img' | 10 GB 00:00:00 +Allocating 'desktop_44_standard_grub_gnome_guest-agents.img' | 10 GB 00:00:00 Creating domain... ``` @@ -95,7 +95,7 @@ cd cook && make all Alternatively, for a bespoke dish not part of the matrix, append the ingredient directly to an existing recipe and re-flatten it: ``` -echo "%include ../ingredients/extra-luanti.ks # Sandbox video game engine" >> cook/recipes/desktop_43_standard_grub_gnome.cfg +echo "%include ../ingredients/extra-luanti.ks # Sandbox video game engine" >> cook/recipes/desktop_44_standard_grub_gnome.cfg cd cook && make generate ``` diff --git a/cook/ingredients/repo/fedora-44-mirrors.ks b/cook/ingredients/repo/fedora-44-mirrors.ks new file mode 100644 index 0000000..b963cf2 --- /dev/null +++ b/cook/ingredients/repo/fedora-44-mirrors.ks @@ -0,0 +1,5 @@ +# Fedora 44 repositories + +repo --name=fedora --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-44&arch=x86_64 # Official Fedora mirror +repo --name=updates --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f44&arch=x86_64 # Official Fedora updates mirror +url --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-44&arch=x86_64 # Official Fedora updates mirror diff --git a/cook/recipe_templates.yaml b/cook/recipe_templates.yaml index 8114976..a0921a4 100644 --- a/cook/recipe_templates.yaml +++ b/cook/recipe_templates.yaml @@ -30,6 +30,7 @@ base: choices: repository: "43": repo/fedora-43-mirrors.ks + "44": repo/fedora-44-mirrors.ks rawhide: repo/rawhide-mirrors.ks storage: standard: storage/standard.ks diff --git a/cook/recipes_manifest.yaml b/cook/recipes_manifest.yaml index 6269b6e..2fb7b84 100644 --- a/cook/recipes_manifest.yaml +++ b/cook/recipes_manifest.yaml @@ -4,12 +4,13 @@ # # Syntax: # - Single values: repository: "43" -# - List values: repository: ["43", "rawhide"] (expands to multiple variants) +# - List values: repository: ["43", "44", "rawhide"] (expands to multiple variants) # - Booleans: hardware-support: true / false (feature flags) # # NOTE: List values create a cartesian product. -# Example: repository: ["43", "rawhide"] + storage: ["standard", "encrypted"] -# creates 4 variants: (43,standard), (43,encrypted), (rawhide,standard), (rawhide,encrypted) +# Example: repository: ["43", "44", "rawhide"] + storage: ["standard", "encrypted"] +# creates 6 variants: (43,standard), (43,encrypted), (44,standard), (44,encrypted), +# (rawhide,standard), (rawhide,encrypted) # # NOTE: The 'name' field prefixes every generated dish/recipe filename, e.g. # the group below yields dishes like desktop_43_gnome_standard_grub_guest-agents.cfg. @@ -18,7 +19,7 @@ recipes: # Desktop variants - name: desktop variants: - - repository: ["43", "rawhide"] + - repository: ["43", "44", "rawhide"] desktop: gnome storage: ["standard", "encrypted"] bootloader: ["grub", "systemd-boot"] diff --git a/cook/tests/test_generator.py b/cook/tests/test_generator.py index be43f1e..1771bb7 100644 --- a/cook/tests/test_generator.py +++ b/cook/tests/test_generator.py @@ -99,6 +99,14 @@ def test_collect_fragments_gnome_standard(templates): assert slug in fragments +@pytest.mark.parametrize("release", ["43", "44"]) +def test_collect_fragments_release_repository(templates, release): + variant = {"repository": release} + fragments, problems = gen.collect_fragments(templates, variant) + assert problems == [] + assert f"repo/fedora-{release}-mirrors.ks" in fragments + + def test_collect_fragments_choices_default_to_first(templates): variant = {"repository": "43"} fragments, problems = gen.collect_fragments(templates, variant) diff --git a/deploy/deploy-distro.sh b/deploy/deploy-distro.sh index 7194f1c..861d2aa 100755 --- a/deploy/deploy-distro.sh +++ b/deploy/deploy-distro.sh @@ -183,7 +183,7 @@ else location_param="$fedora_iso" echo "Using local ISO: $fedora_iso" else - location_param="https://download.fedoraproject.org/pub/fedora/linux/releases/43/Everything/x86_64/os/" + location_param="https://download.fedoraproject.org/pub/fedora/linux/releases/44/Everything/x86_64/os/" echo "Using default online repository" fi fi