diff --git a/.gitignore b/.gitignore index eccaf67..94987e8 100644 --- a/.gitignore +++ b/.gitignore @@ -468,22 +468,8 @@ /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 ef65b39..b3f40ff 100644 --- a/.packit.yml +++ b/.packit.yml @@ -52,6 +52,7 @@ jobs: packages: [anaconda-fedora] dist_git_branches: - main + - f43 # Tests on PR (Fedora) - job: tests @@ -59,6 +60,7 @@ jobs: packages: [anaconda-fedora] targets: - fedora-rawhide + - fedora-43 # COPR builds on PR (Fedora) - job: copr_build @@ -66,6 +68,7 @@ jobs: packages: [anaconda-fedora] targets: - fedora-rawhide + - fedora-43 - fedora-eln # COPR builds on commit (Fedora): single job with multiple targets (add ELN on main) @@ -74,6 +77,7 @@ jobs: packages: [anaconda-fedora] targets: - fedora-rawhide + - fedora-43 - fedora-eln branch: main owner: "@rhinstaller" diff --git a/6597.patch b/6597.patch new file mode 100644 index 0000000..04879c2 --- /dev/null +++ b/6597.patch @@ -0,0 +1,213 @@ +From db5bd04346372049f2b4f41484ca014e792e8939 Mon Sep 17 00:00:00 2001 +From: Radek Vykydal +Date: Thu, 28 Aug 2025 12:21:26 +0200 +Subject: [PATCH 1/2] Add GetFreeSpaceForSystem API + +For Gtk the GetFileSystemFreeSpace API was used to get free space on +mount points that will be used for system installaion. The API is not +usable for cockpit storage scenario which creates and formats the +devices before using in MANUAL partitioning (partitions assignment with +reformat=False) so they are handled as having existing formats for which +DeviceFormat.free function is used. DeviceFormat.free blivet API is +targeted specifically for file system shrinking, and for unshrinkable +file systems (for example XFS) returns 0. + +The GetFileSysetemFreeSpace API is used also for decisions about space +required for downloading and installation of DNF payload and devices +used for payload downloading so potentially handling some existing +partitions / formats. + +The patch is adding new API specifically used for obtaining free space +available for system installation. It explicitly assumes the file +systems are empty (freshly formatted) and therefore suitable +DeviceFormat.free_space_estimate blivet API is used to calculate the +value. Which goes in line with installer requirement for partitions used +for system installation (typically '/') to be formatted (either by +Cockpit Storage or Anaconda). + +Related: INSTALLER-4160 +--- + .../modules/storage/devicetree/model.py | 47 ++++++++++++++----- + .../modules/storage/devicetree/viewer.py | 10 ++++ + .../storage/devicetree/viewer_interface.py | 10 ++++ + .../storage/test_module_device_tree.py | 33 +++++++++++++ + 4 files changed, 89 insertions(+), 11 deletions(-) + +diff --git a/pyanaconda/modules/storage/devicetree/model.py b/pyanaconda/modules/storage/devicetree/model.py +index ade8072f981..aebe6a2117b 100644 +--- a/pyanaconda/modules/storage/devicetree/model.py ++++ b/pyanaconda/modules/storage/devicetree/model.py +@@ -150,14 +150,7 @@ def mountpoints(self): + def root_device(self): + return self.fsset.root_device + +- def get_file_system_free_space(self, mount_points=("/", "/usr")): +- """Get total file system free space on the given mount points. +- +- Calculates total free space in / and /usr, by default. +- +- :param mount_points: a list of mount points +- :return: a total size +- """ ++ def _get_mount_points_free_space(self, mount_points, calculate): + free = Size(0) + btrfs_volumes = [] + +@@ -174,12 +167,44 @@ def get_file_system_free_space(self, mount_points=("/", "/usr")): + else: + btrfs_volumes.append(device.volume) + ++ mp_size = calculate(device) ++ log.debug("Free size of mount point %s: %s", mount_point, mp_size.get_bytes()) ++ free += mp_size ++ ++ return free ++ ++ def get_file_system_free_space(self, mount_points): ++ """Get total file system free space on the given mount points. ++ ++ WARNING: For existing mount points the size available for resizing is ++ obtained. It means that for non resizeable format types it returns the ++ value 0. ++ ++ :param mount_points: a list of mount points ++ :return: a total size ++ """ ++ def calculate(device): + if device.format.exists: +- free += device.format.free ++ return device.format.free + else: +- free += device.format.free_space_estimate(device.size) ++ return device.format.free_space_estimate(device.size) + +- return free ++ return self._get_mount_points_free_space(mount_points, calculate) ++ ++ def get_free_space_for_system(self, mount_points): ++ """Get total space available for system on the given mount points. ++ ++ Counts the free space available on empty formatted devices. ++ ++ :param mount_points: a list of mount points ++ :return: a total size ++ """ ++ def calculate(device): ++ if device.format.exists: ++ log.debug("Free size calculation: %s considered as formatted", device) ++ return device.format.free_space_estimate(device.size) ++ ++ return self._get_mount_points_free_space(mount_points, calculate) + + def get_disk_free_space(self, disks=None): + """Get total free space on the given disks. +diff --git a/pyanaconda/modules/storage/devicetree/viewer.py b/pyanaconda/modules/storage/devicetree/viewer.py +index 49e9bf23028..6a11e4428b3 100644 +--- a/pyanaconda/modules/storage/devicetree/viewer.py ++++ b/pyanaconda/modules/storage/devicetree/viewer.py +@@ -458,6 +458,16 @@ def get_file_system_free_space(self, mount_points): + """ + return self.storage.get_file_system_free_space(mount_points).get_bytes() + ++ def get_free_space_for_system(self, mount_points): ++ """Get total space available for system on the given mount points. ++ ++ Counts the free space available on empty formatted devices. ++ ++ :param mount_points: a list of mount points ++ :return: a total size ++ """ ++ return self.storage.get_free_space_for_system(mount_points).get_bytes() ++ + def get_disk_free_space(self, disk_ids): + """Get total free space on the given disks. + +diff --git a/pyanaconda/modules/storage/devicetree/viewer_interface.py b/pyanaconda/modules/storage/devicetree/viewer_interface.py +index 84b6f701f21..06b94452a67 100644 +--- a/pyanaconda/modules/storage/devicetree/viewer_interface.py ++++ b/pyanaconda/modules/storage/devicetree/viewer_interface.py +@@ -155,6 +155,16 @@ def GetFileSystemFreeSpace(self, mount_points: List[Str]) -> UInt64: + """ + return self.implementation.get_file_system_free_space(mount_points) + ++ def GetFreeSpaceForSystem(self, mount_points: List[Str]) -> UInt64: ++ """Get total space available for system on the given mount points. ++ ++ Counts the free space available on empty formatted devices. ++ ++ :param mount_points: a list of mount points ++ :return: a total size ++ """ ++ return self.implementation.get_free_space_for_system(mount_points) ++ + def GetDiskFreeSpace(self, disk_ids: List[Str]) -> UInt64: + """Get total free space on the given disks. + +diff --git a/tests/unit_tests/pyanaconda_tests/modules/storage/test_module_device_tree.py b/tests/unit_tests/pyanaconda_tests/modules/storage/test_module_device_tree.py +index 6d4267e9ca6..8a612144884 100644 +--- a/tests/unit_tests/pyanaconda_tests/modules/storage/test_module_device_tree.py ++++ b/tests/unit_tests/pyanaconda_tests/modules/storage/test_module_device_tree.py +@@ -621,6 +621,39 @@ def test_get_file_system_free_space(self): + assert total_size < Size("10 GiB").get_bytes() + assert total_size > Size("8 GiB").get_bytes() + ++ def test_get_free_space_for_system(self): ++ """Test GetFreeSpaceForSystem.""" ++ self._add_device(StorageDevice( ++ "dev1", ++ fmt=get_format("ext4", mountpoint="/"), ++ size=Size("5 GiB")) ++ ) ++ ++ self._add_device(StorageDevice( ++ "dev2", ++ fmt=get_format("ext4", mountpoint="/usr"), ++ size=Size("5 GiB")) ++ ) ++ ++ # /home should not be counted in ++ self._add_device(StorageDevice( ++ "dev3", ++ fmt=get_format("ext4", mountpoint="/home"), ++ size=Size("5 GiB")) ++ ) ++ ++ total_size = self.interface.GetFreeSpaceForSystem([]) ++ assert total_size == 0 ++ ++ total_size = self.interface.GetFreeSpaceForSystem(["/", "/usr"]) ++ assert total_size < Size("10 GiB").get_bytes() ++ assert total_size > Size("8 GiB").get_bytes() ++ ++ # /var does not exist ++ total_size = self.interface.GetFreeSpaceForSystem(["/", "/var"]) ++ assert total_size < Size("6 GiB").get_bytes() ++ assert total_size > Size("4 GiB").get_bytes() ++ + @patch("blivet.formats.disklabel.DiskLabel.free", new_callable=PropertyMock) + @patch("blivet.formats.disklabel.DiskLabel.get_platform_label_types") + def test_get_disk_free_space(self, label_types, free): + +From a4480c8acbc3bd15cc8d9630751a400136ac55da Mon Sep 17 00:00:00 2001 +From: Radek Vykydal +Date: Thu, 28 Aug 2025 12:42:42 +0200 +Subject: [PATCH 2/2] Use new more suitable API for Gtk UI required space check + +Related: INSTALLER-4160 +--- + pyanaconda/ui/lib/space.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyanaconda/ui/lib/space.py b/pyanaconda/ui/lib/space.py +index b81adcb0125..c3078908c75 100644 +--- a/pyanaconda/ui/lib/space.py ++++ b/pyanaconda/ui/lib/space.py +@@ -52,7 +52,7 @@ def __init__(self, payload): + + def _calculate_free_space(self): + """Calculate the available space.""" +- return Size(self.device_tree.GetFileSystemFreeSpace(("/", "/usr"))) ++ return Size(self.device_tree.GetFreeSpaceForSystem(("/", "/usr"))) + + def _calculate_needed_space(self): + """Calculate the needed space.""" diff --git a/README.packit b/README.packit index 9bb65f0..fb341a1 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.13.0.post1.dev2+g84134016c. +The file was generated using packit 1.11.0.post1.dev7+gfdcdf3a32. diff --git a/anaconda.spec b/anaconda.spec index cc4a2f2..8ef9745 100644 --- a/anaconda.spec +++ b/anaconda.spec @@ -1,7 +1,7 @@ Summary: Graphical system installer Name: anaconda -Version: 44.11 -Release: 2%{?dist} +Version: 43.44 +Release: 3%{?dist} ExcludeArch: %{ix86} License: GPL-2.0-or-later URL: http://fedoraproject.org/wiki/Anaconda @@ -13,10 +13,21 @@ URL: http://fedoraproject.org/wiki/Anaconda # make dist Source0: https://github.com/rhinstaller/%{name}/releases/download/%{name}-%{version}/%{name}-%{version}.tar.bz2 +# Fix crash on start in Silverblue (and probably other cases) +# https://github.com/rhinstaller/anaconda/pull/6691 +Patch: 0001-RebootData-don-t-allow-action-to-be-None.patch + +# https://github.com/rhinstaller/anaconda/pull/6692 +# Indicate ASCII support in get_keyboard_layouts +# This is needed for anaconda-webui to be able to make good +# choices, see: +# https://bugzilla.redhat.com/show_bug.cgi?id=2402430 +Patch: 0001-pyanaconda-localization-Indicate-ASCII-support-in-ge.patch + # Versions of required components (done so we make sure the buildrequires # match the requires versions of things). -%bcond glade %[%{undefined rhel} && %{undefined eln}] +%bcond glade %{undefined rhel} %bcond live %[%{defined fedora} || %{defined eln}] %if ! 0%{?rhel} %define blivetguiver 2.4.2-3 @@ -37,7 +48,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.13.0-1 +%define pythonblivetver 1:3.12.1-1 %define rpmver 4.15.0 %define simplelinever 1.9.0-1 %define subscriptionmanagerver 1.29.31 @@ -286,15 +297,9 @@ 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 @@ -378,8 +383,6 @@ 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 @@ -518,69 +521,6 @@ 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 @@ -607,28 +547,14 @@ rm -rf \ - 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) +* Fri Sep 05 2025 Katerina Koukiou - 43.37-2 +- Add GetFreeSpaceForSystem API (kkoukiou) * Mon Aug 25 2025 Packit - 43.37-1 - Log correct boot option for iSCSI boot without iBFT (jstodola) @@ -648,13 +574,6 @@ rm -rf \ - 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 5807bb3..944fc66 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (anaconda-44.11.tar.bz2) = 30e8c3bde05afefe7cb18ba17d84fc31007e9086932f47136e74e432563786cd577123f7c904bc3ddd5e5c5f6f722dae3cedbc131d5871c06f7829ba632ffaf7 +SHA512 (anaconda-43.44.tar.bz2) = ea021b88ebd476f4263f3a2121fb93d374bdafaddba6134e141aad2c1c3287ce35e57e4172eb3a6ede79af9a34b28e4cd9e81be8520f4227ada5f3dbc30a2f17