def _UploadSdkTarball(self, board_path, url_suffix, prepackaged, toolchains_overlay_tarballs, toolchains_overlay_upload_path, toolchain_tarballs, toolchain_upload_path): """Upload a tarball of the sdk at the specified path to Google Storage. Args: board_path: The path to the board dir. url_suffix: The remote subdirectory where we should upload the packages. prepackaged: If given, a tarball that has been packaged outside of this script and should be used. toolchains_overlay_tarballs: List of toolchains overlay tarball specifications to upload. Items take the form "toolchains_spec:/path/to/tarball". toolchains_overlay_upload_path: Path template under the bucket to place toolchains overlay tarballs. toolchain_tarballs: List of toolchain tarballs to upload. toolchain_upload_path: Path under the bucket to place toolchain tarballs. """ remote_location = '%s/%s' % (self._upload_location.rstrip('/'), url_suffix) assert remote_location.startswith('gs://') boardname = os.path.basename(board_path.rstrip('/')) # We do not upload non SDK board tarballs, assert boardname == constants.CHROOT_BUILDER_BOARD assert prepackaged is not None version_str = self._version[len('chroot-'):] remote_tarfile = toolchain.GetSdkURL(for_gsutil=True, suburl='cros-sdk-%s.tar.xz' % (version_str, )) # For SDK, also upload the manifest which is guaranteed to exist # by the builderstage. self._Upload(prepackaged + '.Manifest', remote_tarfile + '.Manifest') self._Upload(prepackaged, remote_tarfile) # Upload SDK toolchains overlays and toolchain tarballs, if given. for tarball_list, upload_path, qualifier_name in ( (toolchains_overlay_tarballs, toolchains_overlay_upload_path, 'toolchains'), (toolchain_tarballs, toolchain_upload_path, 'target')): for tarball_spec in tarball_list: qualifier_val, local_path = tarball_spec.split(':') suburl = upload_path % {qualifier_name: qualifier_val} remote_path = toolchain.GetSdkURL(for_gsutil=True, suburl=suburl) self._Upload(local_path, remote_path) # Finally, also update the pointer to the latest SDK on which polling # scripts rely. with osutils.TempDir() as tmpdir: pointerfile = os.path.join(tmpdir, 'cros-sdk-latest.conf') remote_pointerfile = toolchain.GetSdkURL( for_gsutil=True, suburl='cros-sdk-latest.conf') osutils.WriteFile(pointerfile, 'LATEST_SDK="%s"' % version_str) self._Upload(pointerfile, remote_pointerfile)
def GetArchStageTarballs(version): """Returns the URL for a given arch/version""" extension = {'bz2': 'tbz2', 'xz': 'tar.xz'} return [ toolchain.GetSdkURL(suburl='cros-sdk-%s.%s' % (version, extension[compressor])) for compressor in COMPRESSION_PREFERENCE ]
def GetToolchainsOverlayUrls(version, toolchains): """Returns the URL(s) for a toolchains SDK overlay. Args: version: The SDK version used, e.g. 2015.05.27.145939. We use the year and month components to point to a subdirectory on the SDK bucket where overlays are stored (.../2015/05/ in this case). toolchains: Iterable of toolchain target strings (e.g. 'i686-pc-linux-gnu'). Returns: List of alternative download URLs for an SDK overlay tarball that contains the given toolchains. """ toolchains_desc = '-'.join(sorted(toolchains)) suburl_template = os.path.join( *(version.split('.')[:2] + ['cros-sdk-overlay-toolchains-%s-%s.tar.%%s' % (toolchains_desc, version)])) return [toolchain.GetSdkURL(suburl=suburl_template % ext) for ext in COMPRESSION_PREFERENCE]
def GetArchStageTarballs(version): """Returns the URL for a given arch/version""" suburl = '%s/coreos-sdk-amd64-%s.tar.bz2' % (version, version) return [toolchain.GetSdkURL(suburl=suburl)]
def GetStage3Urls(version): return [toolchain.GetSdkURL(suburl='stage3-amd64-%s.tar.%s' % (version, ext)) for ext in COMPRESSION_PREFERENCE]