diff --git a/0034-migrear-grub2-entry-recovery.patch b/0034-migrear-grub2-entry-recovery.patch new file mode 100644 index 0000000000000000000000000000000000000000..50e16717a075020cc874be51628dabb3f4ab5d66 --- /dev/null +++ b/0034-migrear-grub2-entry-recovery.patch @@ -0,0 +1,63 @@ +From 186971e9c4e849d88db23447a22658f516ca2a40 Mon Sep 17 00:00:00 2001 +From: Weisson +Date: Thu, 8 Dec 2022 15:47:19 +0800 +Subject: [PATCH] migrear grub2 entry recovery. + +Signed-off-by: Weisson +--- + .../actors/dnfupgradetransaction/actor.py | 21 +++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/repos/system_upgrade/el7toel8/actors/dnfupgradetransaction/actor.py b/repos/system_upgrade/el7toel8/actors/dnfupgradetransaction/actor.py +index 73e5a83..289fac2 100644 +--- a/repos/system_upgrade/el7toel8/actors/dnfupgradetransaction/actor.py ++++ b/repos/system_upgrade/el7toel8/actors/dnfupgradetransaction/actor.py +@@ -13,6 +13,8 @@ from leapp.models import ( + UsedTargetRepositories, + ) + from leapp.tags import IPUWorkflowTag, RPMUpgradePhaseTag ++import subprocess ++import re + + + class DnfUpgradeTransaction(Actor): +@@ -35,6 +37,8 @@ class DnfUpgradeTransaction(Actor): + produces = (TransactionCompleted,) + tags = (RPMUpgradePhaseTag, IPUWorkflowTag) + ++ grub2_migrear_prefix = 'title=MigReaR-' ++ + def process(self): + src_rhsm_info = next(self.consume(RHSMInfo), None) + if src_rhsm_info: +@@ -47,10 +51,27 @@ class DnfUpgradeTransaction(Actor): + tasks = next(self.consume(FilteredRpmTransactionTasks), FilteredRpmTransactionTasks()) + target_userspace_info = next(self.consume(TargetUserSpaceInfo), None) + ++ output = subprocess.check_output("grubby --info=ALL", shell=True).strip() ++ grub_entries = output.split('index=') ++ ++ migrear_entries = [] ++ for entry in grub_entries: ++ if self.grub2_migrear_prefix in entry: ++ items = re.findall(r"kernel=(.*)\nargs=(.*)\ninitrd=(.*)\ntitle=(.*)\n", entry) ++ if len(items) == 1: ++ migrear_entries += [dict(zip(("kernel", "args", "initrd", "title"), items[0]))] ++ + dnfplugin.perform_transaction_install( + tasks=tasks, used_repos=used_repos, storage_info=storage_info, target_userspace_info=target_userspace_info, + plugin_info=plugin_info + ) ++ ++ for entry in migrear_entries: ++ try: ++ subprocess.check_call("grubby --add-kernel %s --initrd %s --args=%s --title=%s" % (entry['kernel'], entry['initrd'], entry['args'], entry['title']), shell=True) ++ except Exception as e: ++ self.log.info(" ".join(["Failed restore migrear entry", str(entry), "Exception:", str(e)]), exc_info=True) ++ + self.produce(TransactionCompleted()) + userspace = next(self.consume(TargetUserSpaceInfo), None) + if userspace: +-- +2.30.1 (Apple Git-130) + diff --git a/leapp-repository.spec b/leapp-repository.spec index 31defa4d003bc41d4da36fef433026b443c08ef2..7b746664d57425162278473d7c683cbaf0101620 100644 --- a/leapp-repository.spec +++ b/leapp-repository.spec @@ -11,7 +11,7 @@ }\ py2_byte_compile "%1" "%2"} -%define anolis_release 10 +%define anolis_release 11 Name: leapp-repository Version: 0.13.0 @@ -59,6 +59,7 @@ Patch30: 0030-fix-subprocess-check_output-method-for-backup-service-confi Patch31: 0031-Deal-with-EPEL-repositories-create-by-user-mannally.patch Patch32: 0032-Keep-PermitRootLogin-authentication-behavior-after-m.patch Patch33: 0033-Read-the-driver-list-supported-by-ANCK.patch +Patch34: 0034-migrear-grub2-entry-recovery.patch BuildArch: noarch BuildRequires: python-devel @@ -181,7 +182,10 @@ done; # no files here %changelog -* FRI Dec 9 2022 Bitao Hu - 0.13.0-2.10 +* Mon Dec 12 2022 Weisson - 0.13.0-2.11 +- Migrear grub2 entry recovery is supported. + +* Fri Dec 9 2022 Bitao Hu - 0.13.0-2.10 - Add debug repo into leapp_upgrade_repositories.repo. * Thu Nov 15 2022 Bitao Hu - 0.13.0-2.9