From 7e90390b670fb0e78e67251601f56fcbd35a4747 Mon Sep 17 00:00:00 2001 From: wangzhe Date: Fri, 26 May 2023 11:39:55 +0800 Subject: [PATCH 1/2] switch from rpm tree to source tree, remove 0001~0010 patch Signed-off-by: wangzhe --- 0005-SMC-progress-indicator.patch | 118 ----------------- leapp-0001-add-remove-actor-parament.patch | 97 -------------- leapp-0002-add-command-no-rhsm_skip.patch | 108 ---------------- ...epo-option-to-upgrade-kernel-to-RHCK.patch | 43 ------ ...-0004-report-a-default-external-link.patch | 81 ------------ leapp-0006-add-customrepo-command.patch | 62 --------- ...-0007-remove-failure-exit-code-check.patch | 28 ---- leapp-0008-More-failure-details.patch | 122 ------------------ ...stem-enviroment-exception-is-defined.patch | 65 ---------- ...locale-when-running-the-IPU-workflow.patch | 37 ------ 10 files changed, 761 deletions(-) delete mode 100644 0005-SMC-progress-indicator.patch delete mode 100644 leapp-0001-add-remove-actor-parament.patch delete mode 100644 leapp-0002-add-command-no-rhsm_skip.patch delete mode 100644 leapp-0003-add-disablerepo-option-to-upgrade-kernel-to-RHCK.patch delete mode 100644 leapp-0004-report-a-default-external-link.patch delete mode 100644 leapp-0006-add-customrepo-command.patch delete mode 100644 leapp-0007-remove-failure-exit-code-check.patch delete mode 100644 leapp-0008-More-failure-details.patch delete mode 100644 leapp-0009-System-enviroment-exception-is-defined.patch delete mode 100644 leapp-0010-Enforce-locale-when-running-the-IPU-workflow.patch diff --git a/0005-SMC-progress-indicator.patch b/0005-SMC-progress-indicator.patch deleted file mode 100644 index 0260c18..0000000 --- a/0005-SMC-progress-indicator.patch +++ /dev/null @@ -1,118 +0,0 @@ -From d65335a0699d23e7cced814d3627268b68cbb46c Mon Sep 17 00:00:00 2001 -From: Weisson -Date: Mon, 28 Nov 2022 16:36:16 +0800 -Subject: [PATCH] SMC progress indicator. - -Signed-off-by: Weisson ---- - leapp/libraries/common/smc_interface.py | 42 +++++++++++++++++++++++++ - leapp/workflows/__init__.py | 15 +++++++-- - 2 files changed, 54 insertions(+), 3 deletions(-) - create mode 100644 leapp/libraries/common/smc_interface.py - -diff --git a/leapp/libraries/common/smc_interface.py b/leapp/libraries/common/smc_interface.py -new file mode 100644 -index 0000000..62faa9c ---- /dev/null -+++ b/leapp/libraries/common/smc_interface.py -@@ -0,0 +1,42 @@ -+import json -+import os -+import time -+ -+ -+DEFAULT_JSON_STATE_PATH = "/var/tmp/state.json" -+ -+def status_log_exists(path=DEFAULT_JSON_STATE_PATH): -+ return os.path.exists(path) -+ -+def load_log_status(path=DEFAULT_JSON_STATE_PATH): -+ if status_log_exists(path): -+ with open(path, "r") as f: -+ state = json.load(f) -+ return state -+ else: -+ return None -+ -+def update_progress_infomation(progress=None, progress_info=None, err_no=None, err_msg=None, path=DEFAULT_JSON_STATE_PATH): -+ if not os.path.exists(path): -+ state_directory = path.rpartition('state.json')[0] -+ if not os.path.exists(state_directory): -+ os.makedirs(state_directory) -+ -+ state = load_log_status(path) or {"ErrorCode": 0 } -+ -+ if int(state["ErrorCode"]) != 0: -+ return -+ -+ if progress is not None: -+ state["Progress"] = int(progress) -+ if progress_info is not None: -+ state["ProgressInfo"] = progress_info -+ if err_no is not None: -+ state["ErrorCode"] = err_no -+ if err_msg is not None: -+ state["ErrorMsg"] = err_msg -+ -+ state["Timestamp"] = int(time.time()) -+ -+ with open(path, "w") as f: -+ json.dump(state, f) -diff --git a/leapp/workflows/__init__.py b/leapp/workflows/__init__.py -index 9ec2630..6463160 100644 ---- a/leapp/workflows/__init__.py -+++ b/leapp/workflows/__init__.py -@@ -18,6 +18,8 @@ from leapp.workflows.phases import Phase - from leapp.workflows.policies import Policies - from leapp.workflows.phaseactors import PhaseActors - -+from leapp.libraries.common import smc_interface -+ - - def _phase_sorter_key(a): - return a.get_index() -@@ -263,6 +265,7 @@ class Workflow(with_metaclass(WorkflowMeta)): - if not os.environ.get('LEAPP_HOSTNAME', None): - os.environ['LEAPP_HOSTNAME'] = socket.getfqdn() - -+ smc_state_file_path = os.environ.get("DEFAULT_JSON_STATE_PATH") or smc_interface.DEFAULT_JSON_STATE_PATH - self.log.info('Starting workflow execution: {name} - ID: {id}'.format( - name=self.name, id=os.environ['LEAPP_EXECUTION_ID'])) - -@@ -283,7 +286,7 @@ class Workflow(with_metaclass(WorkflowMeta)): - raise CommandError('Phase {phase} does not exist in the workflow'.format(phase=phase)) - - self._stop_after_phase_requested = False -- for phase in self._phase_actors: -+ for i, phase in enumerate(self._phase_actors): - os.environ['LEAPP_CURRENT_PHASE'] = phase[0].name - if skip_phases_until: - if skip_phases_until in phase_names(phase): -@@ -325,9 +328,10 @@ class Workflow(with_metaclass(WorkflowMeta)): - config_model=config_model, skip_dialogs=skip_dialogs) - try: - instance.run() -- except BaseException: -+ except Exception as e: -+ smc_interface.update_progress_infomation(progress=None, progress_info='fail', err_no=1, err_msg='Actor %s fails : %s' % (str(instance), str(e)), path=smc_state_file_path) - self._unhandled_exception = True -- raise -+ raise e - - self._stop_after_phase_requested = messaging.stop_after_phase or self._stop_after_phase_requested - -@@ -396,6 +400,11 @@ class Workflow(with_metaclass(WorkflowMeta)): - if early_finish: - return - -+ progress = int(float(i + 1) / len(self._phase_actors) * 100.0) -+ progress_info = phase[0].name -+ err_no = 0 -+ err_msg = "running" if progress < 100 else "done" -+ smc_interface.update_progress_infomation(progress, progress_info, err_no, err_msg, smc_state_file_path) - - def get_workflows(): - """ --- -2.30.1 (Apple Git-130) - diff --git a/leapp-0001-add-remove-actor-parament.patch b/leapp-0001-add-remove-actor-parament.patch deleted file mode 100644 index 94d05d6..0000000 --- a/leapp-0001-add-remove-actor-parament.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 45813d25eacb9f1fb2f25a1be9492e7c08cf8aa2 Mon Sep 17 00:00:00 2001 -From: yuki1109 <750172132@qq.com> -Date: Wed, 1 Jun 2022 20:08:33 +0800 -Subject: [PATCH] Add remove actor parament - -Signed-off-by: yuki1109 <750172132@qq.com> ---- - leapp/cli/upgrade/__init__.py | 14 ++++++++++---- - leapp/workflows/__init__.py | 5 ++++- - 2 files changed, 14 insertions(+), 5 deletions(-) - -diff --git a/leapp/cli/upgrade/__init__.py b/leapp/cli/upgrade/__init__.py -index a6a9935..c7e65af 100644 ---- a/leapp/cli/upgrade/__init__.py -+++ b/leapp/cli/upgrade/__init__.py -@@ -191,6 +191,7 @@ def process_whitelist_experimental(repositories, workflow, configuration, logger - @command_opt('verbose', is_flag=True, help='Enable verbose logging', inherit=False) - @command_opt('no-rhsm', is_flag=True, help='Use only custom repositories and skip actions' - ' with Red Hat Subscription Manager') -+@command_opt('removeactor',action='append',metavar='ActorName',help='Remove specified actor') - @command_opt('enablerepo', action='append', metavar='', - help='Enable specified repository. Can be used multiple times.') - def upgrade(args): -@@ -225,7 +226,9 @@ def upgrade(args): - archive_logfiles() - logger = configure_logger('leapp-upgrade.log') - os.environ['LEAPP_EXECUTION_ID'] = context -- -+ actor_name = [] -+ if args.removeactor: -+ actor_name = args.removeactor - if args.resume: - logger.info("Resuming execution after phase: %s", skip_phases_until) - try: -@@ -238,7 +241,7 @@ def upgrade(args): - with beautify_actor_exception(): - logger.info("Using answerfile at %s", answerfile_path) - workflow.load_answers(answerfile_path, userchoices_path) -- workflow.run(context=context, skip_phases_until=skip_phases_until, skip_dialogs=True) -+ workflow.run(context=context, skip_phases_until=skip_phases_until, skip_dialogs=True,actor_name=actor_name) - - logger.info("Answerfile will be created at %s", answerfile_path) - workflow.save_answers(answerfile_path, userchoices_path) -@@ -259,6 +262,7 @@ def upgrade(args): - @command_opt('verbose', is_flag=True, help='Enable verbose logging', inherit=False) - @command_opt('no-rhsm', is_flag=True, help='Use only custom repositories and skip actions' - ' with Red Hat Subscription Manager') -+@command_opt('removeactor',action='append',metavar='ActorName',help='Remove specified actor') - @command_opt('enablerepo', action='append', metavar='', - help='Enable specified repository. Can be used multiple times.') - def preupgrade(args): -@@ -276,7 +280,9 @@ def preupgrade(args): - archive_logfiles() - logger = configure_logger('leapp-preupgrade.log') - os.environ['LEAPP_EXECUTION_ID'] = context -- -+ actor_name = [] -+ if args.removeactor: -+ actor_name = args.removeactor - try: - repositories = load_repositories() - except LeappError as exc: -@@ -288,7 +294,7 @@ def preupgrade(args): - workflow.load_answers(answerfile_path, userchoices_path) - until_phase = 'ReportsPhase' - logger.info('Executing workflow until phase: %s', until_phase) -- workflow.run(context=context, until_phase=until_phase, skip_dialogs=True) -+ workflow.run(context=context, until_phase=until_phase, skip_dialogs=True,actor_name=actor_name) - - logger.info("Answerfile will be created at %s", answerfile_path) - workflow.save_answers(answerfile_path, userchoices_path) -diff --git a/leapp/workflows/__init__.py b/leapp/workflows/__init__.py -index 7d8535e..8b78cd0 100644 ---- a/leapp/workflows/__init__.py -+++ b/leapp/workflows/__init__.py -@@ -230,7 +230,7 @@ class Workflow(with_metaclass(WorkflowMeta)): - if phase: - return phase in [name for phs in self._phase_actors for name in phase_names(phs)] - -- def run(self, context=None, until_phase=None, until_actor=None, skip_phases_until=None, skip_dialogs=False): -+ def run(self, context=None, until_phase=None, until_actor=None, skip_phases_until=None, skip_dialogs=False,actor_name=[]): - """ - Executes the workflow - -@@ -301,6 +301,9 @@ class Workflow(with_metaclass(WorkflowMeta)): - current_logger.info("Starting stage {stage} of phase {phase}".format( - phase=phase[0].name, stage=stage.stage)) - for actor in stage.actors: -+ if actor.name in actor_name: -+ current_logger.info("Skip actor: {actor}".format(actor=actor.name)) -+ continue - if early_finish: - return - designation = '' --- -2.24.3 (Apple Git-128) - diff --git a/leapp-0002-add-command-no-rhsm_skip.patch b/leapp-0002-add-command-no-rhsm_skip.patch deleted file mode 100644 index edcd1f0..0000000 --- a/leapp-0002-add-command-no-rhsm_skip.patch +++ /dev/null @@ -1,108 +0,0 @@ -From e8aafed7ab22909f8210c98507d141f773554eb2 Mon Sep 17 00:00:00 2001 -From: FrankCui713 -Date: Wed, 1 Jun 2022 20:30:08 +0800 -Subject: [PATCH] add command no-rhsm_skip - -Signed-off-by: FrankCui713 ---- - leapp/cli/upgrade/__init__.py | 19 +++++++++++++++++-- - leapp/workflows/__init__.py | 5 ++++- - 2 files changed, 21 insertions(+), 3 deletions(-) - -diff --git a/leapp/cli/upgrade/__init__.py b/leapp/cli/upgrade/__init__.py -index c7e65af..d338b8b 100644 ---- a/leapp/cli/upgrade/__init__.py -+++ b/leapp/cli/upgrade/__init__.py -@@ -150,6 +150,7 @@ def handle_output_level(args): - - - def prepare_configuration(args): -+ skip_actors = [] - """Returns a configuration dict object while setting a few env vars as a side-effect""" - if args.whitelist_experimental: - args.whitelist_experimental = list(itertools.chain(*[i.split(',') for i in args.whitelist_experimental])) -@@ -161,12 +162,20 @@ def prepare_configuration(args): - os.environ['LEAPP_NO_RHSM'] = '1' - elif os.getenv('LEAPP_NO_RHSM') != '1': - os.environ['LEAPP_NO_RHSM'] = os.getenv('LEAPP_DEVEL_SKIP_RHSM', '0') -+ if args.no_rhsm_skip: -+ os.environ['LEAPP_NO_RHSM'] = '1' -+ args.no_rhsm_skip = list(itertools.chain(*[i.split(',') for i in args.no_rhsm_skip])) -+ # character to lower -+ skip_actors = [skipactor.lower() for skipactor in args.no_rhsm_skip if isinstance(skipactor,str)==True] -+ elif os.getenv('LEAPP_NO_RHSM') != '1': -+ os.environ['LEAPP_NO_RHSM'] = os.getenv('LEAPP_DEVEL_SKIP_RHSM', '0') - if args.enablerepo: - os.environ['LEAPP_ENABLE_REPOS'] = ','.join(args.enablerepo) - configuration = { - 'debug': os.getenv('LEAPP_DEBUG', '0'), - 'verbose': os.getenv('LEAPP_VERBOSE', '0'), - 'whitelist_experimental': args.whitelist_experimental or (), -+ 'skip_actor':skip_actors or [] - } - return configuration - -@@ -191,6 +200,7 @@ def process_whitelist_experimental(repositories, workflow, configuration, logger - @command_opt('verbose', is_flag=True, help='Enable verbose logging', inherit=False) - @command_opt('no-rhsm', is_flag=True, help='Use only custom repositories and skip actions' - ' with Red Hat Subscription Manager') -+@command_opt('no-rhsm_skip', action='append', metavar='ActorName', help='Enable skip actors with no-rhsm') - @command_opt('removeactor',action='append',metavar='ActorName',help='Remove specified actor') - @command_opt('enablerepo', action='append', metavar='', - help='Enable specified repository. Can be used multiple times.') -@@ -241,7 +251,9 @@ def upgrade(args): - with beautify_actor_exception(): - logger.info("Using answerfile at %s", answerfile_path) - workflow.load_answers(answerfile_path, userchoices_path) -- workflow.run(context=context, skip_phases_until=skip_phases_until, skip_dialogs=True,actor_name=actor_name) -+ skip_actors = configuration.get('skip_actor') -+ logger.info("The skipped actors will be:" + " ".join(skip_actors)) -+ workflow.run(context=context, skip_phases_until=skip_phases_until, skip_dialogs=True, actor_name=actor_name, skip_actors=skip_actors) - - logger.info("Answerfile will be created at %s", answerfile_path) - workflow.save_answers(answerfile_path, userchoices_path) -@@ -262,6 +274,7 @@ def upgrade(args): - @command_opt('verbose', is_flag=True, help='Enable verbose logging', inherit=False) - @command_opt('no-rhsm', is_flag=True, help='Use only custom repositories and skip actions' - ' with Red Hat Subscription Manager') -+@command_opt('no-rhsm_skip', action='append', metavar='ActorName', help='Enable skip actors with no-rhsm') - @command_opt('removeactor',action='append',metavar='ActorName',help='Remove specified actor') - @command_opt('enablerepo', action='append', metavar='', - help='Enable specified repository. Can be used multiple times.') -@@ -294,7 +307,9 @@ def preupgrade(args): - workflow.load_answers(answerfile_path, userchoices_path) - until_phase = 'ReportsPhase' - logger.info('Executing workflow until phase: %s', until_phase) -- workflow.run(context=context, until_phase=until_phase, skip_dialogs=True,actor_name=actor_name) -+ skip_actors = configuration.get('skip_actor') -+ logger.info("The skipped actors will be:" + " ".join(skip_actors)) -+ workflow.run(context=context, until_phase=until_phase, skip_dialogs=True, actor_name=actor_name, skip_actors=skip_actors) - - logger.info("Answerfile will be created at %s", answerfile_path) - workflow.save_answers(answerfile_path, userchoices_path) -diff --git a/leapp/workflows/__init__.py b/leapp/workflows/__init__.py -index 8b78cd0..e52b7b8 100644 ---- a/leapp/workflows/__init__.py -+++ b/leapp/workflows/__init__.py -@@ -230,7 +230,8 @@ class Workflow(with_metaclass(WorkflowMeta)): - if phase: - return phase in [name for phs in self._phase_actors for name in phase_names(phs)] - -- def run(self, context=None, until_phase=None, until_actor=None, skip_phases_until=None, skip_dialogs=False,actor_name=[]): -+ def run(self, context=None, until_phase=None, until_actor=None, skip_phases_until=None, skip_dialogs=False,actor_name=[], -+ skip_actors=[]): - """ - Executes the workflow - -@@ -306,6 +307,8 @@ class Workflow(with_metaclass(WorkflowMeta)): - continue - if early_finish: - return -+ if actor.name in skip_actors: #skip the actor -+ continue - designation = '' - if ExperimentalTag in actor.tags: - designation = '[EXPERIMENTAL]' --- -1.8.3.1 - diff --git a/leapp-0003-add-disablerepo-option-to-upgrade-kernel-to-RHCK.patch b/leapp-0003-add-disablerepo-option-to-upgrade-kernel-to-RHCK.patch deleted file mode 100644 index 0b72fb1..0000000 --- a/leapp-0003-add-disablerepo-option-to-upgrade-kernel-to-RHCK.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 5f100bef27b052e2626cbf3fd923bcf8dcc72fe4 Mon Sep 17 00:00:00 2001 -From: mgb01105731 -Date: Fri, 9 Sep 2022 17:44:50 +0800 -Subject: [PATCH] add --disablerepo option to upgrade kernel to RHCK - ---- - leapp/cli/upgrade/__init__.py | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/leapp/cli/upgrade/__init__.py b/leapp/cli/upgrade/__init__.py -index d338b8b..af8cfe4 100644 ---- a/leapp/cli/upgrade/__init__.py -+++ b/leapp/cli/upgrade/__init__.py -@@ -171,6 +171,8 @@ def prepare_configuration(args): - os.environ['LEAPP_NO_RHSM'] = os.getenv('LEAPP_DEVEL_SKIP_RHSM', '0') - if args.enablerepo: - os.environ['LEAPP_ENABLE_REPOS'] = ','.join(args.enablerepo) -+ if args.disablerepo: -+ os.environ['LEAPP_DISABLE_REPOS'] = ','.join(args.disablerepo) - configuration = { - 'debug': os.getenv('LEAPP_DEBUG', '0'), - 'verbose': os.getenv('LEAPP_VERBOSE', '0'), -@@ -204,6 +206,8 @@ def process_whitelist_experimental(repositories, workflow, configuration, logger - @command_opt('removeactor',action='append',metavar='ActorName',help='Remove specified actor') - @command_opt('enablerepo', action='append', metavar='', - help='Enable specified repository. Can be used multiple times.') -+@command_opt('disablerepo', action='append', metavar='', -+ help='Disable repository.') - def upgrade(args): - skip_phases_until = None - context = str(uuid.uuid4()) -@@ -278,6 +282,8 @@ def upgrade(args): - @command_opt('removeactor',action='append',metavar='ActorName',help='Remove specified actor') - @command_opt('enablerepo', action='append', metavar='', - help='Enable specified repository. Can be used multiple times.') -+@command_opt('disablerepo', action='append', metavar='', -+ help='Disable repository.') - def preupgrade(args): - context = str(uuid.uuid4()) - cfg = get_config() --- -2.19.2 - diff --git a/leapp-0004-report-a-default-external-link.patch b/leapp-0004-report-a-default-external-link.patch deleted file mode 100644 index 5438525..0000000 --- a/leapp-0004-report-a-default-external-link.patch +++ /dev/null @@ -1,81 +0,0 @@ -diff -uNrp leapp-0.12.0.orig/leapp/reporting/__init__.py leapp-0.12.0/leapp/reporting/__init__.py ---- leapp-0.12.0.orig/leapp/reporting/__init__.py 2022-09-22 22:57:11.850595108 +0800 -+++ leapp-0.12.0/leapp/reporting/__init__.py 2022-09-23 23:19:22.578609278 +0800 -@@ -198,6 +198,16 @@ class ExternalLink(BaseListPrimitive): - def path(self): - return ('detail', 'external') - -+ def __repr__(self): -+ return "[{}] {}".format(self._value['title'], self._value['url']) -+ -+ @classmethod -+ def from_dict(cls, data): -+ values = [] -+ for value in data.get('external', []): -+ values.append(ExternalLink(value.get('url', ''), value.get('title', ''))) -+ return values -+ - - class RelatedResource(BaseListPrimitive): - """Report detail field for related resources (e.g. affected packages/files)""" -@@ -289,6 +299,7 @@ def _sanitize_entries(entries): - if not any(isinstance(e, Audience) for e in entries): - entries.append(Audience('sysadmin')) - _check_stable_key(entries, raise_if_undefined=os.getenv('LEAPP_DEVEL_FIXED_REPORT_KEY', '0') != '0') -+ _check_external_link(entries) - - - def _check_stable_key(entries, raise_if_undefined=False): -@@ -325,6 +336,31 @@ def _check_stable_key(entries, raise_if_ - logger.warning('Stable Key report entry not provided, dynamically generating one - {}'.format(key_value)) - - -+def _check_external_link(entries): -+ """ -+ Inserts a default ExternalLink into the entries of the report if it doesn't exist. -+ -+ The default one is giving a stable AOMS knowledge base url and users can query the expected -+ content by the entry 'Key' -+ """ -+ def _find_entry(cls): -+ entry = next((e for e in entries if isinstance(e, cls)), None) -+ if entry: -+ return entry._value -+ -+ logger = logging.getLogger('leapp.reporting') -+ external_link = _find_entry(ExternalLink) -+ if external_link: -+ # ExternalLink is already there -+ return -+ -+ # No ExternalLink found - let's use the common one! -+ url = "https://www.yuque.com/anolis-docs/kbase/gk90ag" -+ title = "Anolis OS Migration System(AOMS) Knowledge Base, visit it and query the content by the given Key" -+ entries.append(ExternalLink(url, title)) -+ logger.warning('Special ExternalLink report entry not provided, using the default one - {}'.format(url)) -+ -+ - def _create_report_object(entries): - report = {} - -diff -uNrp leapp-0.12.0.orig/leapp/utils/report.py leapp-0.12.0/leapp/utils/report.py ---- leapp-0.12.0.orig/leapp/utils/report.py 2022-09-22 22:57:11.850595108 +0800 -+++ leapp-0.12.0/leapp/utils/report.py 2022-09-23 23:20:04.895895225 +0800 -@@ -2,7 +2,7 @@ import hashlib - import json - import os - --from leapp.reporting import Remediation, Severity, create_report_from_error, create_report_from_deprecation -+from leapp.reporting import Remediation, Severity, ExternalLink, create_report_from_error, create_report_from_deprecation - from leapp.utils.audit import get_messages, get_audit_entry - - -@@ -101,6 +101,8 @@ def generate_report_file(messages_to_rep - if remediation: - f.write('Remediation: {}\n'.format(remediation)) - f.write('Key: {}\n'.format(message['key'])) -+ for external_link in ExternalLink.from_dict(message.get('detail', {})): -+ f.write('ExternalLink: {}\n'.format(external_link)) - f.write('-' * 40 + '\n') - elif path.endswith(".json"): - with open(path, 'w') as f: diff --git a/leapp-0006-add-customrepo-command.patch b/leapp-0006-add-customrepo-command.patch deleted file mode 100644 index 0699735..0000000 --- a/leapp-0006-add-customrepo-command.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff -uNrp leapp-0.12.0.orig/leapp/cli/__init__.py leapp-0.12.0/leapp/cli/__init__.py ---- leapp-0.12.0.orig/leapp/cli/__init__.py 2022-12-06 11:51:30.985828197 +0800 -+++ leapp-0.12.0/leapp/cli/__init__.py 2022-12-06 11:53:49.434825034 +0800 -@@ -13,6 +13,6 @@ def cli(args): # noqa; pylint: disable=u - - def main(): - os.environ['LEAPP_HOSTNAME'] = socket.getfqdn() -- for cmd in [upgrade.list_runs, upgrade.preupgrade, upgrade.upgrade, upgrade.answer]: -+ for cmd in [upgrade.list_runs, upgrade.preupgrade, upgrade.upgrade, upgrade.answer, upgrade.customrepo]: - cli.command.add_sub(cmd.command) - cli.command.execute('leapp version {}'.format(VERSION)) -diff -uNrp leapp-0.12.0.orig/leapp/cli/upgrade/__init__.py leapp-0.12.0/leapp/cli/upgrade/__init__.py ---- leapp-0.12.0.orig/leapp/cli/upgrade/__init__.py 2022-12-06 11:51:30.985828197 +0800 -+++ leapp-0.12.0/leapp/cli/upgrade/__init__.py 2022-12-06 14:35:25.028388200 +0800 -@@ -18,7 +18,9 @@ from leapp.utils.clicmd import command, - from leapp.utils.output import (report_errors, report_info, beautify_actor_exception, report_unsupported, - report_inhibitors) - from leapp.utils.report import fetch_upgrade_report_messages, generate_report_file -+from leapp.libraries.stdlib import run - -+CUSTOM_REPO_PATH="/etc/leapp/files/leapp_upgrade_repositories.repo" - - def archive_logfiles(): - """ Archive log files from a previous run of Leapp """ -@@ -183,6 +185,21 @@ def process_whitelist_experimental(repos - raise CommandError(msg) - - -+def reset_repo_url(): -+ for repo_name in ['BaseOS', 'AppStream', 'PowerTools', 'HighAvailability', 'Plus', 'Extras']: -+ replace_url = 's#baseurl=.*/' + repo_name + '/#baseurl=https://mirrors.openanolis.cn/anolis/8/' + repo_name + '/#' -+ cmd = ['sed', '-i', replace_url, CUSTOM_REPO_PATH] -+ run(cmd) -+ -+ -+def set_custom_url(args): -+ url_str = ";".join(args.seturl) -+ for repo_name in ['BaseOS', 'AppStream', 'PowerTools', 'HighAvailability', 'Plus', 'Extras']: -+ replace_url = 's#baseurl=.*/' + repo_name + '/#baseurl=' + url_str + '/' + repo_name + '/#' -+ cmd = ['sed', '-i', replace_url, CUSTOM_REPO_PATH] -+ run(cmd) -+ -+ - @command('upgrade', help='Upgrade the current system to the next available major version.') - @command_opt('resume', is_flag=True, help='Continue the last execution after it was stopped (e.g. after reboot)') - @command_opt('reboot', is_flag=True, help='Automatically performs reboot when requested.') -@@ -341,3 +358,15 @@ def list_runs(args): # noqa; pylint: di - file=sys.stdout) - else: - raise CommandError('No previous run found!') -+ -+ -+@command('customrepo', help='Manage costom repo url to upgrade') -+@command_opt('seturl', action='append', metavar='repourl', -+ help='Set custom repo url, please make sure the url stars with http(s) and ends with explicit version number, example: https://mirrors.openanolis.cn/anolis/8/') -+@command_opt('reset', is_flag=True, -+ help='reset repo url to Anolis') -+def customrepo(args): -+ if args.reset: -+ reset_repo_url() -+ if args.seturl: -+ set_custom_url(args) diff --git a/leapp-0007-remove-failure-exit-code-check.patch b/leapp-0007-remove-failure-exit-code-check.patch deleted file mode 100644 index 52e8d54..0000000 --- a/leapp-0007-remove-failure-exit-code-check.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 28ecb7479355ef533d16c55d06e549dbf4754f2b Mon Sep 17 00:00:00 2001 -From: Weisson -Date: Fri, 23 Dec 2022 15:51:11 +0800 -Subject: [PATCH] [Bugfix] Leapp stops if any exception is thrown, the shortcut - on exit-code check might cause problem. - -Signed-off-by: Weisson ---- - leapp/libraries/common/smc_interface.py | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/leapp/libraries/common/smc_interface.py b/leapp/libraries/common/smc_interface.py -index 62faa9c..d7d3396 100644 ---- a/leapp/libraries/common/smc_interface.py -+++ b/leapp/libraries/common/smc_interface.py -@@ -24,9 +24,6 @@ def update_progress_infomation(progress=None, progress_info=None, err_no=None, e - - state = load_log_status(path) or {"ErrorCode": 0 } - -- if int(state["ErrorCode"]) != 0: -- return -- - if progress is not None: - state["Progress"] = int(progress) - if progress_info is not None: --- -2.30.1 (Apple Git-130) - diff --git a/leapp-0008-More-failure-details.patch b/leapp-0008-More-failure-details.patch deleted file mode 100644 index 50047bc..0000000 --- a/leapp-0008-More-failure-details.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 83a2b20434e39068f1983b29503f4d4b563b3801 Mon Sep 17 00:00:00 2001 -From: Weisson -Date: Fri, 23 Dec 2022 16:39:06 +0800 -Subject: [PATCH] Provide more failure information for debug propose. - -Signed-off-by: Weisson ---- - leapp/actors/__init__.py | 11 ++++++++++- - leapp/exceptions.py | 13 ++++++++++++- - leapp/utils/deprecation.py | 3 +++ - leapp/workflows/__init__.py | 1 - - 4 files changed, 25 insertions(+), 3 deletions(-) - -diff --git a/leapp/actors/__init__.py b/leapp/actors/__init__.py -index af133fe..1f55215 100644 ---- a/leapp/actors/__init__.py -+++ b/leapp/actors/__init__.py -@@ -5,7 +5,9 @@ import sys - from leapp.compat import string_types - from leapp.dialogs import Dialog - from leapp.exceptions import (MissingActorAttributeError, RequestStopAfterPhase, StopActorExecution, -- StopActorExecutionError, WorkflowConfigNotAvailable, WrongAttributeTypeError) -+ StopActorExecutionError, WorkflowConfigNotAvailable, WrongAttributeTypeError, -+ RPMDownloadOrInstallError) -+ - from leapp.models import DialogModel, Model - from leapp.models.error_severity import ErrorSeverity - from leapp.tags import Tag -@@ -14,6 +16,8 @@ from leapp.utils.i18n import install_translation_for_actor - from leapp.utils.meta import get_flattened_subclasses - from leapp.workflows.api import WorkflowAPI - -+from leapp.libraries.common import smc_interface -+ - - class Actor(object): - """ -@@ -331,10 +335,15 @@ class Actor(object): - def run(self, *args): - """ Runs the actor calling the method :py:func:`process`. """ - os.environ['LEAPP_CURRENT_ACTOR'] = self.name -+ -+ smc_state_file_path = os.environ.get("DEFAULT_JSON_STATE_PATH") or smc_interface.DEFAULT_JSON_STATE_PATH - try: - self.process(*args) - except StopActorExecution: - pass -+ except RPMDownloadOrInstallError as err: -+ smc_interface.update_progress_infomation(progress=None, progress_info=err.traceback[:512], err_no=err.err_code, err_msg=str(err.message), path=smc_state_file_path) -+ self.report_error(err.message, err.severity, err.details) - except StopActorExecutionError as err: - self.report_error(err.message, err.severity, err.details) - except RequestStopAfterPhase: -diff --git a/leapp/exceptions.py b/leapp/exceptions.py -index 7959cf2..393273d 100644 ---- a/leapp/exceptions.py -+++ b/leapp/exceptions.py -@@ -118,7 +118,7 @@ class StopActorExecutionError(LeappError): - # import here to break import cycle - from leapp.models.error_severity import ErrorSeverity # pylint: disable=import-outside-toplevel - -- def __init__(self, message, severity=ErrorSeverity.ERROR, details=None): -+ def __init__(self, message, severity=ErrorSeverity.ERROR, details=None, err_code=999, traceback=""): - """ - :param message: A message to print the possible error - :type message: str -@@ -130,6 +130,17 @@ class StopActorExecutionError(LeappError): - super(StopActorExecutionError, self).__init__(message) - self.severity = severity - self.details = details -+ self.err_code = err_code -+ self.traceback = traceback -+ -+ -+class RPMDownloadOrInstallError(StopActorExecutionError): -+ """ This exception is used to gracefully stop execution of actor, but allows the workflow to continue. """ -+ # import here to break import cycle -+ from leapp.models.error_severity import ErrorSeverity # pylint: disable=import-outside-toplevel -+ -+ def __init__(self, message, traceback, severity=ErrorSeverity.ERROR, details=None, err_code=202): -+ super(RPMDownloadOrInstallError, self).__init__(message, severity, details, err_code, traceback) - - - class RequestStopAfterPhase(LeappError): -diff --git a/leapp/utils/deprecation.py b/leapp/utils/deprecation.py -index d1647a9..3826846 100644 ---- a/leapp/utils/deprecation.py -+++ b/leapp/utils/deprecation.py -@@ -4,8 +4,10 @@ import warnings - from collections import namedtuple - - import six -+import os - - from leapp.models import Model -+from leapp.libraries.common import smc_interface - - - _suppressed_deprecations = set() -@@ -36,6 +38,7 @@ def suppress_deprecation(*suppressed_items): - def process_wrapper(*args, **kwargs): - # we need to remove later just items that we add right now - # added_items == new items we add now to ... -+ smc_state_file_path = os.environ.get("DEFAULT_JSON_STATE_PATH") or smc_interface.DEFAULT_JSON_STATE_PATH - added_items = set(suppressed_items) - _suppressed_deprecations - _suppressed_deprecations.update(added_items) - try: -diff --git a/leapp/workflows/__init__.py b/leapp/workflows/__init__.py -index 5b218b2..66b7710 100644 ---- a/leapp/workflows/__init__.py -+++ b/leapp/workflows/__init__.py -@@ -329,7 +329,6 @@ class Workflow(with_metaclass(WorkflowMeta)): - try: - instance.run() - except Exception as e: -- smc_interface.update_progress_infomation(progress=None, progress_info='fail', err_no=1, err_msg='Actor %s fails : %s' % (str(instance), str(e)), path=smc_state_file_path) - self._unhandled_exception = True - raise e - --- -2.30.1 (Apple Git-130) - diff --git a/leapp-0009-System-enviroment-exception-is-defined.patch b/leapp-0009-System-enviroment-exception-is-defined.patch deleted file mode 100644 index ae75093..0000000 --- a/leapp-0009-System-enviroment-exception-is-defined.patch +++ /dev/null @@ -1,65 +0,0 @@ -From bcd452421af220d9ed589e6a7566d42aa6c78aab Mon Sep 17 00:00:00 2001 -From: Weisson -Date: Mon, 6 Mar 2023 11:36:10 +0800 -Subject: [PATCH] System enviroment exception and its process failure exception - are defined. - -Signed-off-by: Weisson ---- - leapp/actors/__init__.py | 3 ++- - leapp/exceptions.py | 18 ++++++++++++++++++ - 2 files changed, 20 insertions(+), 1 deletion(-) - -diff --git a/leapp/actors/__init__.py b/leapp/actors/__init__.py -index 1f55215..cb02806 100644 ---- a/leapp/actors/__init__.py -+++ b/leapp/actors/__init__.py -@@ -6,6 +6,7 @@ from leapp.compat import string_types - from leapp.dialogs import Dialog - from leapp.exceptions import (MissingActorAttributeError, RequestStopAfterPhase, StopActorExecution, - StopActorExecutionError, WorkflowConfigNotAvailable, WrongAttributeTypeError, -+ SystemEnvironmentCheckError, FailureInSystemEnvironmentCheckError, - RPMDownloadOrInstallError) - - from leapp.models import DialogModel, Model -@@ -341,7 +342,7 @@ class Actor(object): - self.process(*args) - except StopActorExecution: - pass -- except RPMDownloadOrInstallError as err: -+ except (FailureInSystemEnvironmentCheckError, SystemEnvironmentCheckError, RPMDownloadOrInstallError) as err: - smc_interface.update_progress_infomation(progress=None, progress_info=err.traceback[:512], err_no=err.err_code, err_msg=str(err.message), path=smc_state_file_path) - self.report_error(err.message, err.severity, err.details) - except StopActorExecutionError as err: -diff --git a/leapp/exceptions.py b/leapp/exceptions.py -index 393273d..deb8fdc 100644 ---- a/leapp/exceptions.py -+++ b/leapp/exceptions.py -@@ -143,6 +143,24 @@ class RPMDownloadOrInstallError(StopActorExecutionError): - super(RPMDownloadOrInstallError, self).__init__(message, severity, details, err_code, traceback) - - -+class SystemEnvironmentCheckError(StopActorExecutionError): -+ """ This exception is used to gracefully stop execution of actor, but allows the workflow to continue. """ -+ # import here to break import cycle -+ from leapp.models.error_severity import ErrorSeverity # pylint: disable=import-outside-toplevel -+ -+ def __init__(self, message, traceback, severity=ErrorSeverity.ERROR, details=None, err_code=101): -+ super(SystemEnvironmentCheckError, self).__init__(message, severity, details, err_code, traceback) -+ -+ -+class FailureInSystemEnvironmentCheckError(StopActorExecutionError): -+ """ This exception is used to gracefully stop execution of actor, but allows the workflow to continue. """ -+ # import here to break import cycle -+ from leapp.models.error_severity import ErrorSeverity # pylint: disable=import-outside-toplevel -+ -+ def __init__(self, message, traceback, severity=ErrorSeverity.ERROR, details=None, err_code=199): -+ super(FailureInSystemEnvironmentCheckError, self).__init__(message, severity, details, err_code, traceback) -+ -+ - class RequestStopAfterPhase(LeappError): - """ - This exception is used to gracefully stop the current actor and request the stop of the workflow execution after --- -2.35.3 - diff --git a/leapp-0010-Enforce-locale-when-running-the-IPU-workflow.patch b/leapp-0010-Enforce-locale-when-running-the-IPU-workflow.patch deleted file mode 100644 index 6b4eaff..0000000 --- a/leapp-0010-Enforce-locale-when-running-the-IPU-workflow.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 20879add50aabcef28eca75a10094b8c41f845bc Mon Sep 17 00:00:00 2001 -From: wangcichen -Date: Wed, 17 May 2023 03:26:25 +0800 -Subject: [PATCH] Enforce locale when running the IPU workflow. - -Signed-off-by: wangcichen ---- - leapp/cli/upgrade/__init__.py | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/leapp/cli/upgrade/__init__.py b/leapp/cli/upgrade/__init__.py -index e130a72..672ad61 100644 ---- a/leapp/cli/upgrade/__init__.py -+++ b/leapp/cli/upgrade/__init__.py -@@ -274,6 +274,9 @@ def upgrade(args): - workflow.load_answers(answerfile_path, userchoices_path) - skip_actors = configuration.get('skip_actor') - logger.info("The skipped actors will be:" + " ".join(skip_actors)) -+ os.environ['LANGUAGE'] = 'en_US.UTF-8' -+ os.environ['LC_ALL'] = 'en_US.UTF-8' -+ os.environ['LANG'] = 'en_US.UTF-8' - workflow.run(context=context, skip_phases_until=skip_phases_until, skip_dialogs=True, actor_name=actor_name, skip_actors=skip_actors) - - logger.info("Answerfile will be created at %s", answerfile_path) -@@ -332,6 +335,9 @@ def preupgrade(args): - logger.info('Executing workflow until phase: %s', until_phase) - skip_actors = configuration.get('skip_actor') - logger.info("The skipped actors will be:" + " ".join(skip_actors)) -+ os.environ['LANGUAGE'] = 'en_US.UTF-8' -+ os.environ['LC_ALL'] = 'en_US.UTF-8' -+ os.environ['LANG'] = 'en_US.UTF-8' - workflow.run(context=context, until_phase=until_phase, skip_dialogs=True, actor_name=actor_name, skip_actors=skip_actors) - - logger.info("Answerfile will be created at %s", answerfile_path) --- -2.22.0 - -- Gitee From 5b9e61f9a20895f89de5e5153f725b8c0c4bb2ca Mon Sep 17 00:00:00 2001 From: wangzhe Date: Fri, 26 May 2023 11:48:51 +0800 Subject: [PATCH 2/2] switch from rpm tree to source tree, remove patch step Signed-off-by: wangzhe --- leapp.spec | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/leapp.spec b/leapp.spec index a0a17c0..933f77c 100644 --- a/leapp.spec +++ b/leapp.spec @@ -1,4 +1,4 @@ -%define anolis_release .0.11 +%define anolis_release .0.12 # IMPORTANT: this is for the leapp-framework capability (it's not the real # version of the leapp). The capability reflects changes in api and whatever # functionality important from the point of repository. In case of @@ -37,17 +37,6 @@ Source0: https://github.com/oamg/%{name}/archive/v%{version}.tar.gz#/%{name}- Source1: answerfile BuildArch: noarch -Patch0001: leapp-0001-add-remove-actor-parament.patch -Patch0002: leapp-0002-add-command-no-rhsm_skip.patch -Patch0003: leapp-0003-add-disablerepo-option-to-upgrade-kernel-to-RHCK.patch -Patch0004: leapp-0004-report-a-default-external-link.patch -Patch0005: 0005-SMC-progress-indicator.patch -Patch0006: leapp-0006-add-customrepo-command.patch -Patch0007: leapp-0007-remove-failure-exit-code-check.patch -Patch0008: leapp-0008-More-failure-details.patch -Patch0009: leapp-0009-System-enviroment-exception-is-defined.patch -Patch0010: leapp-0010-Enforce-locale-when-running-the-IPU-workflow.patch - %if !0%{?fedora} %if %{with python3} Requires: python3-%{name} = %{version}-%{release} @@ -165,16 +154,6 @@ Python 3 leapp framework libraries. ################################################## %prep %setup -n %{name}-%{version} -%patch0001 -p1 -%patch0002 -p1 -%patch0003 -p1 -%patch0004 -p1 -%patch0005 -p1 -%patch0006 -p1 -%patch0007 -p1 -%patch0008 -p1 -%patch0009 -p1 -%patch0010 -p1 ################################################## # Build @@ -297,6 +276,9 @@ rm -f %{buildroot}/%{_bindir}/leapp # no files here %changelog +* Fri May 26 2023 wangzhe - 0.12.0-1.0.12 +- switch from rpm tree to source tree, remove all patch + * Thu May 18 2023 Cichen Wang - 0.12.0-1.0.11 - Enforce locale when running the IPU workflow. -- Gitee