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)
Esempio n. 2
0
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
    ]
Esempio n. 3
0
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]
Esempio n. 4
0
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)]
Esempio n. 5
0
def GetStage3Urls(version):
  return [toolchain.GetSdkURL(suburl='stage3-amd64-%s.tar.%s' % (version, ext))
          for ext in COMPRESSION_PREFERENCE]