diff --git a/.gitignore b/.gitignore index d249537..eccaf67 100644 --- a/.gitignore +++ b/.gitignore @@ -468,3 +468,22 @@ /anaconda-43.32.tar.bz2 /anaconda-43.33.tar.bz2 /anaconda-43.34.tar.bz2 +/anaconda-43.35.tar.bz2 +/anaconda-43.36.tar.bz2 +/anaconda-43.37.tar.bz2 +/anaconda-43.38.tar.bz2 +/anaconda-43.39.tar.bz2 +/anaconda-43.40.tar.bz2 +/anaconda-43.41.tar.bz2 +/anaconda-43.44.tar.bz2 +/anaconda-43.46.tar.bz2 +/anaconda-44.1.tar.bz2 +/anaconda-44.2.tar.bz2 +/anaconda-44.4.tar.bz2 +/anaconda-44.5.tar.bz2 +/anaconda-44.6.tar.bz2 +/anaconda-44.7.tar.bz2 +/anaconda-44.8.tar.bz2 +/anaconda-44.9.tar.bz2 +/anaconda-44.10.tar.bz2 +/anaconda-44.11.tar.bz2 diff --git a/.packit.yml b/.packit.yml index 79ff62e..ef65b39 100644 --- a/.packit.yml +++ b/.packit.yml @@ -46,18 +46,21 @@ actions: - 'bash -c "ls -1 anaconda-*.tar.bz2"' jobs: + # Propose downstream (Fedora) - job: propose_downstream trigger: release packages: [anaconda-fedora] dist_git_branches: - main + # Tests on PR (Fedora) - job: tests trigger: pull_request packages: [anaconda-fedora] targets: - fedora-rawhide + # COPR builds on PR (Fedora) - job: copr_build trigger: pull_request packages: [anaconda-fedora] @@ -65,6 +68,7 @@ jobs: - fedora-rawhide - fedora-eln + # COPR builds on commit (Fedora): single job with multiple targets (add ELN on main) - job: copr_build trigger: commit packages: [anaconda-fedora] diff --git a/0001-RebootData-don-t-allow-action-to-be-None.patch b/0001-RebootData-don-t-allow-action-to-be-None.patch new file mode 100644 index 0000000..233d91a --- /dev/null +++ b/0001-RebootData-don-t-allow-action-to-be-None.patch @@ -0,0 +1,66 @@ +From c7dce0445423e7386fdc6998a6a8de50a7a39bca Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Thu, 9 Oct 2025 10:07:01 -0700 +Subject: [PATCH] RebootData: don't allow action to be None + +Silverblue installs (and probably others where the kickstart data +does not explicitly specify a reboot action) crash, because +the `RebootData` instance's `action` winds up as `None`, since +this is the default value of `self.action` in +`pykickstart.commands.reboot.F23_Reboot`. Trying to translate +this to a DBus structure with `RebootData.to_structure` fails, +because DBus has no concept of `None`. + +To avoid this, let's have the setter convert `None` to `-1`, the +same value we use as a default when initializing the instance. + +Signed-off-by: Adam Williamson +--- + pyanaconda/modules/common/structures/reboot.py | 5 ++++- + .../modules/runtime/test_module_runtime.py | 10 ++++++++++ + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/pyanaconda/modules/common/structures/reboot.py b/pyanaconda/modules/common/structures/reboot.py +index fd2673b169..cadbfbd01f 100644 +--- a/pyanaconda/modules/common/structures/reboot.py ++++ b/pyanaconda/modules/common/structures/reboot.py +@@ -46,7 +46,10 @@ class RebootData(DBusData): + return self._action + + @action.setter +- def action(self, value: Int): ++ def action(self, value: Int | None): ++ if value is None: ++ # dbus cannot handle None ++ value = -1 + self._action = value + + @property +diff --git a/tests/unit_tests/pyanaconda_tests/modules/runtime/test_module_runtime.py b/tests/unit_tests/pyanaconda_tests/modules/runtime/test_module_runtime.py +index 22286e59c1..83d3a123ef 100644 +--- a/tests/unit_tests/pyanaconda_tests/modules/runtime/test_module_runtime.py ++++ b/tests/unit_tests/pyanaconda_tests/modules/runtime/test_module_runtime.py +@@ -18,6 +18,7 @@ + import unittest + from textwrap import dedent + ++from pyanaconda.modules.common.structures.reboot import RebootData + from pyanaconda.modules.runtime.runtime import RuntimeService + from pyanaconda.modules.runtime.runtime_interface import RuntimeInterface + from tests.unit_tests.pyanaconda_tests import check_kickstart_interface +@@ -166,3 +167,12 @@ class RuntimeInterfaceTestCase(unittest.TestCase): + ks_in = "halt --eject\n" + ks_out = "# Halt after installation\nhalt --eject\n" + self._test_kickstart(ks_in, ks_out) ++ ++ def test_process_kickstart_with_no_payload(self): ++ """Test all values are ints when reading empty kickstart.""" ++ self.interface.ReadKickstart("") ++ assert isinstance(self.module.reboot.action, int) ++ assert isinstance(self.module.reboot.eject, int) ++ assert isinstance(self.module.reboot.kexec, int) ++ # and check we can to_structure it ++ RebootData.to_structure(self.module.reboot) +-- +2.51.0 + diff --git a/0001-pyanaconda-localization-Indicate-ASCII-support-in-ge.patch b/0001-pyanaconda-localization-Indicate-ASCII-support-in-ge.patch new file mode 100644 index 0000000..28344bb --- /dev/null +++ b/0001-pyanaconda-localization-Indicate-ASCII-support-in-ge.patch @@ -0,0 +1,139 @@ +From c6118f65fe3583e1c15c383a8a9c6f5c1989fb22 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Thu, 9 Oct 2025 16:51:15 -0700 +Subject: [PATCH] pyanaconda: localization: Indicate ASCII support in + get_keyboard_layouts + +It is useful to know whether a given keyboard layout supports +ASCII input or not. Immediately, we want to use this in the +webUI keyboard logic, but it may be useful elsewhere too in +future, e.g. to warn the user if they use the Keyboard spoke +to create a configuration with no layout capable of ASCII input. + +Signed-off-by: Adam Williamson +--- + pyanaconda/localization.py | 11 +++++++++ + .../common/structures/keyboard_layout.py | 10 ++++++++ + .../modules/localization/localization.py | 2 ++ + .../localization/test_module_localization.py | 23 +++++++++++-------- + 4 files changed, 36 insertions(+), 10 deletions(-) + +diff --git a/pyanaconda/localization.py b/pyanaconda/localization.py +index 73415b2511..08a9343463 100644 +--- a/pyanaconda/localization.py ++++ b/pyanaconda/localization.py +@@ -489,6 +489,17 @@ def get_common_keyboard_layouts(): + return langtable.list_common_keyboards() + + ++def layout_supports_ascii(layout): ++ """Return a boolean indicating whether the xkb layout (given as ++ e.g. 'en(us)' or 'fr(oss)' or 'ru') can input ASCII characters. ++ ++ :return: True for ASCII capable, False for not ++ :rtype: bool ++ :param str layout: layout descriptor string ++ """ ++ return langtable.supports_ascii(layout) ++ ++ + def get_locale_timezones(locale): + """Function returning preferred timezones for the given locale. + +diff --git a/pyanaconda/modules/common/structures/keyboard_layout.py b/pyanaconda/modules/common/structures/keyboard_layout.py +index b5aacc764b..007e975965 100644 +--- a/pyanaconda/modules/common/structures/keyboard_layout.py ++++ b/pyanaconda/modules/common/structures/keyboard_layout.py +@@ -29,6 +29,7 @@ class KeyboardLayout(DBusData): + def __init__(self): + self._layout_id = "" + self._description = "" ++ self._supports_ascii = False + self._is_common = False + self._langs = [] + +@@ -59,6 +60,15 @@ class KeyboardLayout(DBusData): + def is_common(self, value: bool): + self._is_common = value + ++ @property ++ def supports_ascii(self) -> bool: ++ """Return whether the layout is capable of typing ASCII characters.""" ++ return self._supports_ascii ++ ++ @supports_ascii.setter ++ def supports_ascii(self, value: bool): ++ self._supports_ascii = value ++ + @property + def langs(self) -> List[Str]: + """Return the list of associated languages.""" +diff --git a/pyanaconda/modules/localization/localization.py b/pyanaconda/modules/localization/localization.py +index 346a55a1c0..4fb7333ed7 100644 +--- a/pyanaconda/modules/localization/localization.py ++++ b/pyanaconda/modules/localization/localization.py +@@ -33,6 +33,7 @@ from pyanaconda.localization import ( + get_language_id, + get_language_locales, + get_native_name, ++ layout_supports_ascii, + ) + from pyanaconda.modules.common.base import KickstartService + from pyanaconda.modules.common.constants.services import LOCALIZATION +@@ -218,6 +219,7 @@ class LocalizationService(KickstartService): + layout.description = self.get_layout_variant_description(name, with_lang=True, xlated=True) + layout.is_common = name.replace(" ", "") in common_langtable_keyboards and is_common_lang + layout.langs = info.langs ++ layout.supports_ascii = layout_supports_ascii(name.replace(" ", "")) + layouts.append(layout) + + return layouts +diff --git a/tests/unit_tests/pyanaconda_tests/modules/localization/test_module_localization.py b/tests/unit_tests/pyanaconda_tests/modules/localization/test_module_localization.py +index 7f6449d3ea..7582df2401 100644 +--- a/tests/unit_tests/pyanaconda_tests/modules/localization/test_module_localization.py ++++ b/tests/unit_tests/pyanaconda_tests/modules/localization/test_module_localization.py +@@ -228,28 +228,31 @@ class LocalizationInterfaceTestCase(unittest.TestCase): + normalized_layouts = KeyboardLayout.from_structure_list(layouts) + + layouts_expectation = [ +- ("ara (olpc)", "Arabic (OLPC)", "Arabic", False), +- ("cz", "Czech", "Czech", False), +- ("de (nodeadkeys)", "German (no dead keys)", "German", True), +- ("es", "Spanish", "Spanish; Castilian", True), +- ("fr (oss)", "French (alt.)", "French", True), +- ("gr", "Greek", "Greek, Modern (1453-); Greek", False), +- ("it", "Italian", "Italian", False), +- ("jp", "Japanese", "Japanese", True), +- ("us", "English (US)", "English", True), ++ ("ara (olpc)", "Arabic (OLPC)", "Arabic", False, True), ++ ("cz", "Czech", "Czech", False, True), ++ ("de (nodeadkeys)", "German (no dead keys)", "German", True, True), ++ ("es", "Spanish", "Spanish; Castilian", True, True), ++ ("fr (oss)", "French (alt.)", "French", True, True), ++ ("gr", "Greek", "Greek, Modern (1453-); Greek", False, False), ++ ("it", "Italian", "Italian", False, True), ++ ("jp", "Japanese", "Japanese", True, True), ++ ("us", "English (US)", "English", True, True), ++ ("ru (dos)", "Russian (DOS)", "Russian", False, False), + ] + +- for layout_id, description, lang, is_common in layouts_expectation: ++ for layout_id, description, lang, is_common, supports_ascii in layouts_expectation: + layout = KeyboardLayout() + layout.layout_id = layout_id + layout.description = description + layout.is_common = is_common ++ layout.supports_ascii = supports_ascii + layout.langs = [lang] + + gen = (normalized_layout for normalized_layout in normalized_layouts if layout.layout_id == normalized_layout.layout_id) + for normalized_layout in gen: + assert layout.description == normalized_layout.description + assert layout.is_common == normalized_layout.is_common ++ assert layout.supports_ascii == normalized_layout.supports_ascii + assert layout.langs == normalized_layout.langs + break + else: +-- +2.51.0 + diff --git a/README.packit b/README.packit index 3ad54d6..9bb65f0 100644 --- a/README.packit +++ b/README.packit @@ -1,3 +1,3 @@ This repository is maintained by packit. https://packit.dev/ -The file was generated using packit 1.11.0. +The file was generated using packit 1.13.0.post1.dev2+g84134016c. diff --git a/anaconda.spec b/anaconda.spec index df8490a..cc4a2f2 100644 --- a/anaconda.spec +++ b/anaconda.spec @@ -1,7 +1,7 @@ Summary: Graphical system installer Name: anaconda -Version: 43.34 -Release: 1%{?dist} +Version: 44.11 +Release: 2%{?dist} ExcludeArch: %{ix86} License: GPL-2.0-or-later URL: http://fedoraproject.org/wiki/Anaconda @@ -16,13 +16,10 @@ Source0: https://github.com/rhinstaller/%{name}/releases/download/%{name}-%{vers # Versions of required components (done so we make sure the buildrequires # match the requires versions of things). +%bcond glade %[%{undefined rhel} && %{undefined eln}] +%bcond live %[%{defined fedora} || %{defined eln}] %if ! 0%{?rhel} -%bcond_without glade -%bcond_without live %define blivetguiver 2.4.2-3 -%else -%bcond_with glade -%bcond_with live %endif %define dasbusver 1.3 %define dbusver 1.2.3 @@ -40,7 +37,7 @@ Source0: https://github.com/rhinstaller/%{name}/releases/download/%{name}-%{vers %define nmver 1.0 %define pykickstartver 3.65-1 %define pypartedver 2.5-2 -%define pythonblivetver 1:3.12.1-1 +%define pythonblivetver 1:3.13.0-1 %define rpmver 4.15.0 %define simplelinever 1.9.0-1 %define subscriptionmanagerver 1.29.31 @@ -289,9 +286,15 @@ Requires: skopeo Requires: nvme-cli # Needed for bootc Requires: podman +Requires: bootc +Requires: bootupd # needed for encrypted DNS Requires: dnsconfd Requires: dnsconfd-dracut +Requires: selinux-policy +Requires: libselinux-utils +Requires: selinux-policy-targeted +Requires: policycoreutils-python-utils %description install-img-deps The anaconda-install-img-deps metapackage lists all boot.iso installation @@ -375,6 +378,8 @@ runtime on NFS/HTTP/FTP servers or local disks. # Work around an issue where a version mismatch between the automake version on # the build system and what was used when the tarball was created will cause # a failure. +# The glade configuration is passed to m4 via environment variable. +%{!?with_glade:export ANACONDA_DISABLE_GLADE=yes} autoreconf -vfi # use actual build-time release number, not tarball creation time release number @@ -513,6 +518,143 @@ rm -rf \ %{_prefix}/libexec/anaconda/dd_* %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 44.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Tue Dec 30 2025 Packit - 44.11-1 +- Update to version 44.11 + +* Tue Dec 23 2025 Packit - 44.10-1 +- rhsm: add --flatpak-registry-url support (bciconel) +- flatpak: handle self-signed certificate errors in registry sources (bciconel) +- flatpak: add utility to check for self-signed certificate errors (bciconel) +- docs: Add bootc kickstart command support release note (k.koukiou) + +* Tue Dec 16 2025 Packit - 44.9-1 +- data/profile.d: Add trivial Fedora KDE Plasma Mobile spin profile (neal) +- data/profile.d/fedora-kde: Disable stages redundant with Plasma Setup (neal) +- data/profile.d/fedora-kde: Update comment to indicate Edition status (neal) +- docs: Add Fedora 43 release notes (k.koukiou) +- bootloader: update GRUB2.check() threshold to match GRUB manual + recommendation (k.koukiou) +- Add x-initrd.attach to /etc/crypttab device for / volumes (mkolman) +- Handle RuntimeError in vtActivate() during interpreter shutdown (k.koukiou) + +* Wed Dec 10 2025 Packit - 44.8-1 +- ui: gui: fix IndexError when editing NTP servers with empty list (k.koukiou) + +* Tue Dec 09 2025 Packit - 44.7-1 +- storage: add logging in set_default_class (jbock-java) +- storage: in get_class_by_name, check for X86EFI (jbock-java) +- Apply RHEL autoconections policy on Fedora ELN. (rvykydal) +- docs: ci-status: remove non-existing rhel-8 kickstart test (k.koukiou) +- docs: ci-status: remove container-eln-autoupdate badge (k.koukiou) +- docs: ci-status: use substitutions for WebUI workflows mentions (k.koukiou) +- pyanaconda: webui: enable DNF payload support (k.koukiou) +- docs: ci-status: show webui compose testing (k.koukiou) + +* Thu Dec 04 2025 Packit - 44.6-1 +- Remove --root-mount-spec to enable bootc's btrfs subvolume auto-detection + (k.koukiou) +- Extend ssh config testing (ppolawsk) +- Fix permissions of the ssh config created by Anaconda (ppolawsk) + +* Tue Dec 02 2025 Packit - 44.5-1 +- storage: add minimum recommended size for /boot/efi partition (k.koukiou) +- storage: update minimum recommended /boot partition size to 1 GB (k.koukiou) +- Fix parsing of du output when errors are present (k.koukiou) + +* Tue Nov 25 2025 Packit - 44.4-1 +- bootc: Collect kernel arguments before installation to pass to bootc + (k.koukiou) +- bootc: Bind mount /boot into sysroot for %%post scripts (k.koukiou) +- pyanaconda: bootc: specify the bootloader to grub for bootc (k.koukiou) +- storage: stop creating /etc/mtab symlink during installation (k.koukiou) + +* Tue Nov 11 2025 Packit - 44.2-1 +- fix: remove the unused file 'a' (lonicerae) + +* Wed Nov 05 2025 Packit - 44.1-1 +- Update to version 44.1 + +* Thu Oct 16 2025 Packit - 43.46-1 +- Introduce SetXKeyboardDefaults D-Bus method for setting sensible keyboard + defaults (k.koukiou) + +* Tue Oct 14 2025 Adam Williamson - 43.44-3 +- Backport PR #6692 to provide keyboard layout ASCII info to anaconda-webui + +* Sun Oct 12 2025 Adam Williamson - 43.44-2 +- Backport PR #6691 to fix silverblue install crash + +* Thu Oct 09 2025 Packit - 43.44-1 +- flatpak: enable installation with CDROM source type (bciconel) +- storage: Improve NotEnoughFreeSpaceError message with specific request + details (k.koukiou) +- pyanaconda: storage: platform: Raise /boot to 2 GiB (neal) + +* Tue Sep 23 2025 Packit - 43.41-1 +- data: profiles: enable geolocation on Fedora Workstation live image + (matiwari) +- storage: fix mount point assignment of non-formatted swap partitions + (rvykydal) +- storage: include only fstab devices in fsset swap devices property (rvykydal) +- ui: tui: installation_source: show error message in the TUI screen + (k.koukiou) +- pyanaconda: dnf: clarify is_ready boolean return (k.koukiou) +- tui: make SoftwareSpoke ready once installation source succeeds or fails + (k.koukiou) +- spec: enable live in ELN (yselkowi) +- Mark unused variables with a leading underscore (a.badger) + +* Fri Sep 19 2025 Python Maint - 43.40-2 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Tue Sep 16 2025 Packit - 43.40-1 +- Do not catch blivet.safe_dbus exceptions in iSCSI module (vtrefny) +- Fixing unittests (a.badger) +- ostree needs to have /boot be bindmounted into sysroot. (a.badger) +- gui: Fix GTK warnings when removing non-existent accelerators (k.koukiou) + +* Tue Sep 09 2025 Packit - 43.39-1 +- Fix setting of kernel console logging level for anaconda (rvykydal) +- Use new more suitable API for Gtk UI required space check (rvykydal) +- Add GetFreeSpaceForSystem API (rvykydal) +- docs: update CONTRIBUTING.rst with new branching approach (k.koukiou) + +* Tue Sep 02 2025 Packit - 43.38-1 +- Use slots (and a dataclass) to enforce Flag names (a.badger) +- Reset comps queries when resetting the dnf base (pkratoch) +- i18n: fix embedded URLs in SMT warning messages (k.koukiou) +- docs: remove submodule link added by mistake (k.koukiou) +- docs: tests: we use 'latest' tag - not 'main' for containers (k.koukiou) +- build: makefile: remove noope CI_TAG self assignment (k.koukiou) + +* Mon Aug 25 2025 Packit - 43.37-1 +- Log correct boot option for iSCSI boot without iBFT (jstodola) +- Get full nevra string from dnf instead of composing it (pkratoch) +- Add release notes for RDP kickstart support (adamkankovsky) +- test: Enable kickstart RDP command in Anaconda (adamkankovsky) +- Enable kickstart RDP command in Anaconda (adamkankovsky) +- storage: devicetree: read VERSION or VERSION_CODENAME for identifying OS from + os-release (k.koukiou) + +* Tue Aug 19 2025 Packit - 43.36-1 +- packit: drive jobs from supported_releases per branch; dedupe and group + targets (k.koukiou) +- Fix pylint warnings caused by dynamic kickstart command imports (k.koukiou) +- core: kickstart: implement OS-release based version detection (k.koukiou) +- build: decouple BASE_CONTAINER from branch configuration (k.koukiou) +- workflows: remove hardcoded CONTAINER_TAG="lorax" usage (k.koukiou) +- dracut module requires generic initramfs (jstodola) + +* Fri Aug 15 2025 Python Maint - 43.35-2 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Tue Aug 12 2025 Packit - 43.35-1 +- storage: Fix AttributeError and protect installation media in bootloader + partition removal (k.koukiou) + * Tue Aug 05 2025 Packit - 43.34-1 - Document Lorax template patching (mkolman) diff --git a/sources b/sources index d4bebec..5807bb3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (anaconda-43.34.tar.bz2) = 536ea598a71c7f6b5a7a233d2db14ca28206fe9fb4fc7fb906415d45f21843cbdde4c4bbd759c4713ff8fa26d8fb826a38eb062457c0bafedacc7d59ab92862b +SHA512 (anaconda-44.11.tar.bz2) = 30e8c3bde05afefe7cb18ba17d84fc31007e9086932f47136e74e432563786cd577123f7c904bc3ddd5e5c5f6f722dae3cedbc131d5871c06f7829ba632ffaf7