This commit is contained in:
arcolinuxz 2024-07-02 08:38:31 +02:00
parent 92433c3100
commit 14531bc829
11 changed files with 806 additions and 569 deletions

View file

@ -273,6 +273,8 @@ class FlowBox(Gtk.FlowBox):
)
message = None
title = None
downgrade = False
community_repo = False
if fn.check_pacman_lockfile() is False:
# switch widget is currently toggled off
@ -284,38 +286,65 @@ class FlowBox(Gtk.FlowBox):
inst_kernel.version
> kernel.version.split("%s-" % inst_kernel.name)[1]
):
downgrade = True
title = "Downgrading %s kernel" % kernel.name
else:
downgrade = False
title = "Upgrading %s kernel" % kernel.name
break
if title is None:
title = "Kernel install"
title = "Kernel installation"
if self.source == "community":
message = "This will install <b>%s-%s</b> - Is this ok ?" % (
message = (
"<span foreground='orange'><b>Community kernel selected - this may break your system</b></span>\n"
"Confirm the install of <b>%s-%s</b>"
% (
kernel.name,
kernel.version,
)
)
# check if the community pacman repo is configured
if fn.check_pacman_repo(kernel.repository) is True:
community_repo = True
else:
community_repo = False
fn.logger.error(
"%s pacman repo is not configured" % kernel.repository
)
elif self.source == "official":
message = "Confirm the install of <b>%s-%s</b>" % (
kernel.name,
kernel.version,
)
elif self.source == "official":
message = (
"This will install <b>%s</b> - Is this ok ?" % kernel.version
)
message_window = FlowBoxMessageWindow(
title=title,
message=message,
action="install",
kernel=kernel,
transient_for=self.manager_gui,
textview=self.manager_gui.textview,
textbuffer=self.manager_gui.textbuffer,
switch=switch,
source=self.source,
manager_gui=self.manager_gui,
)
message_window.present()
if community_repo is False and self.source == "community":
mw = MessageWindow(
title="Cannot find %s pacman repo" % kernel.repository,
message="Enable the pacman repository then retry the installation",
transient_for=self.manager_gui,
detailed_message=False,
)
mw.present()
else:
message_window = FlowBoxMessageWindow(
title=title,
message=message,
action="install",
kernel=kernel,
transient_for=self.manager_gui,
textview=self.manager_gui.textview,
textbuffer=self.manager_gui.textbuffer,
switch=switch,
source=self.source,
manager_gui=self.manager_gui,
downgrade=downgrade,
)
message_window.present()
return True
# switch widget is currently toggled on
@ -327,17 +356,18 @@ class FlowBox(Gtk.FlowBox):
if len(installed_kernels) > 1:
if self.source == "community":
message = "This will remove <b>%s-%s</b> - Is this ok ?" % (
message = "Confirm the removal of <b>%s-%s</b>" % (
kernel.name,
kernel.version,
)
elif self.source == "official":
message = (
"This will remove <b>%s</b> - Is this ok ?" % kernel.version
message = "Confirm the removal of <b>%s-%s</b>" % (
kernel.name,
kernel.version,
)
message_window = FlowBoxMessageWindow(
title="Kernel uninstall",
title="Kernel uninstallation",
message=message,
action="uninstall",
kernel=kernel,
@ -347,6 +377,7 @@ class FlowBox(Gtk.FlowBox):
switch=switch,
source=self.source,
manager_gui=self.manager_gui,
downgrade=downgrade,
)
message_window.present()
return True
@ -361,7 +392,6 @@ class FlowBox(Gtk.FlowBox):
title="Warning: Uninstall aborted",
message=f"You only have 1 kernel installed\n"
f"<b>{kernel.name} {kernel.version}</b> is currently active\n",
image_path="images/48x48/akm-remove.png",
transient_for=self.manager_gui,
detailed_message=False,
)
@ -378,7 +408,6 @@ class FlowBox(Gtk.FlowBox):
message="Pacman lockfile found, which indicates another pacman process is running",
transient_for=self.manager_gui,
detailed_message=False,
image_path="images/48x48/akm-warning.png",
)
msg_win.present()
return True
@ -496,6 +525,7 @@ class FlowBoxInstalled(Gtk.FlowBox):
switch=None,
source=None,
manager_gui=self.manager_gui,
downgrade=None,
)
message_window.present()
else:
@ -507,7 +537,6 @@ class FlowBoxInstalled(Gtk.FlowBox):
title="Warning: Uninstall aborted",
message=f"You only have 1 kernel installed\n"
f"<b>{installed_kernel.name} {installed_kernel.version}</b>\n",
image_path="images/48x48/akm-remove.png",
transient_for=self.manager_gui,
detailed_message=False,
)
@ -526,6 +555,7 @@ class FlowBoxMessageWindow(Gtk.Window):
switch,
source,
manager_gui,
downgrade,
**kwargs,
):
super().__init__(**kwargs)
@ -552,6 +582,7 @@ class FlowBoxMessageWindow(Gtk.Window):
self.action = action
self.switch = switch
self.source = source
self.downgrade = downgrade
vbox_flowbox_message = Gtk.Box.new(
orientation=Gtk.Orientation.VERTICAL, spacing=10

View file

@ -465,7 +465,10 @@ class KernelStack:
label_warning = Gtk.Label(xalign=0, yalign=0)
label_warning.set_name("label_community_warning")
if len(self.manager_gui.community_kernels) == 0:
if (
self.manager_gui.community_kernels is not None
and len(self.manager_gui.community_kernels) == 0
):
label_warning.set_markup(
f"<b>Cannot find any supported unofficial pacman repository's</b>\n"
f"<b>Add the Chaotic-AUR pacman repository to access Community based kernels</b>"
@ -529,7 +532,10 @@ class KernelStack:
# vbox_search_entry.append(search_entry_community)
# widget.append(vbox_search_entry)
if len(self.manager_gui.community_kernels) > 0:
if (
self.manager_gui.community_kernels is not None
and len(self.manager_gui.community_kernels) > 0
):
self.flowbox_community = FlowBox(
self.manager_gui.community_kernels,
self.manager_gui.active_kernel,

View file

@ -28,9 +28,6 @@ class ManagerGUI(Gtk.ApplicationWindow):
if self.app_version == "${app_version}":
self.app_version = "dev"
fn.logger.info("Version = %s" % self.app_version)
fn.logger.info("Distro = %s" % fn.distro.id())
self.set_title(app_name)
self.set_resizable(True)
self.set_default_size(950, 650)
@ -50,10 +47,6 @@ class ManagerGUI(Gtk.ApplicationWindow):
self.splash_screen = SplashScreen(app_name)
while self.default_context.pending():
fn.time.sleep(0.1)
self.default_context.iteration(True)
try:
fn.Thread(
target=self.wait_for_gui_load,
@ -62,6 +55,10 @@ class ManagerGUI(Gtk.ApplicationWindow):
except Exception as e:
fn.logger.error(e)
while self.default_context.pending():
fn.time.sleep(0.1)
self.default_context.iteration(True)
hbox_notify_revealer = Gtk.Box(
orientation=Gtk.Orientation.HORIZONTAL, spacing=20
)
@ -88,6 +85,9 @@ class ManagerGUI(Gtk.ApplicationWindow):
config_data = fn.setup_config(self)
fn.logger.info("Version = %s" % self.app_version)
fn.logger.info("Distro = %s" % fn.distro.id())
if "bootloader" in config_data.keys():
if config_data["bootloader"]["name"] is not None:
self.bootloader = config_data["bootloader"]["name"].lower()
@ -185,11 +185,11 @@ class ManagerGUI(Gtk.ApplicationWindow):
self.vbox.append(self.notify_revealer)
self.installed_kernels = fn.get_installed_kernels()
if self.installed_kernels is not None:
fn.logger.info("Installed kernels = %s" % len(self.installed_kernels))
self.active_kernel = fn.get_active_kernel()
fn.logger.info("Installed kernels = %s" % len(self.installed_kernels))
self.refresh_cache = False
self.refresh_cache = fn.get_latest_kernel_updates(self)
@ -207,7 +207,6 @@ class ManagerGUI(Gtk.ApplicationWindow):
message=f"The specified Grub config file: {self.bootloader_grub_cfg} does not exist\n"
f"This will cause an issue when updating the bootloader\n"
f"Update the configuration file/use the Advanced Settings to change this\n",
image_path="images/48x48/akm-error.png",
detailed_message=False,
transient_for=self,
)
@ -222,7 +221,6 @@ class ManagerGUI(Gtk.ApplicationWindow):
message=f"Cannot select systemd-boot, UEFI boot mode is not available\n"
f"Update the configuration file\n"
f"Or use the Advanced Settings to change this\n",
image_path="images/48x48/akm-warning.png",
detailed_message=False,
transient_for=self,
)
@ -289,28 +287,26 @@ class ManagerGUI(Gtk.ApplicationWindow):
sync_err = fn.sync_package_db()
if sync_err is not None:
fn.logger.error("Pacman db synchronization failed")
print(
"---------------------------------------------------------------------------"
)
# fn.logger.error("Pacman db synchronization failed")
GLib.idle_add(
self.show_sync_db_message_dialog,
self.show_sync_window,
sync_err,
priority=GLib.PRIORITY_DEFAULT,
)
return False
else:
fn.logger.info("Pacman DB synchronization completed")
return True
def show_sync_db_message_dialog(self, sync_err):
def show_sync_window(self, sync_err):
mw = MessageWindow(
title="Error - Pacman db synchronization",
message=f"Pacman db synchronization failed\n"
f"Failed to run 'pacman -Syu'\n"
f"{sync_err}\n",
image_path="images/48x48/akm-warning.png",
transient_for=self,
detailed_message=True,
)
@ -367,25 +363,27 @@ class ManagerGUI(Gtk.ApplicationWindow):
self.start_get_kernels_threads()
self.pacman_db_sync()
if self.pacman_db_sync() is False:
fn.logger.error("Pacman DB synchronization failed")
else:
fn.logger.debug("Adding community kernels to UI")
fn.logger.debug("Adding community kernels to UI")
try:
thread_get_community_kernels = fn.Thread(
name=fn.thread_get_community_kernels,
target=fn.get_community_kernels,
daemon=True,
args=(self,),
)
try:
thread_get_community_kernels = fn.Thread(
name=fn.thread_get_community_kernels,
target=fn.get_community_kernels,
daemon=True,
args=(self,),
)
thread_get_community_kernels.start()
thread_get_community_kernels.start()
except Exception as e:
fn.logger.error("Exception in thread_get_community_kernels: %s" % e)
finally:
self.community_kernels = self.queue_community_kernels.get()
self.queue_community_kernels.task_done()
except Exception as e:
fn.logger.error("Exception in thread_get_community_kernels: %s" % e)
finally:
self.community_kernels = self.queue_community_kernels.get()
self.queue_community_kernels.task_done()
self.installed_kernels = fn.get_installed_kernels()
@ -507,36 +505,39 @@ class ManagerGUI(Gtk.ApplicationWindow):
# fn.logger.debug("Adding community kernels to UI")
# self.kernel_stack.add_community_kernels_to_stack(reload=False)
self.queue_load_progress.put(1)
fn.logger.info("Starting pacman db synchronization")
self.pacman_db_sync()
if self.pacman_db_sync() is False:
fn.logger.error("Pacman DB synchronization failed")
else:
fn.logger.debug("Adding community kernels to UI")
try:
thread_get_community_kernels = fn.Thread(
name=fn.thread_get_community_kernels,
target=fn.get_community_kernels,
daemon=True,
args=(self,),
)
thread_get_community_kernels.start()
except Exception as e:
fn.logger.error("Exception in thread_get_community_kernels: %s" % e)
finally:
self.community_kernels = self.queue_community_kernels.get()
self.queue_community_kernels.task_done()
fn.logger.debug("Adding community kernels to UI")
self.kernel_stack.add_community_kernels_to_stack(reload=False)
try:
thread_get_community_kernels = fn.Thread(
name=fn.thread_get_community_kernels,
target=fn.get_community_kernels,
daemon=True,
args=(self,),
)
thread_get_community_kernels.start()
except Exception as e:
fn.logger.error("Exception in thread_get_community_kernels: %s" % e)
finally:
self.community_kernels = self.queue_community_kernels.get()
self.queue_community_kernels.task_done()
self.kernel_stack.add_community_kernels_to_stack(reload=False)
while self.default_context.pending():
self.default_context.iteration(True)
fn.time.sleep(0.3)
self.queue_load_progress.put(1)
fn.logger.debug("Adding installed kernels to UI")
self.kernel_stack.add_installed_kernels_to_stack(reload=False)
while self.default_context.pending():
self.default_context.iteration(True)
fn.time.sleep(0.1)

View file

@ -9,10 +9,10 @@ base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
class MessageWindow(Gtk.Window):
def __init__(self, title, message, image_path, detailed_message, **kwargs):
def __init__(self, title, message, detailed_message, **kwargs):
super().__init__(**kwargs)
# self.set_title(title=title)
self.set_title(title=title)
self.set_modal(modal=True)
self.set_resizable(False)
icon_name = "akm-tux"
@ -34,14 +34,7 @@ class MessageWindow(Gtk.Window):
vbox_message = Gtk.Box.new(orientation=Gtk.Orientation.VERTICAL, spacing=10)
vbox_message.set_name("vbox_flowbox_message")
image = Gtk.Picture.new_for_filename(os.path.join(base_dir, image_path))
image.set_content_fit(content_fit=Gtk.ContentFit.SCALE_DOWN)
image.set_halign(Gtk.Align.START)
hbox_image = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
# hbox_image.append(image)
hbox_message = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
self.set_child(child=vbox_message)
@ -65,26 +58,25 @@ class MessageWindow(Gtk.Window):
scrolled_window.set_child(textview)
hbox_image.append(scrolled_window)
hbox_message.append(scrolled_window)
self.set_size_request(700, 500)
self.set_resizable(True)
else:
label_message = Gtk.Label(xalign=0, yalign=0)
label_message = Gtk.Label(xalign=0.5, yalign=0.5)
label_message.set_markup("%s" % message)
label_message.set_name("label_flowbox_message")
hbox_image.append(image)
hbox_image.append(label_message)
hbox_message.append(label_message)
vbox_message.append(hbox_image)
vbox_message.append(hbox_message)
button_ok = Gtk.Button.new_with_label("OK")
button_ok.set_size_request(100, 30)
button_ok.set_halign(Gtk.Align.END)
button_ok.connect("clicked", self.on_button_ok_clicked)
hbox_buttons = Gtk.Box.new(orientation=Gtk.Orientation.HORIZONTAL, spacing=20)
hbox_buttons = Gtk.Box.new(orientation=Gtk.Orientation.HORIZONTAL, spacing=50)
hbox_buttons.set_halign(Gtk.Align.END)
hbox_buttons.append(button_ok)

View file

@ -1,4 +1,5 @@
import random
import shutil
import sys
import gi
import os
@ -27,7 +28,7 @@ class ProgressWindow(Gtk.Window):
self.set_title(title=title)
self.set_modal(modal=True)
self.set_resizable(True)
self.set_size_request(700, 300)
self.set_size_request(700, 250)
self.connect("close-request", self.on_close)
self.textview = textview
@ -88,6 +89,8 @@ class ProgressWindow(Gtk.Window):
image_settings = None
self.local_modules_version = None
if action == "install":
image_settings = Gtk.Image.new_from_file(
os.path.join(base_dir, "images/48x48/akm-install.png")
@ -105,16 +108,6 @@ class ProgressWindow(Gtk.Window):
% (self.kernel.name, self.kernel.version)
)
# get kernel version from pacman
self.installed_kernel_version = fn.get_kernel_version(self.kernel.name)
if self.installed_kernel_version is not None:
fn.logger.debug(
"Installed kernel version = %s" % self.installed_kernel_version
)
else:
fn.logger.debug("Nothing to remove .. previous kernel not installed")
image_settings.set_halign(Gtk.Align.START)
image_settings.set_icon_size(Gtk.IconSize.LARGE)
@ -237,6 +230,7 @@ class ProgressWindow(Gtk.Window):
self.present()
self.linux_headers = None
self.restore_kernel = None
if (
self.source == "official"
@ -244,6 +238,7 @@ class ProgressWindow(Gtk.Window):
or action == "uninstall"
and self.source == "official"
):
fn.logger.info("Official kernel selected")
if kernel.name == "linux":
self.linux_headers = "linux-headers"
if kernel.name == "linux-rt":
@ -273,19 +268,17 @@ class ProgressWindow(Gtk.Window):
kernel.file_format,
),
]
# in the event an install goes wrong, fallback and reinstall previous kernel
if self.source == "official":
self.restore_kernel = None
# in the event an install goes wrong, fallback and reinstall previous kernel
for inst_kernel in fn.get_installed_kernels():
if inst_kernel.name == self.kernel.name:
self.restore_kernel = inst_kernel
break
if self.restore_kernel:
self.local_modules_version = fn.get_kernel_modules_version(
self.restore_kernel.name, "local"
)
fn.logger.info("Restore kernel = %s" % self.restore_kernel.name)
fn.logger.info(
"Restore kernel version = %s" % self.restore_kernel.version
@ -294,6 +287,9 @@ class ProgressWindow(Gtk.Window):
fn.logger.info("No previous %s kernel installed" % self.kernel.name)
else:
fn.logger.info("Community kernel, no kernel restore available")
self.local_modules_version = fn.get_kernel_modules_version(
self.kernel.name, "local"
)
if fn.check_pacman_lockfile() is False:
th_monitor_messages_queue = fn.threading.Thread(
@ -416,7 +412,6 @@ class ProgressWindow(Gtk.Window):
mw = MessageWindow(
title="Pacman process running",
message="Pacman is busy processing a transaction .. please wait",
image_path="images/48x48/akm-progress.png",
transient_for=self,
detailed_message=False,
)
@ -430,7 +425,6 @@ class ProgressWindow(Gtk.Window):
mw = MessageWindow(
title="Pacman process running",
message="Pacman is busy processing a transaction .. please wait",
image_path="images/48x48/akm-progress.png",
transient_for=self,
detailed_message=False,
)
@ -442,15 +436,32 @@ class ProgressWindow(Gtk.Window):
def check_kernel_state(self):
returncode = None
kernel = None
action = None
while True:
items = self.kernel_state_queue.get()
try:
if items is not None:
returncode, action, kernel = items
if items is not None:
returncode, action = items
try:
if returncode == 0:
self.errors_found = False
fn.logger.info("Kernel %s completed" % action)
self.label_status.set_markup(
"<span foreground='orange'><b>Kernel %s completed</b></span>"
% self.action
)
self.label_title.set_markup("<b>Kernel %s completed</b>" % action)
if fn.kernel_initrd(self) == 1:
self.errors_found = True
self.kernel_fail(action)
else:
fn.update_bootloader(self)
if returncode == 0:
self.label_notify_revealer.set_text(
"Kernel %s completed" % action
)
@ -458,170 +469,163 @@ class ProgressWindow(Gtk.Window):
fn.logger.info("Kernel %s completed" % action)
if returncode == 1:
self.errors_found = True
self.label_notify_revealer.set_text("Kernel %s failed" % action)
self.reveal_notify()
fn.logger.error("Kernel %s failed" % action)
event = "%s <b>[ERROR]: Kernel %s failed</b>\n" % (
fn.datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"),
action,
)
self.messages_queue.put(event)
self.spinner.set_spinning(False)
self.hbox_spinner.hide()
self.label_status.set_markup(
"<span foreground='orange'><b>Kernel %s failed - see logs above</b></span>"
% action
"<span foreground='orange'><b>Kernel %s completed</b></span>"
% self.action
)
self.label_title.set_markup(
"<b>Kernel %s completed</b>" % action
)
# undo action here if action == install
if (
action == "install"
and self.restore_kernel is not None
and self.source == "official"
):
event = (
"%s<b> [INFO]: Attempting to undo previous Linux package changes</b>\n"
% (
fn.datetime.datetime.now().strftime(
"%Y-%m-%d-%H-%M-%S"
),
)
)
self.messages_queue.put(event)
self.restore = True
fn.logger.info(
"Installation failed, attempting removal of previous Linux package changes"
)
self.set_title("Kernel installation failed")
self.label_spinner_progress.set_markup(
"<b>Please wait restoring kernel %s</b>"
% self.restore_kernel.version
)
fn.uninstall(self)
fn.logger.info(
"Restoring previously installed kernel %s"
% self.restore_kernel.version
)
self.official_kernels = [
"%s/packages/l/%s/%s-%s-x86_64%s"
% (
fn.archlinux_mirror_archive_url,
self.restore_kernel.name,
self.restore_kernel.name,
self.restore_kernel.version,
".pkg.tar.zst",
),
"%s/packages/l/%s/%s-%s-x86_64%s"
% (
fn.archlinux_mirror_archive_url,
self.linux_headers,
self.linux_headers,
self.restore_kernel.version,
".pkg.tar.zst",
),
]
self.errors_found = False
fn.install_archive_kernel(self)
self.set_title("Kernel installation failed")
self.label_status.set_markup(
f"<span foreground='orange'><b>Kernel %s failed - see logs above</b></span>\n"
% action
)
else:
self.spinner.set_spinning(False)
self.hbox_spinner.hide()
self.set_title("Kernel installation failed")
self.label_title.set_markup("<b>Install failed</b>")
#
# self.label_progress_window_desc.set_markup(
# f"<b>This window can be now closed</b>\n"
# f"<b>A reboot is recommended when Linux packages have changed</b>"
# )
# break
else:
if (
returncode == 0
and "-headers" in kernel
or action == "uninstall"
or action == "install"
and self.errors_found is False
):
fn.update_bootloader(self)
self.update_installed_list()
self.update_official_list()
if len(self.manager_gui.community_kernels) > 0:
self.update_community_list()
if self.restore == False:
self.label_title.set_markup(
"<b>Kernel %s completed</b>" % action
)
self.label_status.set_markup(
"<span foreground='orange'><b>Kernel %s completed</b></span>"
% action
)
self.spinner.set_spinning(False)
self.hbox_spinner.hide()
self.label_progress_window_desc.set_markup(
f"<b>This window can be now closed</b>\n"
f"<b>A reboot is recommended when Linux packages have changed</b>"
)
else:
self.label_title.set_markup(
"<b>Kernel %s failed</b>" % action
)
self.label_status.set_markup(
"<span foreground='orange'><b>Kernel %s failed</b></span>"
% action
)
self.spinner.set_spinning(False)
self.hbox_spinner.hide()
self.label_progress_window_desc.set_markup(
f"<b>This window can be now closed</b>\n"
f"<b>Previous kernel restored due to failure</b>\n"
f"<b>A reboot is recommended when Linux packages have changed</b>"
)
# # else:
# self.spinner.set_spinning(False)
# self.hbox_spinner.hide()
#
# self.label_progress_window_desc.set_markup(
# f"<b>This window can be now closed</b>\n"
# f"<b>A reboot is recommended when Linux packages have changed</b>"
# )
break
elif returncode == 1:
self.errors_found = True
self.kernel_fail(action)
else:
self.restore = None
fn.kernel_initrd(self)
fn.update_bootloader(self)
self.spinner.set_spinning(False)
self.hbox_spinner.hide()
if self.errors_found is True:
self.label_status.set_markup(
f"<span foreground='orange'><b>Kernel %s failed - see logs above</b></span>\n"
% action
)
break
#
# else:
# break
except Exception as e:
fn.logger.error("Exception in check_kernel_state(): %s" % e)
finally:
self.kernel_state_queue.task_done()
if os.path.exists(self.lockfile):
os.unlink(self.lockfile)
finally:
self.kernel_state_queue.task_done()
self.update_installed_list()
self.update_official_list()
if len(self.manager_gui.community_kernels) > 0:
self.update_community_list()
while self.manager_gui.default_context.pending():
self.manager_gui.default_context.iteration(True)
fn.time.sleep(0.3)
self.spinner.set_spinning(False)
self.hbox_spinner.hide()
if self.errors_found is True:
event = (
"%s [ERROR]: Problems encountered with the last transaction, see logs"
% (fn.datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"),)
)
self.messages_queue.put(event)
else:
event = "%s [INFO]: A reboot is recommended" % (
fn.datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"),
)
self.messages_queue.put(event)
if os.path.exists("/usr/lib/modules/build"):
shutil.rmtree("/usr/lib/modules/build", ignore_errors=True)
break
def kernel_fail(self, action):
self.errors_found = True
self.label_notify_revealer.set_text("Kernel %s failed" % action)
self.reveal_notify()
fn.logger.error("Kernel %s failed" % action)
self.label_title.set_markup("<b>Kernel %s failed</b>" % action)
self.label_status.set_markup(
"<span foreground='orange'><b>Kernel %s failed - see logs above</b></span>"
% action
)
# self.action = "uninstall"
fn.logger.info(
"Installation failed, attempting removal of previous Linux package changes"
)
event = "%s [INFO]: Reverting package changes made\n" % (
fn.datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"),
)
self.label_spinner_progress.set_markup(
"<b>Please wait reverting package changes</b>"
)
self.messages_queue.put(event)
self.label_title.set_markup("<b>Kernel install failed</b>")
self.action = "uninstall"
fn.uninstall(self)
if self.restore_kernel is not None and self.source == "official":
self.restore = True
self.label_spinner_progress.set_markup(
"<b>Please wait restoring kernel %s</b>" % self.restore_kernel.version
)
fn.logger.info(
"Restoring previously installed kernel %s" % self.restore_kernel.version
)
event = "%s [INFO]: Restoring previously installed kernel %s\n" % (
fn.datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"),
self.restore_kernel.version,
)
self.messages_queue.put(event)
self.official_kernels = [
"%s/packages/l/%s/%s-%s-x86_64%s"
% (
fn.archlinux_mirror_archive_url,
self.restore_kernel.name,
self.restore_kernel.name,
self.restore_kernel.version,
".pkg.tar.zst",
),
"%s/packages/l/%s/%s-%s-x86_64%s"
% (
fn.archlinux_mirror_archive_url,
self.linux_headers,
self.linux_headers,
self.restore_kernel.version,
".pkg.tar.zst",
),
]
self.errors_found = False
self.action = "install"
fn.install_archive_kernel(self)
self.label_title.set_markup("<b>Kernel restored due to failure</b>")
# elif self.source == "community":
# GLib.idle_add(
# fn.show_mw,
# self,
# "System changes",
# f"Kernel {self.action} failed\n"
# f"<b>There have been errors, please review the logs</b>\n",
# "images/48x48/akm-warning.png",
# priority=GLib.PRIORITY_DEFAULT,
# )
def update_installed_list(self):
self.manager_gui.installed_kernels = fn.get_installed_kernels()

View file

@ -491,7 +491,6 @@ class SettingsWindow(Gtk.Window):
mw = MessageWindow(
title="Legacy boot detected",
message="Cannot select systemd-boot, UEFI boot mode is not available",
image_path="images/48x48/akm-warning.png",
transient_for=self,
detailed_message=False,
)
@ -544,7 +543,6 @@ class SettingsWindow(Gtk.Window):
% self.text_entry_bootloader_file.get_buffer()
.get_text()
.strip(),
image_path="images/48x48/akm-warning.png",
transient_for=self,
detailed_message=False,
)