diff options
author | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-19 16:19:06 +0000 |
---|---|---|
committer | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-19 16:19:06 +0000 |
commit | 4ef0e94ed7c1c49d97d23721ee034bc7d5ed780c (patch) | |
tree | 40575bb1c814d6a3f97722d46294c01e29d6b8bc /native_client_sdk | |
parent | ccb5af45053cb865780329789f7453be529483f8 (diff) | |
download | chromium_src-4ef0e94ed7c1c49d97d23721ee034bc7d5ed780c.zip chromium_src-4ef0e94ed7c1c49d97d23721ee034bc7d5ed780c.tar.gz chromium_src-4ef0e94ed7c1c49d97d23721ee034bc7d5ed780c.tar.bz2 |
[NaCl SDK] update_nacl_manifest updates canary to the latest available bundle.
Also switch bionic_canary over to being updated automatically.
pepper_canary used to update based on the Chrome canary version, but that often
prevents pepper_canary from updating as quickly. It also is unlikely that a
newer pepper_canary than Chrome canary will cause any issues.
This change makes pepper_canary (and bionic_canary) update based solely on which
bundles are available in the cloud storage bucket.
BUG=none
R=sbc@chromium.org
TEST=update_nacl_manifest_test.py
Review URL: https://codereview.chromium.org/340243002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278396 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
3 files changed, 114 insertions, 249 deletions
diff --git a/native_client_sdk/src/build_tools/json/naclsdk_manifest2.json b/native_client_sdk/src/build_tools/json/naclsdk_manifest2.json index 7f1076e..b867230 100644 --- a/native_client_sdk/src/build_tools/json/naclsdk_manifest2.json +++ b/native_client_sdk/src/build_tools/json/naclsdk_manifest2.json @@ -365,23 +365,14 @@ "version": 0 }, { - "archives": [ - { - "checksum": { - "sha1": "9f6a8fc33df9cfc2b48dc6f017e9de01efd546b9" - }, - "host_os": "linux", - "size": 399561504, - "url": "https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/trunk.277747/naclsdk_bionic.tar.bz2" - } - ], + "archives": [], "description": "Bionic Canary", "name": "bionic_canary", "recommended": "no", - "repath": "pepper_37", - "revision": 277747, + "repath": "", + "revision": 0, "stability": "canary", - "version": 37 + "version": 0 } ], "manifest_version": 2 diff --git a/native_client_sdk/src/build_tools/tests/update_nacl_manifest_test.py b/native_client_sdk/src/build_tools/tests/update_nacl_manifest_test.py index 8820b69..c2ef9da 100755 --- a/native_client_sdk/src/build_tools/tests/update_nacl_manifest_test.py +++ b/native_client_sdk/src/build_tools/tests/update_nacl_manifest_test.py @@ -202,11 +202,10 @@ class MakeFiles(dict): class TestDelegate(update_nacl_manifest.Delegate): - def __init__(self, manifest, history, files, version_mapping): + def __init__(self, manifest, history, files): self.manifest = manifest self.history = history self.files = files - self.version_mapping = version_mapping self.dryrun = 0 self.called_gsutil_cp = False self.called_sendmail = False @@ -217,16 +216,25 @@ class TestDelegate(update_nacl_manifest.Delegate): def GetHistory(self): return self.history - def GetTrunkRevision(self, version): - return self.version_mapping[version] - def GsUtil_ls(self, url): path = GetPathFromGsUrl(url) result = [] - for filename, _ in self.files.iteritems(): - if filename.startswith(path): - result.append(MakeGsUrl(filename)) - return result + for filename in self.files.iterkeys(): + if not filename.startswith(path): + continue + + # Find the first slash after the prefix (path). + # +1, because if the slash is directly after path, then we want to find + # the following slash anyway. + slash = filename.find('/', len(path) + 1) + + if slash != -1: + filename = filename[:slash] + + result.append(MakeGsUrl(filename)) + + # Remove dupes. + return list(set(result)) def GsUtil_cat(self, url): path = GetPathFromGsUrl(url) @@ -291,12 +299,10 @@ class TestUpdateManifest(unittest.TestCase): self.delegate = None self.uploaded_manifest = None self.manifest = None - # Ignore logging warnings, etc. - logging.getLogger('update_nacl_manifest').setLevel(logging.INFO) def _MakeDelegate(self): self.delegate = TestDelegate(self.manifest, self.history.history, - self.files, self.version_mapping) + self.files) def _Run(self, host_oses, extra_archives=None, fixed_bundle_versions=None): update_nacl_manifest.Run(self.delegate, host_oses, extra_archives, @@ -479,47 +485,12 @@ class TestUpdateManifest(unittest.TestCase): self.assertEqual(uploaded_bundle.version, 18) def testUpdateCanary(self): - # Note that the bundle in naclsdk_manifest2.json will be called - # CANARY_BUNDLE_NAME, whereas the bundle in the manifest "snippet" will be - # called "pepper_21". - canary_bundle = copy.deepcopy(BCANARY_NONE) - self.manifest = MakeManifest(canary_bundle) - self.history.Add(OS_MW, CANARY, V21_0_1145_0) - self.files.Add(B21_0_1145_0_MLW) - self._MakeDelegate() - self._Run(OS_MLW) - self._ReadUploadedManifest() - self._AssertUploadedManifestHasBundle(B21_0_1145_0_MLW, CANARY, - bundle_name=CANARY_BUNDLE_NAME) - - def testUpdateCanaryUseTrunkArchives(self): - canary_bundle = copy.deepcopy(BCANARY_NONE) - self.manifest = MakeManifest(canary_bundle) - self.history.Add(OS_MW, CANARY, V21_0_1166_0) - self.files.Add(B21_0_1166_0_MW) - self.files.Add(BTRUNK_140819_MLW) - self.version_mapping[V21_0_1166_0] = VTRUNK_140819 - self._MakeDelegate() - self._Run(OS_MLW) - self._ReadUploadedManifest() - - test_bundle = copy.deepcopy(B21_0_1166_0_MW) - test_bundle.AddArchive(BTRUNK_140819_MLW.GetArchive('linux')) - self._AssertUploadedManifestHasBundle(test_bundle, CANARY, - bundle_name=CANARY_BUNDLE_NAME) - - def testCanaryUseOnlyTrunkArchives(self): self.manifest = MakeManifest(copy.deepcopy(BCANARY_NONE)) - history = """win,canary,21.0.1163.0,2012-06-04 12:35:44.784446 -mac,canary,21.0.1163.0,2012-06-04 11:54:09.433166""" - self._AddCsvHistory(history) - self.version_mapping['21.0.1163.0'] = 'trunk.140240' - my_bundle = MakePlatformBundle(21, 140240, '21.0.1163.0', OS_MLW) - self.files.Add(my_bundle) + self.files.Add(BTRUNK_140819_MLW) self._MakeDelegate() self._Run(OS_MLW) self._ReadUploadedManifest() - self._AssertUploadedManifestHasBundle(my_bundle, CANARY, + self._AssertUploadedManifestHasBundle(BTRUNK_140819_MLW, CANARY, bundle_name=CANARY_BUNDLE_NAME) def testCanaryShouldOnlyUseCanaryVersions(self): @@ -532,42 +503,6 @@ mac,canary,21.0.1163.0,2012-06-04 11:54:09.433166""" self._MakeDelegate() self.assertRaises(Exception, self._Run, OS_MLW) - def testMissingCanaryFollowedByStableShouldWork(self): - history = """win,canary,21.0.1160.0,2012-06-01 19:44:35.936109 -mac,canary,21.0.1160.0,2012-06-01 18:20:02.003123 -mac,stable,19.0.1084.52,2012-06-01 17:59:21.559710 -win,canary,21.0.1159.2,2012-06-01 02:31:43.877688 -mac,stable,19.0.1084.53,2012-06-01 01:39:57.549149 -win,canary,21.0.1158.0,2012-05-31 20:16:55.615236 -win,canary,21.0.1157.0,2012-05-31 17:41:29.516013 -mac,canary,21.0.1158.0,2012-05-31 17:41:27.591354 -mac,beta,20.0.1132.21,2012-05-30 23:45:38.535586 -linux,beta,20.0.1132.21,2012-05-30 23:45:37.025015 -cf,beta,20.0.1132.21,2012-05-30 23:45:36.767529 -win,beta,20.0.1132.21,2012-05-30 23:44:56.675123 -win,canary,21.0.1156.1,2012-05-30 22:28:01.872056 -mac,canary,21.0.1156.1,2012-05-30 21:20:29.920390 -win,canary,21.0.1156.0,2012-05-30 12:46:48.046627 -mac,canary,21.0.1156.0,2012-05-30 12:14:21.305090""" - self.manifest = MakeManifest(copy.deepcopy(BCANARY_NONE)) - self._AddCsvHistory(history) - self.version_mapping = { - '21.0.1160.0': 'trunk.139984', - '21.0.1159.2': 'trunk.139890', - '21.0.1158.0': 'trunk.139740', - '21.0.1157.0': 'unknown', - '21.0.1156.1': 'trunk.139576', - '21.0.1156.0': 'trunk.139984'} - self.files.Add(MakePlatformBundle(21, 139890, '21.0.1159.2', OS_MLW)) - self.files.Add(MakePlatformBundle(21, 0, '21.0.1157.1', ('linux', 'win'))) - my_bundle = MakePlatformBundle(21, 139576, '21.0.1156.1', OS_MLW) - self.files.Add(my_bundle) - self._MakeDelegate() - self._Run(OS_MLW) - self._ReadUploadedManifest() - self._AssertUploadedManifestHasBundle(my_bundle, CANARY, - bundle_name=CANARY_BUNDLE_NAME) - def testExtensionWorksAsBz2(self): # Allow old bundles with just .bz2 extension to work self.manifest = MakeManifest(B18_NONE) @@ -734,46 +669,6 @@ mac,canary,21.0.1156.0,2012-05-30 12:14:21.305090""" self.assertRaises(update_nacl_manifest.UnknownLockedBundleException, self._Run, OS_MLW) - def testIgnoreLastDigitOnCanary(self): - # The final number in a canary build does not include any different - # changes, it is just a different experiment (e.g. using ASAN, or using - # aura). We should not compare these versions differently. - # - # Note that the version mapping will show that 31.0.1608.0 is different - # from 31.0.1608.1 -- this is because 31.0.1608.1 is built from the branch, - # not from trunk. Inspecting the branch would show that there are no - # changes (why would there be? No one has any reason to merge changes to a - # canary branch.) - self.manifest = MakeManifest(copy.deepcopy(BCANARY_NONE)) - history = """win,canary,31.0.1608.1,2013-08-22 09:33:24.469760 -mac,canary,31.0.1608.0,2013-08-22 07:18:09.762600""" - self._AddCsvHistory(history) - self.version_mapping['31.0.1608.1'] = 'trunk.218914' - self.version_mapping['31.0.1608.0'] = 'trunk.218872' - my_bundle = MakePlatformBundle(31, 218872, '31.0.1608.0', OS_MLW) - self.files.Add(my_bundle) - self._MakeDelegate() - self._Run(OS_MLW) - self._ReadUploadedManifest() - self._AssertUploadedManifestHasBundle(my_bundle, CANARY, - bundle_name=CANARY_BUNDLE_NAME) - - def testDontIgnoreLastDigitForNonCanary(self): - self.manifest = MakeManifest(B26_NONE) - self.history.Add(OS_M, BETA, V26_0_1386_1) # Only Mac - self.history.Add(OS_LW, BETA, V26_0_1386_0) # Only Linux, Windows. - self.files.Add(B26_0_1386_0_MLW) - - self._MakeDelegate() - # This raises because pepper_26 is not found in the history, and therefore - # "locked", but it also doesn't have an online version, therefore there is - # no good version number to upload. - # - # Basically we're asserting that 26.0.1386.1 != 26.0.1386.0, which would be - # true if it were canary. - self.assertRaises(update_nacl_manifest.UnknownLockedBundleException, - self._Run, OS_MLW) - def testUpdateBionic(self): bionic_bundle = copy.deepcopy(BBIONIC_NONE) self.manifest = MakeManifest(bionic_bundle) @@ -825,21 +720,9 @@ class TestUpdateVitals(unittest.TestCase): self.assertEqual(archive['checksum']['sha1'], self.sha1) -class TestRealDelegate(unittest.TestCase): - def setUp(self): - self.delegate = update_nacl_manifest.RealDelegate() - - def testGetTrunkRevision(self): - revision_dict = { - '21.0.1180.80': '151582', - '23.0.1271.89': '167132', - '24.0.1305.4': '164971', - } - for version, revision in revision_dict.iteritems(): - self.assertEqual('trunk.%s' % revision, - self.delegate.GetTrunkRevision(version)) - - if __name__ == '__main__': - logging.basicConfig(level=logging.INFO) + logging.basicConfig(level=logging.CRITICAL) + # Uncomment the following line to enable more debugging info. + # logging.getLogger('update_nacl_manifest').setLevel(logging.INFO) + sys.exit(unittest.main()) diff --git a/native_client_sdk/src/build_tools/update_nacl_manifest.py b/native_client_sdk/src/build_tools/update_nacl_manifest.py index ef542d4..4754abf 100755 --- a/native_client_sdk/src/build_tools/update_nacl_manifest.py +++ b/native_client_sdk/src/build_tools/update_nacl_manifest.py @@ -15,7 +15,6 @@ import csv import cStringIO import difflib import email -import json import logging import logging.handlers import manifest_util @@ -50,9 +49,47 @@ logger = logging.getLogger(__name__) def SplitVersion(version_string): """Split a version string (e.g. "18.0.1025.163") into its components. - Note that this function doesn't handle versions in the form "trunk.###". + e.g. + SplitVersion("trunk.123456") => ("trunk", "123456") + SplitVersion("18.0.1025.163") => (18, 0, 1025, 163) """ - return tuple(map(int, version_string.split('.'))) + parts = version_string.split('.') + if parts[0] == 'trunk': + return (parts[0], int(parts[1])) + return tuple([int(p) for p in parts]) + + +def GetMajorVersion(version_string): + """Get the major version number from a version string (e.g. "18.0.1025.163"). + + e.g. + GetMajorVersion("trunk.123456") => "trunk" + GetMajorVersion("18.0.1025.163") => 18 + """ + return SplitVersion(version_string)[0] + + +def CompareVersions(version1, version2): + """Compare two version strings and return -1, 0, 1 (similar to cmp). + + Versions can only be compared if they are both trunk versions, or neither is. + + e.g. + CompareVersions("trunk.123", "trunk.456") => -1 + CompareVersions("18.0.1025.163", "37.0.2054.3") => -1 + CompareVersions("trunk.123", "18.0.1025.163") => Error + + """ + split1 = SplitVersion(version1) + split2 = SplitVersion(version2) + if split1[0] == split2[0]: + return cmp(split1[1:], split2[1:]) + + if split1 == 'trunk' or split2 == 'trunk': + raise Exception("Unable to compare versions %s and %s" % ( + version1, version2)) + + return cmp(split1, split2) def JoinVersion(version_tuple): @@ -60,6 +97,8 @@ def JoinVersion(version_tuple): The tuple should be of the form (18, 0, 1025, 163). """ + assert len(version_tuple) == 4 + assert version_tuple[0] != 'trunk' return '.'.join(map(str, version_tuple)) @@ -146,15 +185,6 @@ class Delegate(object): tuple.""" raise NotImplementedError() - def GetTrunkRevision(self, version): - """Given a Chrome version, get its trunk revision. - - Args: - version: A version string of the form '18.0.1025.64' - Returns: - The revision number for that version, as a string.""" - raise NotImplementedError() - def GsUtil_ls(self, url): """Runs gsutil ls |url| @@ -223,12 +253,6 @@ class RealDelegate(Delegate): # os,channel,version,timestamp return history[1:] - def GetTrunkRevision(self, version): - """See Delegate.GetTrunkRevision""" - url = 'http://omahaproxy.appspot.com/revision.json?version=%s' % (version,) - data = json.loads(urllib2.urlopen(url).read()) - return 'trunk.%s' % int(data['chromium_revision']) - def GsUtil_ls(self, url): """See Delegate.GsUtil_ls""" try: @@ -366,8 +390,7 @@ class VersionFinder(object): shared_version_generator = self._FindNextSharedVersion(self.platforms, GetPlatformHistory) - return self._DoGetMostRecentSharedVersion(shared_version_generator, - allow_trunk_revisions=False) + return self._DoGetMostRecentSharedVersion(shared_version_generator) def GetMostRecentSharedCanary(self): """Returns the most recent version of a canary pepper bundle that exists on @@ -378,23 +401,12 @@ class VersionFinder(object): Returns: A tuple (version, channel, archives). The version is a string such as - "19.0.1084.41". The channel is always 'canary'. |archives| is a list of + "trunk.123456". The channel is always 'canary'. |archives| is a list of archive URLs.""" - # Canary versions that differ in the last digit shouldn't be considered - # different; this number is typically used to represent an experiment, e.g. - # using ASAN or aura. - def CanaryKey(version): - return version[:-1] - - # We don't ship canary on Linux, so it won't appear in self.history. - # Instead, we can use the matching Linux trunk build for that version. - shared_version_generator = self._FindNextSharedVersion( - set(self.platforms) - set(('linux',)), - self._GetPlatformCanaryHistory, CanaryKey) - return self._DoGetMostRecentSharedVersion(shared_version_generator, - allow_trunk_revisions=True) - - def GetAvailablePlatformArchivesFor(self, version, allow_trunk_revisions): + version_generator = self._FindNextTrunkVersion() + return self._DoGetMostRecentSharedVersion(version_generator) + + def GetAvailablePlatformArchivesFor(self, version): """Returns a sequence of archives that exist for a given version, on the given platforms. @@ -403,8 +415,6 @@ class VersionFinder(object): Args: version: The version to find archives for. (e.g. "18.0.1025.164") - allow_trunk_revisions: If True, will search for archives using the - trunk revision that matches the branch version. Returns: A tuple (archives, missing_archives). |archives| is a list of archive URLs, |missing_archives| is a list of archive names. @@ -419,21 +429,11 @@ class VersionFinder(object): if self.extra_archives: for extra_archive, extra_archive_min_version in self.extra_archives: - if SplitVersion(version) >= SplitVersion(extra_archive_min_version): + if CompareVersions(version, extra_archive_min_version) >= 0: expected_archives.add(extra_archive) found_archives = set(GetCanonicalArchiveName(a) for a in archive_urls) missing_archives = expected_archives - found_archives - if allow_trunk_revisions and missing_archives: - # Try to find trunk versions of any missing archives. - trunk_version = self.delegate.GetTrunkRevision(version) - trunk_archives = self._GetAvailableArchivesFor(trunk_version) - for trunk_archive_url in trunk_archives: - trunk_archive = GetCanonicalArchiveName(trunk_archive_url) - if trunk_archive in missing_archives: - archive_urls.append(trunk_archive_url) - missing_archives.discard(trunk_archive) - # Only return archives that are "expected". def IsExpected(url): return GetCanonicalArchiveName(url) in expected_archives @@ -441,8 +441,7 @@ class VersionFinder(object): expected_archive_urls = [u for u in archive_urls if IsExpected(u)] return expected_archive_urls, missing_archives - def _DoGetMostRecentSharedVersion(self, shared_version_generator, - allow_trunk_revisions): + def _DoGetMostRecentSharedVersion(self, shared_version_generator): """Returns the most recent version of a pepper bundle that exists on all given platforms. @@ -451,8 +450,6 @@ class VersionFinder(object): Args: shared_version_generator: A generator that will yield (version, channel) tuples in order of most recent to least recent. - allow_trunk_revisions: If True, will search for archives using the - trunk revision that matches the branch version. Returns: A tuple (version, channel, archives). The version is a string such as "19.0.1084.41". The channel is one of ('stable', 'beta', 'dev', @@ -477,8 +474,7 @@ class VersionFinder(object): logger.info('Found shared version: %s, channel: %s' % ( version, channel)) - archives, missing_archives = self.GetAvailablePlatformArchivesFor( - version, allow_trunk_revisions) + archives, missing_archives = self.GetAvailablePlatformArchivesFor(version) if not missing_archives: return version, channel, archives @@ -506,24 +502,7 @@ class VersionFinder(object): (with_major_version == 0 or with_major_version == version[0])): yield channel, version - def _GetPlatformCanaryHistory(self, with_platform): - """Yields Chrome history for a given platform, but only for canary - versions. - - Args: - with_platform: The name of the platform to filter for. - Returns: - A generator that yields a tuple (channel, version) for each version that - matches the platform and uses the canary channel. The version returned is - a tuple as returned from SplitVersion. - """ - for platform, channel, version, _ in self.history: - version = SplitVersion(version) - if with_platform == platform and channel == CANARY: - yield channel, version - - - def _FindNextSharedVersion(self, platforms, generator_func, key_func=None): + def _FindNextSharedVersion(self, platforms, generator_func): """Yields versions of Chrome that exist on all given platforms, in order of newest to oldest. @@ -535,17 +514,11 @@ class VersionFinder(object): ('mac', 'linux', 'win') generator_func: A function which takes a platform and returns a generator that yields (channel, version) tuples. - key_func: A function to convert the version into a value that should be - used for comparison. See python built-in sorted() or min(), for - an example. Returns: A generator that yields a tuple (version, channel) for each version that matches all platforms and the major version. The version returned is a string (e.g. "18.0.1025.164"). """ - if not key_func: - key_func = lambda x: x - platform_generators = [] for platform in platforms: platform_generators.append(generator_func(platform)) @@ -563,19 +536,13 @@ class VersionFinder(object): platform, JoinVersion(platform_versions[i][1]))) logger.info('Checking versions: %s' % ', '.join(msg_info)) - shared_version = min((v for c, v in platform_versions), key=key_func) - - if all(key_func(v) == key_func(shared_version) - for c, v in platform_versions): - # The real shared_version should be the real minimum version. This will - # be different from shared_version above only if key_func compares two - # versions with different values as equal. - min_version = min((v for c, v in platform_versions)) + shared_version = min((v for c, v in platform_versions)) + if all(v == shared_version for c, v in platform_versions): # grab the channel from an arbitrary platform first_platform = platform_versions[0] channel = first_platform[0] - yield JoinVersion(min_version), channel + yield JoinVersion(shared_version), channel # force increment to next version for all platforms shared_version = None @@ -589,6 +556,30 @@ class VersionFinder(object): return + def _FindNextTrunkVersion(self): + """Yields all trunk versions that exist in the cloud storage bucket, newest + to oldest. + + Returns: + A generator that yields a tuple (version, channel) for each version that + matches all platforms and the major version. The version returned is a + string (e.g. "trunk.123456"). + """ + files = self.delegate.GsUtil_ls(GS_BUCKET_PATH) + assert all(f.startswith('gs://') for f in files) + + trunk_versions = [] + for f in files: + match = re.search(r'(trunk\.\d+)', f) + if match: + trunk_versions.append(match.group(1)) + + trunk_versions.sort(reverse=True) + + for version in trunk_versions: + yield version, 'canary' + + def _GetAvailableArchivesFor(self, version_string): """Downloads a list of all available archives for a given version. @@ -602,7 +593,7 @@ class VersionFinder(object): All returned URLs will use the gs:// schema.""" files = self.delegate.GsUtil_ls(GS_BUCKET_PATH + version_string) - assert all(file.startswith('gs://') for file in files) + assert all(f.startswith('gs://') for f in files) archives = [f for f in files if not f.endswith('.json')] manifests = [f for f in files if f.endswith('.json')] @@ -657,7 +648,7 @@ class Updater(object): bundles that contain no archives will be considered for auto-updating.""" # Make sure there is only one stable branch: the one with the max version. # All others are post-stable. - stable_major_versions = [SplitVersion(version)[0] for _, version, channel, _ + stable_major_versions = [GetMajorVersion(version) for _, version, channel, _ in self.versions_to_update if channel == 'stable'] # Add 0 in case there are no stable versions. max_stable_version = max([0] + stable_major_versions) @@ -697,7 +688,7 @@ class Updater(object): bundle.MergeWithBundle(platform_bundle) # Fix the stability and recommended values - major_version = SplitVersion(version)[0] + major_version = GetMajorVersion(version) if major_version < max_stable_version: bundle.stability = 'post_stable' else: @@ -832,7 +823,8 @@ def Run(delegate, platforms, extra_archives, fixed_bundle_versions=None): try: if bundle.name == BIONIC_CANARY_BUNDLE_NAME: logger.info('>>> Looking for most recent bionic_canary...') - version_finder = VersionFinder(delegate, platforms, extra_archives, + # Ignore extra_archives on bionic; There is no naclports bundle yet. + version_finder = VersionFinder(delegate, platforms, None, is_bionic=True) version, channel, archives = version_finder.GetMostRecentSharedCanary() elif bundle.name == CANARY_BUNDLE_NAME: @@ -857,9 +849,8 @@ def Run(delegate, platforms, extra_archives, fixed_bundle_versions=None): # version may not be in the history.) version = fixed_bundle_versions[bundle.name] logger.info('Fixed bundle version: %s, %s' % (bundle.name, version)) - allow_trunk_revisions = bundle.name == CANARY_BUNDLE_NAME - archives, missing = version_finder.GetAvailablePlatformArchivesFor( - version, allow_trunk_revisions) + archives, missing = \ + version_finder.GetAvailablePlatformArchivesFor(version) if missing: logger.warn( 'Some archives for version %s of bundle %s don\'t exist: ' |