From patchwork Fri May 22 02:29:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 246215 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Thu, 21 May 2020 20:29:00 -0600 Subject: [PATCH v3 1/5] patman: Drop unnecessary import in gitutil Message-ID: <20200522022904.239301-1-sjg@chromium.org> The checkpatch module is not used, so drop it. Signed-off-by: Simon Glass Reported-by: Stefan Bosch --- Changes in v3: - Split out the gitutil change into a separate patch Changes in v2: None tools/patman/gitutil.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py index 770a0510142..844f8759dec 100644 --- a/tools/patman/gitutil.py +++ b/tools/patman/gitutil.py @@ -7,7 +7,6 @@ import os import subprocess import sys -from patman import checkpatch from patman import command from patman import series from patman import settings From patchwork Fri May 22 02:29:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 246216 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Thu, 21 May 2020 20:29:01 -0600 Subject: [PATCH v3 2/5] patman: Avoid circular dependency between command and tools In-Reply-To: <20200522022904.239301-1-sjg@chromium.org> References: <20200522022904.239301-1-sjg@chromium.org> Message-ID: <20200522022904.239301-2-sjg@chromium.org> This seems to cause problems in some cases. Split the dependency by copying the code to command. Reported-by: Stefan Bosch Signed-off-by: Simon Glass --- Changes in v3: None Changes in v2: None tools/patman/command.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/patman/command.py b/tools/patman/command.py index e67ac159e5a..bf8ea6c8c3c 100644 --- a/tools/patman/command.py +++ b/tools/patman/command.py @@ -5,7 +5,6 @@ import os from patman import cros_subprocess -from patman import tools """Shell command ease-ups for Python.""" @@ -35,9 +34,9 @@ class CommandResult: def ToOutput(self, binary): if not binary: - self.stdout = tools.ToString(self.stdout) - self.stderr = tools.ToString(self.stderr) - self.combined = tools.ToString(self.combined) + self.stdout = self.stdout.decode('utf-8') + self.stderr = self.stderr.decode('utf-8') + self.combined = self.combined.decode('utf-8') return self From patchwork Fri May 22 02:29:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 246217 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Thu, 21 May 2020 20:29:02 -0600 Subject: [PATCH v3 3/5] patman: Use a dict in gitutil to avoid importing series In-Reply-To: <20200522022904.239301-1-sjg@chromium.org> References: <20200522022904.239301-1-sjg@chromium.org> Message-ID: <20200522022904.239301-3-sjg@chromium.org> Only a few members of this class are used and only in a test. To avoid importing the module, convert the test to use a dict. Signed-off-by: Simon Glass Reported-by: Stefan Bosch --- Changes in v3: None Changes in v2: None tools/patman/gitutil.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py index 844f8759dec..0bac9824811 100644 --- a/tools/patman/gitutil.py +++ b/tools/patman/gitutil.py @@ -8,7 +8,6 @@ import subprocess import sys from patman import command -from patman import series from patman import settings from patman import terminal from patman import tools @@ -366,9 +365,9 @@ def EmailPatches(series, cover_fname, args, dry_run, raise_on_error, cc_fname, >>> alias['boys'] = ['fred', ' john'] >>> alias['all'] = ['fred ', 'john', ' mary '] >>> alias[os.getenv('USER')] = ['this-is-me at me.com'] - >>> series = series.Series() - >>> series.to = ['fred'] - >>> series.cc = ['mary'] + >>> series = {} + >>> series['to'] = ['fred'] + >>> series['cc'] = ['mary'] >>> EmailPatches(series, 'cover', ['p1', 'p2'], True, True, 'cc-fname', \ False, alias) 'git send-email --annotate --to "f.bloggs at napier.co.nz" --cc \ @@ -377,7 +376,7 @@ def EmailPatches(series, cover_fname, args, dry_run, raise_on_error, cc_fname, alias) 'git send-email --annotate --to "f.bloggs at napier.co.nz" --cc \ "m.poppins at cloud.net" --cc-cmd "./patman --cc-cmd cc-fname" p1' - >>> series.cc = ['all'] + >>> series['cc'] = ['all'] >>> EmailPatches(series, 'cover', ['p1', 'p2'], True, True, 'cc-fname', \ True, alias) 'git send-email --annotate --to "this-is-me at me.com" --cc-cmd "./patman \ From patchwork Fri May 22 02:29:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 246218 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Thu, 21 May 2020 20:29:03 -0600 Subject: [PATCH v3 4/5] patman: Pass in maintainer dirs to avoid and import In-Reply-To: <20200522022904.239301-1-sjg@chromium.org> References: <20200522022904.239301-1-sjg@chromium.org> Message-ID: <20200522022904.239301-4-sjg@chromium.org> Adjust the get_maintainer module to accept a list of directories to search for the script. This avoids needing to import gitutil. Signed-off-by: Simon Glass Reported-by: Stefan Bosch --- Changes in v3: None Changes in v2: None tools/patman/get_maintainer.py | 14 +++++++------- tools/patman/series.py | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/tools/patman/get_maintainer.py b/tools/patman/get_maintainer.py index 473f0feebf4..af4ba15bcdd 100644 --- a/tools/patman/get_maintainer.py +++ b/tools/patman/get_maintainer.py @@ -5,17 +5,16 @@ import os from patman import command -from patman import gitutil -def FindGetMaintainer(): +def FindGetMaintainer(try_list): """Look for the get_maintainer.pl script. + Args: + try_list: List of directories to try for the get_maintainer.pl script + Returns: If the script is found we'll return a path to it; else None. """ - try_list = [ - os.path.join(gitutil.GetTopLevel(), 'scripts'), - ] # Look in the list for path in try_list: fname = os.path.join(path, 'get_maintainer.pl') @@ -24,7 +23,7 @@ def FindGetMaintainer(): return None -def GetMaintainer(fname, verbose=False): +def GetMaintainer(dir_list, fname, verbose=False): """Run get_maintainer.pl on a file if we find it. We look for get_maintainer.pl in the 'scripts' directory at the top of @@ -32,12 +31,13 @@ def GetMaintainer(fname, verbose=False): then we fail silently. Args: + dir_list: List of directories to try for the get_maintainer.pl script fname: Path to the patch file to run get_maintainer.pl on. Returns: A list of email addresses to CC to. """ - get_maintainer = FindGetMaintainer() + get_maintainer = FindGetMaintainer(dir_list) if not get_maintainer: if verbose: print("WARNING: Couldn't find get_maintainer.pl") diff --git a/tools/patman/series.py b/tools/patman/series.py index e5e28cebdf5..e6c72a9317b 100644 --- a/tools/patman/series.py +++ b/tools/patman/series.py @@ -233,7 +233,8 @@ class Series(dict): if type(add_maintainers) == type(cc): cc += add_maintainers elif add_maintainers: - cc += get_maintainer.GetMaintainer(commit.patch) + dir_list = [os.path.join(gitutil.GetTopLevel(), 'scripts')] + cc += get_maintainer.GetMaintainer(dir_list, commit.patch) for x in set(cc) & set(settings.bounces): print(col.Color(col.YELLOW, 'Skipping "%s"' % x)) cc = set(cc) - set(settings.bounces) From patchwork Fri May 22 02:29:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 246219 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Thu, 21 May 2020 20:29:04 -0600 Subject: [PATCH v3 5/5] patman: Avoid importing gitutil in settings In-Reply-To: <20200522022904.239301-1-sjg@chromium.org> References: <20200522022904.239301-1-sjg@chromium.org> Message-ID: <20200522022904.239301-5-sjg@chromium.org> Pass this module in so that settings does not need to import it. Signed-off-by: Simon Glass Reported-by: Stefan Bosch --- Changes in v3: - Add more patches based on testing on a dusty Ubuntu 14.04 Changes in v2: - Update gitutil as well tools/patman/main.py | 2 +- tools/patman/settings.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/patman/main.py b/tools/patman/main.py index f3d9c0c4348..c5f247ed514 100755 --- a/tools/patman/main.py +++ b/tools/patman/main.py @@ -77,7 +77,7 @@ specified by tags you place in the commits. Use -n to do a dry run first.""" # Parse options twice: first to get the project and second to handle # defaults properly (which depends on project). (options, args) = parser.parse_args() -settings.Setup(parser, options.project, '') +settings.Setup(gitutil, parser, options.project, '') (options, args) = parser.parse_args() if __name__ != "__main__": diff --git a/tools/patman/settings.py b/tools/patman/settings.py index ca74fc611ff..635561ac056 100644 --- a/tools/patman/settings.py +++ b/tools/patman/settings.py @@ -11,7 +11,6 @@ import os import re from patman import command -from patman import gitutil from patman import tools """Default settings per-project. @@ -185,7 +184,7 @@ def ReadGitAliases(fname): fd.close() -def CreatePatmanConfigFile(config_fname): +def CreatePatmanConfigFile(gitutil, config_fname): """Creates a config file under $(HOME)/.patman if it can't find one. Args: @@ -301,7 +300,7 @@ def GetItems(config, section): except: raise -def Setup(parser, project_name, config_fname=''): +def Setup(gitutil, parser, project_name, config_fname=''): """Set up the settings module by reading config files. Args: @@ -318,7 +317,7 @@ def Setup(parser, project_name, config_fname=''): if not os.path.exists(config_fname): print("No config file found ~/.patman\nCreating one...\n") - CreatePatmanConfigFile(config_fname) + CreatePatmanConfigFile(gitutil, config_fname) config.read(config_fname)