def guess_homepage(): for datum in guess_upstream_metadata_items('.', trust_package=trust_package()): if datum.field != 'Homepage': continue if not meets_minimum_certainty(datum.certainty): continue if known_bad_guess(datum): continue return datum
def fix_close_typo(package, m): global certainty bugno = int(m.group('bug')) (valid, bug_certainty) = check_bug(package, bugno) if meets_minimum_certainty(bug_certainty) and valid: certainty = min_certainty([certainty, bug_certainty]) fixed_lintian_tag( 'all', 'misspelled-closes-bug', info='#%s' % m.group('bug')) return '%ss: #%s' % (m.group('close'), m.group('bug')) else: return m.group(0)
def fix_close_colon(package, m): global certainty bugno = int(m.group('bug')) (valid, bug_certainty) = check_bug(package, bugno) if meets_minimum_certainty(bug_certainty) and valid: certainty = min_certainty([certainty, bug_certainty]) fixed_lintian_tag( 'all', "possible-missing-colon-in-closes", info='%s #%d' % (m.group('closes'), bugno)) return '%s: #%d' % (m.group('closes'), bugno) else: return m.group(0)
def add_upstream_metadata(copyright): if copyright.header.upstream_name and copyright.header.upstream_contact: return import ruamel.yaml try: with open('debian/upstream/metadata', 'r') as f: inp = f.read() except FileNotFoundError: upstream_metadata = {} else: code = ruamel.yaml.safe_load(inp) upstream_metadata = { k: UpstreamDatum(k, v, 'certain') for (k, v) in code.items() } for datum in guess_upstream_metadata_items('.', trust_package=trust_package()): if not meets_minimum_certainty(datum.certainty): continue if (datum.field not in upstream_metadata or upstream_metadata[datum.field].certainty != 'certain'): upstream_metadata[datum.field] = datum if not copyright.header.upstream_name: try: datum = upstream_metadata['Name'] except KeyError: pass else: if datum.value: copyright.header.upstream_name = datum.value fields.append('Upstream-Name') achieved_certainty.append(datum.certainty) if not copyright.header.upstream_contact: try: datum = upstream_metadata['Contact'] except KeyError: pass else: if datum.value: value = datum.value if isinstance(value, str): value = [value] copyright.header.upstream_contact = value fields.append('Upstream-Contact') achieved_certainty.append(datum.certainty)
FilesParagraph, LicenseParagraph, License, ) from lintian_brush.fixer import ( report_result, meets_minimum_certainty, fixed_lintian_tag, ) import os import sys CERTAINTY = 'possible' if not meets_minimum_certainty(CERTAINTY): sys.exit(0) if os.path.exists('debian/copyright'): sys.exit(0) try: import decopy # noqa: F401 except ModuleNotFoundError: # No decopy sys.exit(2) from decopy.tree import RootInfo, DirInfo # noqa: E402 from decopy.datatypes import License as DecopyLicense # noqa: E402 from decopy.dep5 import Copyright as DecopyCopyright, Group # noqa: E402 from decopy.cmdoptions import process_options # noqa: E402
external_present_fields = set(['Homepage']) # If the debian/copyright file is machine-readable, then we do # not need to set the Name/Contact information in the # debian/upstream/metadata file. if 'Name' in upstream_metadata or 'Contact' in upstream_metadata: from debmutate.copyright import upstream_fields_in_copyright external_present_fields.update(upstream_fields_in_copyright().keys()) for key, datum in list(upstream_metadata.items()): # Drop keys that don't need to be in debian/upstream/metadata if key.startswith('X-') or key in external_present_fields: del upstream_metadata[key] # Drop everything that is below our minimum certainty elif not meets_minimum_certainty(datum.certainty): del upstream_metadata[key] achieved_certainty = min_certainty( [d.certainty for d in upstream_metadata.values()]) fix_upstream_metadata(upstream_metadata) changed = { k: v for k, v in upstream_metadata.items() if v.value != editor.code.get(k) } if not changed: sys.exit(0)
from lintian_brush.patches import ( tree_non_patches_changes, find_patches_directory, ) from breezy import errors from breezy.workingtree import WorkingTree patches_directory = find_patches_directory('.') if patches_directory not in ('debian/patches', None): # Non-standard patches directory. warn('Tree has non-standard patches directory %s.' % (patches_directory)) else: try: tree, path = WorkingTree.open_containing('.') except errors.NotBranchError as e: if not meets_minimum_certainty('possible'): warn('unable to open vcs to check for delta: %s' % e) sys.exit(0) format = "3.0 (quilt)" description = "Upgrade to newer source format %s." % format else: delta = list(tree_non_patches_changes(tree, patches_directory)) if delta: warn('Tree has non-quilt changes against upstream.') if opinionated(): format = "3.0 (quilt)" description = ("Upgrade to newer source format %s." % format) try: with open('debian/source/options', 'r') as f: options = list(f.readlines())