Compare commits

..

7 commits

Author SHA1 Message Date
Martin Kolman
9dbe44aeb3 New version 33.25.4-1
- fix remove unkown partition in sda failed (69908158+xqrustc2020)
- Fix show missing inst. prefix warning appropriately (#1875561) (jkonecny)
2020-10-01 18:11:17 +02:00
Martin Kolman
42dbd6f546 New version 33.25.3-1
- network: commit changes synchronously when dumping autoconnections (rvykydal)
- network: do not bind virtual devices to mac (rvykydal)
- network: split add_and_activate_connection_sync function (rvykydal)
- network: add support for bridged bond to stage 2 kickstart (%pre) (rvykydal)
- Never mount partitions on a disk with the iso9660 filesystem (vponcova)
- Add a rule for translated strings to code conventions (#1619530) (vponcova)
- Never convert translated strings to uppercase (vponcova)
- Never change first letters of translated strings to uppercase (vponcova)
- network: update docstring of clone_connection_async (rvykydal)
- network: add support for vlan over bond to stage 2 kickstart (pre) (rvykydal)
- Fix the combo box for an URL type of additional repositories (#1879127)
  (vponcova)
- network: clone connections from intramfs to persistent config (rvykydal)
- network: set addr-gen-mode of Anaconda default connections to eui64
  (rvykydal)
- network: default to addr-gen-mode eui64 (rvykydal)
- network: do not reset ipv6.addr-gen-mode in tui network configuration
  (rvykydal)
- network: get hwadddr when binding to mac more robustly (rvykydal)
- Improve the error dialog for storage reset (vponcova)
- Fix CDN button visibility (mkolman)
- subscription: Assure payload restart on DVD install after registration
  (mkolman)
- subscription: Only restart payload when needed (mkolman)
- Document the restart_payload argument of subscription helper functions
  (mkolman)
- network: fix missing log message argument (rvykydal)
- Propagate verify_ssl to RHSM (mkolman)
- Check if original partitions are mounted, too (vslavik)
- network: do not add superfluous quotes to inst.dhcpclass identifier
  (rvykydal)
- Add the DBus method IsDeviceShrinkable (#1875677) (vponcova)
- Extend unit tests for generate_device_factory_request (vponcova)
- Differentiate between RAID levels of a device and its container (vponcova)
- Don't generate container data for non-container device types (vponcova)
- network: fix parsing of hostname from ip= if mac is defined in dhcp
  (rvykydal)
- Apply onboot policy even when network was configured in UI. (rvykydal)
- network: fix kickstart network --dhcpclass option (rvykydal)
- network: fix inst.dhcpclass boot option (rvykydal)
- Do not push pot files just tell user that he should update (jkonecny)
- network: use constants instead of enum to hold stirng values of connection
  type (rvykydal)
- Add support for booting installation media with plain SquashFS (bkhomuts)
- Do not check ro mount in Dracut for overlay (jkonecny)
- network: fix using of values of NMConnectionType enum (rvykydal)
- Always clear treeinfo metadata (#1872056) (jkonecny)
- network: apply kickstart network --nodefroute also from stage2 (rvykydal)
- Propagate a lazy proxy of the storage model (vponcova)
- Add TODO to check if biospart support is required for DUD (jkonecny)
- Remove failure messages about not supported biospart (jkonecny)
- Switch to a new HardDrive command version with removed biospart (jkonecny)
- Make custom storage summary dialog resizeable (1626555) (mkolman)
- network: add constants for NM connection types (rvykydal)
- The underline character should not be displayed (honza.stodola)
- network: create default connection also for slave devices (rvykydal)
- network: remove ONBOOT hack for slave connections (rvykydal)
- network: replace ifcfg module with config_file module (rvykydal)
- network: remove unused functions from ifcfg module (rvykydal)
- network: generate kickstart via NM API (connections) (rvykydal)
- network: get master slaves via NM API (rvykydal)
- network: use NM API to look for config files for DeviceConfigurations
  (rvykydal)
- Move slower part of Subscription spoke initialization to a thread (mkolman)
- network: use NM API to look for config files when setting final ONBOOT
  (rvykydal)
- network: use NM API to look for config files when setting real ONBOOT
  (rvykydal)
- network: use NM API to look for config files when applying kickstart
  (rvykydal)
- network: use NM API to look for config files when consolidating connections
  (rvykydal)
- network: check for missing device config via NM api (rvykydal)
- network: use underscore in the names of slave devices created from kickstart
  (rvykydal)
- network: log also content of keyfiles (rvykydal)
- We won't support inst.ks=bd: (jkonecny)
- Add test to detect every RW mount command in Dracut (jkonecny)
- subscription: Convert the RHSM default config values to expected format
  (mkolman)
- Implement get_source_proxy() in payload base class (mkolman)
- Use spec file macros for all requires version specifications (jkonecny)
- Fix spec macro for version name (jkonecny)
- Correctly work with package boolean logic in our setup scripts (jkonecny)
- Wait for payload initialization to finish in Subscription spoke (mkolman)
- Unify usage of BootLoaderArguments add() & update() (vslavik)
- Rename Arguments to BootLoaderArguments (vslavik)
- Remove usage of OrderedSet (vslavik)
- Add tests for the boot loader Arguments class (vslavik)
- Do not mount as RW in Dracut (jkonecny)
- network: do not crash when updating a connection without wired settings
  (rvykydal)
- Fix traceback when removing additional repository (jkonecny)
- subscription: Handle cases where CDN should not be the default (mkolman)
- subscription: Set DNF payload source via config file option (mkolman)
- subscription: Manual CDN selection support (mkolman)
- subscription: Handle source switching at registration/unregistration
  (mkolman)
- subscription: Introduce the default_source configuration option (mkolman)
- Use "raise from" to link exceptions (vslavik)
- Fix branching documentation (mkolman)
- Remove docs where we tell users that inst. prefix is not required (jkonecny)
- Print warning for boot options without inst. prefix (jkonecny)
- Add missing dracut commands as missing inst. prefix warning (jkonecny)
- Enable warning when inst. prefix is not used (jkonecny)
- Reset the state of the custom partitioning spoke (vponcova)
- Reset the RAID level of the device request (#1828092) (vponcova)
- Protect all devices with the iso9660 file system (vponcova)
- Don't ignore NVDIMM devices with the iso9660 file system (vponcova)
- Add tests for the DBus method FindOpticalMedia (vponcova)
- Fix everything in payload should be mounted as read only (jkonecny)
- Add support for mount options to device_tree.MountDevice (jkonecny)
- Adapt tests for CDRom for the new inst.stage2 discovery (jkonecny)
- CDRom source should prioritize stage2 device during discover (jkonecny)
- network: do not enforce network standalone spoke on default source (rvykydal)
2020-09-29 18:56:56 +02:00
Martin Kolman
a423a12018 New version 33.25.2-4
- Fix the combo box for an URL type of additional repositories (#1879127) (vponcova)
2020-09-17 13:05:53 +02:00
Martin Kolman
738e5ce50c New version 33.25.2-3
- Add the DBus method IsDeviceShrinkable (#1875677) (vponcova)
2020-09-09 15:34:42 +02:00
Martin Kolman
e51656a3f4 New version 33.25.2-2
- Always clear treeinfo metadata (#1872056) (jkonecny)
2020-09-07 14:52:12 +02:00
Martin Kolman
985d196ff5 New version 33.25.2-1
- Fix dependency_solver failure with spec file boolean logic syntax (jkonecny)
- Avoid unnecessarily pulling in glibc-langpack-en (sgallagh)
- Set up the ignored_device_names variable (vponcova)
2020-08-21 21:40:34 +02:00
Martin Kolman
ce0f2c83da New version 33.25.1-1
- Adjust configuration options for Fedora 33 (mkolman)
- network: do not try to activate connection that has not been found (rvykydal)
- network: add timeout for synchronous activation of a connection (rvykydal)
- network: fix configuration of virtual devices by boot options (rvykydal)
- Handle exceptions from threads without new instances (vslavik)
- Do not use disabled --install-scripts command of pip (jkonecny)
- Use bootlist command to update the PowerPC-64 Boot Order (javierm)
- Discard current boot list when updating the boot-device NRVAM variable
  (javierm)
- Automatically break lines in labels in software selection spoke (vslavik)
- Set up FIPS in the target system (vponcova)
- Update the service anaconda-sshd (vponcova)
- Set up FIPS in the installation environment (vponcova)
- Add Blivet version to generated kickstart (vslavik)
- Add Anaconda version to saved kickstart (vslavik)
- Fix kickstart file error with user groups (kai.kang)
- Get rid of add_disable_repo (jkonecny)
- Move parts together in the DNF repo (jkonecny)
- Fix issue that treeinfo repositories were never disabled (jkonecny)
- Keep treeinfo repositories disabled after payload reset (jkonecny)
- Fix crash on first entering of source spoke (jkonecny)
- Remove treeinfo repositories instead of disabling (jkonecny)
- Reload treeinfo repositories on every payload reset (jkonecny)
2020-08-20 17:36:25 +02:00
18 changed files with 90 additions and 5169 deletions

View file

@ -1 +0,0 @@
1

241
.gitignore vendored
View file

@ -250,240 +250,7 @@
/anaconda-33.23.tar.bz2
/anaconda-33.24.tar.bz2
/anaconda-33.25.tar.bz2
/anaconda-34.1.tar.bz2
/anaconda-34.2.tar.bz2
/anaconda-34.3.tar.bz2
/anaconda-34.4.tar.bz2
/anaconda-34.5.tar.bz2
/anaconda-34.6.tar.bz2
/anaconda-34.7.tar.bz2
/anaconda-34.8.tar.bz2
/anaconda-34.9.tar.bz2
/anaconda-34.10.tar.bz2
/anaconda-34.12.tar.bz2
/anaconda-34.13.tar.bz2
/anaconda-34.14.tar.bz2
/anaconda-34.15.tar.bz2
/anaconda-34.16.tar.bz2
/anaconda-34.17.tar.bz2
/anaconda-34.18.tar.bz2
/anaconda-34.19.tar.bz2
/anaconda-34.20.tar.bz2
/anaconda-34.21.tar.bz2
/anaconda-34.22.tar.bz2
/anaconda-34.23.tar.bz2
/anaconda-34.24.tar.bz2
/anaconda-35.1.tar.bz2
/anaconda-35.2.tar.bz2
/anaconda-35.3.tar.bz2
/anaconda-35.4.tar.bz2
/anaconda-35.5.tar.bz2
/anaconda-35.6.tar.bz2
/anaconda-35.7.tar.bz2
/anaconda-35.8.tar.bz2
/anaconda-35.9.tar.bz2
/anaconda-35.10.tar.bz2
/anaconda-35.11.tar.bz2
/anaconda-35.12.tar.bz2
/anaconda-35.13.tar.bz2
/anaconda-35.14.tar.bz2
/anaconda-35.15.tar.bz2
/anaconda-35.16.tar.bz2
/anaconda-35.17.tar.bz2
/anaconda-35.18.tar.bz2
/anaconda-35.19.tar.bz2
/anaconda-35.20.tar.bz2
/anaconda-35.21.tar.bz2
/anaconda-35.22.tar.bz2
/anaconda-36.1.tar.bz2
/anaconda-36.2.tar.bz2
/anaconda-36.3.tar.bz2
/anaconda-36.4.tar.bz2
/anaconda-36.5.tar.bz2
/anaconda-36.6.tar.bz2
/anaconda-36.7.tar.bz2
/anaconda-36.8.tar.bz2
/anaconda-36.9.tar.bz2
/anaconda-36.10.tar.bz2
/anaconda-36.11.tar.bz2
/anaconda-36.12.tar.bz2
/anaconda-36.13.tar.bz2
/anaconda-36.14.tar.bz2
/anaconda-36.15.tar.bz2
/anaconda-36.16.tar.bz2
/anaconda-37.1.tar.bz2
/anaconda-37.2.tar.bz2
/anaconda-37.3.tar.bz2
/anaconda-37.4.tar.bz2
/anaconda-37.5.tar.bz2
/anaconda-37.6.tar.bz2
/anaconda-37.7.tar.bz2
/anaconda-37.8.tar.bz2
/anaconda-37.9.tar.bz2
/anaconda-37.10.tar.bz2
/anaconda-37.11.tar.bz2
/anaconda-37.12.tar.bz2
/anaconda-38.1.tar.bz2
/anaconda-38.2.tar.bz2
/anaconda-38.3.tar.bz2
/anaconda-38.4.tar.bz2
/anaconda-38.5.tar.bz2
/anaconda-38.6.tar.bz2
/anaconda-38.7.tar.bz2
/anaconda-38.8.tar.bz2
/anaconda-38.9.tar.bz2
/anaconda-38.10.tar.bz2
/anaconda-38.11.tar.bz2
/anaconda-38.12.tar.bz2
/anaconda-38.13.tar.bz2
/anaconda-38.14.tar.bz2
/anaconda-38.15.tar.bz2
/anaconda-38.17.tar.bz2
/anaconda-38.18.tar.bz2
/anaconda-38.19.tar.bz2
/anaconda-38.20.tar.bz2
/anaconda-38.21.tar.bz2
/anaconda-38.22.tar.bz2
/anaconda-38.23.tar.bz2
/anaconda-39.1.tar.bz2
/anaconda-39.2.tar.bz2
/anaconda-39.3.tar.bz2
/anaconda-39.4.tar.bz2
/anaconda-39.5.tar.bz2
/anaconda-39.6.tar.bz2
/anaconda-39.7.tar.bz2
/anaconda-39.8.tar.bz2
/anaconda-39.9.tar.bz2
/anaconda-39.10.tar.bz2
/anaconda-39.11.tar.bz2
/anaconda-39.12.tar.bz2
/anaconda-39.13.tar.bz2
/anaconda-39.14.tar.bz2
/anaconda-39.15.tar.bz2
/anaconda-39.16.tar.bz2
/anaconda-39.17.tar.bz2
/anaconda-39.18.tar.bz2
/anaconda-39.19.tar.bz2
/anaconda-39.20.tar.bz2
/anaconda-39.21.tar.bz2
/anaconda-39.22.tar.bz2
/anaconda-39.23.tar.bz2
/anaconda-39.24.tar.bz2
/anaconda-39.25.tar.bz2
/anaconda-39.26.tar.bz2
/anaconda-39.27.tar.bz2
/anaconda-39.28.tar.bz2
/anaconda-39.29.tar.bz2
/anaconda-39.30.tar.bz2
/anaconda-39.31.tar.bz2
/anaconda-39.32.tar.bz2
/anaconda-39.33.tar.bz2
/anaconda-40.1.tar.bz2
/anaconda-40.2.tar.bz2
/anaconda-40.3.tar.bz2
/anaconda-40.4.tar.bz2
/anaconda-40.5.tar.bz2
/anaconda-40.6.tar.bz2
/anaconda-40.7.tar.bz2
/anaconda-40.8.tar.bz2
/anaconda-40.9.tar.bz2
/anaconda-40.10.tar.bz2
/anaconda-40.11.tar.bz2
/anaconda-40.12.tar.bz2
/anaconda-40.13.tar.bz2
/anaconda-40.15.tar.bz2
/anaconda-40.17.tar.bz2
/anaconda-40.18.tar.bz2
/anaconda-40.20.tar.bz2
/anaconda-40.21.tar.bz2
/anaconda-41.1.tar.bz2
/anaconda-41.2.tar.bz2
/anaconda-41.6.tar.bz2
/anaconda-41.7.tar.bz2
/anaconda-41.9.tar.bz2
/anaconda-41.13.tar.bz2
/anaconda-41.14.tar.bz2
/anaconda-41.15.tar.bz2
/anaconda-41.17.tar.bz2
/anaconda-41.18.tar.bz2
/anaconda-41.19.tar.bz2
/anaconda-41.20.tar.bz2
/anaconda-41.22.tar.bz2
/anaconda-41.23.tar.bz2
/anaconda-41.24.tar.bz2
/anaconda-41.25.tar.bz2
/anaconda-41.26.tar.bz2
/anaconda-41.27.tar.bz2
/anaconda-41.28.tar.bz2
/anaconda-41.29.tar.bz2
/anaconda-41.30.tar.bz2
/anaconda-41.31.tar.bz2
/anaconda-41.32.tar.bz2
/anaconda-42.1.tar.bz2
/anaconda-42.2.tar.bz2
/anaconda-42.3.tar.bz2
/anaconda-42.4.tar.bz2
/anaconda-42.5.tar.bz2
/anaconda-42.6.tar.bz2
/anaconda-42.7.tar.bz2
/anaconda-42.8.tar.bz2
/anaconda-42.9.tar.bz2
/anaconda-42.10.tar.bz2
/anaconda-42.11.tar.bz2
/anaconda-42.12.tar.bz2
/anaconda-42.13.tar.bz2
/anaconda-42.14.tar.bz2
/anaconda-42.15.tar.bz2
/anaconda-42.16.tar.bz2
/anaconda-42.18.tar.bz2
/anaconda-42.20.tar.bz2
/anaconda-42.21.tar.bz2
/anaconda-42.23.tar.bz2
/anaconda-42.24.tar.bz2
/anaconda-42.26.tar.bz2
/anaconda-43.1.tar.bz2
/anaconda-43.5.tar.bz2
/anaconda-43.6.tar.bz2
/anaconda-43.7.tar.bz2
/anaconda-43.8.tar.bz2
/anaconda-43.9.tar.bz2
/anaconda-43.10.tar.bz2
/anaconda-43.11.tar.bz2
/anaconda-43.12.tar.bz2
/anaconda-43.13.tar.bz2
/anaconda-43.14.tar.bz2
/anaconda-43.15.tar.bz2
/anaconda-43.16.tar.bz2
/anaconda-43.17.tar.bz2
/anaconda-43.18.tar.bz2
/anaconda-43.20.tar.bz2
/anaconda-43.21.tar.bz2
/anaconda-43.22.tar.bz2
/anaconda-43.24.tar.bz2
/anaconda-43.25.tar.bz2
/anaconda-43.28.tar.bz2
/anaconda-43.29.tar.bz2
/anaconda-43.30.tar.bz2
/anaconda-43.31.tar.bz2
/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
/anaconda-33.25.1.tar.bz2
/anaconda-33.25.2.tar.bz2
/anaconda-33.25.3.tar.bz2
/anaconda-33.25.4.tar.bz2

View file

@ -1,115 +0,0 @@
# ======================================
# WARNING!
# THIS FILE IS GENERATED FROM A TEMPLATE
# DO NOT EDIT THIS FILE MANUALLY!
# ======================================
# The template is located in: .packit.yml.j2
specfile_path: anaconda.spec
upstream_package_name: anaconda
upstream_tag_template: anaconda-{version}
copy_upstream_release_description: true
downstream_package_name: anaconda
files_to_sync:
- rpmlint.toml
- .packit.yml
srpm_build_deps:
- automake
- autoconf
- autogen
- glib2-devel
- gettext-devel
- python3-polib
- gobject-introspection-devel
- glade-devel
- libxklavier-devel
- libarchive-devel
- rpm-devel
- nss_wrapper
- nodejs-npm
packages:
anaconda-fedora:
specfile_path: anaconda.spec
anaconda-centos:
specfile_path: anaconda.spec
pkg_tool: centpkg
actions:
post-upstream-clone:
- ./autogen.sh
- ./configure
create-archive:
- "make release"
- '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]
targets:
- 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]
targets:
- fedora-rawhide
- fedora-eln
branch: main
owner: "@rhinstaller"
project: Anaconda
preserve_project: True
- job: koji_build
trigger: commit
packages: [anaconda-fedora]
sidetag_group: anaconda-releases
dist_git_branches:
- fedora-development
allowed_committers:
- m4rtink
- kkoukiou
- rvykydal
- jkonecny
- packit
allowed_pr_authors:
- m4rtink
- kkoukiou
- rvykydal
- jkonecny
- packit
- job: bodhi_update
trigger: koji_build
packages: [anaconda-fedora]
sidetag_group: anaconda-releases
dependencies:
- anaconda-webui
dist_git_branches:
- fedora-development
allowed_builders:
- m4rtink
- kkoukiou
- rvykydal
- jkonecny
- packit

View file

@ -1,31 +0,0 @@
From b4b09f54b39b288f326b4734c13d27aa710e69d3 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Mon, 2 Jun 2025 12:28:49 -0700
Subject: [PATCH] Don't pass --no-x11 to gnome-kiosk
This is also gone when mutter is built without X11 support, as
is now the case in Rawhide and ELN, and probably soon in EL 10.
Don't backport this to earlier branches.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
pyanaconda/display.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/pyanaconda/display.py b/pyanaconda/display.py
index 25a0e15142..20adcf58ff 100644
--- a/pyanaconda/display.py
+++ b/pyanaconda/display.py
@@ -226,8 +226,7 @@ def do_startup_wl_actions(timeout, headless=False, headless_resolution=None):
argv.extend(["--vt", "6"])
# add the generic GNOME Kiosk invocation
- argv.extend(["gnome-kiosk", "--wayland", "--no-x11",
- "--wayland-display", constants.WAYLAND_SOCKET_NAME])
+ argv.extend(["gnome-kiosk", "--wayland", "--wayland-display", constants.WAYLAND_SOCKET_NAME])
# remote access needs gnome-kiosk to start in headless mode
if headless:
--
2.49.0

View file

@ -1,66 +0,0 @@
From c7dce0445423e7386fdc6998a6a8de50a7a39bca Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
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 <awilliam@redhat.com>
---
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

View file

@ -1,139 +0,0 @@
From c6118f65fe3583e1c15c383a8a9c6f5c1989fb22 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
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 <awilliam@redhat.com>
---
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

View file

@ -1,42 +0,0 @@
From d75de3da3648dee474ddea6639e09c071f027232 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Sat, 7 Jun 2025 13:44:25 +0200
Subject: [PATCH] Avoid buffer overflow with TIOCGWINSZ
It has 4 bytes, not 2.
On Python 3.14+, the previous version raised SystemError:
>>> from pyanaconda.argument_parsing import get_help_width
...
>>> get_help_width()
Traceback (most recent call last):
File "<python-input-1>", line 1, in <module>
get_help_width()
~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/site-packages/pyanaconda/argument_parsing.py", line 68, in get_help_width
data = fcntl.ioctl(sys.stdout, termios.TIOCGWINSZ, '1234')
SystemError: buffer overflow
See https://github.com/python/cpython/commit/c2eaeee3dc3306ca486b0377b07b1a957584b691
Fixes https://bugzilla.redhat.com/2370944
---
pyanaconda/argument_parsing.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/argument_parsing.py b/pyanaconda/argument_parsing.py
index e24f0f1b999..55cf7993625 100644
--- a/pyanaconda/argument_parsing.py
+++ b/pyanaconda/argument_parsing.py
@@ -65,8 +65,8 @@ def get_help_width():
return DEFAULT_HELP_WIDTH
try:
- data = fcntl.ioctl(sys.stdout, termios.TIOCGWINSZ, '1234')
- columns = int(struct.unpack('hh', data)[1])
+ data = fcntl.ioctl(sys.stdout, termios.TIOCGWINSZ, '12345678')
+ columns = int(struct.unpack('hhhh', data)[1])
except (OSError, ValueError) as e:
log.info("Unable to determine terminal width: %s", e)
print("terminal size detection failed, using default width")

View file

@ -1,70 +0,0 @@
From 11b7e782d8de7da49f0b4e650e8fc0c60f69304f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Sun, 8 Jun 2025 17:46:29 +0200
Subject: [PATCH] Avoid the multiprocessing forkserver method with dnf
Fixes:
Traceback (most recent call last):
File "/usr/lib64/python3.14/site-packages/pyanaconda/core/threads.py", line 281, in run
threading.Thread.run(self)
~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/usr/lib64/python3.14/threading.py", line 1023, in run
self._target(*self._args, **self._kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.14/site-packages/pyanaconda/modules/common/task/task.py", line 97, in _thread_run_callback
self._task_run_callback()
~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/site-packages/pyanaconda/modules/common/task/task.py", line 110, in _task_run_callback
self._set_result(self.run())
~~~~~~~~^^
File "/usr/lib64/python3.14/site-packages/pyanaconda/modules/payloads/payload/dnf/installation.py", line 281, in run
self._dnf_manager.install_packages(self.report_progress)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.14/site-packages/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py", line 664, in install_packages
process.start()
~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
~~~~~~~~~~~^^^^^^
File "/usr/lib64/python3.14/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib64/python3.14/multiprocessing/context.py", line 300, in _Popen
return Popen(process_obj)
File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 35, in __init__
super().__init__(process_obj)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib64/python3.14/multiprocessing/popen_fork.py", line 20, in __init__
self._launch(process_obj)
~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib64/python3.14/multiprocessing/popen_forkserver.py", line 47, in _launch
reduction.dump(process_obj, buf)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.14/multiprocessing/reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
TypeError: cannot pickle 'SwigPyObject' object
---
pyanaconda/modules/payloads/payload/dnf/dnf_manager.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py b/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py
index 925ed73790a..e7c25369912 100644
--- a/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py
+++ b/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py
@@ -652,9 +652,12 @@ def install_packages(self, callback, timeout=20):
:param timeout: a time out of a failed process in seconds
:raise PayloadInstallationError: if the installation fails
"""
- queue = multiprocessing.Queue()
+ # SwigPyObjects are not picklable, so force the fork method
+ # On Python 3.14+, forkserver is the default (and it pickles)
+ context = multiprocessing.get_context(method="fork")
+ queue = context.Queue()
display = TransactionProgress(queue)
- process = multiprocessing.Process(
+ process = context.Process(
target=self._run_transaction,
args=(self._base, display)
)

View file

@ -1,3 +0,0 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 1.13.0.post1.dev2+g84134016c.

File diff suppressed because it is too large Load diff

View file

@ -1,12 +0,0 @@
summary: Integration tests for anaconda
discover:
how: fmf
filter: 'tag: integration'
execute:
how: tmt
finish:
how: shell
script: command -v journalctl && journalctl -a || true

View file

@ -1,36 +0,0 @@
# The purpose of this file is to overwrite some default config
# of rpmlint, which may not fit our project needs / specification
Filters = [
# Discard no-binary error for anaconda packages which cant be a noarch type
'anaconda.x86_64: E: no-binary',
'anaconda-core-debuginfo.x86_64: E: no-binary',
'anaconda-install-env-deps.x86_64: E: no-binary',
'anaconda-install-img-deps.x86_64: E: no-binary',
# Discard explicite library dependencies
'explicit-lib-dependency flatpak-libs',
'explicit-lib-dependency libblockdev-lvm-dbus',
'explicit-lib-dependency libblockdev-tools',
'explicit-lib-dependency librsvg2',
# Discard warning about binary debug symbols. Those are our helper
# binaries and it is not important for them to be stripped
'unstripped-binary-or-object /usr/libexec/anaconda/dd_extract',
'unstripped-binary-or-object /usr/libexec/anaconda/dd_list',
'unstripped-binary-or-object /usr/lib64/libAnacondaWidgets*',
'unstripped-binary-or-object /usr/lib64/glade/modules/libAnacondaWidgets*',
# Discard symbolic link warnings.
'dangling-symlink /usr/share/anaconda/window-manager/glib-2.0/schemas/org.gnome.*',
'dangling-relative-symlink /usr/lib/.build-id/*',
# Discard missing manual pages error
'no-manual-page-for-binary liveinst',
'no-manual-page-for-binary anaconda-cleanup',
'no-manual-page-for-binary anaconda-disable-nm-ibft-plugin',
'no-manual-page-for-binary anaconda-nm-disable-autocons',
'no-manual-page-for-binary instperf',
'no-manual-page-for-binary instperf',
'no-manual-page-for-binary anaconda',
'no-manual-page-for-binary handle-sshpw',
# Discard missing README / documentation for package
'no-documentation',
# Discard spelling errors for project commonly used words
'spelling-error .* en_US (metapackage|kickstarts|iso|eg|lorax) ',
]

View file

@ -1 +1 @@
SHA512 (anaconda-44.11.tar.bz2) = 30e8c3bde05afefe7cb18ba17d84fc31007e9086932f47136e74e432563786cd577123f7c904bc3ddd5e5c5f6f722dae3cedbc131d5871c06f7829ba632ffaf7
SHA512 (anaconda-33.25.4.tar.bz2) = 85a621e4f1c6b5f3cf2a93c792b27f7c7f4dcb103af590b8e72fced69481781be0bca505f13b824be47a80a198481e2f2b2d06876f209844cfc0f125a61c554f

View file

@ -1,22 +0,0 @@
summary: Dirinstall test on regular os
contact: Radek Vykydal <rvykydal@redhat.com>
path: /tests/dirinstall
test: ./dirinstall.sh
duration: 1h
tag: [integration]
/text:
summary: Dirinstall test on regular os - text UI
require:
- anaconda
environment:
ANACONDA_UI_MODE: text
/vnc:
summary: Dirinstall test on regular os - vnc UI
enabled: false
require:
- anaconda
- gnome-kiosk
environment:
ANACONDA_UI_MODE: vnc

View file

@ -1,47 +0,0 @@
#!/bin/sh -eux
# Remove webui because it does not support much anything yet
# Possible alternative: rpm -E --nodeps anaconda-webui
dnf remove -y anaconda-webui
# Prepare test work directory
WORK_DIR=$(mktemp -d /var/tmp/dirinstall.XXXXXX)
# Create kickstart
KICKSTART_PATH=${WORK_DIR}/ks.cfg
source ./repositories
TEST_KICKSTART=./ks.dirinstall.cfg
# Dump URLs of installation repositories found in local repositories whose names are configured in 'repositories' file
echo "url --metalink=$(dnf repoinfo $BASE_REPO | grep -e "^ *Metalink *:" | cut -d: -f2- | sed 's/^ *//')" > ${KICKSTART_PATH}
for repo in $REPOS; do
echo "repo --name=$repo --metalink=$(dnf repoinfo $repo | grep "^ *Metalink *:" | cut -d: -f2- | sed 's/^ *//')" >> ${KICKSTART_PATH}
done
cat ${TEST_KICKSTART} >> ${KICKSTART_PATH}
# Log the kickstart
cat ${KICKSTART_PATH}
# Run dirinstall
INSTALL_DIR=${WORK_DIR}/install_dir
mkdir ${INSTALL_DIR}
anaconda --dirinstall ${INSTALL_DIR} --kickstart ${KICKSTART_PATH} --${ANACONDA_UI_MODE} --noninteractive 2>&1
# Remove test work directory
rm -rf ${WORK_DIR}
# Show and remove the logs for this anaconda run
./show_logs.sh

View file

@ -1,12 +0,0 @@
# The repository configuration (url, repo) needs to be added here.
# It varies by the product and version we are running on / testing
lang en_US.UTF-8
keyboard --vckeymap=us --xlayouts='us'
rootpw --plaintext redhat
timezone --utc Europe/Prague
shutdown
%packages
%end

View file

@ -1,12 +0,0 @@
# Names of local repositories whose urls will be used for installation
# Repositories for "Fedora X" needs to be dynamically resolved based on host
if dnf repoinfo --enabled | grep -qe "Repo ID *: rawhide"; then
BASE_REPO="rawhide"
else
BASE_REPO="fedora"
fi
# Additional repositories
REPOS=""
#REPOS="fedora-modular"

View file

@ -1,21 +0,0 @@
#!/bin/sh -x
ls /tmp
LOG_DIR=/tmp
cd ${LOG_DIR}
KS_SCRIPT_LOGS=$(ls ks-script-*.log)
cd -
ANACONDA_LOGS="anaconda.log storage.log packaging.log program.log dbus.log dnf.librepo.log ${KS_SCRIPT_LOGS}"
for log in ${ANACONDA_LOGS} ; do
LOG_PATH=${LOG_DIR}/${log}
if [ -f ${LOG_PATH} ]; then
echo "----------------------- Dumping log file $LOG_PATH:"
cat $LOG_PATH
# clear for the following test
rm $LOG_PATH
fi
done