Esempio n. 1
0
def compare_deb_files(path1, path2, source=None):
    differences = []
    # look up differences in content
    ar1 = ArFile(filename=path1)
    ar2 = ArFile(filename=path2)
    with make_temp_directory() as temp_dir1:
        with make_temp_directory() as temp_dir2:
            logger.debug('content1 %s', ar1.getnames())
            logger.debug('content2 %s', ar2.getnames())
            for name in sorted(set(ar1.getnames())
                               .intersection(ar2.getnames())):
                logger.debug('extract member %s', name)
                member1 = ar1.getmember(name)
                member2 = ar2.getmember(name)
                in_path1 = os.path.join(temp_dir1, name)
                in_path2 = os.path.join(temp_dir2, name)
                with open(in_path1, 'w') as f1:
                    f1.write(member1.read())
                with open(in_path2, 'w') as f2:
                    f2.write(member2.read())
                differences.extend(
                    debbindiff.comparators.compare_files(
                        in_path1, in_path2, source=name))
                os.unlink(in_path1)
                os.unlink(in_path2)
    # look up differences in file list and file metadata
    content1 = get_ar_content(path1)
    content2 = get_ar_content(path2)
    difference = Difference.from_unicode(
                     content1, content2, path1, path2, source="metadata")
    if difference:
        differences.append(difference)
    return differences
Esempio n. 2
0
def compare_deb_files(path1, path2, source=None):
    differences = []
    # look up differences in content
    ar1 = ArFile(filename=path1)
    ar2 = ArFile(filename=path2)
    with make_temp_directory() as temp_dir1:
        with make_temp_directory() as temp_dir2:
            logger.debug('content1 %s', ar1.getnames())
            logger.debug('content2 %s', ar2.getnames())
            for name in sorted(
                    set(ar1.getnames()).intersection(ar2.getnames())):
                logger.debug('extract member %s', name)
                member1 = ar1.getmember(name)
                member2 = ar2.getmember(name)
                in_path1 = os.path.join(temp_dir1, name)
                in_path2 = os.path.join(temp_dir2, name)
                with open(in_path1, 'w') as f1:
                    f1.write(member1.read())
                with open(in_path2, 'w') as f2:
                    f2.write(member2.read())
                differences.extend(
                    debbindiff.comparators.compare_files(in_path1,
                                                         in_path2,
                                                         source=name))
                os.unlink(in_path1)
                os.unlink(in_path2)
    # look up differences in file list and file metadata
    content1 = get_ar_content(path1)
    content2 = get_ar_content(path2)
    difference = Difference.from_unicode(content1,
                                         content2,
                                         path1,
                                         path2,
                                         source="metadata")
    if difference:
        differences.append(difference)
    return differences
Esempio n. 3
0
	tree = ["Ubuntu","Sys","Data","Icons","BundleData"]
	for i in tree:
		os.mkdir(os.path.join(dirpath,i))
except:
	print "No write permissions. Quitting."
	fallback()

# INHABIT
try:
	arfile = ArFile(pkgfile)
except:
	print "Could not read AR format. Quitting."
	fallback()

try:
	debian_binary = arfile.getmember("debian-binary")
	x = open(os.path.join(dirpath,tree[0],"debian-binary"),"w")
	x.write(debian_binary.read())
	x.close()
except:
	print "Warning: Inconsistent package: Missing file debian-binary"
	pass

try:
	if "control.tar.gz" in arfile.getnames():
		sysobj = arfile.getmember("control.tar.gz")
		x = TarFile.gzopen(name="control.tar.gz",fileobj=sysobj,mode="r")
	else:
		sysobj = arfile.getmember("control.tar.bz2")
		x = TarFile.bz2open(name="control.tar.bz2",fileobj=sysobj,mode="r")
	x.extractall(os.path.join(dirpath,tree[1]))