commit 024bf2ec6ac413c5852086027f18998a90e9917c Author: JIAYI YIN Date: Fri Oct 20 12:13:19 2023 +0800 init commit diff --git a/Support-configuration-of-additional-boot-arguments.patch b/Support-configuration-of-additional-boot-arguments.patch new file mode 100644 index 0000000..0c49d41 --- /dev/null +++ b/Support-configuration-of-additional-boot-arguments.patch @@ -0,0 +1,80 @@ +From 65258a808a703de25f790b2cb5aff8e734228ad1 Mon Sep 17 00:00:00 2001 +From: Qiumiao Zhang +Date: Mon, 7 Nov 2022 11:33:53 +0800 +Subject: [PATCH] Support configuration of additional boot arguments + +--- + data/anaconda.conf | 2 ++ + pyanaconda/argument_parsing.py | 2 +- + pyanaconda/core/configuration/bootloader.py | 8 ++++++++ + pyanaconda/modules/storage/bootloader/base.py | 5 +++++ + 4 files changed, 16 insertions(+), 1 deletion(-) + +diff --git a/data/anaconda.conf b/data/anaconda.conf +index 703114a..b80440e 100644 +--- a/data/anaconda.conf ++++ b/data/anaconda.conf +@@ -159,6 +159,8 @@ preserved_arguments = + biosdevname ipv6.disable net.ifnames net.ifnames.prefix + nosmt + ++# Arguments added by default. ++additional_arguments = + + [Storage] + # Enable dmraid usage during the installation. +diff --git a/pyanaconda/argument_parsing.py b/pyanaconda/argument_parsing.py +index 75f28f4..dd5ecdf 100644 +--- a/pyanaconda/argument_parsing.py ++++ b/pyanaconda/argument_parsing.py +@@ -589,7 +589,7 @@ def getArgumentParser(version_string, boot_cmdline=None): + + # some defaults change based on cmdline flags + if boot_cmdline is not None: +- if "console" in boot_cmdline: ++ if "console" in boot_cmdline and "inst.text" in boot_cmdline: + ap.set_defaults(display_mode=DisplayModes.TUI) + + return ap +diff --git a/pyanaconda/core/configuration/bootloader.py b/pyanaconda/core/configuration/bootloader.py +index 6746e45..7b782d3 100644 +--- a/pyanaconda/core/configuration/bootloader.py ++++ b/pyanaconda/core/configuration/bootloader.py +@@ -69,3 +69,11 @@ class BootloaderSection(Section): + :return: a list of kernel arguments + """ + return self._get_option("preserved_arguments", str).split() ++ ++ @property ++ def additional_arguments(self): ++ """Arguments added by default. ++ ++ :return: a list of kernel arguments ++ """ ++ return self._get_option("additional_arguments", str).split() +diff --git a/pyanaconda/modules/storage/bootloader/base.py b/pyanaconda/modules/storage/bootloader/base.py +index be039c4..533d528 100644 +--- a/pyanaconda/modules/storage/bootloader/base.py ++++ b/pyanaconda/modules/storage/bootloader/base.py +@@ -734,6 +734,7 @@ class BootLoader(object): + self._set_extra_boot_args(bootloader_proxy) + self._set_storage_boot_args(storage) + self._preserve_some_boot_args() ++ self._add_additional_boot_args() + self._set_graphical_boot_args() + self._set_security_boot_args() + +@@ -908,6 +909,10 @@ class BootLoader(object): + + self.boot_args.add(new_arg) + ++ def _add_additional_boot_args(self): ++ for opt in conf.bootloader.additional_arguments: ++ self.boot_args.add(opt) ++ + def _set_graphical_boot_args(self): + """Set up the graphical boot.""" + args = [] +-- +2.19.1 + diff --git a/add-passwd-policy.patch b/add-passwd-policy.patch new file mode 100644 index 0000000..b993e7a --- /dev/null +++ b/add-passwd-policy.patch @@ -0,0 +1,45 @@ +From 3562cad5ea86afc5d2ce0ead649e64cf13e39128 Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Mon, 7 Nov 2022 14:48:28 +0800 +Subject: [PATCH] add passwd policy + +--- + data/anaconda.conf | 6 +++--- + pyanaconda/input_checking.py | 4 ++++ + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/data/anaconda.conf b/data/anaconda.conf +index 703114a..07e500f 100644 +--- a/data/anaconda.conf ++++ b/data/anaconda.conf +@@ -308,9 +308,9 @@ can_change_users = False + # strict Require the minimum quality. + # + password_policies = +- root (quality 1, length 6) +- user (quality 1, length 6, empty) +- luks (quality 1, length 6) ++ root (quality 1, length 8, strict) ++ user (quality 1, length 8, empty, strict) ++ luks (quality 1, length 8, strict) + + + [License] +diff --git a/pyanaconda/input_checking.py b/pyanaconda/input_checking.py +index 4482b26..4bed6c1 100644 +--- a/pyanaconda/input_checking.py ++++ b/pyanaconda/input_checking.py +@@ -421,6 +421,10 @@ class PasswordValidityCheck(InputCheck): + pw_score = 4 + status_text = _(constants.SecretStatus.STRONG.value) + ++ #disable set password without confirnation ++ if not error_message and not check_request.password_confirmation: ++ error_message = _(constants.SECRET_CONFIRM_ERROR_GUI[check_request.secret_type]) ++ + # the policy influences the overall success of the check + # - score 0 & strict == True -> success = False + # - score 0 & strict == False -> success = True +-- +2.23.0 + diff --git a/anaconda-36.16.5.tar.bz2 b/anaconda-36.16.5.tar.bz2 new file mode 100644 index 0000000..6f0fb95 Binary files /dev/null and b/anaconda-36.16.5.tar.bz2 differ diff --git a/anaconda.spec b/anaconda.spec new file mode 100644 index 0000000..02d8658 --- /dev/null +++ b/anaconda.spec @@ -0,0 +1,749 @@ +%define _empty_manifest_terminate_build 0 +%define _vendor {os_name} +Name: anaconda +Version: 36.16.5 +Release: 11 +Summary: Graphical system installer +License: GPLv2+ and MIT +URL: http://fedoraproject.org/wiki/Anaconda +Source0: https://github.com/rhinstaller/%{name}/releases/download/%{name}-%{version}-1/%{name}-%{version}.tar.bz2 +Source1: {os_name}.conf +Source2: euleros.conf +Source3: hce.conf +Source4: disable-disk-encryption.patch + +Patch9000: add-passwd-policy.patch +Patch9001: bugfix-GUI-nfs-unknown-error.patch +Patch9002: bugfix-set-up-LD_PRELOAD-for-the-Storage-and-Services-module.patch +Patch9003: bugfix-Solve-the-problem-that-the-circular-loading-progress-bar-does-not-rotate.patch +Patch9004: change-inst-repo-default-value.patch +%if ! 0%{?openEuler} +Patch9005: disable-disk-encryption.patch +%endif +Patch9006: disable-ssh-login-checkbox.patch +Patch9007: fix-hostname-info.patch +Patch9008: hide-help-button.patch +Patch9009: modify-interface-is-extended-in-Chinese-mode.patch +Patch9010: modify-timezone-and-delete-datezone-map.patch +Patch9011: remove-vender-issue-in-netdev.patch +Patch9012: Support-configuration-of-additional-boot-arguments.patch +Patch9013: support-use-sm3-crypt-user-password.patch +Patch9014: bugfix-with-use-local-kickstart-version.patch +Patch9015: bugfix-change-gnome-kiosk-to-use-metacity.patch +Patch9016: bugfix-add-log-and-background.patch +Patch9017: bugfix-add-SM3-with-tui.patch +Patch9018: bugfix-change-product-name-do-not-with-upper.patch +Patch9019: bugfix-adapt-active-connection-without-interface-name.patch + +%define dasbusver 1.3 +%define dbusver 1.2.3 +%define dnfver 3.6.0 +%define dracutver 034-7 +%define gettextver 0.19.8 +%define gtk3ver 3.22.17 +%define isomd5sumver 1.0.10 +%define langtablever 0.0.54 +%define libarchivever 3.0.4 +%define libblockdevver 2.1 +%define libxklavierver 5.4 +%define mehver 0.23-1 +%define nmver 1.0 +%define pykickstartver 3.32-1 +%define pypartedver 2.5-2 +%define pythonblivetver 1:3.4.0-1 +%define rpmver 4.15.0 +%define simplelinever 1.1-1 +%define utillinuxver 2.15.1 +BuildRequires: python3-pygments + +BuildRequires: audit-libs-devel libtool gettext-devel >= %{gettextver} gtk3-devel >= %{gtk3ver} +BuildRequires: gtk-doc gtk3-devel-docs >= %{gtk3ver} glib2-doc gobject-introspection-devel +BuildRequires: glade-devel libgnomekbd-devel libxklavier-devel >= %{libxklavierver} pango-devel +BuildRequires: make +BuildRequires: python3-kickstart >= %{pykickstartver} python3-devel systemd +BuildRequires: rpm-devel >= %{rpmver} libarchive-devel >= %{libarchivever} gdk-pixbuf2-devel +BuildRequires: libxml2 +BuildRequires: gsettings-desktop-schemas metacity + +Requires: anaconda-core = %{version}-%{release} +Requires: anaconda-tui = %{version}-%{release} +Requires: libblockdev-plugins-all >= %{libblockdevver} realmd isomd5sum >= %{isomd5sumver} +Requires: kexec-tools createrepo_c tmux gdb rsync python3-meh-gui >= %{mehver} +Requires: adwaita-icon-theme python3-kickstart +Requires: tigervnc-server-minimal libxklavier >= %{libxklavierver} libgnomekbd +Requires: nm-connection-editor keybinder3 system-logos +Requires: python3 +BuildRequires: desktop-file-utils +Requires: zenity + +Provides: anaconda-gui = %{version}-%{release} +Obsoletes: anaconda-gui < %{version}-%{release} + +Provides: anaconda-widgets = %{version}-%{release} +Obsoletes: anaconda-widgets < %{version}-%{release} + +Provides: anaconda-install-env-deps = %{version}-%{release} +Obsoletes: anaconda-install-env-deps < %{version}-%{release} + +%description +The anaconda package is a metapackage for the Anaconda installer. + +%package core +Summary: Core of the Anaconda installer +Requires: python3-libs python3-dnf >= %{dnfver} python3-blivet >= %{pythonblivetver} +Requires: python3-blockdev >= %{libblockdevver} rpm-python3 >= %{rpmver} python3-productmd +Requires: libreport-anaconda >= 2.0.21-1 libselinux-python3 python3-meh >= %{mehver} +Requires: python3-pyparted >= %{pypartedver} python3-requests python3-requests-file +Requires: python3-requests-ftp python3-kickstart >= %{pykickstartver} +Requires: python3-langtable >= %{langtablever} util-linux >= %{utillinuxver} python3-gobject-base +Requires: python3-dbus python3-pwquality python3-systemd python3-dasbus >= %{dasbusver} +Requires: python3-packaging +Requires: cracklib-dicts python3-pytz teamd NetworkManager >= %{nmver} NetworkManager-libnm >= %{nmver} +Requires: NetworkManager-team kbd chrony systemd python3-pid +Requires: python3-ordered-set >= 2.0.0 glibc-langpack-en dbus-daemon +Requires: systemd-resolved +# Required by the systemd service anaconda-fips. +Requires: crypto-policies +Requires: /usr/bin/update-crypto-policies +# required because of the rescue mode and VNC question +Requires: anaconda-tui = %{version}-%{release} +Provides: anaconda-images = %{version}-%{release} +Obsoletes: anaconda-images <= 10 +Provides: anaconda-runtime = %{version}-%{release} +Obsoletes: anaconda-runtime < %{version}-%{release} +Obsoletes: booty <= 0.107-1 + +# Ensure it's not possible for a version of grubby to be installed +# that doesn't work with btrfs subvolumes correctly... +Conflicts: grubby < 8.40-10 +Requires: usermode + +%description core +The anaconda-core package contains the program which was used to install your +system. + +%package tui +Summary: Textual user interface for the Anaconda installer +Requires: anaconda-core = %{version}-%{release} python3-simpleline >= %{simplelinever} + +%description tui +This package contains textual user interface for the Anaconda installer. + + +%package devel +Summary: Development files for anaconda-widgets +Requires: glade +Requires: %{name}-widgets = %{version}-%{release} + +%description devel +This package contains libraries and header files needed for writing the anaconda +installer. It also contains Python and Glade support files, as well as +documentation for working with this library. + +%package dracut +Summary: The anaconda dracut module +Requires: dracut >= %{dracutver} +Requires: dracut-network +Requires: dracut-live +Requires: xz +Requires: python3-kickstart + +%description dracut +The 'anaconda' dracut module handles installer-specific boot tasks and +options. This includes driver disks, kickstarts, and finding the anaconda +runtime on NFS/HTTP/FTP servers or local disks. + +%prep +%autosetup -n %{name}-%{version} -p1 + +%build +# use actual build-time release number, not tarball creation time release number +%configure ANACONDA_RELEASE=%{release} +%make_build + +%install +%make_install +%delete_la + +# install openEuler conf for anaconda +%ifarch x86_64 +sed -i "/^additional_arguments =*/ s/$/ crashkernel=512M/" %{SOURCE1} +sed -i "/^additional_arguments =*/ s/$/ panic=3 nmi_watchdog=1/" %{SOURCE2} +sed -i "/^additional_arguments =*/ s/$/ panic=3 nmi_watchdog=1/" %{SOURCE3} +%endif + +%ifarch aarch64 +sed -i "/^additional_arguments =*/ s/$/ crashkernel=1024M,high smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15/" %{SOURCE1} +sed -i "/^additional_arguments =*/ s/$/ panic=1 vga=0x317 nohz=off smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15/" %{SOURCE2} +sed -i "/^additional_arguments =*/ s/$/ panic=1 vga=0x317 nohz=off smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15/" %{SOURCE3} +%endif +install -m 0644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/%{name}/profile.d/ +install -m 0644 %{SOURCE2} %{buildroot}/%{_sysconfdir}/%{name}/profile.d/ +install -m 0644 %{SOURCE3} %{buildroot}/%{_sysconfdir}/%{name}/profile.d/ + + +# Create an empty directory for addons +install -d -m 0755 %{buildroot}%{_datadir}/anaconda/addons + +desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{buildroot}%{_datadir}/applications/liveinst.desktop + +# If no langs found, keep going +%find_lang %{name} || : + +%ldconfig_scriptlets + +%ifarch %{ix86} x86_64 +%post +update-desktop-database &> /dev/null || : + +%postun +update-desktop-database &> /dev/null || : +%endif + +#Anaconda test cases require python3-nose. However, python3-nose on 22.03 has been deleted due to aging. +#As a result, the anaconda lacks dependency. Now, the anaconda needs to remove the python3-nose dependency. +#However, the removal will affect the test cases. + +%files +%defattr(-,root,root) +%license COPYING +%{_libdir}/libAnacondaWidgets.so.* +%{_libdir}/girepository*/AnacondaWidgets*typelib +%{python3_sitearch}/gi/overrides/* +%{python3_sitearch}/pyanaconda/ui/gui/* +%exclude %{python3_sitearch}/pyanaconda/ui/gui/spokes/blivet_gui.* + +%files core +%defattr(-,root,root) +%license COPYING +%{_sbindir}/anaconda +%{_sbindir}/handle-sshpw +%{_bindir}/instperf +%{_bindir}/analog +%{_bindir}/anaconda-cleanup +%{_bindir}/anaconda-disable-nm-ibft-plugin +%{_libdir}/libAnacondaWidgets.so +%{_prefix}/libexec/anaconda +%{_prefix}/lib/systemd/system-generators/* +%{_unitdir}/* +%{_datadir}/anaconda +%{_datadir}/locale/* +%{python3_sitearch}/pyanaconda +%exclude %{_prefix}/libexec/anaconda/dd_* +%exclude %{_libdir}/libAnacondaWidgets.so +%exclude %{_datadir}/gtk-doc +%exclude %{_datadir}/anaconda/ui/spokes/blivet_gui.* +%exclude %{_datadir}/glade/catalogs/AnacondaWidgets.xml +%exclude %{python3_sitearch}/pyanaconda/rescue.py* +%exclude %{python3_sitearch}/pyanaconda/__pycache__/rescue.* +%exclude %{python3_sitearch}/pyanaconda/ui/gui/* +%exclude %{python3_sitearch}/pyanaconda/ui/tui/* +%{_bindir}/analog +%{_bindir}/anaconda-cleanup +%dir %{_sysconfdir}/%{name} +%config %{_sysconfdir}/%{name}/* +%dir %{_sysconfdir}/%{name}/conf.d +%config %{_sysconfdir}/%{name}/conf.d/* +%dir %{_sysconfdir}/%{name}/profile.d +%config %{_sysconfdir}/%{name}/profile.d/* +%{_sbindir}/liveinst +%{_bindir}/liveinst +%{_libexecdir}/liveinst-setup.sh +%{_datadir}/applications/*.desktop +%{_sysconfdir}/xdg/autostart/*.desktop +%config(noreplace) %{_sysconfdir}/pam.d/* +%config(noreplace) %{_sysconfdir}/security/console.apps/* + +%files tui +%{python3_sitearch}/pyanaconda/rescue.py +%{python3_sitearch}/pyanaconda/__pycache__/rescue.* +%{python3_sitearch}/pyanaconda/ui/tui/* + +%files devel +%{_libdir}/libAnacondaWidgets.so +%{_libdir}/glade/modules/libAnacondaWidgets.so +%{_includedir}/* +%{_datadir}/glade/catalogs/AnacondaWidgets.xml +%{_datadir}/gtk-doc + +%files dracut +%dir %{_prefix}/lib/dracut/modules.d/80%{name} +%{_prefix}/lib/dracut/modules.d/80%{name}/* +%{_prefix}/libexec/anaconda/dd_* + +%changelog +* Tue Dec 20 2022 Qingqing Li - 36.16.5-11 +- Type:feature +- ID:NA +- SUG:NA +- DESC:cgroup files is a additional enhanced cgroup feature, which will + limit cgroup opened files, add cgroup_disable=files to + default cmdline to disable this feature to keep cgroup's default behavior. + +* Thu Dec 15 2022 sunhai - 36.16.5-10 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix conf of storage + +* Wed Dec 14 2022 sunhai - 36.16.5-9 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:adapt active connection without interface name + +* Sat Dec 10 2022 sunhai - 36.16.5-8 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:ignore detect enable smt + open swap in storage + +* Tue Nov 29 2022 sunhai - 36.16.5-7 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:change product name not with upper + add SM3 with tui + +* Thu Nov 24 2022 sunhai - 36.16.5-6 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:add logo with install + the kickstart version change to patch + +* Wed Nov 23 2022 sunhai - 36.16.5-5 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:pxe kickstart version with local pykickstart + and with build save patch by source4 + +* Mon Nov 21 2022 sunhai - 36.16.5-4 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:open disk encryption on openEuler + +* Tue Nov 15 2022 sunhai - 36.16.5-3 +- ID:NA +- SUG:NA +- DESC: fix install with tui and gui + +* Fri Nov 11 2022 sunhai - 36.16.5-2 +- ID:NA +- SUG:NA +- DESC: use kickstart version with local pykickstart + +* Tue Nov 08 2022 sunhai - 36.16.5-1 +- ID:NA +- SUG:NA +- DESC:update anaconda to 36.16.5 + +* Mon Mar 28 2022 Wenlong Zhang - 33.19-49 +- ID:NA +- SUG:NA +- DESC: add loongarch support for anaconda + +* Tue Oct 18 2022 wuzx - 33.19-48 +- Type:feature +- CVE:NA +- SUG:NA +- DESC:Add sw64 architecture + +* Wed Sep 21 2022 sunhai - 33.19-47 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:solve the problem that the circular loading progress bar does not rotate + +* Tue Aug 23 2022 zhangqiumiao - 33.19-46 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:fix missing group information in dnf + +* Fri Aug 5 2022 wanglu - 33.19-45 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:fix a mistake about revert "Set default entry to the BLS id instead of the entry index" + +* Thu Aug 4 2022 wanglu - 33.19-44 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:revert "Set default entry to the BLS id instead of the entry index" + +* Fri Apr 8 2022 zhangqiumiao - 33.19-43 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:change the grub2 user.cfg permission from 0700 to 0600 + +* Thu Apr 7 2022 zhangqiumiao - 33.19-42 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:add support for configuration of additional boot arguments + change the startup mode of do_transaction sub process to spawn + +* Sat Mar 05 2022 gaihuiying - 33.19-41 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:separate anaconda-dracut + +* Mon Feb 21 2022 gaihuiying - 33.19-40 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:remove yelp and foce-utils from requires + +* Sun Jan 30 2022 yanan - 33.19-39 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:remove authconfig support + +* Thu Jan 27 2022 liufushou - 33.19-38 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:let networking up after reboot + +* Wed Jan 26 2022 zhujunhao - 33.19-37 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:support use sm3 crypt user password + +* Sun Jan 23 2022 liuxin - 33.19-36 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Cancel planned manual update of system time on turning ntp on + +* Sat Jan 22 2022 fengtao - 33.19-35 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:revert "fix deadlock when forking in multithread" + +* Thu Jan 13 2022 gaihuiying - 33.19-34 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:remove flatpak support in source code + +* Tue Jan 11 2022 gaihuiying - 33.19-33 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:remove anaconda-user-help dependency + +* Fri Dec 31 2021 xihaochen - 33.19-32 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:remove flatpak dependency + +* Fri Dec 31 2021 xihaochen - 33.19-31 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:remove python3-nose dependency + +* Fri Oct 29 2021 zhujunhao - 33.19-30 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:fix boot options generated by dracut module + +* Sat Aug 28 2021 yanan - 33.19-29 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:fix deadlock when forking in multithread + +* Mon Aug 23 2021 wangce - 33.19-28 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Change sidebar background size + +* Sat Aug 7 2021 zhujunhao - 33.19-27 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:delete date zone map + +* Thu Jun 24 2021 youyifeng - 33.19-26 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:change inst.repo default value + +* Mon Jun 21 2021 gaihuiying - 33.19-25 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:change topbar background size + +* Mon Jun 21 2021 zhangqiumiao - 33.19-24 +- Type:requirement +- ID:NA +- SUG:NA +- DESC:replace openEuler by %{_vendor} + +* Mon Jun 21 2021 liuxin - 33.19-23 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Fix section headers in docstrings + +* Wed May 19 2021 liuxin - 33.19-22 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Fix issue when ns_info cannot be retrieved for NVDimm namespace + +* Sat May 8 2021 fengtao - 33.19-21 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix xorg timeout and throw exception + +* Thu Apr 29 2021 zhangrui - 33.19-20 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:do not mount dbus sources + +* Mon Mar 29 2021 xuxiaolong - 33.19-19 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:sync 50 bugfix commit from github + +* Sat Mar 27 2021 zhangrui - 33.19-18 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:reset the state of the custom partitioning spoke + +* Mon Jan 25 2021 liuxin - 33.19-17 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Propagate a lazy proxy o the storage model + +* Thu Jan 14 2021 yuboyun - 33.19-16 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:set up LD_PRELOAD for the Storage and Services module + +* Thu Dec 10 2020 zhouyihang - 33.19-15 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Change length limit of hostname from 255 to 64 + +* Fri Dec 04 2020 gaihuiying - 33.19-14 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:improve ntp servers to fix unkown error + +* Sat Nov 28 2020 lunankun - 33.19-13 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix issue of iscsi_tcp and sha256 not found + +* Mon Oct 26 2020 fengtao - 33.19-12 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:bugfix for partitioning when sda exists a ext4 filesystem + +* Sat Sep 26 2020 fengtao - 33.19-11 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:add dnf transactions timeout + +* Thu Sep 17 2020 zhuqingfu - 33.19-10 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:do not require treeinfo + +* Wed Sep 16 2020 xiaqirong - 33.19-9 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:disable disk encryption + +* Fri Sep 11 2020 fengtao - 33.19-8 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:add boot args for smmu and video + +* Thu Sep 10 2020 zhangqiumiao - 33.19-7 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:revert add-passwd-check-policy.patch and bugfix-fix-encrypt-weak-passphrase-save.patch + fix password policy + +* Fri Sep 4 2020 zhangqiumiao - 33.19-6 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix password policy + +* Mon Aug 31 2020 zhangqiumiao - 33.19-5 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix kdump patch err + +* Fri Aug 28 2020 zhangqiumiao - 33.19-4 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:remove dependency on blivet-gui-runtime + +* Fri Aug 7 2020 fengtao - 33.19-3 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix stage2 as default sources + +* Tue Jul 14 2020 zhangqiumiao - 33.19-2 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:add kdump parameter into kernel cmdline + +* Fri Jun 19 2020 fengtao - 33.19-1 +- update version to 33.19 + +* Mon Mar 9 2020 openEuler Buildteam - 29.24.7-28 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:add boot options for dummy + +* Wed Feb 12 2020 openEuler Buildteam - 29.24.7-27 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:Remove initThreading method from pyanaconda.threading + +* Thu Feb 06 2020 openEuler Buildteam - 29.24.7-26 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:modify network hostname dot error + +* Thu Jan 16 2020 openEuler Buildteam - 29.24.7-25 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:modify default timezone and zh_CN.po + +* Thu Jan 16 2020 openEuler Buildteam - 29.24.7-24 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix setup fail in decode + +* Thu Jan 16 2020 openEuler Buildteam - 29.24.7-23 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:modify openeuler in welcome to lowercase + +* Thu Jan 16 2020 openEuler Buildteam - 29.24.7-22 +- optimization the patch + +* Wed Jan 15 2020 openEuler Buildteam - 29.24.7-21 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:add boot options for kdump. + +* Sat Jan 11 2020 openEuler Buildteam - 29.24.7-20 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:add boot options for raid 3408 + +* Wed Jan 8 2020 openEuler Buildteam - 29.24.7-19 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:modify arguments parsing + +* Wed Jan 1 2020 openEuler Buildteam - 29.24.7-18 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:bugfix for encrypting partition + +* Mon Dec 30 2019 openEuler Buildteam - 29.24.7-17 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:bugfix in setup + +* Mon Dec 30 2019 openEuler Buildteam - 29.24.7-16 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:bugfix in network spokes when add virtual devices + + +* Mon Dec 30 2019 openEuler Buildteam - 29.24.7-15 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix bug + +* Mon Dec 23 2019 openEuler Buildteam - 29.24.7-14 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:modify the patches + +* Mon Dec 16 2019 openEuler Buildteam - 29.24.7-13 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC:modify interface is extended in Chinese mode + +* Thu Dec 12 2019 openEuler Buildteam - 29.24.7-12 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC:add quiet cmdline args for x86 + +* Tue Oct 22 2019 openEuler Buildteam - 29.24.7-11 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC:add dracut-live packages as requires + +* Mon Oct 21 2019 openEuler Buildteam - 29.24.7-10 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC:add anaconda-core and anaconda-tui package + +* Sun Oct 13 2019 openEuler Buildteam - 29.24.7-9 +- Package init diff --git a/anaconda.yaml b/anaconda.yaml new file mode 100644 index 0000000..73f7b47 --- /dev/null +++ b/anaconda.yaml @@ -0,0 +1,4 @@ +version_control: github +src_repo: rhinstaller/anaconda +tag_prefix: anaconda- +seperator: . diff --git a/bugfix-GUI-nfs-unknown-error.patch b/bugfix-GUI-nfs-unknown-error.patch new file mode 100644 index 0000000..32d36f2 --- /dev/null +++ b/bugfix-GUI-nfs-unknown-error.patch @@ -0,0 +1,26 @@ +From 7af95c3ee0fe3f0c2a5ec6fb05673f10c19441f9 Mon Sep 17 00:00:00 2001 +From: t_feng +Date: Thu, 18 Jun 2020 22:48:03 +0800 +Subject: [PATCH] bugfix GUI nfs unknown error + +--- + pyanaconda/ui/gui/spokes/installation_source.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/pyanaconda/ui/gui/spokes/installation_source.py b/pyanaconda/ui/gui/spokes/installation_source.py +index 396cad6..16e81b4 100644 +--- a/pyanaconda/ui/gui/spokes/installation_source.py ++++ b/pyanaconda/ui/gui/spokes/installation_source.py +@@ -1141,6 +1141,9 @@ class SourceSpoke(NormalSpoke, GUISpokeInputCheckHandler, SourceSwitchHandler): + else: + return _("Remote directory is required") + ++ if ":" not in url_string or len(url_string.split(":")) != 2: ++ return _("Server must be specified as SERVER:/PATH") ++ + return InputCheck.CHECK_OK + + def _check_url_entry(self, inputcheck): +-- +2.23.0 + diff --git a/bugfix-Solve-the-problem-that-the-circular-loading-progress-bar-does-not-rotate.patch b/bugfix-Solve-the-problem-that-the-circular-loading-progress-bar-does-not-rotate.patch new file mode 100644 index 0000000..b9ea22e --- /dev/null +++ b/bugfix-Solve-the-problem-that-the-circular-loading-progress-bar-does-not-rotate.patch @@ -0,0 +1,25 @@ +From ccc28e983cd2c1f1f02fd00b9b1659fb572bac1b Mon Sep 17 00:00:00 2001 +From: yueyuankun +Date: Tue, 23 Aug 2022 15:53:18 +0800 +Subject: [PATCH] Solve the problem that sometimes the circular + loading progress bar does not rotate + +--- + pyanaconda/ui/gui/spokes/installation_progress.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/pyanaconda/ui/gui/spokes/installation_progress.py b/pyanaconda/ui/gui/spokes/installation_progress.py +index 0de742b..5ed3424 100644 +--- a/pyanaconda/ui/gui/spokes/installation_progress.py ++++ b/pyanaconda/ui/gui/spokes/installation_progress.py +@@ -85,6 +85,7 @@ class ProgressSpoke(StandaloneSpoke): + + if code == progressQ.PROGRESS_CODE_INIT: + self._init_progress_bar(args[0]) ++ gtk_call_once(self._spinner.start) + elif code == progressQ.PROGRESS_CODE_STEP: + self._step_progress_bar() + elif code == progressQ.PROGRESS_CODE_MESSAGE: +-- +2.27.0 + diff --git a/bugfix-adapt-active-connection-without-interface-name.patch b/bugfix-adapt-active-connection-without-interface-name.patch new file mode 100644 index 0000000..393a8ea --- /dev/null +++ b/bugfix-adapt-active-connection-without-interface-name.patch @@ -0,0 +1,26 @@ +From ade550fb89b10cf218ce96541e1c540a2a8a7ea1 Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Wed, 14 Dec 2022 11:04:41 +0800 +Subject: [PATCH] adapt active connection without interface-name + +--- + pyanaconda/modules/network/initialization.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/pyanaconda/modules/network/initialization.py b/pyanaconda/modules/network/initialization.py +index c7f0ba4..85a1da7 100644 +--- a/pyanaconda/modules/network/initialization.py ++++ b/pyanaconda/modules/network/initialization.py +@@ -135,6 +135,9 @@ class ApplyKickstartTask(Task): + def _find_initramfs_connection_of_iface(self, iface): + device = self._nm_client.get_device_by_iface(iface) + if device: ++ active_connection = device.get_active_connection() ++ if active_connection: ++ return active_connection.get_connection() + cons = device.get_available_connections() + for con in cons: + if con.get_interface_name() == iface and con.get_id() == iface: +-- +2.23.0 + diff --git a/bugfix-add-SM3-with-tui.patch b/bugfix-add-SM3-with-tui.patch new file mode 100644 index 0000000..01d77d9 --- /dev/null +++ b/bugfix-add-SM3-with-tui.patch @@ -0,0 +1,173 @@ +From 1a11874c57156e576620dd396b4357ec9bab2cc4 Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Tue, 29 Nov 2022 09:34:09 +0800 +Subject: [PATCH] add SM3 with tui + +--- + pyanaconda/ui/tui/spokes/root_password.py | 81 ++++++++++++++++++++--- + pyanaconda/ui/tui/tuiobject.py | 7 +- + 2 files changed, 77 insertions(+), 11 deletions(-) + +diff --git a/pyanaconda/ui/tui/spokes/root_password.py b/pyanaconda/ui/tui/spokes/root_password.py +index 3c5ba16..dfaca4e 100644 +--- a/pyanaconda/ui/tui/spokes/root_password.py ++++ b/pyanaconda/ui/tui/spokes/root_password.py +@@ -26,7 +26,11 @@ from pyanaconda.core.i18n import N_, _ + from pyanaconda.modules.common.constants.services import USERS + from pyanaconda.core.constants import PASSWORD_POLICY_ROOT + +-from simpleline.render.widgets import TextWidget ++from simpleline.render.containers import ListColumnContainer ++from simpleline.render.prompt import Prompt ++from simpleline.render.screen import InputState ++from simpleline.render.screen_handler import ScreenHandler ++from simpleline.render.widgets import TextWidget, CheckboxWidget + + + class PasswordSpoke(FirstbootSpokeMixIn, NormalTUISpoke): +@@ -50,20 +54,18 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalTUISpoke): + return FirstbootSpokeMixIn.should_run(environment, data) + + def __init__(self, data, storage, payload): +- NormalTUISpoke.__init__(self, data, storage, payload) +- self.initialize_start() ++ super().__init__(data, storage, payload) + self.title = N_("Root password") +- self.input_required = False +- +- self._password = None +- + self._users_module = USERS.get_proxy() +- self.initialize_done() ++ self._sm3_config = False ++ ++ def _set_sm3_config(self, args): ++ self._sm3_config = not self._sm3_config + + @property + def completed(self): + return self._users_module.IsRootPasswordSet +- ++ + @property + def showable(self): + return can_modify_root_configuration(self._users_module) +@@ -77,6 +79,59 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalTUISpoke): + def status(self): + return get_root_configuration_status(self._users_module) + ++ def initialize(self): ++ self.initialize_start() ++ NormalTUISpoke.initialize(self) ++ self.initialize_done() ++ ++ def refresh(self, args=None): ++ """ Refresh screen. """ ++ NormalTUISpoke.refresh(self, args) ++ ++ self._container = ListColumnContainer(1) ++ ++ msg = _("SM3 encrypt") ++ sm3_check = CheckboxWidget(title=msg, completed=self._sm3_config) ++ self._container.add(sm3_check, self._set_sm3_config) ++ ++ self.window.add_with_separator(self._container) ++ ++ def input(self, args, key): ++ """Handle the user input.""" ++ if self._container.process_user_input(key): ++ return InputState.PROCESSED_AND_REDRAW ++ ++ if key.lower() == Prompt.CONTINUE: ++ spoke = RootPasswordSpoke( ++ self.data, ++ self.storage, ++ self.payload, ++ self._sm3_config, ++ ) ++ ScreenHandler.push_screen_modal(spoke) ++ return InputState.PROCESSED_AND_CLOSE ++ ++ return super().input(args, key) ++ ++ ++class RootPasswordSpoke(NormalTUISpoke): ++ """ ++ .. inheritance-diagram:: PasswordSpoke ++ :parts: 3 ++ """ ++ ++ def __init__(self, data, storage, payload, sm3_config): ++ NormalTUISpoke.__init__(self, data, storage, payload) ++ self.initialize_start() ++ self.title = N_("Root password") ++ self.input_required = False ++ ++ self._password = None ++ self._sm3_config = sm3_config ++ ++ self._users_module = USERS.get_proxy() ++ self.initialize_done() ++ + def refresh(self, args=None): + NormalTUISpoke.refresh(self, args) + +@@ -85,10 +140,15 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalTUISpoke): + + def show_all(self): + super().show_all() ++ if self._sm3_config: ++ algo = "sm3" ++ else: ++ algo = None + + password_dialog = PasswordDialog( + title=_("Password"), +- policy_name=PASSWORD_POLICY_ROOT ++ policy_name=PASSWORD_POLICY_ROOT, ++ func_args=(algo,) + ) + password_dialog.no_separator = True + self._password = password_dialog.run() +@@ -101,6 +161,7 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalTUISpoke): + self.close() + + def apply(self): ++ + self._users_module.SetCryptedRootPassword(self._password) + if self._password: + self._users_module.SetRootAccountLocked(False) +diff --git a/pyanaconda/ui/tui/tuiobject.py b/pyanaconda/ui/tui/tuiobject.py +index 6cb439b..c642931 100644 +--- a/pyanaconda/ui/tui/tuiobject.py ++++ b/pyanaconda/ui/tui/tuiobject.py +@@ -209,12 +209,14 @@ class PasswordDialog(Dialog): + report_func=reporting_callback, + process_func=crypt_password, + secret_type=constants.SecretType.PASSWORD, ++ func_args=None, + message=None): + super().__init__(title, report_func=report_func) + self._no_separator = False + self._policy = input_checking.get_policy(policy_name) + self._secret_type = secret_type + self._process_password = process_func ++ self._func_args = func_args + self._dialog_message = message + + def run(self): +@@ -292,7 +294,10 @@ class PasswordDialog(Dialog): + if any(char not in constants.PW_ASCII_CHARS for char in password): + self._report(_(constants.SECRET_ASCII[self._secret_type])) + +- return self._process_password(password) ++ if self._func_args == None: ++ return self._process_password(password) ++ else: ++ return self._process_password(password, *self._func_args) + + def _report(self, message): + if self._report_func: +-- +2.28.0.windows.1 + diff --git a/bugfix-add-log-and-background.patch b/bugfix-add-log-and-background.patch new file mode 100644 index 0000000..7645f9e --- /dev/null +++ b/bugfix-add-log-and-background.patch @@ -0,0 +1,46 @@ +From 8b5428e400ac80d57ae6bc6b0ec792e17a62a04e Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Thu, 24 Nov 2022 11:13:58 +0800 +Subject: [PATCH] add log and background + +--- + data/anaconda-gtk.css | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/data/anaconda-gtk.css b/data/anaconda-gtk.css +index 7de933d..7c6643a 100644 +--- a/data/anaconda-gtk.css ++++ b/data/anaconda-gtk.css +@@ -98,12 +98,18 @@ infobar.error { + @define-color anaconda_bg_color #2f4265; + + .logo-sidebar { ++ background-image: url('/usr/share/anaconda/pixmaps/sidebar-bg.png'); ++ background-size: 100% 100%; ++ background-repeat: no-repeat; + background-color: @anaconda_bg_color; + } + + /* This is a placeholder to be filled by a product-specific logo. */ + .logo { +- background-image: none; ++ background-image: url('/usr/share/anaconda/pixmaps/sidebar-logo.png'); ++ background-position: 50% 20px; ++ background-size: 90%; ++ background-repeat: no-repeat; + background-color: transparent; + } + +@@ -114,6 +120,9 @@ infobar.error { + } + + AnacondaSpokeWindow #nav-box { ++ background-image: url('/usr/share/anaconda/pixmaps/topbar-bg.png'); ++ background-size: 100% 100%; ++ background-repeat: no-repeat; + background-color: @anaconda_bg_color; + color: white; + } +-- +2.23.0 + diff --git a/bugfix-change-gnome-kiosk-to-use-metacity.patch b/bugfix-change-gnome-kiosk-to-use-metacity.patch new file mode 100644 index 0000000..55dfea1 --- /dev/null +++ b/bugfix-change-gnome-kiosk-to-use-metacity.patch @@ -0,0 +1,28 @@ +From 4de5376d5b1b88d1190476b8d179b677a08fe03c Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Tue, 15 Nov 2022 15:46:38 +0800 +Subject: [PATCH] change 'gnome-kiosk' to use 'metacity' + +--- + pyanaconda/display.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pyanaconda/display.py b/pyanaconda/display.py +index 880af9c..ddf24fb 100644 +--- a/pyanaconda/display.py ++++ b/pyanaconda/display.py +@@ -192,9 +192,9 @@ def do_startup_x11_actions(): + else: + xdg_data_dirs = datadir + '/window-manager:/usr/share' + +- childproc = util.startProgram(["gnome-kiosk", "--display", ":1", "--sm-disable", "--x11"], ++ childproc = util.startProgram(["metacity", "--display", ":1", "--sm-disable"], + env_add={'XDG_DATA_DIRS': xdg_data_dirs}) +- WatchProcesses.watch_process(childproc, "gnome-kiosk") ++ WatchProcesses.watch_process(childproc, "metacity") + + + def set_x_resolution(runres): +-- +2.23.0 + diff --git a/bugfix-change-product-name-do-not-with-upper.patch b/bugfix-change-product-name-do-not-with-upper.patch new file mode 100644 index 0000000..617525b --- /dev/null +++ b/bugfix-change-product-name-do-not-with-upper.patch @@ -0,0 +1,39 @@ +From 613035ac2716f99ce2ec536c4769d3dc6e6f90e5 Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Tue, 29 Nov 2022 15:44:45 +0800 +Subject: [PATCH] change product name do not with upper + +--- + pyanaconda/product.py | 4 ++-- + pyanaconda/ui/gui/spokes/welcome.py | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/pyanaconda/product.py b/pyanaconda/product.py +index b5e97d7..7fe28cb 100644 +--- a/pyanaconda/product.py ++++ b/pyanaconda/product.py +@@ -57,6 +57,6 @@ productVersion = trim_product_version_for_ui(productVersion) + + def distributionText(): + return _("%(productName)s %(productVersion)s INSTALLATION") % { +- "productName": productName.upper(), +- "productVersion": productVersion.upper() ++ "productName": productName, ++ "productVersion": productVersion + } +diff --git a/pyanaconda/ui/gui/spokes/welcome.py b/pyanaconda/ui/gui/spokes/welcome.py +index 773d5a8..3fc5ebf 100644 +--- a/pyanaconda/ui/gui/spokes/welcome.py ++++ b/pyanaconda/ui/gui/spokes/welcome.py +@@ -271,7 +271,7 @@ class WelcomeLanguageSpoke(StandaloneSpoke, LangLocaleHandler): + welcomeLabel = self.builder.get_object("welcomeLabel") + + welcomeLabel.set_text(_("WELCOME TO %(name)s %(version)s.") % +- {"name" : productName.upper(), "version" : productVersion}) # pylint: disable=no-member ++ {"name" : productName, "version" : productVersion}) # pylint: disable=no-member + + # Retranslate the language (filtering) entry's placeholder text + languageEntry = self.builder.get_object("languageEntry") +-- +2.23.0 + diff --git a/bugfix-set-up-LD_PRELOAD-for-the-Storage-and-Services-module.patch b/bugfix-set-up-LD_PRELOAD-for-the-Storage-and-Services-module.patch new file mode 100644 index 0000000..674500a --- /dev/null +++ b/bugfix-set-up-LD_PRELOAD-for-the-Storage-and-Services-module.patch @@ -0,0 +1,65 @@ +From 769f395e80c92972900ef348d7dd747014666f70 Mon Sep 17 00:00:00 2001 +From: yu_boyun <1215979730@qq.com> +Date: Mon, 11 Jan 2021 17:01:58 +0800 +Subject: [PATCH] set up LD_PRELOAD for the Storage and Services module + +--- + data/dbus/org.fedoraproject.Anaconda.Modules.Services.service | 2 +- + data/dbus/org.fedoraproject.Anaconda.Modules.Storage.service | 2 +- + pyanaconda/modules/services/__main__.py | 4 ++++ + pyanaconda/modules/storage/__main__.py | 4 ++++ + 4 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/data/dbus/org.fedoraproject.Anaconda.Modules.Services.service b/data/dbus/org.fedoraproject.Anaconda.Modules.Services.service +index 79c6949..c3a6098 100644 +--- a/data/dbus/org.fedoraproject.Anaconda.Modules.Services.service ++++ b/data/dbus/org.fedoraproject.Anaconda.Modules.Services.service +@@ -1,4 +1,4 @@ + [D-BUS Service] + Name=org.fedoraproject.Anaconda.Modules.Services +-Exec=/usr/libexec/anaconda/start-module pyanaconda.modules.services ++Exec=/usr/libexec/anaconda/start-module --env LD_PRELOAD=libgomp.so.1 pyanaconda.modules.services + User=root +diff --git a/data/dbus/org.fedoraproject.Anaconda.Modules.Storage.service b/data/dbus/org.fedoraproject.Anaconda.Modules.Storage.service +index 018ecf1..780200e 100644 +--- a/data/dbus/org.fedoraproject.Anaconda.Modules.Storage.service ++++ b/data/dbus/org.fedoraproject.Anaconda.Modules.Storage.service +@@ -1,4 +1,4 @@ + [D-BUS Service] + Name=org.fedoraproject.Anaconda.Modules.Storage +-Exec=/usr/libexec/anaconda/start-module pyanaconda.modules.storage ++Exec=/usr/libexec/anaconda/start-module --env LD_PRELOAD=libgomp.so.1 pyanaconda.modules.storage + User=root +diff --git a/pyanaconda/modules/services/__main__.py b/pyanaconda/modules/services/__main__.py +index d4b0879..4327dc9 100644 +--- a/pyanaconda/modules/services/__main__.py ++++ b/pyanaconda/modules/services/__main__.py +@@ -20,6 +20,10 @@ + from pyanaconda.modules.common import init + init() + ++import os ++if "LD_PRELOAD" in os.environ: ++ del os.environ["LD_PRELOAD"] ++ + from pyanaconda.modules.services.services import ServicesService + service = ServicesService() + service.run() +diff --git a/pyanaconda/modules/storage/__main__.py b/pyanaconda/modules/storage/__main__.py +index 327a129..29212a9 100644 +--- a/pyanaconda/modules/storage/__main__.py ++++ b/pyanaconda/modules/storage/__main__.py +@@ -20,6 +20,10 @@ + from pyanaconda.modules.common import init + init("/tmp/storage.log") + ++import os ++if "LD_PRELOAD" in os.environ: ++ del os.environ["LD_PRELOAD"] ++ + # Initialize Blivet. + from pyanaconda.modules.storage.initialization import enable_installer_mode + enable_installer_mode() +-- +1.8.3.1 + diff --git a/bugfix-with-use-local-kickstart-version.patch b/bugfix-with-use-local-kickstart-version.patch new file mode 100644 index 0000000..6110c10 --- /dev/null +++ b/bugfix-with-use-local-kickstart-version.patch @@ -0,0 +1,38 @@ +From d361beead1ff91273aa0f13147b2b279172133aa Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Thu, 24 Nov 2022 10:40:41 +0800 +Subject: [PATCH] with use local kickstart version + +--- + dracut/parse-kickstart | 2 +- + pyanaconda/core/kickstart/version.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dracut/parse-kickstart b/dracut/parse-kickstart +index 56cacb8..e0fdd1f 100755 +--- a/dracut/parse-kickstart ++++ b/dracut/parse-kickstart +@@ -41,7 +41,7 @@ from pykickstart.constants import * + from collections import OrderedDict + + # Import the kickstart version. +-from pykickstart.version import F36 as VERSION ++from pykickstart.version import DEVEL as VERSION + + # Import all kickstart commands as version-less. + from pykickstart.commands.cdrom import FC3_Cdrom as Cdrom +diff --git a/pyanaconda/core/kickstart/version.py b/pyanaconda/core/kickstart/version.py +index 4170214..df743a6 100644 +--- a/pyanaconda/core/kickstart/version.py ++++ b/pyanaconda/core/kickstart/version.py +@@ -18,6 +18,6 @@ + # Red Hat, Inc. + # + +-from pykickstart.version import F36 as VERSION ++from pykickstart.version import DEVEL as VERSION + + __all__ = ["VERSION"] +-- +2.23.0 + diff --git a/change-inst-repo-default-value.patch b/change-inst-repo-default-value.patch new file mode 100644 index 0000000..8f0a155 --- /dev/null +++ b/change-inst-repo-default-value.patch @@ -0,0 +1,26 @@ +From e73464ef17f54743dc194ad28e32797a10e844a4 Mon Sep 17 00:00:00 2001 +From: ctyuncommiter05 +Date: Thu, 24 Jun 2021 16:30:45 +0800 +Subject: [PATCH] change inst.repo default value + +Solve the problem of U disk installation failure problem. +--- + anaconda.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/anaconda.py b/anaconda.py +index 1abdeb2..44b573c 100755 +--- a/anaconda.py ++++ b/anaconda.py +@@ -263,6 +263,8 @@ if __name__ == "__main__": + from pyanaconda.flags import flags + from pyanaconda.core.kernel import kernel_arguments + (opts, removed_no_inst_args) = parse_arguments(boot_cmdline=kernel_arguments) ++ if not opts.method: ++ opts.method = opts.stage2 + + from pyanaconda.core.configuration.anaconda import conf + conf.set_from_opts(opts) +-- +2.27.0 + diff --git a/disable-disk-encryption.patch b/disable-disk-encryption.patch new file mode 100644 index 0000000..bdddea0 --- /dev/null +++ b/disable-disk-encryption.patch @@ -0,0 +1,71 @@ +From bec6776715baaff79d29e1703b7c3306c265071b Mon Sep 17 00:00:00 2001 +From: xia_qirong +Date: Wed, 16 Sep 2020 15:28:39 +0800 +Subject: [PATCH] disable disk encryption + +--- + pyanaconda/ui/gui/spokes/custom_storage.py | 8 ++++---- + pyanaconda/ui/gui/spokes/storage.py | 7 ++++--- + 2 files changed, 8 insertions(+), 7 deletions(-) + +diff --git a/pyanaconda/ui/gui/spokes/custom_storage.py b/pyanaconda/ui/gui/spokes/custom_storage.py +index 347a0e0..d72e315 100644 +--- a/pyanaconda/ui/gui/spokes/custom_storage.py ++++ b/pyanaconda/ui/gui/spokes/custom_storage.py +@@ -796,8 +796,8 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler): + fancy_set_sensitive(self._reformatCheckbox, self._permissions.reformat) + + # Set up the encryption. +- self._encryptCheckbox.set_active(self._request.device_encrypted) +- fancy_set_sensitive(self._encryptCheckbox, self._permissions.device_encrypted) ++ self._encryptCheckbox.set_active(False) ++ fancy_set_sensitive(self._encryptCheckbox, False) + + self._encryptCheckbox.set_inconsistent(self._request.container_encrypted) + text = _("The container is encrypted.") if self._request.container_encrypted else "" +@@ -1268,7 +1268,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler): + self._encryptCheckbox.set_active(False) + self._encryptCheckbox.set_inconsistent(True) + +- fancy_set_sensitive(self._encryptCheckbox, self._permissions.device_encrypted) ++ fancy_set_sensitive(self._encryptCheckbox, False) + self._update_luks_combo() + + # Update the UI. +@@ -1490,7 +1490,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler): + + # Update the UI. + fancy_set_sensitive(self._labelEntry, self._permissions.label) +- fancy_set_sensitive(self._encryptCheckbox, self._permissions.device_encrypted) ++ fancy_set_sensitive(self._encryptCheckbox, False) + self._update_luks_combo() + fancy_set_sensitive(self._fsCombo, self._permissions.format_type) + self.on_value_changed() +diff --git a/pyanaconda/ui/gui/spokes/storage.py b/pyanaconda/ui/gui/spokes/storage.py +index 9494d6a..b2c0d3e 100644 +--- a/pyanaconda/ui/gui/spokes/storage.py ++++ b/pyanaconda/ui/gui/spokes/storage.py +@@ -289,6 +289,9 @@ class StorageSpoke(NormalSpoke, StorageCheckHandler): + # Configure the partitioning methods. + self._configure_partitioning_methods() + ++ # disable disk encryption ++ self._encryption_revealer.set_reveal_child(False) ++ + def _configure_partitioning_methods(self): + if "CustomPartitioningSpoke" in conf.ui.hidden_spokes: + self._custom_part_radio_button.set_visible(False) +@@ -325,9 +328,7 @@ class StorageSpoke(NormalSpoke, StorageCheckHandler): + # as Blivet GUI handles encryption per encrypted device, not globally. + # Hide it also for the interactive partitioning as CustomPartitioningSpoke + # provides support for encryption of mount points. +- self._encryption_revealer.set_reveal_child( +- current_partitioning_method == PARTITIONING_METHOD_AUTOMATIC +- ) ++ self._encryption_revealer.set_reveal_child(False) + + # Hide the reclaim space checkbox if automatic storage configuration is not used. + self._reclaim_revealer.set_reveal_child( +-- +1.8.3.1 + diff --git a/disable-ssh-login-checkbox.patch b/disable-ssh-login-checkbox.patch new file mode 100644 index 0000000..5cbf801 --- /dev/null +++ b/disable-ssh-login-checkbox.patch @@ -0,0 +1,37 @@ +From 4229601e2c53c2e002436a0132663f83a89e6e47 Mon Sep 17 00:00:00 2001 +From: t_feng +Date: Wed, 1 Jul 2020 18:08:35 +0800 +Subject: [PATCH] disable ssh login checkbox + +--- + pyanaconda/ui/gui/spokes/root_password.py | 7 ++++---- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/pyanaconda/ui/gui/spokes/root_password.py b/pyanaconda/ui/gui/spokes/root_password.py +index 1d19380..f2e389d 100644 +--- a/pyanaconda/ui/gui/spokes/root_password.py ++++ b/pyanaconda/ui/gui/spokes/root_password.py +@@ -80,6 +80,8 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler) + self._enable_root_radio = self.builder.get_object("enable_root_radio") + self._disable_root_radio = self.builder.get_object("disable_root_radio") + self._root_password_ssh_login_override = self.builder.get_object("root_password_ssh_login_override") ++ self._root_password_ssh_login_override.set_visible(False) ++ self._root_password_ssh_login_override.set_no_show_all(True) + self._revealer = self.builder.get_object("password_revealer") + + # Install the password checks: +@@ -159,9 +160,8 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler) + control.set_active(True) + self.on_root_enabled_changed(control) + +- self._root_password_ssh_login_override.set_active( +- self._users_module.RootPasswordSSHLoginAllowed +- ) ++ self._root_password_ssh_login_override.set_visible(False) ++ self._root_password_ssh_login_override.set_no_show_all(True) + if self.root_enabled: + # rerun checks so that we have a correct status message, if any + self.checker.run_checks() +-- +2.23.0 + diff --git a/euleros.conf b/euleros.conf new file mode 100644 index 0000000..fb008b5 --- /dev/null +++ b/euleros.conf @@ -0,0 +1,38 @@ +# Anaconda configuration file for EulerOS. + +[Profile] +# Define the profile. +profile_id = EulerOS + +[Profile Detection] +# Match os-release values. +os_id = EulerOS +variant_id = server + +[Installation System] +can_detect_enabled_smt = False + +[Network] +default_on_boot = FIRST_WIRED_WITH_LINK + +[Bootloader] +efi_dir = euleros +additional_arguments = crash_kexec_post_notifiers softlockup_panic=1 reserve_kbox_mem=16M fsck.mode=auto fsck.repair=yes + +[Payload] +enable_closest_mirror = True + +[Storage] +default_partitioning = + / (min 1 GiB, max 70 GiB) + /home (min 500 MiB, free 50 GiB) + swap + +[Storage Constraints] +swap_is_recommended = False + +[User Interface] +blivet_gui_supported = False + +[License] +eula = /usr/share/euleros-release/EULA diff --git a/fix-hostname-info.patch b/fix-hostname-info.patch new file mode 100644 index 0000000..dee2e84 --- /dev/null +++ b/fix-hostname-info.patch @@ -0,0 +1,59 @@ +From cc1706cdbcabab80ab867c2a8f5a517884faa048 Mon Sep 17 00:00:00 2001 +From: t_feng +Date: Thu, 18 Jun 2020 17:13:47 +0800 +Subject: [PATCH] fix hostname info + +--- + po/zh_CN.po | 5 +++-- + pyanaconda/core/regexes.py | 2 +- + pyanaconda/network.py | 3 ++- + 3 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index e31f0b2..c02ce1e 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -4090,10 +4090,11 @@ msgstr "本地主机名不能以英文句号“.”结尾。" + msgid "" + "Host names can only contain the characters 'a-z', 'A-Z', '0-9', '-', or '.', " + "parts between periods must contain something and cannot start or end with " +-"'-'." ++"parts between periods must contain something being 63 or fewer " ++"characters and cannot start or end with '.' and '-'." + msgstr "" + "主机名只能包含 'a-z'、'A-Z'、 '0-9'、 '-'(英文减号),或者 '.'(英文点号)," +-"其中两个点号中不能为空且不能以 '-' 开头或结尾。" ++"其中两个点号中不能为空,必须少于64个字符且不能以'.'和'-'开头或结尾。" + + #: pyanaconda/network.py:457 + msgid "Status not available" +diff --git a/pyanaconda/core/regexes.py b/pyanaconda/core/regexes.py +index cc00702..388d1ff 100644 +--- a/pyanaconda/core/regexes.py ++++ b/pyanaconda/core/regexes.py +@@ -103,7 +103,7 @@ IPV4_NETMASK_WITH_ANCHORS = re.compile("^" + IPV4_NETMASK_WITHOUT_ANCHORS + "$") + # with a period, but it can end with one. + # This regex uses negative lookahead and lookback assertions to enforce the + # hyphen rules and make it way more confusing +-HOSTNAME_PATTERN_WITHOUT_ANCHORS = r'(?:(?!-)[A-Za-z0-9-]{1,63}(? +Date: Fri, 19 Jun 2020 09:20:14 +0800 +Subject: [PATCH] hide help button + +--- + data/tmux.conf | 3 +-- + pyanaconda/ui/gui/__init__.py | 27 --------------------------- + widgets/src/BaseWindow.c | 21 --------------------- + 3 files changed, 1 insertion(+), 50 deletions(-) + +diff --git a/data/tmux.conf b/data/tmux.conf +index 87c9cb7..63240f7 100644 +--- a/data/tmux.conf ++++ b/data/tmux.conf +@@ -1,7 +1,6 @@ + # tmux.conf for the anaconda environment + + bind -n M-tab next +-bind -n F1 list-keys + + set-option -s exit-unattached off + set-option -g base-index 1 +@@ -25,7 +24,7 @@ set-option -g history-limit 10000 + # then re-attach to it in the tmux service run on the console tty. + new-session -d -s anaconda -n main anaconda + +-set-option status-right '#[fg=blue]#(echo -n "Switch tab: Alt+Tab | Help: F1 ")' ++set-option status-right '#[fg=blue]#(echo -n "Switch tab: Alt+Tab ")' + + new-window -d -n shell "bash --login" + new-window -d -n log "tail -F /tmp/anaconda.log" +diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py +index 06373d9..6a6e3b9 100644 +--- a/pyanaconda/ui/gui/__init__.py ++++ b/pyanaconda/ui/gui/__init__.py +@@ -443,20 +443,6 @@ class MainWindow(Gtk.Window): + # Return False to indicate that the child allocation is not yet set + return False + +- def _on_mnemonics_visible_changed(self, window, property_type, obj): +- # mnemonics display has been activated or deactivated, +- # add or remove the F1 mnemonics display from the help button +- help_button = obj.window.get_help_button() +- if window.props.mnemonics_visible: +- # save current label +- old_label = help_button.get_label() +- self._saved_help_button_label = old_label +- # add the (F1) "mnemonics" to the help button +- help_button.set_label("%s (F1)" % old_label) +- else: +- # restore the old label +- help_button.set_label(self._saved_help_button_label) +- + def _on_child_added(self, widget, user_data): + # If this is GtkLabel, apply the language attribute + if isinstance(widget, Gtk.Label): +@@ -480,8 +466,6 @@ class MainWindow(Gtk.Window): + old_screen = self._stack.get_visible_child() + if old_screen: + old_screen.remove_accelerator(self._accel_group, Gdk.KEY_F12, 0) +- old_screen.remove_accelerator(self._accel_group, Gdk.KEY_F1, 0) +- old_screen.remove_accelerator(self._accel_group, Gdk.KEY_F1, Gdk.ModifierType.MOD1_MASK) + + # Check if the widget is already on the stack + if child not in self._stack_contents: +@@ -498,17 +482,6 @@ class MainWindow(Gtk.Window): + child.window.add_accelerator("button-clicked", self._accel_group, + Gdk.KEY_F12, 0, 0) + +- # Configure the help button +- child.window.add_accelerator("help-button-clicked", self._accel_group, +- Gdk.KEY_F1, 0, 0) +- child.window.add_accelerator("help-button-clicked", self._accel_group, +- Gdk.KEY_F1, Gdk.ModifierType.MOD1_MASK, 0) +- +- # Connect to mnemonics-visible to add the (F1) mnemonic to the button label +- if self._mnemonic_signal: +- self.disconnect(self._mnemonic_signal) +- self._mnemonic_signal = self.connect("notify::mnemonics-visible", self._on_mnemonics_visible_changed, child) +- + self._stack.set_visible_child(child.window) + + if child.focusWidgetName: +diff --git a/widgets/src/BaseWindow.c b/widgets/src/BaseWindow.c +index 6a1e372..203d4a7 100644 +--- a/widgets/src/BaseWindow.c ++++ b/widgets/src/BaseWindow.c +@@ -393,30 +393,11 @@ G_GNUC_END_IGNORE_DEPRECATIONS + gtk_widget_set_margin_top(win->priv->layout_indicator, 6); + gtk_widget_set_margin_bottom(win->priv->layout_indicator, 6); + +- /* Create the help button. */ +- win->priv->help_button = gtk_button_new_with_label(_(HELP_BUTTON_LABEL)); +- gtk_widget_set_halign(win->priv->help_button, GTK_ALIGN_END); +- gtk_widget_set_vexpand(win->priv->help_button, FALSE); +- gtk_widget_set_valign(win->priv->help_button, GTK_ALIGN_END); +- gtk_widget_set_margin_bottom(win->priv->help_button, 6); +- gtk_widget_set_name(win->priv->help_button, "anaconda-help-button"); +- +- atk = gtk_widget_get_accessible(win->priv->help_button); +- atk_object_set_name(atk, _(HELP_BUTTON_LABEL)); +- +- /* Hook up some signals for that button. The signal handlers here will +- * just raise our own custom signals for the whole window. +- */ +- g_signal_connect(win->priv->help_button, "clicked", +- G_CALLBACK(anaconda_base_window_help_button_clicked), win); +- +- + /* Add everything to the nav area. */ + gtk_grid_attach(GTK_GRID(win->priv->nav_area), win->priv->name_label, 0, 0, 1, 1); + gtk_grid_attach(GTK_GRID(win->priv->nav_area), win->priv->distro_label, 1, 0, 2, 1); + gtk_grid_attach(GTK_GRID(win->priv->nav_area), win->priv->beta_label, 1, 1, 1, 1); + gtk_grid_attach(GTK_GRID(win->priv->nav_area), win->priv->layout_indicator, 1, 2, 1, 1); +- gtk_grid_attach(GTK_GRID(win->priv->nav_area), win->priv->help_button, 2, 1, 1, 2); + + /* Last thing for the main_box is a revealer for the info bar */ + win->priv->info_revealer = gtk_revealer_new(); +@@ -832,8 +813,6 @@ void anaconda_base_window_retranslate(AnacondaBaseWindow *win) { + + gtk_label_set_text(GTK_LABEL(win->priv->beta_label), _(win->priv->orig_beta)); + +- gtk_button_set_label(GTK_BUTTON(win->priv->help_button), _(HELP_BUTTON_LABEL)); +- + /* retranslate the layout indicator */ + anaconda_layout_indicator_retranslate(ANACONDA_LAYOUT_INDICATOR(win->priv->layout_indicator)); + } +-- +2.23.0 + diff --git a/modify-interface-is-extended-in-Chinese-mode.patch b/modify-interface-is-extended-in-Chinese-mode.patch new file mode 100644 index 0000000..3899c87 --- /dev/null +++ b/modify-interface-is-extended-in-Chinese-mode.patch @@ -0,0 +1,25 @@ +From ae056f86eca56a76ae9736d7f199d73548a7574b Mon Sep 17 00:00:00 2001 +From: t_feng +Date: Mon, 7 Nov 2022 20:03:39 +0800 +Subject: [PATCH] modify interface is extended in Chinese mode + +--- + po/zh_CN.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 8f48aad..18b0925 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -4433,7 +4433,7 @@ msgstr "搜索方式(_B):" + + #: pyanaconda/ui/gui/spokes/advanced_storage.glade:153 + msgid "Port / Target / LUN #" +-msgstr "端口 / 目标 / 逻辑单位数标示符 (LUN #)" ++msgstr "端口 / 目标 / LUN # " + + #: pyanaconda/ui/gui/spokes/advanced_storage.glade:154 + msgid "Target WWID" +-- +2.23.0 + diff --git a/modify-timezone-and-delete-datezone-map.patch b/modify-timezone-and-delete-datezone-map.patch new file mode 100644 index 0000000..959b9ca --- /dev/null +++ b/modify-timezone-and-delete-datezone-map.patch @@ -0,0 +1,184 @@ +From 303b072992542dfa9a7e2b2a9dc99120564a3f07 Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Mon, 7 Nov 2022 14:23:04 +0800 +Subject: [PATCH] modify timezone and delete datezone map + +--- + pyanaconda/modules/timezone/installation.py | 4 +- + pyanaconda/modules/timezone/timezone.py | 2 +- + pyanaconda/ui/gui/spokes/datetime_spoke.glade | 14 ------- + pyanaconda/ui/gui/spokes/datetime_spoke.py | 38 +++---------------- + 4 files changed, 8 insertions(+), 50 deletions(-) + +diff --git a/pyanaconda/modules/timezone/installation.py b/pyanaconda/modules/timezone/installation.py +index 08e24c0..f11874f 100644 +--- a/pyanaconda/modules/timezone/installation.py ++++ b/pyanaconda/modules/timezone/installation.py +@@ -63,8 +63,8 @@ class ConfigureTimezoneTask(Task): + if not is_valid_timezone(self._timezone): + # this should never happen, but for pity's sake + log.warning("Timezone %s set in kickstart is not valid, " +- "falling back to default (America/New_York).", self._timezone) +- self._timezone = "America/New_York" ++ "falling back to default (Asia/Shanghai).", self._timezone) ++ self._timezone = "Asia/Shanghai" + + def _make_timezone_symlink(self): + """Create the symlink that actually defines timezone.""" +diff --git a/pyanaconda/modules/timezone/timezone.py b/pyanaconda/modules/timezone/timezone.py +index b5d5f7b..2a328a3 100644 +--- a/pyanaconda/modules/timezone/timezone.py ++++ b/pyanaconda/modules/timezone/timezone.py +@@ -44,7 +44,7 @@ class TimezoneService(KickstartService): + def __init__(self): + super().__init__() + self.timezone_changed = Signal() +- self._timezone = "America/New_York" ++ self._timezone = "Asia/Shanghai" + + self.is_utc_changed = Signal() + self._is_utc = False +diff --git a/pyanaconda/ui/gui/spokes/datetime_spoke.glade b/pyanaconda/ui/gui/spokes/datetime_spoke.glade +index 188f93b..aa468d9 100644 +--- a/pyanaconda/ui/gui/spokes/datetime_spoke.glade ++++ b/pyanaconda/ui/gui/spokes/datetime_spoke.glade +@@ -3,7 +3,6 @@ + + + +- + + + +@@ -314,19 +313,6 @@ + 0 + + +- +- +- True +- False +- +- +- +- True +- True +- 6 +- 1 +- +- + + + True +diff --git a/pyanaconda/ui/gui/spokes/datetime_spoke.py b/pyanaconda/ui/gui/spokes/datetime_spoke.py +index b21bbc3..c8416b4 100644 +--- a/pyanaconda/ui/gui/spokes/datetime_spoke.py ++++ b/pyanaconda/ui/gui/spokes/datetime_spoke.py +@@ -50,15 +50,14 @@ from pyanaconda.threading import threadMgr, AnacondaThread + import gi + gi.require_version("Gdk", "3.0") + gi.require_version("Gtk", "3.0") +-gi.require_version("TimezoneMap", "1.0") + +-from gi.repository import Gdk, Gtk, TimezoneMap ++from gi.repository import Gdk, Gtk + + log = get_module_logger(__name__) + + __all__ = ["DatetimeSpoke"] + +-DEFAULT_TZ = "America/New_York" ++DEFAULT_TZ = "Asia/Shanghai" + + SPLIT_NUMBER_SUFFIX_RE = re.compile(r'([^0-9]*)([-+])([0-9]+)') + +@@ -168,11 +167,6 @@ class DatetimeSpoke(FirstbootSpokeMixIn, NormalSpoke): + icon = "preferences-system-time-symbolic" + title = CN_("GUI|Spoke", "_Time & Date") + +- # Hack to get libtimezonemap loaded for GtkBuilder +- # see https://bugzilla.gnome.org/show_bug.cgi?id=712184 +- _hack = TimezoneMap.TimezoneMap() +- del(_hack) +- + @staticmethod + def get_screen_id(): + """Return a unique id of this UI screen.""" +@@ -211,7 +205,6 @@ class DatetimeSpoke(FirstbootSpokeMixIn, NormalSpoke): + self._yearsStore = self.builder.get_object("years") + self._regionsStore = self.builder.get_object("regions") + self._citiesStore = self.builder.get_object("cities") +- self._tzmap = self.builder.get_object("tzmap") + self._dateBox = self.builder.get_object("dateBox") + + # we need to know it the new value is the same as previous or not +@@ -334,10 +327,6 @@ class DatetimeSpoke(FirstbootSpokeMixIn, NormalSpoke): + else: + return _("Invalid timezone") + else: +- location = self._tzmap.get_location() +- if location and location.get_property("zone"): +- return _("%s timezone") % get_xlated_timezone(location.get_property("zone")) +- else: + return _("Nothing selected") + + def apply(self): +@@ -389,7 +378,6 @@ class DatetimeSpoke(FirstbootSpokeMixIn, NormalSpoke): + kickstart_timezone = self._timezone_module.Timezone + + if is_valid_timezone(kickstart_timezone): +- self._tzmap.set_timezone(kickstart_timezone) + time.tzset() + + self._update_datetime() +@@ -766,7 +754,6 @@ class DatetimeSpoke(FirstbootSpokeMixIn, NormalSpoke): + if region == "Etc": + # Etc timezones cannot be displayed on the map, so let's reset the + # location and manually set a highlight with no location pin. +- self._tzmap.clear_location() + # Some time zones are just the same default. + if city in ("GMT", "UTC", "UCT", "Greenwich", "Universal", "Zulu"): + offset = 0.0 +@@ -780,13 +767,14 @@ class DatetimeSpoke(FirstbootSpokeMixIn, NormalSpoke): + else: + log.warning("Unknown time zone selected in GUI: Etc/%s", city) + +- self._tzmap.set_selected_offset(offset) + time.tzset() + else: + # we don't want the timezone-changed signal to be emitted +- self._tzmap.set_timezone(timezone) + time.tzset() + ++ self._tz = get_timezone(timezone) ++ self._update_datetime() ++ + # update "old" values + self._old_city = city + +@@ -836,22 +824,6 @@ class DatetimeSpoke(FirstbootSpokeMixIn, NormalSpoke): + self._stop_and_maybe_start_time_updating(interval=5) + self._daysFilter.refilter() + +- def on_location_changed(self, tz_map, location): +- if not location: +- return +- +- timezone = location.get_property('zone') +- +- # Updating the timezone will update the region/city combo boxes to match. +- # The on_city_changed handler will attempt to convert the timezone back +- # to a location and set it in the map, which we don't want, since we +- # already have a location. That's why we're here. +- with blockedHandler(self._cityCombo, self.on_city_changed): +- if self._set_timezone(timezone): +- # timezone successfully set +- self._tz = get_timezone(timezone) +- self._update_datetime() +- + def on_timeformat_changed(self, button24h, *args): + hours = int(self._hoursLabel.get_text()) + amPm = self._amPmLabel.get_text() +-- +2.23.0 + diff --git a/openeuler.conf b/openeuler.conf new file mode 100644 index 0000000..123e7b5 --- /dev/null +++ b/openeuler.conf @@ -0,0 +1,37 @@ +# Anaconda configuration file for {os_name}. + +[Profile] +# Define the profile. +profile_id = {os_name} + +[Profile Detection] +# Match os-release values. +os_id = {os_name} + +[Installation System] +can_detect_enabled_smt = False + +[Network] +default_on_boot = FIRST_WIRED_WITH_LINK + +[Bootloader] +efi_dir = openEuler +additional_arguments = cgroup_disable=files + +[Payload] +enable_closest_mirror = True + +[Storage] +default_partitioning = + / (min 1 GiB, max 70 GiB) + /home (min 500 MiB, free 50 GiB) + swap + +[Storage Constraints] +swap_is_recommended = False + +[User Interface] +blivet_gui_supported = False + +[License] +eula = /usr/share/{os_name}-release/EULA diff --git a/remove-vender-issue-in-netdev.patch b/remove-vender-issue-in-netdev.patch new file mode 100644 index 0000000..5582da0 --- /dev/null +++ b/remove-vender-issue-in-netdev.patch @@ -0,0 +1,28 @@ +From b896b694238389a85539f60cab6ee41ab04c4f29 Mon Sep 17 00:00:00 2001 +From: t_feng +Date: Fri, 19 Jun 2020 10:25:20 +0800 +Subject: [PATCH] remove vender issue in netdev + +--- + pyanaconda/ui/gui/spokes/network.py | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/pyanaconda/ui/gui/spokes/network.py b/pyanaconda/ui/gui/spokes/network.py +index 1318e17..e906f9e 100644 +--- a/pyanaconda/ui/gui/spokes/network.py ++++ b/pyanaconda/ui/gui/spokes/network.py +@@ -782,9 +782,8 @@ class NetworkControlBox(GObject.GObject): + unplugged) + + if device: +- title += '\n%s %s' % \ +- (escape_markup(device.get_vendor() or ""), +- escape_markup(device.get_product() or "")) ++ title += '\n%s' % \ ++ (escape_markup(device.get_product() or "")) + return title + + def refresh_ui(self, state=None): +-- +2.23.0 + diff --git a/support-use-sm3-crypt-user-password.patch b/support-use-sm3-crypt-user-password.patch new file mode 100644 index 0000000..9fc3cbe --- /dev/null +++ b/support-use-sm3-crypt-user-password.patch @@ -0,0 +1,234 @@ +From b311b645f9447f7e765b0e418d3f37c32e2702e1 Mon Sep 17 00:00:00 2001 +From: liuxin +Date: Mon, 7 Nov 2022 19:07:50 +0800 +Subject: [PATCH] support use sm3 crypt user password + +--- + po/zh_CN.po | 5 ++++ + pyanaconda/core/users.py | 5 +++- + pyanaconda/ui/gui/spokes/root_password.glade | 15 ++++++++++++ + pyanaconda/ui/gui/spokes/root_password.py | 16 ++++++++++++- + pyanaconda/ui/gui/spokes/user.glade | 16 ++++++++++++- + pyanaconda/ui/gui/spokes/user.py | 14 ++++++++++- + .../pyanaconda_tests/test_crypt_password.py | 23 +++++++++++++++++++ + 7 files changed, 90 insertions(+), 4 deletions(-) + create mode 100644 tests/unit_tests/pyanaconda_tests/test_crypt_password.py + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index e31f0b2..8f48aad 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -7640,3 +7640,8 @@ msgstr "开始安装到硬盘" + #~ msgstr[0] "" + #~ "%(count)d 个磁盘;容量 %(size)s;空闲空间 %(free)s (包括未分区及文" + #~ "件系统内的部分)" ++ ++#: pyanaconda/ui/gui/spokes/root_password.glade:215 ++#: pyanaconda/ui/gui/spokes/user.glade:278 ++msgid "Use SM3 to encrypt the password" ++msgstr "使用SM3算法加密密码" +diff --git a/pyanaconda/core/users.py b/pyanaconda/core/users.py +index c2d14e2..649fad6 100644 +--- a/pyanaconda/core/users.py ++++ b/pyanaconda/core/users.py +@@ -38,7 +38,7 @@ from pyanaconda.anaconda_loggers import get_module_logger + log = get_module_logger(__name__) + + +-def crypt_password(password): ++def crypt_password(password, algo=None): + """Crypt a password. + + Process a password with appropriate salted one-way algorithm. +@@ -51,6 +51,9 @@ def crypt_password(password): + # so we need to generate the setting ourselves + b64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + setting = "$y$j9T$" + "".join(sr().choice(b64) for _sc in range(24)) ++ ++ if algo == "sm3": ++ setting = crypt.METHOD_SM3 + + # and try to compute the password hash using our yescrypt setting + try: +diff --git a/pyanaconda/ui/gui/spokes/root_password.glade b/pyanaconda/ui/gui/spokes/root_password.glade +index f710439..53bc90c 100644 +--- a/pyanaconda/ui/gui/spokes/root_password.glade ++++ b/pyanaconda/ui/gui/spokes/root_password.glade +@@ -328,6 +328,21 @@ The root user (also known as super user) has complete access to the entire syste + 1 + + ++ ++ ++ Use SM3 to encrypt the password ++ True ++ False ++ start ++ True ++ ++ ++ ++ False ++ True ++ 3 ++ ++ + + + +diff --git a/pyanaconda/ui/gui/spokes/root_password.py b/pyanaconda/ui/gui/spokes/root_password.py +index f2e389d..062f59d 100644 +--- a/pyanaconda/ui/gui/spokes/root_password.py ++++ b/pyanaconda/ui/gui/spokes/root_password.py +@@ -68,6 +68,8 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler) + NormalSpoke.__init__(self, *args) + GUISpokeInputCheckHandler.__init__(self) + self._users_module = USERS.get_proxy() ++ # sm3 password method ++ self._passwd_method_sm3 = False + + def initialize(self): + NormalSpoke.initialize(self) +@@ -83,6 +85,9 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler) + self._root_password_ssh_login_override.set_no_show_all(True) + self._revealer = self.builder.get_object("password_revealer") + ++ # sm3 object ++ self._passwd_method_button = self.builder.get_object("passwd_sm3") ++ + # Install the password checks: + # - Has a password been specified? + # - If a password has been specified and there is data in the confirm box, do they match? +@@ -179,9 +184,15 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler) + return not self._users_module.CheckAdminUserExists() + + def apply(self): ++ ++ if self._passwd_method_sm3 is True: ++ algo = "sm3" ++ else: ++ algo = None ++ + if self.root_enabled and self.password: + # Set the root password. +- self._users_module.SetCryptedRootPassword(crypt_password(self.password)) ++ self._users_module.SetCryptedRootPassword(crypt_password(self.password, algo)) + + # Unlock the root account. + self._users_module.SetRootAccountLocked(False) +@@ -330,3 +341,6 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler) + self._revealer.set_reveal_child(unlocked) + if unlocked: + self.password_entry.grab_focus() ++ ++ def on_sm3_clicked(self, button): ++ self._passwd_method_sm3 = self._passwd_method_button.get_active() +diff --git a/pyanaconda/ui/gui/spokes/user.glade b/pyanaconda/ui/gui/spokes/user.glade +index 4783a9f..2e844fa 100644 +--- a/pyanaconda/ui/gui/spokes/user.glade ++++ b/pyanaconda/ui/gui/spokes/user.glade +@@ -277,6 +277,20 @@ + 3 + + ++ ++ ++ Use SM3 to encrypt the password ++ True ++ False ++ start ++ True ++ ++ ++ ++ 1 ++ 8 ++ ++ + + + +@@ -324,7 +338,7 @@ + + + 1 +- 8 ++ 9 + + + +diff --git a/pyanaconda/ui/gui/spokes/user.py b/pyanaconda/ui/gui/spokes/user.py +index 5b16443..cb62873 100644 +--- a/pyanaconda/ui/gui/spokes/user.py ++++ b/pyanaconda/ui/gui/spokes/user.py +@@ -261,6 +261,8 @@ class UserSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler): + + self._users_module = USERS.get_proxy() + self._password_is_required = True ++ # sm3 password method ++ self._passwd_method_sm3 = False + + def initialize(self): + NormalSpoke.initialize(self) +@@ -294,6 +296,9 @@ class UserSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler): + self._password_bar = self.builder.get_object("password_bar") + self._password_label = self.builder.get_object("password_label") + ++ # sm3 object ++ self._passwd_method_button = self.builder.get_object("passwd_sm3") ++ + # Install the password checks: + # - Has a password been specified? + # - If a password has been specified and there is data in the confirm box, do they match? +@@ -470,7 +475,11 @@ class UserSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler): + if self.password_required: + if self.password: + self.password_kickstarted = False +- self.user.password = crypt_password(self.password) ++ if self._passwd_method_sm3 is True: ++ algo = "sm3" ++ else: ++ algo = None ++ self.user.password = crypt_password(self.password, algo) + self.user.is_crypted = True + self.remove_placeholder_texts() + +@@ -696,3 +705,6 @@ class UserSpoke(FirstbootSpokeMixIn, NormalSpoke, GUISpokeInputCheckHandler): + NormalSpoke.on_back_clicked(self, button) + else: + log.info("Return to hub prevented by password checking rules.") ++ ++ def on_sm3_clicked(self, button): ++ self._passwd_method_sm3 = self._passwd_method_button.get_active() +diff --git a/tests/unit_tests/pyanaconda_tests/test_crypt_password.py b/tests/unit_tests/pyanaconda_tests/test_crypt_password.py +new file mode 100644 +index 0000000..c2e1e4c +--- /dev/null ++++ b/tests/unit_tests/pyanaconda_tests/test_crypt_password.py +@@ -0,0 +1,23 @@ ++from pyanaconda.core.users import crypt_password ++import unittest ++import crypt ++import os ++ ++@unittest.skipIf(os.geteuid() != 0, "user creation must be run as root") ++class CryptPasswordTest(unittest.TestCase): ++ def setUp(self): ++ pass ++ ++ def tearDown(self): ++ pass ++ ++ def test_crypt_password(self): ++ origin_password = "password" ++ encrypted = crypt_password(origin_password, "sm3") ++ self.assertTrue(encrypted.startswith("$sm3$")) ++ ++ encrypted = crypt_password(origin_password) ++ self.assertTrue(encrypted.startswith("$6$")) ++ ++if __name__ == '__main__': ++ unittest.main() +-- +2.27.0 +