* change delta package prefix: "delta.pisi" -> "pisi.delta"
* add delta packages to pisi-index
This commit is contained in:
+1
-1
@@ -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
@@ -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):
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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 """
|
||||
|
||||
Reference in New Issue
Block a user