old_contents: """ Helpers to download a recent clang release."""
  
  def _get_platform_folder(os_name):
      os_name = os_name.lower()
      if os_name.startswith("windows"):
          return "Win"
      if os_name.startswith("mac os"):
          return "Mac"
      if not os_name.startswith("linux"):
          fail("Unknown platform")
      return "Linux_x64"
  
  def _download_chromium_clang(
          repo_ctx,
          platform_folder,
          package_version,
          sha256,
          out_folder):
      cds_url = "https://commondatastorage.googleapis.com/chromium-browser-clang"
      cds_file = "clang-%s.tgz" % package_version
      cds_full_url = "{0}/{1}/{2}".format(cds_url, platform_folder, cds_file)
      repo_ctx.download_and_extract(cds_full_url, output = out_folder, sha256 = sha256)
  
  def download_clang(repo_ctx, out_folder):
      """ Download a fresh clang release and put it into out_folder.
  
      Clang itself will be located in 'out_folder/bin/clang'.
      We currently download one of the latest releases of clang by the
      Chromium project (see
      https://chromium.googlesource.com/chromium/src/+/master/docs/clang.md).
  
      Args:
        repo_ctx: An instance of repository_context object.
        out_folder: A folder to extract the compiler into.
      """
      # TODO(ibiryukov): we currently download and extract some extra tools in the
      # clang release (e.g., sanitizers). We should probably remove the ones
      # we don't need and document the ones we want provide in addition to clang.
  
      # Latest CLANG_REVISION and CLANG_SUB_REVISION of the Chromiums's release
      # can be found in https://chromium.googlesource.com/chromium/src/tools/clang/+/master/scripts/update.py
      CLANG_REVISION = "346388"
      CLANG_SUB_REVISION = 1
  
      package_version = "%s-%s" % (CLANG_REVISION, CLANG_SUB_REVISION)
  
      checksums = {
          "Linux_x64": "5e5564e4e743414c7eaec9fd9e739732ddd2a343e49bde4c88fc2530b1c598b9",
          "Mac": "19271a7cc5c2bcaf9643d3dd622b5458569dc662bbc58f63b129cf6e3a4e3243",
          "Win": "60b0bd1f11e53892109f4159e2aba0f803604823e07875ca98b82bd5628d7f4d",
      }
  
      platform_folder = _get_platform_folder(repo_ctx.os.name)
      _download_chromium_clang(
          repo_ctx,
          platform_folder,
          package_version,
          checksums[platform_folder],
          out_folder,
      )
  
new_contents: """ Helpers to download a recent clang release."""
  
  def _get_platform_folder(os_name):
      os_name = os_name.lower()
      if os_name.startswith("windows"):
          return "Win"
      if os_name.startswith("mac os"):
          return "Mac"
      if not os_name.startswith("linux"):
          fail("Unknown platform")
      return "Linux_x64"
  
  def _download_chromium_clang(
          repo_ctx,
          platform_folder,
          package_version,
          sha256,
          out_folder):
      cds_url = "https://commondatastorage.googleapis.com/chromium-browser-clang"
      cds_file = "clang-%s.tgz" % package_version
      cds_full_url = "{0}/{1}/{2}".format(cds_url, platform_folder, cds_file)
      repo_ctx.download_and_extract(cds_full_url, output = out_folder, sha256 = sha256)
  
  def download_clang(repo_ctx, out_folder):
      """ Download a fresh clang release and put it into out_folder.
  
      Clang itself will be located in 'out_folder/bin/clang'.
      We currently download one of the latest releases of clang by the
      Chromium project (see
      https://chromium.googlesource.com/chromium/src/+/master/docs/clang.md).
  
      Args:
        repo_ctx: An instance of repository_context object.
        out_folder: A folder to extract the compiler into.
      """
      # TODO(ibiryukov): we currently download and extract some extra tools in the
      # clang release (e.g., sanitizers). We should probably remove the ones
      # we don't need and document the ones we want provide in addition to clang.
  
      # Latest CLANG_REVISION and CLANG_SUB_REVISION of the Chromiums's release
      # can be found in https://chromium.googlesource.com/chromium/src/tools/clang/+/master/scripts/update.py
      CLANG_REVISION = "346388"
      CLANG_SUB_REVISION = 3
  
      package_version = "%s-%s" % (CLANG_REVISION, CLANG_SUB_REVISION)
  
      checksums = {
          "Linux_x64": "d47b7ac4756c3f8e3bbfa0e81bf199ec8e9faa3a6b11573f0705e9c04af7ad51",
          "Mac": "de2b0c701e19cda633ea02804866dd24d8506afb8cae51fbcce3415b76f4ded3",
          "Win": "c7d27f13b41aa9eaaf9760903962e9b2b0f8261058df0d35170711dc60545a7d",
      }
  
      platform_folder = _get_platform_folder(repo_ctx.os.name)
      _download_chromium_clang(
          repo_ctx,
          platform_folder,
          package_version,
          checksums[platform_folder],
          out_folder,
      )
  
subject: Update downloadable clang to r346388, subrevision 3