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
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
package_relations = {} #: Store relations of packages for later output
# default is to not output html.
package_relations = {} #: Store relations of packages for later output
# default is to not output html.
if bodyelement:
return """<thead>
<tr><th colspan="2" class="title" onclick="toggle('%(bodyelement)s', 'table-row-group', 'table-row-group')">%(title)s <span class="toggle-msg">(click to toggle)</span></th></tr>
if bodyelement:
return """<thead>
<tr><th colspan="2" class="title" onclick="toggle('%(bodyelement)s', 'table-row-group', 'table-row-group')">%(title)s <span class="toggle-msg">(click to toggle)</span></th></tr>
- if control.has_key("Depends"):
- depends_str = control.Find("Depends")
+ if "Pre-Depends" in control:
+ predepends_str = control["Pre-Depends"]
+ predepends = split_depends(predepends_str)
+
+ if "Depends" in control:
+ depends_str = control["Depends"]
- return (control, control_keys, section, depends, recommends, arch, maintainer)
+ return (control, control_keys, section, predepends, depends, recommends, arch, maintainer)
return foldable_output("Package relations", "relations", to_print)
def output_deb_info(suite, filename, packagename, session = None):
return foldable_output("Package relations", "relations", to_print)
def output_deb_info(suite, filename, packagename, session = None):
- (control, control_keys, section, depends, recommends, arch, maintainer) = read_control(filename)
+ (control, control_keys, section, predepends, depends, recommends, arch, maintainer) = read_control(filename)
if not package_relations.has_key(packagename):
package_relations[packagename] = {}
for key in control_keys :
if not package_relations.has_key(packagename):
package_relations[packagename] = {}
for key in control_keys :
field_value = create_depends_string(suite, depends, session)
package_relations[packagename][key] = field_value
elif key == 'Recommends':
field_value = create_depends_string(suite, depends, session)
package_relations[packagename][key] = field_value
elif key == 'Recommends':
desc = re_newlinespace.sub('\n ', desc)
field_value = escape_if_needed(desc)
else:
desc = re_newlinespace.sub('\n ', desc)
field_value = escape_if_needed(desc)
else:
-def do_command (command, filename, escaped=0):
- o = os.popen("%s %s" % (command, filename))
- if escaped:
- return escaped_text(o.read())
- else:
- return formatted_text(o.read())
+def do_command (command, escaped=False):
+ process = daklib.daksubprocess.Popen(command, stdout=subprocess.PIPE)
+ o = process.stdout
+ try:
+ if escaped:
+ return escaped_text(o.read())
+ else:
+ return formatted_text(o.read())
+ finally:
+ process.wait()
- return do_command("lintian --show-overrides --color html", filename, 1)
- else:
- return do_command("lintian --show-overrides --color always", filename, 1)
+ color = 'html'
+
+ cmd.extend(['lintian', '--show-overrides', '--color', color, "--", filename])
+
+ return do_command(cmd, escaped=True)
res += formatted_text( "NOTE: Copyright is the same as %s.\n\n" % \
(printed.copyrights[copyrightmd5]))
else:
res += formatted_text( "NOTE: Copyright is the same as %s.\n\n" % \
(printed.copyrights[copyrightmd5]))
else:
return res+formatted_text(cright)
def get_readme_source (dsc_filename):
tempdir = utils.temp_dirname()
os.rmdir(tempdir)
return res+formatted_text(cright)
def get_readme_source (dsc_filename):
tempdir = utils.temp_dirname()
os.rmdir(tempdir)
- cmd = "dpkg-source --no-check --no-copy -x %s %s" % (dsc_filename, tempdir)
- (result, output) = commands.getstatusoutput(cmd)
- if (result != 0):
+ cmd = ('dpkg-source', '--no-check', '--no-copy', '-x', dsc_filename, tempdir)
+ try:
+ daklib.daksubprocess.check_output(cmd, stderr=1)
+ except subprocess.CalledProcessError as e:
res = "How is education supposed to make me feel smarter? Besides, every time I learn something new, it pushes some\n old stuff out of my brain. Remember when I took that home winemaking course, and I forgot how to drive?\n"
res += "Error, couldn't extract source, WTF?\n"
res = "How is education supposed to make me feel smarter? Besides, every time I learn something new, it pushes some\n old stuff out of my brain. Remember when I took that home winemaking course, and I forgot how to drive?\n"
res += "Error, couldn't extract source, WTF?\n"
if errno.errorcode[e.errno] != 'EACCES':
res += "%s: couldn't remove tmp dir %s for source tree." % (dsc_filename, tempdir)
return res
def check_dsc (suite, dsc_filename, session = None):
if errno.errorcode[e.errno] != 'EACCES':
res += "%s: couldn't remove tmp dir %s for source tree." % (dsc_filename, tempdir)
return res
def check_dsc (suite, dsc_filename, session = None):
- (dsc) = read_changes_or_dsc(suite, dsc_filename, session)
+ dsc = read_changes_or_dsc(suite, dsc_filename, session)
+ dsc_basename = os.path.basename(dsc_filename)
return foldable_output(dsc_filename, "dsc", dsc, norow=True) + \
"\n" + \
return foldable_output(dsc_filename, "dsc", dsc, norow=True) + \
"\n" + \
"source-readmesource", get_readme_source(dsc_filename))
def check_deb (suite, deb_filename, session = None):
"source-readmesource", get_readme_source(dsc_filename))
def check_deb (suite, deb_filename, session = None):
"binary-%s-lintian"%packagename, do_lintian(deb_filename)) + "\n"
result += foldable_output("contents of %s" % (filename), "binary-%s-contents"%packagename,
"binary-%s-lintian"%packagename, do_lintian(deb_filename)) + "\n"
result += foldable_output("contents of %s" % (filename), "binary-%s-contents"%packagename,
result += foldable_output("copyright of %s" % (filename),
"binary-%s-copyright"%packagename, get_copyright(deb_filename)) + "\n"
result += foldable_output("copyright of %s" % (filename),
"binary-%s-copyright"%packagename, get_copyright(deb_filename)) + "\n"
return result
# Read a file, strip the signature and return the modified contents as
# a string.
def strip_pgp_signature (filename):
return result
# Read a file, strip the signature and return the modified contents as
# a string.
def strip_pgp_signature (filename):
- inputfile = utils.open_file (filename)
- contents = ""
- inside_signature = 0
- skip_next = 0
- for line in inputfile.readlines():
- if line[:-1] == "":
- continue
- if inside_signature:
- continue
- if skip_next:
- skip_next = 0
- continue
- if line.startswith("-----BEGIN PGP SIGNED MESSAGE"):
- skip_next = 1
- continue
- if line.startswith("-----BEGIN PGP SIGNATURE"):
- inside_signature = 1
- continue
- if line.startswith("-----END PGP SIGNATURE"):
- inside_signature = 0
- continue
- contents += line
- inputfile.close()
- return contents
+ with utils.open_file(filename) as f:
+ data = f.read()
+ signedfile = SignedFile(data, keyrings=(), require_signature=False)
+ return signedfile.contents
if not Cnf.has_key("Examine-Package::Options::%s" % (i)):
Cnf["Examine-Package::Options::%s" % (i)] = ""
if not Cnf.has_key("Examine-Package::Options::%s" % (i)):
Cnf["Examine-Package::Options::%s" % (i)] = ""
- args = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv)
- Options = Cnf.SubTree("Examine-Package::Options")
+ args = apt_pkg.parse_commandline(Cnf,Arguments,sys.argv)
+ Options = Cnf.subtree("Examine-Package::Options")
- less_fd = os.popen("less -R -", 'w', 0)
+ less_cmd = ("less", "-R", "-")
+ less_process = daklib.daksubprocess.Popen(less_cmd, stdin=subprocess.PIPE, bufsize=0)
+ less_fd = less_process.stdin