Esempio n. 1
0
def get_key(path):
    """calculate the debinfo key for a Debian binary package at <path>"""
    filename = None
    for fn in ar.list(path):
        if fn.startswith('control.tar'):
            filename = fn
            break
    return md5(ar.extract(path, filename)).hexdigest()
Esempio n. 2
0
def _extract_control(path):
    control_tar_gz = ar.extract(path, "control.tar.gz")
    fh = StringIO(control_tar_gz)
    tar = tarfile.open("control.tar.gz", mode="r:gz", fileobj=fh)
    try:
        return tar.extractfile("./control").read()
    except KeyError:
        return tar.extractfile("control").read()
Esempio n. 3
0
def _extract_control(path):
    filenames = ar.list(path)
    filename = None

    for fn in filenames:
        if fn.startswith('control.tar'):
            filename = fn
            break

    if not filename:
        raise Error("no 'control.tar.[gz|bz2|xz]' in archive")

    _, compression_type = splitext(filename)
    compression_type = compression_type[1:]

    control_tar_archive = ar.extract(path, filename)

    if compression_type == 'xz':
        xz_str = lzma.decompress(control_tar_archive)
        xz_bytes = BytesIO(xz_str)
        tar = tarfile.open(mode="r:", fileobj=xz_bytes)
        reload(sys)
        sys.setdefaultencoding('utf8')
    else:
        fh = BytesIO(control_tar_archive)
        tar = tarfile.open(filename, mode="r:" + compression_type, fileobj=fh)

    reload(sys)
    sys.setdefaultencoding('utf8')

    try:
        return tar.extractfile("./control").read().encode('ascii',
                                                          errors='replace')
    except KeyError:
        return tar.extractfile("control").read().encode('ascii',
                                                        errors='replace')
Esempio n. 4
0
def get_key(path):
    """calculate the debinfo key for a Debian binary package at <path>"""
    return md5(ar.extract(path, "control.tar.gz")).hexdigest()