Mercurial > gub
changeset 282:108678a341ca
use GDBM based buildnumber DB.
author | hanwen <hanwen@xs4all.nl> |
---|---|
date | Sun, 18 Dec 2005 16:34:02 +0100 |
parents | 4b292049ab86 |
children | 778386e26304 |
files | driver.py specs/buildnumber.py specs/gub.py |
diffstat | 3 files changed, 40 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/driver.py Sun Dec 18 16:33:29 2005 +0100 +++ b/driver.py Sun Dec 18 16:34:02 2005 +0100 @@ -133,7 +133,8 @@ settings.build_number_db.write_build_number (package) package.clean () - package.set_done (stage, stages.index (stage)) + if stage <> 'clean': + package.set_done (stage, stages.index (stage)) def get_settings (platform): @@ -336,8 +337,12 @@ map (target_manager.register_package, target_packages) map (tool_manager.register_package, tool_packages) + settings.build_number_db = buildnumber.Build_number_db (settings.topdir) tool_manager.resolve_dependencies () target_manager.resolve_dependencies () + + for p in tool_packages + target_packages: + settings.build_number_db.set_build_number (p) c = commands.pop (0)
--- a/specs/buildnumber.py Sun Dec 18 16:33:29 2005 +0100 +++ b/specs/buildnumber.py Sun Dec 18 16:34:02 2005 +0100 @@ -1,32 +1,36 @@ +import string import os -import pickle +import pickle +import gdbm +import gub + +class Build_number_db: + def __init__ (self, dir): + self.db = gdbm.open (dir + '/buildnumber.gdbm', 'cs') + + def key (self, package): + return package.expand_string ('%(name)s-%(version)s-%(target_architecture)s') -BUILD_PICKLE = '/build-number.pickle' -def get_build_db (build_db_name): - if not os.path.exists (build_db_name): - pickle.dump({},open (build_db_name,'w')) + def set_build_number (self, package): + package._build = self.get_build_number (package) - db = pickle.load (open (build_db_name)) - return db + def get_build_number (self, package): + k = self.key (package) + if not self.db.has_key (k): + return 1 -def get_build_number (pkg): - db = get_build_db(pkg.settings.topdir + BUILD_PICKLE) + bn = self.db[k] + + gubname ='%(gub_uploads)s/%(name)s-%(version)s-%(bn)s.%(platform)s.gub' + gubname = package.expand_string (gubname, locals ()) - if not db.has_key (pkg.name ()): - return 1 + if os.path.exists (gubname): + return string.atoi (bn) + else: + return string.atoi (bn) + 1 - bn = db[pkg.name ()] - - gubname ='%(gub_uploads)s/%(name)s-%(version)s-%(bn)s.%(target_architecture)s.gub' - gubname = pkg.expand_string (gubname, locals ()) - - if os.path.exists (gubname): - return bn - else: - return bn + 1 - -def write_build_number (pkg): - db = get_build_db(pkg.settings.topdir + BUILD_PICKLE) - db[pkg.name ()] = pkg.build () - pickle.dump (db, open (build_db_name, 'w')) - + def write_build_number (self, pkg): + b = pkg.build () + gub.log_command ("Writing build number: %s" % b) + self.db[self.key (pkg)] = b +
--- a/specs/gub.py Sun Dec 18 16:33:29 2005 +0100 +++ b/specs/gub.py Sun Dec 18 16:34:02 2005 +0100 @@ -117,8 +117,8 @@ self.settings = settings self.url = '' self.download = self.wget - self._build = buildnumber.get_build_number (self) - + self._build = 0 + def package_dict (self, env={}): dict = self.settings.get_substitution_dict () for (k, v) in self.__dict__.items(): @@ -365,8 +365,6 @@ ''') def clean (self): - buildnumber.write_build_number (self) - stamp = self.stamp_file () self.system ('''echo rm -rf %(srcdir)s %(builddir)s %(install_root)s %(stamp)s ''', locals ()) @@ -415,7 +413,8 @@ --with-sysroot=%(system_root)s/ ''') - def gub_name (self): + def xgub_name (self): + ## makes build number handling more complicated. return '%(name)s-%(version)s-%(build)s.%(build_architecture)s-%(target_architecture)s.gub' def install_command (self):