* 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"
|
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
@@ -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):
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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 """
|
||||||
|
|||||||
Reference in New Issue
Block a user