diff --git a/pisi/__init__.py b/pisi/__init__.py index b0cfba57..35801498 100644 --- a/pisi/__init__.py +++ b/pisi/__init__.py @@ -14,7 +14,7 @@ __version__ = "1.0" -__dbversion__ = "1.0.1" +__dbversion__ = "1.0.2" __all__ = [ 'api', 'config', 'packagedb', 'installdb', 'search' ] diff --git a/pisi/build.py b/pisi/build.py index 17223d2e..ec2243cb 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -44,10 +44,13 @@ class Error(pisi.Error): pass +# this DAILYWTF approach will be removed in the next release. + # Helper Functions def get_file_type(path, pinfoList): """Return the file type of a path according to the given PathInfo list""" + # not only confusing but totally non-deterministic behavior -- exa # The usage of depth is somewhat confusing. It is used for finding # the best match to paths(in pinfolist). For an example, if paths # contain ['/usr/share','/usr/share/doc'] and path is @@ -55,6 +58,7 @@ def get_file_type(path, pinfoList): # the second item. depth = 0 ftype = "" + permanent = False path = "/"+path # we need a real path. for pinfo in pinfoList: if util.subpath(pinfo.path, path): @@ -62,7 +66,8 @@ def get_file_type(path, pinfoList): if depth < length: depth = length ftype = pinfo.fileType - return ftype + permanent = pinfo.permanent + return ftype, permanent def check_path_collision(package, pkgList): """This function will check for collision of paths in a package with @@ -482,12 +487,13 @@ class Builder: # add the files under material path for fpath, fhash in util.get_file_hashes(path, collisions, install_dir): frpath = util.removepathprefix(install_dir, fpath) # relative path - ftype = get_file_type(frpath, package.files) + ftype, permanent = get_file_type(frpath, package.files) try: # broken links and empty dirs can cause problem fsize = os.path.getsize(fpath) except OSError: fsize = None - d[frpath] = FileInfo(path=frpath, type=ftype, size=fsize, hash=fhash) + d[frpath] = FileInfo(path=frpath, type=ftype, permanent=permanent, + size=fsize, hash=fhash) for pinfo in package.files: wildcard_path = util.join_path(install_dir, pinfo.path) diff --git a/pisi/specfile.py b/pisi/specfile.py index 2b9770ee..0b8eca3d 100644 --- a/pisi/specfile.py +++ b/pisi/specfile.py @@ -107,6 +107,7 @@ class Path: s_Path = [autoxml.String, autoxml.mandatory] a_fileType = [autoxml.String, autoxml.optional] + a_permanent = [autoxml.String, autoxml.optional] def __str__(self): s = self.path