* 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"
# delta suffix for package names
self.__c.delta_package_suffix = ".delta.pisi"
self.__c.delta_package_suffix = ".pisi.delta"
# suffix for lzma
self.__c.lzma_suffix = ".lzma"
+16 -2
View File
@@ -88,8 +88,12 @@ class Index(XmlFile):
self.repo_dir = repo_uri
packages = []
deltas = {}
for root, dirs, files in os.walk(repo_uri):
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):
packages.append(os.path.join(root, fn))
if fn == 'component.xml':
@@ -102,7 +106,7 @@ class Index(XmlFile):
for pkg in util.filter_latest_packages(packages):
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):
# 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)
update_progress()
def add_package(self, path, repo_uri):
def add_package(self, path, deltas, repo_uri):
package = Package(path, 'r')
md = package.get_metadata()
md.package.packageSize = os.path.getsize(path)
@@ -149,6 +153,16 @@ class Index(XmlFile):
# No need to carry these with index (#3965)
md.package.files = 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)
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.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:
__metaclass__ = autoxml.autoxml
@@ -45,6 +52,7 @@ class Package(specfile.Package):
t_PackageSize = [ autoxml.Long, autoxml.optional]
t_PackageHash = [ autoxml.String, autoxml.optional, "SHA1Sum" ]
t_PackageURI = [ autoxml.String, autoxml.optional]
t_DeltaPackages = [ [Delta], autoxml.optional]
t_PackageFormat = [ autoxml.String, autoxml.optional]
t_Source = [ Source, autoxml.optional]
+12
View File
@@ -633,6 +633,18 @@ def parse_package_name(package_name):
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):
""" For a given pisi package paths list where there may also be multiple versions
of the same package, filters only the latest versioned ones """