From 8dda47fc34b402cb54210d9719b2fd8082a6fd63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20=C3=96zkural?= Date: Tue, 16 Aug 2005 09:30:16 +0000 Subject: [PATCH] * diger todo'yu da implement et: files 'lari karsilastir. * 0.3 versiyonumuz vatanimiza milletimize ve tubitak'imiza hayirli ugurlu olsun --- pisi.e3p | 12 ++++-------- pisi/__init__.py | 2 +- pisi/build.py | 42 ++++++++++++++++++++++++++++++++++-------- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/pisi.e3p b/pisi.e3p index 11e61a53..fc72cac1 100644 --- a/pisi.e3p +++ b/pisi.e3p @@ -1,15 +1,16 @@ - - + + Python Qt The package management software of Pardus distribution. + 0.2 PiSi Development Team - + pisi@uludag.org.tr tools @@ -143,11 +144,6 @@ actionsapi coreutils.py - - pisi - cli - common.py - pisi cli diff --git a/pisi/__init__.py b/pisi/__init__.py index d79eb86d..af7f8a9d 100644 --- a/pisi/__init__.py +++ b/pisi/__init__.py @@ -10,7 +10,7 @@ # PISI version -__version__ = "0.2" +__version__ = "0.3" __all__ = [ 'toplevel', 'packagedb', 'installdb' ] diff --git a/pisi/build.py b/pisi/build.py index 88c7f6d3..739aed71 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -265,9 +265,10 @@ class PisiBuild: metadata.package.build = None # means, build no information n/a ui.warning('build number is not available.') else: - metadata.package.build = self.get_build_number(metadata.package.name) + metadata.package.build = self.calc_build_no(metadata.package.name) metadata.write(os.path.join(self.ctx.pkg_dir(), const.metadata_xml)) + self.metadata = metadata def gen_files_xml(self, package): """Generetes files.xml using the path definitions in specfile and @@ -288,11 +289,11 @@ class PisiBuild: files.append(FileInfo(frpath, ftype, fsize, fhash)) files.write(os.path.join(self.ctx.pkg_dir(), const.files_xml)) + self.files = files + + def calc_build_no(self, package_name): + """Calculate build number""" - def get_build_number(self, package_name): - """Generate build number""" - #NOTE: not functional yet.. - old_package_fn = None # find previous build in config.options.output_dir found = [] for root, dirs, files in os.walk(config.options.output_dir): @@ -313,11 +314,37 @@ class PisiBuild: a = filter(lambda (x,y): y != None, found) if a: a.sort(lambda x,y : cmp(x[1],y[1])) + old_package_fn = a[0][0] old_build = a[0][1] else: old_build = None - # TODO: compare old files.xml with the new one.. - changed = True + + # compare old files.xml with the new one.. + old_pkg = Package(old_package_fn, 'r') + from os.path import join + old_pkg.read(join(config.tmp_dir(), 'oldpkg')) + + # FIXME: TAKE INTO ACCOUNT MINOR CHANGES IN METADATA + changed = False + fnew = self.files.list + fold = old_pkg.files.list + fold.sort(lambda x,y : cmp(x.path,y.path)) + fnew.sort(lambda x,y : cmp(x.path,y.path)) + if len(fnew) != len(fold): + changed = True + else: + for i in range(len(fold)): + fo = fold.pop(0) + fn = fnew.pop(0) + if fo.path != fn.path: + changed = True + break + else: + if fo.hash != fn.hash: + changed = True + break + + # set build number if old_build is None: ui.warning('(old package lacks a build no, setting build no to 0.)') return 0 @@ -326,7 +353,6 @@ class PisiBuild: else: return old_build - def build_packages(self): """Build each package defined in PSPEC file. After this process there will be .pisi files hanging around, AS INTENDED ;)"""