* change delta package prefix: "delta.pisi" -> "pisi.delta"

* add delta packages to pisi-index
This commit is contained in:
Faik Uygur
2007-02-09 12:39:33 +00:00
parent 06935526cc
commit 1be87477ee
4 changed files with 37 additions and 3 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ class Constants:
self.__c.package_suffix = ".pisi" self.__c.package_suffix = ".pisi"
# delta suffix for package names # delta suffix for package names
self.__c.delta_package_suffix = ".delta.pisi" self.__c.delta_package_suffix = ".pisi.delta"
# suffix for lzma # suffix for lzma
self.__c.lzma_suffix = ".lzma" self.__c.lzma_suffix = ".lzma"
+16 -2
View File
@@ -88,8 +88,12 @@ class Index(XmlFile):
self.repo_dir = repo_uri self.repo_dir = repo_uri
packages = [] packages = []
deltas = {}
for root, dirs, files in os.walk(repo_uri): for root, dirs, files in os.walk(repo_uri):
for fn in files: for fn in files:
if fn.endswith(ctx.const.delta_package_suffix):
name, version = util.parse_package_name(fn)
deltas.setdefault(name, []).append(os.path.join(root, fn))
if fn.endswith(ctx.const.package_suffix): if fn.endswith(ctx.const.package_suffix):
packages.append(os.path.join(root, fn)) packages.append(os.path.join(root, fn))
if fn == 'component.xml': if fn == 'component.xml':
@@ -102,7 +106,7 @@ class Index(XmlFile):
for pkg in util.filter_latest_packages(packages): for pkg in util.filter_latest_packages(packages):
ctx.ui.info(_('Adding %s to package index') % pkg) ctx.ui.info(_('Adding %s to package index') % pkg)
self.add_package(pkg, repo_uri) self.add_package(pkg, deltas, repo_uri)
def update_db(self, repo, txn = None): def update_db(self, repo, txn = None):
# FIXME: updating db takes too much time. So a notify mechanism is used to inform the status # FIXME: updating db takes too much time. So a notify mechanism is used to inform the status
@@ -129,7 +133,7 @@ class Index(XmlFile):
ctx.sourcedb.add_spec(sf, repo, txn=txn) ctx.sourcedb.add_spec(sf, repo, txn=txn)
update_progress() update_progress()
def add_package(self, path, repo_uri): def add_package(self, path, deltas, repo_uri):
package = Package(path, 'r') package = Package(path, 'r')
md = package.get_metadata() md = package.get_metadata()
md.package.packageSize = os.path.getsize(path) md.package.packageSize = os.path.getsize(path)
@@ -149,6 +153,16 @@ class Index(XmlFile):
# No need to carry these with index (#3965) # No need to carry these with index (#3965)
md.package.files = None md.package.files = None
md.package.additionalFiles = None md.package.additionalFiles = None
if md.package.name in deltas:
for delta_path in deltas[md.package.name]:
delta = metadata.Delta()
delta.packageURI = util.removepathprefix(repo_uri, delta_path)
delta.packageSize = os.path.getsize(delta_path)
name, relFrom, relTo = util.parse_delta_package_name(delta_path)
delta.releaseFrom = relFrom
md.package.deltaPackages.append(delta)
self.packages.append(md.package) self.packages.append(md.package)
def add_component(self, path): def add_component(self, path):
+8
View File
@@ -27,6 +27,13 @@ import pisi.pxml.xmlfile as xmlfile
import pisi.pxml.autoxml as autoxml import pisi.pxml.autoxml as autoxml
import pisi.util as util import pisi.util as util
class Delta:
__metaclass__ = autoxml.autoxml
t_PackageURI = [ autoxml.String, autoxml.optional]
t_PackageSize = [ autoxml.Long, autoxml.optional]
a_releaseFrom = [autoxml.String, autoxml.optional]
class Source: class Source:
__metaclass__ = autoxml.autoxml __metaclass__ = autoxml.autoxml
@@ -45,6 +52,7 @@ class Package(specfile.Package):
t_PackageSize = [ autoxml.Long, autoxml.optional] t_PackageSize = [ autoxml.Long, autoxml.optional]
t_PackageHash = [ autoxml.String, autoxml.optional, "SHA1Sum" ] t_PackageHash = [ autoxml.String, autoxml.optional, "SHA1Sum" ]
t_PackageURI = [ autoxml.String, autoxml.optional] t_PackageURI = [ autoxml.String, autoxml.optional]
t_DeltaPackages = [ [Delta], autoxml.optional]
t_PackageFormat = [ autoxml.String, autoxml.optional] t_PackageFormat = [ autoxml.String, autoxml.optional]
t_Source = [ Source, autoxml.optional] t_Source = [ Source, autoxml.optional]
+12
View File
@@ -633,6 +633,18 @@ def parse_package_name(package_name):
return (name, version) return (name, version)
def parse_delta_package_name(package_name):
"""Separate delta package name and release infos
example: tasma-5-7.pisi.delta -> (tasma, 5, 7)
"""
name, release = parse_package_name(package_name)
release = release[:-len(ctx.const.delta_package_suffix)]
releaseFrom, releaseTo = release.split("-")
return name, releaseFrom, releaseTo
def filter_latest_packages(package_paths): def filter_latest_packages(package_paths):
""" For a given pisi package paths list where there may also be multiple versions """ For a given pisi package paths list where there may also be multiple versions
of the same package, filters only the latest versioned ones """ of the same package, filters only the latest versioned ones """