From 76cc07a219243c6546e22417c03406e9054c29d1 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 18:34:20 +0200 Subject: [PATCH 1/9] Tab -> Spaces (PEP-8) --- wrap-and-sort | 222 +++++++++++++++++++++++++------------------------- 1 file changed, 111 insertions(+), 111 deletions(-) diff --git a/wrap-and-sort b/wrap-and-sort index 7325cf1..f6e020b 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -21,143 +21,143 @@ import os import sys CONTROL_LIST_FIELDS = ( - "Breaks", - "Build-Depends", - "Build-Depends-Indep", - "Conflicts", - "Depends", - "Enhances", - "Provides", - "Recommends", - "Replaces", - "Suggests", - "Xb-Npp-MimeType", + "Breaks", + "Build-Depends", + "Build-Depends-Indep", + "Conflicts", + "Depends", + "Enhances", + "Provides", + "Recommends", + "Replaces", + "Suggests", + "Xb-Npp-MimeType", ) class Control(object): - def __init__(self, filename, cleanup): - assert os.path.isfile(filename), "%s does not exist." % (filename) - self.filename = filename - sequence = open(filename) - if cleanup: - sequence = map(lambda l: l.rstrip(), sequence.readlines()) - self.paragraphs = list() - for paragraph in debian.deb822.Deb822.iter_paragraphs(sequence): - self.paragraphs.append(paragraph) + def __init__(self, filename, cleanup): + assert os.path.isfile(filename), "%s does not exist." % (filename) + self.filename = filename + sequence = open(filename) + if cleanup: + sequence = map(lambda l: l.rstrip(), sequence.readlines()) + self.paragraphs = list() + for paragraph in debian.deb822.Deb822.iter_paragraphs(sequence): + self.paragraphs.append(paragraph) - def save(self, filename=None): - if filename: - self.filename = filename - content = u"\n".join(map(lambda x: x.dump(), self.paragraphs)) - f = open(self.filename, "w") - f.write(content.encode("utf-8")) - f.close() + def save(self, filename=None): + if filename: + self.filename = filename + content = u"\n".join(map(lambda x: x.dump(), self.paragraphs)) + f = open(self.filename, "w") + f.write(content.encode("utf-8")) + f.close() - def wrap_and_sort(self, wrap_allways=True): - for paragraph in self.paragraphs: - for field in CONTROL_LIST_FIELDS: - if field in paragraph: - self._wrap_field(paragraph, field, wrap_allways) - if "Uploaders" in paragraph: - self._wrap_field(paragraph, "Uploaders", wrap_allways, False) + def wrap_and_sort(self, wrap_allways=True): + for paragraph in self.paragraphs: + for field in CONTROL_LIST_FIELDS: + if field in paragraph: + self._wrap_field(paragraph, field, wrap_allways) + if "Uploaders" in paragraph: + self._wrap_field(paragraph, "Uploaders", wrap_allways, False) - def _wrap_field(self, control, entry, wrap_allways, sort=True): - packages = map(lambda x: x.strip(), control[entry].split(",")) - if sort: - packages = sort_list(packages) + def _wrap_field(self, control, entry, wrap_allways, sort=True): + packages = map(lambda x: x.strip(), control[entry].split(",")) + if sort: + packages = sort_list(packages) - lenght = len(entry) + 2 * len(packages) + sum(map(len, packages)) - if wrap_allways or lenght > 80: - indentation = " " * (len(entry) + 2) - packages_with_indention = map(lambda x: indentation + x, packages) - control[entry] = ",\n".join(packages_with_indention).strip() - else: - control[entry] = ", ".join(packages).strip() + lenght = len(entry) + 2 * len(packages) + sum(map(len, packages)) + if wrap_allways or lenght > 80: + indentation = " " * (len(entry) + 2) + packages_with_indention = map(lambda x: indentation + x, packages) + control[entry] = ",\n".join(packages_with_indention).strip() + else: + control[entry] = ", ".join(packages).strip() class Install(object): - def __init__(self, filename): - self.open(filename) + def __init__(self, filename): + self.open(filename) - def open(self, filename): - assert os.path.isfile(filename), "%s does not exist." % (filename) - self.filename = filename - self.content = open(filename).readlines() + def open(self, filename): + assert os.path.isfile(filename), "%s does not exist." % (filename) + self.filename = filename + self.content = open(filename).readlines() - def save(self, filename=None): - if filename: - self.filename = filename - f = open(self.filename, "w") - f.write("".join(self.content)) - f.close() + def save(self, filename=None): + if filename: + self.filename = filename + f = open(self.filename, "w") + f.write("".join(self.content)) + f.close() - def sort(self): - self.content = sorted(self.content) + def sort(self): + self.content = sorted(self.content) def remove_trailing_whitespaces(filename): - assert os.path.isfile(filename), "%s does not exist." % (filename) - content = open(filename).read().rstrip() + "\n" - lines = content.split("\n") - lines = map(lambda l: l.rstrip(), lines) - new_content = "\n".join(lines) - f = open(filename, "w") - f.write(new_content) - f.close() + assert os.path.isfile(filename), "%s does not exist." % (filename) + content = open(filename).read().rstrip() + "\n" + lines = content.split("\n") + lines = map(lambda l: l.rstrip(), lines) + new_content = "\n".join(lines) + f = open(filename, "w") + f.write(new_content) + f.close() def sort_list(l): - normal = filter(lambda x: not x.startswith("${"), l) - param = filter(lambda x: x.startswith("${"), l) - return sorted(normal) + sorted(param) + normal = filter(lambda x: not x.startswith("${"), l) + param = filter(lambda x: x.startswith("${"), l) + return sorted(normal) + sorted(param) def main(script_name, cleanup, wrap_allways, verbose=False): - if not os.path.isdir("debian"): - print >> sys.stderr, "%s: Error: No debian directory found." % \ - (script_name) - sys.exit(1) + if not os.path.isdir("debian"): + print >> sys.stderr, "%s: Error: No debian directory found." % \ + (script_name) + sys.exit(1) - control_files = filter(os.path.isfile, - ["debian/control", "debian/control.in"]) - for control_file in control_files: - if verbose: - print control_file - control = Control(control_file, cleanup) - control.wrap_and_sort(wrap_allways) - control.save() + control_files = filter(os.path.isfile, + ["debian/control", "debian/control.in"]) + for control_file in control_files: + if verbose: + print control_file + control = Control(control_file, cleanup) + control.wrap_and_sort(wrap_allways) + control.save() - copyright_files = filter(os.path.isfile, - ["debian/copyright", "debian/copyright.in"]) - for copyright_file in copyright_files: - if verbose: - print copyright_file - remove_trailing_whitespaces(copyright_file) + copyright_files = filter(os.path.isfile, + ["debian/copyright", "debian/copyright.in"]) + for copyright_file in copyright_files: + if verbose: + print copyright_file + remove_trailing_whitespaces(copyright_file) - for install_file in sorted(glob.glob("debian/*.install")): - if verbose: - print install_file - install = Install(install_file) - install.sort() - install.save() + for install_file in sorted(glob.glob("debian/*.install")): + if verbose: + print install_file + install = Install(install_file) + install.sort() + install.save() if __name__ == "__main__": - script_name = os.path.basename(sys.argv[0]) - usage = "%s [options]" % (script_name) - epilog = "See %s(1) for more info." % (script_name) - parser = optparse.OptionParser(usage=usage, epilog=epilog) + script_name = os.path.basename(sys.argv[0]) + usage = "%s [options]" % (script_name) + epilog = "See %s(1) for more info." % (script_name) + parser = optparse.OptionParser(usage=usage, epilog=epilog) - parser.add_option("-a", "--wrap-allways", - help="wrap lists even if they fit into one 80 character long line", - dest="wrap_allways", action="store_true", default=False) - parser.add_option("-n", "--no-cleanup", help="don't cleanup whitespaces", - dest="cleanup", action="store_false", default=True) - parser.add_option("-v", "--verbose", help="print more information", - dest="verbose", action="store_true", default=False) + parser.add_option("-a", "--wrap-allways", + help="wrap lists even if they fit into one 80 character long line", + dest="wrap_allways", action="store_true", default=False) + parser.add_option("-n", "--no-cleanup", help="don't cleanup whitespaces", + dest="cleanup", action="store_false", default=True) + parser.add_option("-v", "--verbose", help="print more information", + dest="verbose", action="store_true", default=False) - (options, args) = parser.parse_args() + (options, args) = parser.parse_args() - if len(args) != 0: - print >> sys.stderr, "%s: Error: %s: %s" % (script_name, - "Unsupported additional parameters specified", ", ".join(args)) - sys.exit(1) + if len(args) != 0: + print >> sys.stderr, "%s: Error: %s: %s" % (script_name, + "Unsupported additional parameters specified", ", ".join(args)) + sys.exit(1) - main(script_name, options.cleanup, options.wrap_allways, options.verbose) + main(script_name, options.cleanup, options.wrap_allways, options.verbose) From 22bae2ac3386f18529ee77f443c58b740a49f29d Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 18:38:18 +0200 Subject: [PATCH 2/9] * wrap-and-sort: - Correct typo in options --wrap-allways -> --wrap-always --- debian/changelog | 4 +++- wrap-and-sort | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4e65ba2..6b9f204 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,8 +2,10 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low * edit-patch: Detect quilt patch-system in 3.0 (quilt) packages without any patches yet. + * wrap-and-sort: + - Correct typo in options --wrap-allways -> --wrap-always - -- Stefano Rivera Wed, 24 Nov 2010 17:58:18 +0200 + -- Stefano Rivera Wed, 24 Nov 2010 18:37:49 +0200 ubuntu-dev-tools (0.106) experimental; urgency=low diff --git a/wrap-and-sort b/wrap-and-sort index f6e020b..7025c0a 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -53,21 +53,21 @@ class Control(object): f.write(content.encode("utf-8")) f.close() - def wrap_and_sort(self, wrap_allways=True): + def wrap_and_sort(self, wrap_always=True): for paragraph in self.paragraphs: for field in CONTROL_LIST_FIELDS: if field in paragraph: - self._wrap_field(paragraph, field, wrap_allways) + self._wrap_field(paragraph, field, wrap_always) if "Uploaders" in paragraph: - self._wrap_field(paragraph, "Uploaders", wrap_allways, False) + self._wrap_field(paragraph, "Uploaders", wrap_always, False) - def _wrap_field(self, control, entry, wrap_allways, sort=True): + def _wrap_field(self, control, entry, wrap_always, sort=True): packages = map(lambda x: x.strip(), control[entry].split(",")) if sort: packages = sort_list(packages) lenght = len(entry) + 2 * len(packages) + sum(map(len, packages)) - if wrap_allways or lenght > 80: + if wrap_always or lenght > 80: indentation = " " * (len(entry) + 2) packages_with_indention = map(lambda x: indentation + x, packages) control[entry] = ",\n".join(packages_with_indention).strip() @@ -110,7 +110,7 @@ def sort_list(l): param = filter(lambda x: x.startswith("${"), l) return sorted(normal) + sorted(param) -def main(script_name, cleanup, wrap_allways, verbose=False): +def main(script_name, cleanup, wrap_always, verbose=False): if not os.path.isdir("debian"): print >> sys.stderr, "%s: Error: No debian directory found." % \ (script_name) @@ -122,7 +122,7 @@ def main(script_name, cleanup, wrap_allways, verbose=False): if verbose: print control_file control = Control(control_file, cleanup) - control.wrap_and_sort(wrap_allways) + control.wrap_and_sort(wrap_always) control.save() copyright_files = filter(os.path.isfile, @@ -145,9 +145,9 @@ if __name__ == "__main__": epilog = "See %s(1) for more info." % (script_name) parser = optparse.OptionParser(usage=usage, epilog=epilog) - parser.add_option("-a", "--wrap-allways", + parser.add_option("-a", "--wrap-always", help="wrap lists even if they fit into one 80 character long line", - dest="wrap_allways", action="store_true", default=False) + dest="wrap_always", action="store_true", default=False) parser.add_option("-n", "--no-cleanup", help="don't cleanup whitespaces", dest="cleanup", action="store_false", default=True) parser.add_option("-v", "--verbose", help="print more information", @@ -160,4 +160,4 @@ if __name__ == "__main__": "Unsupported additional parameters specified", ", ".join(args)) sys.exit(1) - main(script_name, options.cleanup, options.wrap_allways, options.verbose) + main(script_name, options.cleanup, options.wrap_always, options.verbose) From b04aa7844f2bcb2221a7b32eef581b680779f6a2 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 18:47:50 +0200 Subject: [PATCH 3/9] Sort debian/install as well as debian/*.install --- debian/changelog | 3 ++- wrap-and-sort | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6b9f204..559429d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,8 +4,9 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low patches yet. * wrap-and-sort: - Correct typo in options --wrap-allways -> --wrap-always + - Sort debian/install as well as debian/*.install - -- Stefano Rivera Wed, 24 Nov 2010 18:37:49 +0200 + -- Stefano Rivera Wed, 24 Nov 2010 18:47:21 +0200 ubuntu-dev-tools (0.106) experimental; urgency=low diff --git a/wrap-and-sort b/wrap-and-sort index 7025c0a..6d4cbaf 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -132,7 +132,10 @@ def main(script_name, cleanup, wrap_always, verbose=False): print copyright_file remove_trailing_whitespaces(copyright_file) - for install_file in sorted(glob.glob("debian/*.install")): + install_files = sorted(glob.glob("debian/*.install")) + if os.path.isfile("debian/install"): + install_files.insert(0, "debian/install") + for install_file in install_files: if verbose: print install_file install = Install(install_file) From 11d5296e863c8760af8269e40495db85316ce20e Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 19:16:16 +0200 Subject: [PATCH 4/9] Add one-space-indentation option: --short-indent --- debian/changelog | 3 ++- wrap-and-sort | 25 +++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index 559429d..51bd934 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,8 +5,9 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low * wrap-and-sort: - Correct typo in options --wrap-allways -> --wrap-always - Sort debian/install as well as debian/*.install + - Add one-space-indentation option: --short-indent - -- Stefano Rivera Wed, 24 Nov 2010 18:47:21 +0200 + -- Stefano Rivera Wed, 24 Nov 2010 19:15:28 +0200 ubuntu-dev-tools (0.106) experimental; urgency=low diff --git a/wrap-and-sort b/wrap-and-sort index 6d4cbaf..14fc7df 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -53,22 +53,26 @@ class Control(object): f.write(content.encode("utf-8")) f.close() - def wrap_and_sort(self, wrap_always=True): + def wrap_and_sort(self, wrap_always, short_indent): for paragraph in self.paragraphs: for field in CONTROL_LIST_FIELDS: if field in paragraph: - self._wrap_field(paragraph, field, wrap_always) + self._wrap_field(paragraph, field, wrap_always, + short_indent) if "Uploaders" in paragraph: - self._wrap_field(paragraph, "Uploaders", wrap_always, False) + self._wrap_field(paragraph, "Uploaders", wrap_always, + short_indent, False) - def _wrap_field(self, control, entry, wrap_always, sort=True): + def _wrap_field(self, control, entry, wrap_always, short_indent, sort=True): packages = map(lambda x: x.strip(), control[entry].split(",")) if sort: packages = sort_list(packages) lenght = len(entry) + 2 * len(packages) + sum(map(len, packages)) if wrap_always or lenght > 80: - indentation = " " * (len(entry) + 2) + indentation = " " + if not short_indent: + indentation *= (len(entry) + 2) packages_with_indention = map(lambda x: indentation + x, packages) control[entry] = ",\n".join(packages_with_indention).strip() else: @@ -110,7 +114,7 @@ def sort_list(l): param = filter(lambda x: x.startswith("${"), l) return sorted(normal) + sorted(param) -def main(script_name, cleanup, wrap_always, verbose=False): +def main(script_name, cleanup, wrap_always, short_indent, verbose=False): if not os.path.isdir("debian"): print >> sys.stderr, "%s: Error: No debian directory found." % \ (script_name) @@ -122,7 +126,7 @@ def main(script_name, cleanup, wrap_always, verbose=False): if verbose: print control_file control = Control(control_file, cleanup) - control.wrap_and_sort(wrap_always) + control.wrap_and_sort(wrap_always, short_indent) control.save() copyright_files = filter(os.path.isfile, @@ -151,6 +155,10 @@ if __name__ == "__main__": parser.add_option("-a", "--wrap-always", help="wrap lists even if they fit into one 80 character long line", dest="wrap_always", action="store_true", default=False) + parser.add_option("-s", "--short-indent", + help="only indent wrapped lines by one space (default is in-line " + "with the field name)", + dest="short_indent", action="store_true", default=False) parser.add_option("-n", "--no-cleanup", help="don't cleanup whitespaces", dest="cleanup", action="store_false", default=True) parser.add_option("-v", "--verbose", help="print more information", @@ -163,4 +171,5 @@ if __name__ == "__main__": "Unsupported additional parameters specified", ", ".join(args)) sys.exit(1) - main(script_name, options.cleanup, options.wrap_always, options.verbose) + main(script_name, options.cleanup, options.wrap_always, + options.short_indent, options.verbose) From 952311f101e39ddb0ba960869877e01a86946a50 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 19:21:00 +0200 Subject: [PATCH 5/9] Remove null-entry from trailing comma in sorted lists --- debian/changelog | 3 ++- wrap-and-sort | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 51bd934..15b478c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,8 +6,9 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low - Correct typo in options --wrap-allways -> --wrap-always - Sort debian/install as well as debian/*.install - Add one-space-indentation option: --short-indent + - Remove null-entry from trailing comma in sorted lists - -- Stefano Rivera Wed, 24 Nov 2010 19:15:28 +0200 + -- Stefano Rivera Wed, 24 Nov 2010 19:19:49 +0200 ubuntu-dev-tools (0.106) experimental; urgency=low diff --git a/wrap-and-sort b/wrap-and-sort index 14fc7df..2e3299b 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -67,6 +67,9 @@ class Control(object): packages = map(lambda x: x.strip(), control[entry].split(",")) if sort: packages = sort_list(packages) + # Not explicitly disallowed by Policy but known to break QA tools: + if "" in packages: + packages.remove("") lenght = len(entry) + 2 * len(packages) + sum(map(len, packages)) if wrap_always or lenght > 80: From 66ad1f5854f7fee7e0743ef09deb821f32a3b381 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 19:25:29 +0200 Subject: [PATCH 6/9] Start short-indent lists on next-line --- wrap-and-sort | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wrap-and-sort b/wrap-and-sort index 2e3299b..896bd98 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -77,7 +77,11 @@ class Control(object): if not short_indent: indentation *= (len(entry) + 2) packages_with_indention = map(lambda x: indentation + x, packages) - control[entry] = ",\n".join(packages_with_indention).strip() + packages_with_indention = ",\n".join(packages_with_indention) + if short_indent: + control[entry] = "\n" + packages_with_indention + else: + control[entry] = packages_with_indention.strip() else: control[entry] = ", ".join(packages).strip() From d814f79fa1cc2c2a6cef125c53d99c515513108e Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 19:59:44 +0200 Subject: [PATCH 7/9] Typo lenght -> length --- wrap-and-sort | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wrap-and-sort b/wrap-and-sort index 896bd98..51c84a3 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -71,8 +71,8 @@ class Control(object): if "" in packages: packages.remove("") - lenght = len(entry) + 2 * len(packages) + sum(map(len, packages)) - if wrap_always or lenght > 80: + length = len(entry) + 2 * len(packages) + sum(map(len, packages)) + if wrap_always or length > 80: indentation = " " if not short_indent: indentation *= (len(entry) + 2) From 6b187026f5e203629266795d46a9d45427eff178 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 20:01:06 +0200 Subject: [PATCH 8/9] Style --- wrap-and-sort | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrap-and-sort b/wrap-and-sort index 51c84a3..f7a214f 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -75,7 +75,7 @@ class Control(object): if wrap_always or length > 80: indentation = " " if not short_indent: - indentation *= (len(entry) + 2) + indentation *= len(entry) + 2 packages_with_indention = map(lambda x: indentation + x, packages) packages_with_indention = ",\n".join(packages_with_indention) if short_indent: From 6ce93a9a098fe1a4516c6e3f12c42cfb9c3d0fca Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 24 Nov 2010 20:02:35 +0200 Subject: [PATCH 9/9] Ubuntu e-mail address --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 15b478c..2124d4d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,7 +8,7 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low - Add one-space-indentation option: --short-indent - Remove null-entry from trailing comma in sorted lists - -- Stefano Rivera Wed, 24 Nov 2010 19:19:49 +0200 + -- Stefano Rivera Wed, 24 Nov 2010 20:02:21 +0200 ubuntu-dev-tools (0.106) experimental; urgency=low