Mercurial > gub
changeset 5424:6faea0f46af8
buildrunner: another outdated/dependency fix.
author | Jan Nieuwenhuizen <janneke@gnu.org> |
---|---|
date | Mon, 27 Jul 2009 12:16:49 +0200 |
parents | 67c805b02d58 |
children | cefa087d9bd2 |
files | gub/buildrunner.py |
diffstat | 1 files changed, 15 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/gub/buildrunner.py Mon Jul 27 12:15:37 2009 +0200 +++ b/gub/buildrunner.py Mon Jul 27 12:16:49 2009 +0200 @@ -262,14 +262,20 @@ self.spec_install (spec) logging.default_logger.write_log ('\n', 'stage') + def is_installed_spec (self, spec_name): + spec = self.specs[spec_name] + for pkg in spec.get_packages (): + if self.manager (pkg.platform ()).is_installed (pkg.name ()): + return True + return False + def is_outdated_spec (self, spec_name): spec = self.specs[spec_name] checksum_fail_reason = self.failed_checksums.get (spec_name, '') checksum_ok = '' == checksum_fail_reason for pkg in spec.get_packages (): - if (self.manager (pkg.platform ()).is_installed (pkg.name ()) - and (not self.manager (pkg.platform ()).is_installable (pkg.name ()) - or not checksum_ok)): + if (not self.manager (pkg.platform ()).is_installable (pkg.name ()) + or not checksum_ok): return True return False @@ -293,22 +299,20 @@ platform = self.settings.platform outdated = self.outdated_names (deps) # fail_str: keep ordering of names - fail_str = (' '.join ([s for s in deps -# if (s in list (self.failed_checksums.keys ()) - if s in outdated - ]) + fail_str = (' '.join ([s for s in deps if s in outdated ]) .replace (misc.with_platform ('', platform), '')) if not fail_str: fail_str = '<nothing to be done>.' logging.default_logger.write_log ('must rebuild[%(platform)s]: %(fail_str)s\n' % locals (), 'stage') - if outdated: + outdated_installed = [x for x in outdated if self.is_installed_spec (x)] + if outdated_installed: platform = self.settings.platform - outdated_str = (' '.join (outdated) + outdated_str = (' '.join (outdated_installed) .replace (misc.with_platform ('', platform), '')) logging.default_logger.write_log ('removing outdated[%(platform)s]: %(outdated_str)s\n' % locals (), 'stage') - self.uninstall_specs (outdated) + self.uninstall_specs (outdated_installed) global target - for spec_name in deps: + for spec_name in outdated: target = spec_name self.spec_build (spec_name) target = None