From 861b07305e452203e1ad803645de546812494c8d Mon Sep 17 00:00:00 2001 From: Ricardo Pardini Date: Thu, 19 Jan 2023 00:26:34 +0100 Subject: [PATCH] armbian-next: `patching`: less horrible patching log, pt 37 - don't show stats for patches that are bind applied blind (failed to parse/autogen) - don't show Author, it's too long - don't dump Python exceptions in log - extra: expand Python imports --- lib/tools/common/patching_utils.py | 21 +++++++++++---------- lib/tools/patching.py | 12 ++++++++---- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/tools/common/patching_utils.py b/lib/tools/common/patching_utils.py index 4780a389d..34cb36c5e 100644 --- a/lib/tools/common/patching_utils.py +++ b/lib/tools/common/patching_utils.py @@ -290,8 +290,10 @@ class PatchInPatchFile: return downgrade_to_ascii(remove_quotes(m.group("name"))), remove_quotes(m.group("email")) def one_line_patch_stats(self) -> str: - files_desc = ", ".join(self.patched_file_stats_dict) - return f"{self.text_diffstats()} {{{files_desc}}}" + if (not self.failed_to_parse) and (not self.parent.patch_dir.is_autogen_dir): + files_desc = ", ".join(self.patched_file_stats_dict) + return f"{self.text_diffstats()} {{{files_desc}}}" + return "" def text_diffstats(self) -> str: operations: list[str] = [] @@ -315,8 +317,7 @@ class PatchInPatchFile: except Exception as e: self.problems.append("invalid_diff") self.failed_to_parse = True - log.error( - f"Failed to parse unidiff for file {self.parent.full_file_path()}(:{self.counter}): {str(e).strip()}") + log.warning(f"Failed to parse unidiff for file {self.parent.full_file_path()}(:{self.counter}): '{str(e).strip()}'") return # no point in continuing; the patch is invalid; might be recovered during apply self.total_additions = 0 @@ -359,11 +360,12 @@ class PatchInPatchFile: return self.str_oneline_around("->", "<-") def str_oneline_around(self, prefix, suffix): - extra_email = f"{self.from_email}" if self.from_email is not None else "" - extra_subject = f":'{self.subject}'" if self.subject is not None else "" + # extra_email = f"{self.from_email}" if self.from_email is not None else "" + # extra_subject = f":'{self.subject}'" if self.subject is not None else "" + # extra_author = f":{extra_email}{extra_subject}" desc: str = \ - f"{prefix}{self.parent.relative_dirs_and_base_file_name}(:{self.counter}):" + \ - f"{self.one_line_patch_stats()}:{extra_email}{extra_subject}{suffix}" + f"{prefix}{self.parent.relative_dirs_and_base_file_name}(:{self.counter}) " + \ + f"{self.one_line_patch_stats()}{suffix}" return desc def apply_patch(self, working_dir: str, options: dict[str, bool]): @@ -438,8 +440,7 @@ class PatchInPatchFile: stdout_output = "\n".join([f"STDOUT: {line}" for line in stdout_output.splitlines()]) stdout_output = "\n" + stdout_output if stdout_output != "" else stdout_output self.problems.append("failed_apply") - raise Exception( - f"Failed to apply patch {self.parent.full_file_path()}:{stderr_output}{stdout_output}") + raise Exception(f"Failed to apply patch {self.parent.full_file_path()}:{stderr_output}{stdout_output}") def commit_changes_to_git(self, repo: git.Repo, add_rebase_tags: bool, split_patches: bool): log.info(f"Committing changes to git: {self.parent.relative_dirs_and_base_file_name}") diff --git a/lib/tools/patching.py b/lib/tools/patching.py index 47c08b719..ffdd28a61 100755 --- a/lib/tools/patching.py +++ b/lib/tools/patching.py @@ -3,11 +3,15 @@ import logging import os # Let's use GitPython to query and manipulate the git repo -from git import Repo, GitCmdObjectDB, InvalidGitRepositoryError, Actor +from git import Actor +from git import GitCmdObjectDB +from git import InvalidGitRepositoryError +from git import Repo import common.armbian_utils as armbian_utils import common.patching_utils as patching_utils -from common.md_asset_log import SummarizedMarkdownWriter, get_gh_pages_workflow_script +from common.md_asset_log import SummarizedMarkdownWriter +from common.md_asset_log import get_gh_pages_workflow_script # Prepare logging armbian_utils.setup_logging() @@ -154,7 +158,7 @@ for patch_file_in_dir in ALL_PATCH_FILES_SORTED: log.critical( f"Failed to read patch file {patch_file_in_dir.file_name}: {e}\n" f"Can't continue; please fix the patch file {patch_file_in_dir.full_file_path()} manually. Sorry." - , exc_info=True) + ) if has_critical_split_errors: raise Exception("Critical errors found while splitting patches. Please fix the patch files manually.") @@ -241,7 +245,7 @@ if apply_patches: one_patch.apply_patch(GIT_WORK_DIR, apply_options) one_patch.applied_ok = True except Exception as e: - log.error(f"Problem with {one_patch}: {e}", exc_info=True) + log.error(f"Problem with {one_patch}: {e}") if one_patch.applied_ok and apply_patches_to_git: committed = one_patch.commit_changes_to_git(git_repo, (not rewrite_patches_in_place), split_patches)