delta: Code style fixes

Also replace deprecated .has_key() with "in" keyword.
This commit is contained in:
Fatih Aşıcı
2010-06-20 15:32:49 +00:00
parent dc652a3026
commit 8c84f29473
2 changed files with 49 additions and 25 deletions
+19 -12
View File
@@ -1,6 +1,6 @@
# -*- coding:utf-8 -*-
#
# Copyright (C) 2005 - 2007, TUBITAK/UEKAE
# Copyright (C) 2005-2010, TUBITAK/UEKAE
#
# 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
@@ -19,15 +19,21 @@ _ = __trans.ugettext
import pisi.cli.command as command
import pisi.context as ctx
class Delta(command.Command):
__doc__ = _("""Creates delta PiSi packages
usage = _("""Creates delta PiSi packages
Usage: delta oldpackage newpackage
Delta command finds the changed files between the given packages by comparing the sha1sum of the files
and creates a delta pisi package with the changed files between two releases.
Delta command finds the changed files between the given
packages by comparing the sha1sum of the files and creates
a delta pisi package with the changed files between two
releases.
""")
class Delta(command.Command):
__doc__ = usage
__metaclass__ = command.autocommand
def __init__(self, args):
@@ -36,18 +42,18 @@ and creates a delta pisi package with the changed files between two releases.
name = ("delta", "dt")
def options(self):
group = optparse.OptionGroup(self.parser, _("delta options"))
self.add_options(group)
self.parser.add_option_group(group)
def add_options(self, group):
group.add_option("-O", "--output-dir", action="store", default=None,
help=_("Output directory for produced packages"))
group.add_option("-O", "--output-dir",
action="store",
default=None,
help=_("Output directory for produced packages"))
def run(self):
from pisi.operations.delta import create_delta_package
from pisi.operations.delta import create_delta_package
self.init(database=False, write=False)
@@ -56,7 +62,8 @@ and creates a delta pisi package with the changed files between two releases.
return
if ctx.get_option('output_dir'):
ctx.ui.info(_('Output directory: %s') % ctx.config.options.output_dir)
ctx.ui.info(_('Output directory: %s')
% ctx.config.options.output_dir)
else:
ctx.ui.info(_('Outputting packages in the working directory.'))
ctx.config.options.output_dir = '.'
+30 -13
View File
@@ -20,6 +20,7 @@ import pisi.package
import pisi.util as util
import pisi.archive as archive
def create_delta_package(old_package, new_package):
if old_package == new_package:
@@ -37,18 +38,27 @@ def create_delta_package(old_package, new_package):
files_delta = find_delta(oldfiles, newfiles)
ctx.ui.info(_("Creating delta PiSi package between %s %s") % (old_package, new_package))
ctx.ui.info(_("Creating delta PiSi package between %s %s")
% (old_package, new_package))
# Unpack new package to temp
newpkg_name = util.package_name(newmd.package.name, newmd.package.version, newmd.package.release, newmd.package.build, False)
newpkg_name = util.package_name(newmd.package.name,
newmd.package.version,
newmd.package.release,
newmd.package.build,
False)
newpkg_path = util.join_path(ctx.config.tmp_dir(), newpkg_name)
newpkg.extract_to(newpkg_path, True)
tar = archive.ArchiveTar(util.join_path(newpkg_path, ctx.const.install_tar_lzma), "tarlzma", False, False)
newpkg_archive = util.join_path(newpkg_path, ctx.const.install_tar_lzma)
tar = archive.ArchiveTar(newpkg_archive, "tarlzma", False, False)
tar.unpack_dir(newpkg_path)
# Create delta package
deltaname = "%s-%s-%s%s" % (oldmd.package.name, oldmd.package.build, newmd.package.build, ctx.const.delta_package_suffix)
deltaname = "%s-%s-%s%s" % (oldmd.package.name,
oldmd.package.build,
newmd.package.build,
ctx.const.delta_package_suffix)
outdir = ctx.get_option("output_dir")
if outdir:
@@ -68,16 +78,21 @@ def create_delta_package(old_package, new_package):
deltapkg.add_to_package(ctx.const.metadata_xml)
deltapkg.add_to_package(ctx.const.files_xml)
# only metadata information may change in a package, so no install.tar.lzma added to delta package
# only metadata information may change in a package,
# so no install.tar.lzma added to delta package
if files_delta:
# Sort the files in-place according to their path for an ordered
# tarfile layout which dramatically improves the compression performance
# of lzma. This improvement is stolen from build.py (commit r23485).
# tarfile layout which dramatically improves the compression
# performance of lzma. This improvement is stolen from build.py
# (commit r23485).
files_delta.sort(key=lambda x: x.path)
ctx.build_leftover = util.join_path(ctx.config.tmp_dir(), ctx.const.install_tar_lzma)
ctx.build_leftover = util.join_path(ctx.config.tmp_dir(),
ctx.const.install_tar_lzma)
tar = archive.ArchiveTar(util.join_path(ctx.config.tmp_dir(), ctx.const.install_tar_lzma), "tarlzma")
deltapkg_archive = util.join_path(ctx.config.tmp_dir(),
ctx.const.install_tar_lzma)
tar = archive.ArchiveTar(deltapkg_archive, "tarlzma")
for f in files_delta:
tar.add_to_archive(f.path)
tar.close()
@@ -99,6 +114,7 @@ def create_delta_package(old_package, new_package):
# return delta package name
return deltaname
# Hash not equals (these are the deltas)
# Hash equal but path different ones (these are the relocations)
# Hash and also path equal ones (do nothing)
@@ -109,16 +125,17 @@ def find_delta(oldfiles, newfiles):
for f in newfiles.list:
hashto_files.setdefault(f.hash, []).append(f)
files_new = set(map(lambda x:x.hash, newfiles.list))
files_old = set(map(lambda x:x.hash, oldfiles.list))
files_new = set(map(lambda x: x.hash, newfiles.list))
files_old = set(map(lambda x: x.hash, oldfiles.list))
files_delta = files_new - files_old
deltas = []
for h in files_delta:
deltas.extend(hashto_files[h])
# Directory hashes are None. There was a bug with PolicyKit that should have an empty directory.
if hashto_files.has_key(None):
# Directory hashes are None. There was a bug with PolicyKit that
# should have an empty directory.
if None in hashto_files:
deltas.extend(hashto_files[None])
return deltas