From: Joerg Jaspert Date: Sat, 24 Jan 2009 19:27:47 +0000 (+0100) Subject: Merge commit 'mhy/regexes' into merge X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=4b277e613887f5103cd2ab64262fe29ad1bf7540;hp=3d16c0a64665bdd6f8f2f394858d3b6a95ba572d;p=dak.git Merge commit 'mhy/regexes' into merge * commit 'mhy/regexes': remove unused regexes docstring update Only import regexes we're using whoops, put sensible comment in Move regexes into a module so we can keep track Signed-off-by: Joerg Jaspert --- diff --git a/dak/check_archive.py b/dak/check_archive.py index 33dc8481..26a85cb5 100755 --- a/dak/check_archive.py +++ b/dak/check_archive.py @@ -30,6 +30,7 @@ import commands, os, pg, stat, sys, time import apt_pkg, apt_inst from daklib import database from daklib import utils +from daklib.regexes import re_issource ################################################################################ @@ -287,7 +288,7 @@ def check_missing_tar_gz_in_dsc(): dsc_files = utils.build_file_list(dsc, is_a_dsc=1) has_tar = 0 for f in dsc_files.keys(): - m = utils.re_issource.match(f) + m = re_issource.match(f) if not m: utils.fubar("%s not recognised as source." % (f)) ftype = m.group(3) diff --git a/dak/check_proposed_updates.py b/dak/check_proposed_updates.py index afb0faae..05728ab8 100755 --- a/dak/check_proposed_updates.py +++ b/dak/check_proposed_updates.py @@ -32,6 +32,7 @@ import pg, sys, os import apt_pkg, apt_inst from daklib import database from daklib import utils +from daklib.regexes import re_no_epoch ################################################################################ @@ -91,7 +92,7 @@ def check_dep (depends, dep_type, check_archs, filename, files): unsat = 0 break # As part of the same .changes? - epochless_version = utils.re_no_epoch.sub('', version) + epochless_version = re_no_epoch.sub('', version) dep_filename = "%s_%s_%s.deb" % (dep, epochless_version, arch) if files.has_key(dep_filename): if Options["debug"]: diff --git a/dak/clean_proposed_updates.py b/dak/clean_proposed_updates.py index 3dd6e6f3..b408184e 100755 --- a/dak/clean_proposed_updates.py +++ b/dak/clean_proposed_updates.py @@ -19,10 +19,11 @@ ################################################################################ -import os, pg, re, sys +import os, pg, sys import apt_pkg from daklib import database from daklib import utils +from daklib.regexes import re_isdeb, re_isadeb, re_issource, re_no_epoch ################################################################################ @@ -31,8 +32,6 @@ projectB = None Options = None pu = {} -re_isdeb = re.compile (r"^(.+)_(.+?)_(.+?).u?deb$") - ################################################################################ def usage (exit_code=0): @@ -56,7 +55,7 @@ def check_changes (filename): return num_files = len(files.keys()) for f in files.keys(): - if utils.re_isadeb.match(f): + if re_isadeb.match(f): m = re_isdeb.match(f) pkg = m.group(1) version = m.group(2) @@ -64,7 +63,7 @@ def check_changes (filename): if Options["debug"]: print "BINARY: %s ==> %s_%s_%s" % (f, pkg, version, arch) else: - m = utils.re_issource.match(f) + m = re_issource.match(f) if m: pkg = m.group(1) version = m.group(2) @@ -86,7 +85,7 @@ def check_changes (filename): # FIXME utils.warn("%s doesn't seem to exist for %s in %s?? (from %s [%s])" % (pkg, arch, Options["suite"], f, filename)) continue - pu_version = utils.re_no_epoch.sub('', pu[pkg][arch]) + pu_version = re_no_epoch.sub('', pu[pkg][arch]) if pu_version == version: if Options["verbose"]: print "%s: ok" % (f) diff --git a/dak/control_overrides.py b/dak/control_overrides.py index 0af5c48b..78ae68d4 100644 --- a/dak/control_overrides.py +++ b/dak/control_overrides.py @@ -54,6 +54,7 @@ import apt_pkg from daklib import utils from daklib import database from daklib import logging +from daklib.regexes import re_comments ################################################################################ @@ -118,7 +119,7 @@ def process_file (file, suite, component, type, action): start_time = time.time() projectB.query("BEGIN WORK") for line in file.readlines(): - line = utils.re_comments.sub('', line).strip() + line = re_comments.sub('', line).strip() if line == "": continue diff --git a/dak/cruft_report.py b/dak/cruft_report.py index 0f1125f8..f8695df7 100755 --- a/dak/cruft_report.py +++ b/dak/cruft_report.py @@ -31,6 +31,7 @@ import commands, pg, os, sys, time, re import apt_pkg from daklib import database from daklib import utils +from daklib.regexes import re_extract_src_version ################################################################################ @@ -456,7 +457,7 @@ def main (): bin2source[package]["version"] = version bin2source[package]["source"] = source if source.find("(") != -1: - m = utils.re_extract_src_version.match(source) + m = re_extract_src_version.match(source) source = m.group(1) version = m.group(2) if not bin_pkgs.has_key(package): diff --git a/dak/examine_package.py b/dak/examine_package.py index 2a1a711e..70b1f3ca 100755 --- a/dak/examine_package.py +++ b/dak/examine_package.py @@ -36,24 +36,9 @@ import errno, os, pg, re, sys, md5 import apt_pkg, apt_inst from daklib import database from daklib import utils - -################################################################################ - -re_package = re.compile(r"^(.+?)_.*") -re_doc_directory = re.compile(r".*/doc/([^/]*).*") - -re_contrib = re.compile('^contrib/') -re_nonfree = re.compile('^non\-free/') - -re_arch = re.compile("Architecture: .*") -re_builddep = re.compile("Build-Depends: .*") -re_builddepind = re.compile("Build-Depends-Indep: .*") - -re_localhost = re.compile("localhost\.localdomain") -re_version = re.compile('^(.*)\((.*)\)') - -re_newlinespace = re.compile('\n') -re_spacestrip = re.compile('(\s)') +from daklib.regexes import html_escaping, re_html_escaping, re_version, re_spacestrip, \ + re_contrib, re_nonfree, re_localhost, re_newlinespace, \ + re_package, re_doc_directory ################################################################################ @@ -88,7 +73,7 @@ PACKAGE can be a .changes, .dsc, .deb or .udeb filename.""" def escape_if_needed(s): if use_html: - return utils.re_html_escaping.sub(lambda x: utils.html_escaping.get(x.group(0)), s) + return re_html_escaping.sub(lambda x: html_escaping.get(x.group(0)), s) else: return s diff --git a/dak/import_archive.py b/dak/import_archive.py index 53635e2a..00b5d1b6 100755 --- a/dak/import_archive.py +++ b/dak/import_archive.py @@ -36,15 +36,13 @@ ############################################################################### -import commands, os, pg, re, sys, time +import commands, os, pg, sys, time import apt_pkg from daklib import database from daklib import utils from daklib.dak_exceptions import * - -############################################################################### - -re_arch_from_filename = re.compile(r"binary-[^/]+") +from daklib.regexes import re_arch_from_filename, re_taint_free, re_no_epoch, \ + re_extract_src_version ############################################################################### @@ -94,7 +92,7 @@ def reject (str, prefix="Rejected: "): ############################################################################### def check_signature (filename): - if not utils.re_taint_free.match(os.path.basename(filename)): + if not re_taint_free.match(os.path.basename(filename)): reject("!!WARNING!! tainted filename: '%s'." % (filename)) return None @@ -332,12 +330,12 @@ def process_sources (filename, suite, component, archive): package = Scanner.Section["package"] version = Scanner.Section["version"] directory = Scanner.Section["directory"] - dsc_file = os.path.join(Cnf["Dir::Root"], directory, "%s_%s.dsc" % (package, utils.re_no_epoch.sub('', version))) + dsc_file = os.path.join(Cnf["Dir::Root"], directory, "%s_%s.dsc" % (package, re_no_epoch.sub('', version))) # Sometimes the Directory path is a lie; check in the pool if not os.path.exists(dsc_file): if directory.split('/')[0] == "dists": directory = Cnf["Dir::PoolRoot"] + utils.poolify(package, component) - dsc_file = os.path.join(Cnf["Dir::Root"], directory, "%s_%s.dsc" % (package, utils.re_no_epoch.sub('', version))) + dsc_file = os.path.join(Cnf["Dir::Root"], directory, "%s_%s.dsc" % (package, re_no_epoch.sub('', version))) if not os.path.exists(dsc_file): utils.fubar("%s not found." % (dsc_file)) install_date = time.strftime("%Y-%m-%d", time.localtime(os.path.getmtime(dsc_file))) @@ -355,7 +353,7 @@ def process_sources (filename, suite, component, archive): directory = poolify (directory, location) if directory != "" and not directory.endswith("/"): directory += '/' - no_epoch_version = utils.re_no_epoch.sub('', version) + no_epoch_version = re_no_epoch.sub('', version) # Add all files referenced by the .dsc to the files table ids = [] for line in Scanner.Section["files"].split('\n'): @@ -427,7 +425,7 @@ def process_packages (filename, suite, component, archive): source = Scanner.Section["source"] source_version = "" if source.find("(") != -1: - m = utils.re_extract_src_version.match(source) + m = re_extract_src_version.match(source) source = m.group(1) source_version = m.group(2) if not source_version: diff --git a/dak/import_ldap_fingerprints.py b/dak/import_ldap_fingerprints.py index 49b5b056..1fac652c 100755 --- a/dak/import_ldap_fingerprints.py +++ b/dak/import_ldap_fingerprints.py @@ -48,15 +48,13 @@ import commands, ldap, pg, re, sys import apt_pkg from daklib import database from daklib import utils +from daklib.regexes import re_gpg_fingerprint, re_debian_address ################################################################################ Cnf = None projectB = None -re_gpg_fingerprint = re.compile(r"^\s+Key fingerprint = (.*)$", re.MULTILINE) -re_debian_address = re.compile(r"^.*<(.*)@debian\.org>$", re.MULTILINE) - ################################################################################ def usage(exit_code=0): diff --git a/dak/make_maintainers.py b/dak/make_maintainers.py index 679ed223..55cc4a9b 100755 --- a/dak/make_maintainers.py +++ b/dak/make_maintainers.py @@ -29,6 +29,7 @@ import pg, sys import apt_pkg from daklib import database from daklib import utils +from daklib.regexes import re_comments ################################################################################ @@ -132,7 +133,7 @@ def main(): for filename in extra_files: extrafile = utils.open_file(filename) for line in extrafile.readlines(): - line = utils.re_comments.sub('', line).strip() + line = re_comments.sub('', line).strip() if line == "": continue split = line.split() diff --git a/dak/new_security_install.py b/dak/new_security_install.py index 4071b78a..98951d41 100755 --- a/dak/new_security_install.py +++ b/dak/new_security_install.py @@ -20,13 +20,13 @@ ################################################################################ +import apt_pkg, os, sys, pwd, time, commands + from daklib import queue from daklib import logging from daklib import utils from daklib import database -import apt_pkg, os, sys, pwd, time, re, commands - -re_taint_free = re.compile(r"^['/;\-\+\.~\s\w]+$") +from daklib.regexes import re_taint_free Cnf = None Options = None diff --git a/dak/poolize.py b/dak/poolize.py index 5b7ffbf6..cefdcae9 100644 --- a/dak/poolize.py +++ b/dak/poolize.py @@ -29,14 +29,13 @@ import os, pg, re, stat, sys import apt_pkg, apt_inst import daklib.database import daklib.utils +from daklib.regexes import re_isadeb, re_extract_src_version, re_no_epoch, re_issource ################################################################################ Cnf = None projectB = None -re_isadeb = re.compile (r"(.+?)_(.+?)(_(.+))?\.u?deb$") - ################################################################################ def usage (exit_code=0): @@ -84,17 +83,17 @@ def poolize (q, limit, verbose, no_action): package = control.Find("Package", "") source = control.Find("Source", package) if source.find("(") != -1: - m = daklib.utils.re_extract_src_version.match(source) + m = re_extract_src_version.match(source) source = m.group(1) # If it's a binary, we need to also rename the file to include the architecture version = control.Find("Version", "") architecture = control.Find("Architecture", "") if package == "" or version == "" or architecture == "": daklib.utils.fubar("%s: couldn't determine required information to rename .deb file." % (legacy_filename)) - version = daklib.utils.re_no_epoch.sub('', version) + version = re_no_epoch.sub('', version) destination_filename = "%s_%s_%s.deb" % (package, version, architecture) else: - m = daklib.utils.re_issource.match(base_filename) + m = re_issource.match(base_filename) if m: source = m.group(1) else: diff --git a/dak/process_accepted.py b/dak/process_accepted.py index a25c391f..a29c8921 100755 --- a/dak/process_accepted.py +++ b/dak/process_accepted.py @@ -36,6 +36,7 @@ from daklib import logging from daklib import queue from daklib import utils from daklib.dak_exceptions import * +from daklib.regexes import re_default_answer, re_issource, re_fdnic ############################################################################### @@ -220,7 +221,7 @@ def action (): while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.match(prompt) + m = re_default_answer.match(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() @@ -538,11 +539,11 @@ def stable_install (summary, short_summary): for newfile in files.keys(): if files[newfile]["type"] == "deb": new_changelog.write("stable/%s/binary-%s/%s\n" % (files[newfile]["component"], files[newfile]["architecture"], newfile)) - elif utils.re_issource.match(newfile): + elif re_issource.match(newfile): new_changelog.write("stable/%s/source/%s\n" % (files[newfile]["component"], newfile)) else: new_changelog.write("%s\n" % (newfile)) - chop_changes = queue.re_fdnic.sub("\n", changes["changes"]) + chop_changes = re_fdnic.sub("\n", changes["changes"]) new_changelog.write(chop_changes + '\n\n') if os.access(changelog_filename, os.R_OK) != 0: changelog = utils.open_file(changelog_filename) diff --git a/dak/process_new.py b/dak/process_new.py index 496e5689..9eea0ec5 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -44,6 +44,7 @@ from daklib import database from daklib import logging from daklib import queue from daklib import utils +from daklib.regexes import re_no_epoch, re_default_answer, re_isanum # Globals Cnf = None @@ -82,7 +83,7 @@ def recheck(): source_package = files[f]["source package"] if not Upload.pkg.changes["architecture"].has_key("source") \ and not Upload.source_exists(source_package, source_version, Upload.pkg.changes["distribution"].keys()): - source_epochless_version = utils.re_no_epoch.sub('', source_version) + source_epochless_version = re_no_epoch.sub('', source_version) dsc_filename = "%s_%s.dsc" % (source_package, source_epochless_version) found = 0 for q in ["Accepted", "Embargoed", "Unembargoed"]: @@ -110,7 +111,7 @@ def recheck(): while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.match(prompt) + m = re_default_answer.match(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() @@ -367,7 +368,7 @@ def edit_index (new, index): while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.match(prompt) + m = re_default_answer.match(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() @@ -437,7 +438,7 @@ def edit_overrides (new): answer = answer[:1].upper() if answer == "E" or answer == "D": got_answer = 1 - elif queue.re_isanum.match (answer): + elif re_isanum.match (answer): answer = int(answer) if (answer < 1) or (answer > index): print "%s is not a valid index (%s). Please retry." % (answer, index_range(index)) @@ -474,7 +475,7 @@ def edit_note(note): answer = "XXX" while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.search(prompt) + m = re_default_answer.search(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() @@ -577,7 +578,7 @@ def prod_maintainer (): answer = "XXX" while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.search(prompt) + m = re_default_answer.search(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() @@ -664,7 +665,7 @@ def do_new(): while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.search(prompt) + m = re_default_answer.search(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() @@ -773,7 +774,7 @@ def do_byhand(): while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.search(prompt) + m = re_default_answer.search(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() diff --git a/dak/process_unchecked.py b/dak/process_unchecked.py index fae2fffb..c1bdbe83 100755 --- a/dak/process_unchecked.py +++ b/dak/process_unchecked.py @@ -35,17 +35,15 @@ from daklib import logging from daklib import queue from daklib import utils from daklib.dak_exceptions import * +from daklib.regexes import re_valid_version, re_valid_pkg_name, re_changelog_versions, \ + re_strip_revision, re_strip_srcver, re_spacestrip, \ + re_isanum, re_noepoch, re_norevision, re_taint_free, \ + re_isadeb, re_extract_src_version, re_issource from types import * ################################################################################ -re_valid_version = re.compile(r"^([0-9]+:)?[0-9A-Za-z\.\-\+:~]+$") -re_valid_pkg_name = re.compile(r"^[\dA-Za-z][\dA-Za-z\+\-\.]+$") -re_changelog_versions = re.compile(r"^\w[-+0-9a-z.]+ \([^\(\) \t]+\)") -re_strip_revision = re.compile(r"-([^-]+)$") -re_strip_srcver = re.compile(r"\s+\(\S+\)$") -re_spacestrip = re.compile('(\s)') ################################################################################ @@ -246,13 +244,13 @@ def check_changes(): # Ensure all the values in Closes: are numbers if changes.has_key("closes"): for i in changes["closes"].keys(): - if queue.re_isanum.match (i) == None: + if re_isanum.match (i) == None: reject("%s: `%s' from Closes field isn't a number." % (filename, i)) # chopversion = no epoch; chopversion2 = no epoch and no revision (e.g. for .orig.tar.gz comparison) - changes["chopversion"] = utils.re_no_epoch.sub('', changes["version"]) - changes["chopversion2"] = utils.re_no_revision.sub('', changes["chopversion"]) + changes["chopversion"] = re_no_epoch.sub('', changes["version"]) + changes["chopversion2"] = re_no_revision.sub('', changes["chopversion"]) # Check there isn't already a changes file of the same name in one # of the queue directories. @@ -393,7 +391,7 @@ def check_files(): if not Cnf.has_key("Dir::Queue::%s" % (d)): continue if os.path.exists(Cnf["Dir::Queue::%s" % (d) ] + '/' + f): reject("%s file already exists in the %s directory." % (f, d)) - if not utils.re_taint_free.match(f): + if not re_taint_free.match(f): reject("!!WARNING!! tainted filename: '%s'." % (f)) # Check the file is readable if os.access(f, os.R_OK) == 0: @@ -411,7 +409,7 @@ def check_files(): files[f]["byhand"] = 1 files[f]["type"] = "byhand" # Checks for a binary package... - elif utils.re_isadeb.match(f): + elif re_isadeb.match(f): has_binaries = 1 files[f]["type"] = "deb" @@ -497,7 +495,7 @@ def check_files(): source = files[f]["source"] source_version = "" if source.find("(") != -1: - m = utils.re_extract_src_version.match(source) + m = re_extract_src_version.match(source) source = m.group(1) source_version = m.group(2) if not source_version: @@ -506,12 +504,12 @@ def check_files(): files[f]["source version"] = source_version # Ensure the filename matches the contents of the .deb - m = utils.re_isadeb.match(f) + m = re_isadeb.match(f) # package name file_package = m.group(1) if files[f]["package"] != file_package: reject("%s: package part of filename (%s) does not match package name in the %s (%s)." % (f, file_package, files[f]["dbtype"], files[f]["package"])) - epochless_version = utils.re_no_epoch.sub('', control.Find("Version")) + epochless_version = re_no_epoch.sub('', control.Find("Version")) # version file_version = m.group(2) if epochless_version != file_version: @@ -531,7 +529,7 @@ def check_files(): # Check in the SQL database if not Upload.source_exists(source_package, source_version, changes["distribution"].keys()): # Check in one of the other directories - source_epochless_version = utils.re_no_epoch.sub('', source_version) + source_epochless_version = re_no_epoch.sub('', source_version) dsc_filename = "%s_%s.dsc" % (source_package, source_epochless_version) if os.path.exists(Cnf["Dir::Queue::Byhand"] + '/' + dsc_filename): files[f]["byhand"] = 1 @@ -553,7 +551,7 @@ def check_files(): # Checks for a source package... else: - m = utils.re_issource.match(f) + m = re_issource.match(f) if m: has_source = 1 files[f]["package"] = m.group(1) @@ -748,7 +746,7 @@ def check_dsc(): pass # Ensure the version number in the .dsc matches the version number in the .changes - epochless_dsc_version = utils.re_no_epoch.sub('', dsc["version"]) + epochless_dsc_version = re_no_epoch.sub('', dsc["version"]) changes_version = files[dsc_filename]["version"] if epochless_dsc_version != files[dsc_filename]["version"]: reject("version ('%s') in .dsc does not match version ('%s') in .changes." % (epochless_dsc_version, changes_version)) @@ -756,7 +754,7 @@ def check_dsc(): # Ensure there is a .tar.gz in the .dsc file has_tar = 0 for f in dsc_files.keys(): - m = utils.re_issource.match(f) + m = re_issource.match(f) if not m: reject("%s: %s in Files field not recognised as source." % (dsc_filename, f)) continue @@ -806,7 +804,7 @@ def get_changelog_versions(source_dir): # Create a symlink mirror of the source files in our temporary directory for f in files.keys(): - m = utils.re_issource.match(f) + m = re_issource.match(f) if m: src = os.path.join(source_dir, f) # If a file is missing for whatever reason, give up. @@ -836,7 +834,7 @@ def get_changelog_versions(source_dir): return # Get the upstream version - upstr_version = utils.re_no_epoch.sub('', dsc["version"]) + upstr_version = re_no_epoch.sub('', dsc["version"]) if re_strip_revision.search(upstr_version): upstr_version = re_strip_revision.sub('', upstr_version) @@ -1174,7 +1172,7 @@ def action (): while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.match(prompt) + m = re_default_answer.match(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() diff --git a/dak/reject_proposed_updates.py b/dak/reject_proposed_updates.py index 4510ee0e..c3345017 100755 --- a/dak/reject_proposed_updates.py +++ b/dak/reject_proposed_updates.py @@ -25,6 +25,7 @@ from daklib import database from daklib import logging from daklib import queue from daklib import utils +from daklib.regexes import re_default_answer ################################################################################ @@ -97,7 +98,7 @@ def main(): while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.search(prompt) + m = re_default_answer.search(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() @@ -137,7 +138,7 @@ def reject (reject_message = ""): answer = "XXX" while prompt.find(answer) == -1: answer = utils.our_raw_input(prompt) - m = queue.re_default_answer.search(prompt) + m = re_default_answer.search(prompt) if answer == "": answer = m.group(1) answer = answer[:1].upper() diff --git a/dak/rm.py b/dak/rm.py index c2c5fa48..9c761554 100755 --- a/dak/rm.py +++ b/dak/rm.py @@ -44,11 +44,7 @@ import apt_pkg, apt_inst from daklib import database from daklib import utils from daklib.dak_exceptions import * - -################################################################################ - -re_strip_source_version = re.compile (r'\s+.*$') -re_build_dep_arch = re.compile(r"\[[^]]+\]") +from daklib.regexes import re_strip_source_version, re_build_dep_arch ################################################################################ diff --git a/dak/show_deferred.py b/dak/show_deferred.py index 833cad28..8c13d677 100755 --- a/dak/show_deferred.py +++ b/dak/show_deferred.py @@ -27,6 +27,7 @@ from debian_bundle import deb822 from daklib import database from daklib import queue from daklib import utils +from daklib.regexes import re_html_escaping, html_escaping ################################################################################ ### work around bug #487902 in debian-python 0.1.10 @@ -40,8 +41,6 @@ deb822.Changes._multivalued_fields = { row_number = 1 -html_escaping = {'"':'"', '&':'&', '<':'<', '>':'>'} -re_html_escaping = re.compile('|'.join(map(re.escape, html_escaping.keys()))) def html_escape(s): return re_html_escaping.sub(lambda x: html_escaping.get(x.group(0)), s) diff --git a/dak/transitions.py b/dak/transitions.py index b7e50651..7c47f880 100755 --- a/dak/transitions.py +++ b/dak/transitions.py @@ -23,11 +23,12 @@ ################################################################################ -import os, pg, sys, time, errno, fcntl, tempfile, pwd, re +import os, pg, sys, time, errno, fcntl, tempfile, pwd import apt_pkg from daklib import database from daklib import utils from daklib.dak_exceptions import TransitionsError +from daklib.regexes import re_broken_package import yaml # Globals @@ -35,8 +36,6 @@ Cnf = None Options = None projectB = None -re_broken_package = re.compile(r"[a-zA-Z]\w+\s+\-.*") - ################################################################################ ##################################### diff --git a/daklib/queue.py b/daklib/queue.py index d7e813a9..5bebe8ef 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -24,18 +24,12 @@ import cPickle, errno, os, pg, re, stat, sys, time import apt_inst, apt_pkg import utils, database from dak_exceptions import * +from regexes import re_default_answer, re_fdnic, re_bin_only_nmu from types import * ############################################################################### -re_isanum = re.compile (r"^\d+$") -re_default_answer = re.compile(r"\[(.*)\]") -re_fdnic = re.compile(r"\n\n") -re_bin_only_nmu = re.compile(r"\+b\d+$") - -################################################################################ - # Determine what parts in a .changes are NEW def determine_new(changes, files, projectB, warn=1): diff --git a/daklib/regexes.py b/daklib/regexes.py new file mode 100644 index 00000000..48b52814 --- /dev/null +++ b/daklib/regexes.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# vim:set et sw=4: + +"""Central repository of regexes for dak""" +# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 James Troup +# Copyright (C) 2009 Mark Hymers + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +############################################################################### + +import re + +re_isanum = re.compile (r"^\d+$") +re_default_answer = re.compile(r"\[(.*)\]") +re_fdnic = re.compile(r"\n\n") +re_bin_only_nmu = re.compile(r"\+b\d+$") + +re_comments = re.compile(r"\#.*") +re_no_epoch = re.compile(r"^\d+\:") +re_no_revision = re.compile(r"-[^-]+$") +re_arch_from_filename = re.compile(r"/binary-[^/]+/") +re_extract_src_version = re.compile (r"(\S+)\s*\((.*)\)") +re_isadeb = re.compile (r"(.+?)_(.+?)_(.+)\.u?deb$") + +re_issource = re.compile (r"(.+)_(.+?)\.(orig\.tar\.gz|diff\.gz|tar\.gz|dsc)$") + +re_single_line_field = re.compile(r"^(\S*)\s*:\s*(.*)") +re_multi_line_field = re.compile(r"^\s(.*)") +re_taint_free = re.compile(r"^[-+~/\.\w]+$") + +re_parse_maintainer = re.compile(r"^\s*(\S.*\S)\s*\<([^\>]+)\>") +re_gpg_uid = re.compile('^uid.*<([^>]*)>') + +re_srchasver = re.compile(r"^(\S+)\s+\((\S+)\)$") +re_verwithext = re.compile(r"^(\d+)(?:\.(\d+))(?:\s+\((\S+)\))?$") + +re_srchasver = re.compile(r"^(\S+)\s+\((\S+)\)$") + +html_escaping = {'"':'"', '&':'&', '<':'<', '>':'>'} +re_html_escaping = re.compile('|'.join(map(re.escape, html_escaping.keys()))) + +# From clean_proposed_updates.py +re_isdeb = re.compile (r"^(.+)_(.+?)_(.+?).u?deb$") + +# From examine_package.py +re_package = re.compile(r"^(.+?)_.*") +re_doc_directory = re.compile(r".*/doc/([^/]*).*") + +re_contrib = re.compile('^contrib/') +re_nonfree = re.compile('^non\-free/') + +re_localhost = re.compile("localhost\.localdomain") +re_version = re.compile('^(.*)\((.*)\)') + +re_newlinespace = re.compile('\n') +re_spacestrip = re.compile('(\s)') + +# From import_archive.py +re_arch_from_filename = re.compile(r"binary-[^/]+") + +# From import_ldap_fingerprints.py +re_gpg_fingerprint = re.compile(r"^\s+Key fingerprint = (.*)$", re.MULTILINE) +re_debian_address = re.compile(r"^.*<(.*)@debian\.org>$", re.MULTILINE) + +# From new_security_install.py +re_taint_free = re.compile(r"^['/;\-\+\.~\s\w]+$") + +# From process_unchecked.py +re_valid_version = re.compile(r"^([0-9]+:)?[0-9A-Za-z\.\-\+:~]+$") +re_valid_pkg_name = re.compile(r"^[\dA-Za-z][\dA-Za-z\+\-\.]+$") +re_changelog_versions = re.compile(r"^\w[-+0-9a-z.]+ \([^\(\) \t]+\)") +re_strip_revision = re.compile(r"-([^-]+)$") +re_strip_srcver = re.compile(r"\s+\(\S+\)$") +re_spacestrip = re.compile('(\s)') + +# From dak/rm.py +re_strip_source_version = re.compile (r'\s+.*$') +re_build_dep_arch = re.compile(r"\[[^]]+\]") + +# From dak/transitions.py +re_broken_package = re.compile(r"[a-zA-Z]\w+\s+\-.*") diff --git a/daklib/utils.py b/daklib/utils.py index 9e26e9e7..be4bcff7 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -28,32 +28,12 @@ import apt_pkg import database import time from dak_exceptions import * +from regexes import re_html_escaping, html_escaping, re_single_line_field, \ + re_multi_line_field, re_srchasver, re_verwithext, \ + re_parse_maintainer, re_taint_free, re_gpg_uid ################################################################################ -re_comments = re.compile(r"\#.*") -re_no_epoch = re.compile(r"^\d+\:") -re_no_revision = re.compile(r"-[^-]+$") -re_arch_from_filename = re.compile(r"/binary-[^/]+/") -re_extract_src_version = re.compile (r"(\S+)\s*\((.*)\)") -re_isadeb = re.compile (r"(.+?)_(.+?)_(.+)\.u?deb$") -re_issource = re.compile (r"(.+)_(.+?)\.(orig\.tar\.gz|diff\.gz|tar\.gz|dsc)$") - -re_single_line_field = re.compile(r"^(\S*)\s*:\s*(.*)") -re_multi_line_field = re.compile(r"^\s(.*)") -re_taint_free = re.compile(r"^[-+~/\.\w]+$") - -re_parse_maintainer = re.compile(r"^\s*(\S.*\S)\s*\<([^\>]+)\>") -re_gpg_uid = re.compile('^uid.*<([^>]*)>') - -re_srchasver = re.compile(r"^(\S+)\s+\((\S+)\)$") -re_verwithext = re.compile(r"^(\d+)(?:\.(\d+))(?:\s+\((\S+)\))?$") - -re_srchasver = re.compile(r"^(\S+)\s+\((\S+)\)$") - -html_escaping = {'"':'"', '&':'&', '<':'<', '>':'>'} -re_html_escaping = re.compile('|'.join(map(re.escape, html_escaping.keys()))) - default_config = "/etc/dak/dak.conf" default_apt_config = "/etc/dak/apt.conf"