diff --git a/SOURCES/0001-Make-checks-for-missing-answers-more-strict.patch b/SOURCES/0001-Make-checks-for-missing-answers-more-strict.patch new file mode 100644 index 0000000..43345b8 --- /dev/null +++ b/SOURCES/0001-Make-checks-for-missing-answers-more-strict.patch @@ -0,0 +1,50 @@ +From 84de08e3fe25c7eadf5cbb2f18b83acf3536fc2a Mon Sep 17 00:00:00 2001 +From: Inessa Vasilevskaya +Date: Tue, 6 Sep 2022 15:26:52 +0200 +Subject: [PATCH] Make checks for missing answers more strict + +Previously only presence of one section in the answerfile +has been verified, which led to false-positive preupgrade +reports when some other key has been present in the +dialog section instead of the required one. + +OAMG-7521 +--- + leapp/messaging/__init__.py | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/leapp/messaging/__init__.py b/leapp/messaging/__init__.py +index 1ecc42e..9896179 100644 +--- a/leapp/messaging/__init__.py ++++ b/leapp/messaging/__init__.py +@@ -152,10 +152,17 @@ class BaseMessaging(object): + """ + self._stop_after_phase.set(True) + ++ def _unanswered_questions(self, dialog): ++ userchoices = dialog.get_answers(self._answers) ++ res = [s for s in dialog.answerfile_sections.keys() if s.split('.', 2)[1] not in userchoices] ++ return res ++ + def register_dialog(self, dialog, actor): ++ # FIXME(ivasilev) Make sure it works correctly in case of a dialog with several questions. Currently there ++ # is no such dialog in actors but this code should be revisited if this changes. OAMG-7523 + self._dialogs.append(dialog) +- userchoices = dialog.get_answers(self._answers) +- if not userchoices: ++ unanswered = self._unanswered_questions(dialog) ++ if unanswered: + # produce DialogModel messages for all the dialogs that don't have answers in answerfile + stable_key = dialog.key if dialog.key else hashlib.sha1( + ','.join(sorted(dialog.answerfile_sections.keys())).encode('utf-8')).hexdigest() +@@ -164,6 +171,7 @@ class BaseMessaging(object): + key=stable_key), actor) + else: + # update dialogs with answers from answerfile. That is necessary for proper answerfile generation ++ userchoices = dialog.get_answers(self._answers) + for component, value in userchoices.items(): + dialog_component = dialog.component_by_key(component) + if dialog_component: +-- +2.37.2 + diff --git a/SPECS/leapp.spec b/SPECS/leapp.spec index a462d79..4a8885b 100644 --- a/SPECS/leapp.spec +++ b/SPECS/leapp.spec @@ -37,7 +37,7 @@ Name: leapp Version: 0.15.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: OS & Application modernization framework License: ASL 2.0 @@ -65,6 +65,7 @@ Requires: leapp-repository # PATCHES HERE # Patch0001: filename.patch +Patch0001: 0001-Make-checks-for-missing-answers-more-strict.patch %description @@ -160,6 +161,7 @@ Requires: findutils # APPLY REGISTERED PATCHES HERE # %%patch0001 -p1 +%patch0001 -p1 ################################################## @@ -243,6 +245,10 @@ install -m 0644 -p man/leapp.1 %{buildroot}%{_mandir}/man1/ # no files here %changelog +* Thu Sep 08 2022 Petr Stodulka - 0.15.0-2 +- Fix the check of missing required answers +- Resolves: rhbz#2124332 + * Wed Aug 24 2022 Petr Stodulka - 0.15.0-1 - Rebase to v0.15.0 - Bump leapp-framework to 3.1