diff options
Diffstat (limited to 'cros_utils/manifest_versions.py')
-rw-r--r-- | cros_utils/manifest_versions.py | 79 |
1 files changed, 68 insertions, 11 deletions
diff --git a/cros_utils/manifest_versions.py b/cros_utils/manifest_versions.py index 52fd700f..47e2fb20 100644 --- a/cros_utils/manifest_versions.py +++ b/cros_utils/manifest_versions.py @@ -7,6 +7,7 @@ from __future__ import print_function __author__ = 'llozano@google.com (Luis Lozano)' +import copy import os import re import shutil @@ -48,8 +49,10 @@ class ManifestVersions(object): else: versions_git = ( 'https://chromium.googlesource.com/chromiumos/manifest-versions.git') - commands = ['cd {0}'.format(self.clone_location), - 'git clone {0}'.format(versions_git)] + commands = [ + 'cd {0}'.format(self.clone_location), + 'git clone {0}'.format(versions_git) + ] ret = self.ce.RunCommands(commands) if ret: logger.GetLogger().LogFatal('Failed to clone manifest-versions.') @@ -58,26 +61,78 @@ class ManifestVersions(object): if self.clone_location: shutil.rmtree(self.clone_location) + def TimeToVersionChromeOS(self, my_time): + """Convert timestamp to version number, in ChromeOS/Paladin.""" + cur_time = time.mktime(time.gmtime()) + des_time = float(my_time) + if cur_time - des_time > 7000000: + logger.GetLogger().LogFatal('The time you specify is too early.') + commands = [ + 'cd {0}'.format(self.clone_location), 'cd manifest-versions', + 'git checkout -f $(git rev-list' + + ' --max-count=1 --before={0} origin/master)'.format(my_time) + ] + ret = self.ce.RunCommands(commands) + if ret: + logger.GetLogger().LogFatal('Failed to checkout manifest at ' + 'specified time') + path = os.path.realpath( + '{0}/manifest-versions/LKGM/lkgm.xml'.format(self.clone_location)) + pp = path.split('/') + new_list = copy.deepcopy(pp) + for i, e in enumerate(pp): + if e == 'android-LKGM-candidates': + new_list[i] = 'paladin' + chrome_path = '/'.join(new_list) + if not os.path.exists(chrome_path): + logger.GetLogger().LogOutput('LKGM path is %s' % path) + logger.GetLogger().LogOutput('Cannot find path %s' % chrome_path) + pieces = os.path.basename(chrome_path).split('.') + pieces = pieces[:-2] + new_base = '.'.join(pieces) + '*' + wild_path = os.path.join('/', '/'.join(new_list[:-1]), new_base) + command = 'ls %s' % wild_path + ret, out, _ = self.ce.RunCommandWOutput(command) + if ret == 0: + out = out.strip() + files = out.split('\n') + latest = files[-1] + small = os.path.basename(latest).split('.xml')[0] + version = pp[-2] + '.' + small + else: + small = os.path.basename(path).split('.xml')[0] + version = pp[-2] + '.' + small + commands = [ + 'cd {0}'.format(self.clone_location), 'cd manifest-versions', + 'git checkout master' + ] + self.ce.RunCommands(commands) + return version + def TimeToVersion(self, my_time): """Convert timestamp to version number.""" cur_time = time.mktime(time.gmtime()) des_time = float(my_time) if cur_time - des_time > 7000000: logger.GetLogger().LogFatal('The time you specify is too early.') - commands = ['cd {0}'.format(self.clone_location), 'cd manifest-versions', - 'git checkout -f $(git rev-list' + - ' --max-count=1 --before={0} origin/master)'.format(my_time)] + commands = [ + 'cd {0}'.format(self.clone_location), 'cd manifest-versions', + 'git checkout -f $(git rev-list' + + ' --max-count=1 --before={0} origin/master)'.format(my_time) + ] ret = self.ce.RunCommands(commands) if ret: logger.GetLogger().LogFatal('Failed to checkout manifest at ' 'specified time') - path = os.path.realpath('{0}/manifest-versions/LKGM/lkgm.xml'.format( - self.clone_location)) + path = os.path.realpath( + '{0}/manifest-versions/LKGM/lkgm.xml'.format(self.clone_location)) pp = path.split('/') small = os.path.basename(path).split('.xml')[0] version = pp[-2] + '.' + small - commands = ['cd {0}'.format(self.clone_location), 'cd manifest-versions', - 'git checkout master'] + commands = [ + 'cd {0}'.format(self.clone_location), 'cd manifest-versions', + 'git checkout master' + ] self.ce.RunCommands(commands) return version @@ -86,8 +141,10 @@ class ManifestVersions(object): assert not IsRFormatCrosVersion(version) version = version.split('.', 1)[1] os.chdir(self.clone_location) - files = [os.path.join(r, f) - for r, _, fs in os.walk('.') for f in fs if version in f] + files = [ + os.path.join(r, f) for r, _, fs in os.walk('.') for f in fs + if version in f + ] if files: command = 'cp {0} {1}'.format(files[0], to_file) ret = self.ce.RunCommand(command) |