calamares/0011-fix-87-position-and-translate.patch
xinxin 5c98d0e18f !10 新增修改磁盘分区、中英文翻译、修复root bash等问题的patch
From: @lzx20000118 
Reviewed-by: @lipingEmmaSiguyi 
Signed-off-by: @lipingEmmaSiguyi
2024-12-27 15:49:12 +00:00

231 lines
11 KiB
Diff

From 057721ec933fc439d9e9b9887dc69704cd49472e Mon Sep 17 00:00:00 2001
From: cui-gaoleng <562344211@qq.com>
Date: Fri, 22 Nov 2024 12:14:08 +0800
Subject: [PATCH] =?UTF-8?q?fix=20progress=20bar=20has=20been=20at=20the=20?=
=?UTF-8?q?87%=20position=20for=20a=20long=20time+=E4=B8=A4=E5=A4=84?=
=?UTF-8?q?=E7=B9=81=E4=BD=93=E7=BF=BB=E8=AF=91=E8=A1=A5=E9=BD=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
calamares.desktop | 2 +-
lang/calamares_zh_TW.ts | 6 +--
src/modules/packages/main.py | 70 +++++++++++++++++++-------------
src/modules/packages/module.desc | 1 +
src/modules/unpackfs/main.py | 24 ++++++++---
5 files changed, 65 insertions(+), 38 deletions(-)
diff --git a/calamares.desktop b/calamares.desktop
index 9a1416e..9d33495 100644
--- a/calamares.desktop
+++ b/calamares.desktop
@@ -5,7 +5,7 @@ Name=Install System
GenericName=System Installer
Keywords=calamares;system;installer;
TryExec=calamares
-Exec=sh -c "pkexec calamares"
+Exec=sh -c "pkexec calamares -style Adwaita"
Comment=Calamares — System Installer
Icon=calamares
Terminal=false
diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts
index 8689629..3cc473c 100644
--- a/lang/calamares_zh_TW.ts
+++ b/lang/calamares_zh_TW.ts
@@ -613,9 +613,9 @@ The system will reboot or you can enter the debug mode for further investigation
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="547"/>
- <source>&amp;Debug</source>
+ <source>&amp;Try Now</source>
<comment>@button</comment>
- <translation>調試(&amp;D)</translation>
+ <translation>立即試用(&amp;D)</translation>
</message>
<message>
<source>Do you really want to cancel the current install process?
@@ -4526,7 +4526,7 @@ Output:
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="89"/>
<source>language</source>
- <translation type="unfinished"></translation>
+ <translation>語言</translation>
</message>
<message>
<source>Open donations website</source>
diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py
index 8c165e8..1fbe276 100644
--- a/src/modules/packages/main.py
+++ b/src/modules/packages/main.py
@@ -138,10 +138,11 @@ class PackageManager(metaclass=abc.ABCMeta):
self.install([packagedata], from_local=from_local, options=options)
else:
self.run(packagedata["pre-script"])
- if isinstance(packagedata["package"], list):
- self.install(packagedata["package"], from_local=from_local, options=options)
- else:
- self.install([packagedata["package"]], from_local=from_local, options=options)
+ if "package" in packagedata:
+ if isinstance(packagedata["package"], list):
+ self.install(packagedata["package"], from_local=from_local, options=options)
+ else:
+ self.install([packagedata["package"]], from_local=from_local, options=options)
if isinstance(packagedata["post-script"], list):
for script in packagedata["post-script"]:
self.run(script)
@@ -787,41 +788,54 @@ def run_operations(pkgman, entry, options):
names (strings) or package information dictionaries with pre-
and post-scripts.
"""
- global group_packages, completed_packages, mode_packages
-
- if "source" in entry and entry["source"] == "packagechooser@packagechooser":
- handle_packagechooser(entry)
+ global group_packages, completed_packages, mode_packages, custom_status_message
for key in entry.keys():
package_list = subst_locale(entry[key])
+ libcalamares.utils.warning(str(package_list))
group_packages = len(package_list)
- if key == "install":
- _change_mode(INSTALL)
- pkgman.operation_install(package_list, options=options)
- elif key == "try_install":
+ if key in ["install", "try_install", "localInstall"]:
_change_mode(INSTALL)
- pkgman.operation_try_install(package_list, options=options)
- elif key == "remove":
- _change_mode(REMOVE)
- pkgman.operation_remove(package_list, options=options)
- elif key == "try_remove":
+ for package in package_list:
+ custom_status_message = f"Installing package: {package}"
+ try:
+ if key == "localInstall":
+ pkgman.operation_install([package], from_local=True, options=options)
+ elif key == "try_install":
+ pkgman.operation_try_install([package], options=options)
+ else:
+ pkgman.operation_install([package], options=options)
+ except Exception as e:
+ libcalamares.utils.warning("Failed to install package {}: {}".format(package, str(e)))
+
+ completed_packages += 1
+ progress = completed_packages / total_packages
+ libcalamares.job.setprogress(progress)
+ libcalamares.utils.debug("Progress: {:.2f}, Package: {}".format(progress, package))
+ elif key in ["remove", "try_remove"]:
_change_mode(REMOVE)
- pkgman.operation_try_remove(package_list, options=options)
- elif key == "localInstall":
- _change_mode(INSTALL)
- pkgman.operation_install(package_list, from_local=True, options=options)
- elif key == "source":
- libcalamares.utils.debug("Package-list from {!s}".format(entry[key]))
+ for package in package_list:
+ try:
+ if key == "remove":
+ pkgman.operation_remove([package], options=options)
+ elif key == "try_remove":
+ pkgman.operation_try_remove([package], options=options)
+ except Exception as e:
+ libcalamares.utils.warning("Failed to remove package {}: {}".format(package, str(e)))
+
+ completed_packages += 1
+ progress = completed_packages / total_packages
+ libcalamares.job.setprogress(progress)
+ libcalamares.utils.debug("Progress: {:.2f}, Package: {}".format(progress, package))
else:
libcalamares.utils.warning("Unknown package-operation key {!s}".format(key))
- completed_packages += len(package_list)
- libcalamares.job.setprogress(completed_packages * 1.0 / total_packages)
- libcalamares.utils.debug("Pretty name: {!s}, setting progress..".format(pretty_name()))
+ if "source" in entry and entry["source"] == "packagechooser@packagechooser":
+ packagemeta = handle_packagechooser()
+ pkgman.operation_install([packagemeta], from_local=True, options=options)
group_packages = 0
- _change_mode(None)
-
+ _change_mode(None)
def run():
"""
diff --git a/src/modules/packages/module.desc b/src/modules/packages/module.desc
index 3e3053b..9529af6 100644
--- a/src/modules/packages/module.desc
+++ b/src/modules/packages/module.desc
@@ -5,3 +5,4 @@ type: "job"
name: "packages"
interface: "python"
script: "main.py"
+weight: 50
diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py
index 4148720..4c5518e 100644
--- a/src/modules/unpackfs/main.py
+++ b/src/modules/unpackfs/main.py
@@ -26,6 +26,8 @@ import libcalamares
import platform
import gettext
+
+import libcalamares.utils
_ = gettext.translation("calamares-python",
localedir=libcalamares.utils.gettext_path(),
languages=libcalamares.utils.gettext_languages(),
@@ -263,6 +265,7 @@ def file_copy(source, entry, progress_cb):
progress_cb(num_files_copied, num_files_total_local)
try:
returncode = 0
+
arch = platform.machine()
libcalamares.utils.host_env_process_output(["mkdir", "-p", entry.destination + "/etc/yum.repos.d/"], output_cb)
@@ -272,6 +275,7 @@ def file_copy(source, entry, progress_cb):
libcalamares.utils.host_env_process_output(["cp", "-af", "/etc/add_selinux_policy.sh", entry.destination + "/etc/add_selinux_policy.sh"], output_cb)
libcalamares.utils.host_env_process_output(["chmod", "+x", entry.destination + "/etc/add_selinux_policy.sh"], output_cb)
+ completed_packages = 0
if os.path.exists("/etc/yum.repos.d/local.repo"):
libcalamares.utils.host_env_process_output(
["cp", "-af", "/etc/yum.repos.d/local.repo", entry.destination + "/etc/yum.repos.d/"], output_cb)
@@ -281,9 +285,13 @@ def file_copy(source, entry, progress_cb):
else:
packages = ["yum", "grub2", "grub2-efi-x64", "grub2-pc", "passwd", "sudo"]
- libcalamares.utils.host_env_process_output(
- ["yum", "--installroot=" + entry.destination, "--disablerepo=*", "--enablerepo=local-repo",
- "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0", "install", "-y"] + packages, output_cb)
+ for package in packages:
+ libcalamares.job.setprogress(completed_packages / len(packages))
+ libcalamares.utils.host_env_process_output(
+ ["yum", "--installroot=" + entry.destination, "--disablerepo=*", "--enablerepo=local-repo",
+ "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0", "install", "-y", package], output_cb)
+ completed_packages += 1
+ libcalamares.job.setprogress(completed_packages / len(packages))
else:
libcalamares.utils.host_env_process_output(
["cp", "-af", "/etc/yum.repos.d/openEuler.repo", entry.destination + "/etc/yum.repos.d/"], output_cb)
@@ -292,9 +300,13 @@ def file_copy(source, entry, progress_cb):
else:
packages = ["yum", "grub2", "grub2-efi-x64", "grub2-pc", "passwd", "sudo"]
- libcalamares.utils.host_env_process_output(
- ["yum", "--installroot=" + entry.destination, "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0",
- "install", "-y"] + packages, output_cb)
+ for package in packages:
+ libcalamares.job.setprogress(completed_packages / len(packages))
+ libcalamares.utils.host_env_process_output(
+ ["yum", "--installroot=" + entry.destination, "--releasever=/", "--nogpgcheck", "--setopt=sslverify=0",
+ "install", "-y", package], output_cb)
+ completed_packages += 1
+ libcalamares.job.setprogress(completed_packages / len(packages))
libcalamares.utils.host_env_process_output(["rm", "-f", entry.destination + "/etc/shadow"], output_cb)
libcalamares.utils.host_env_process_output(["cp", "-af", "/etc/shadow", entry.destination + "/etc/shadow"], output_cb)
--
2.43.0