| Index: dart/editor/build/build.py
 | 
| ===================================================================
 | 
| --- dart/editor/build/build.py	(revision 30146)
 | 
| +++ dart/editor/build/build.py	(working copy)
 | 
| @@ -24,16 +24,10 @@
 | 
|  DART_PATH = None
 | 
|  TOOLS_PATH = None
 | 
|  
 | 
| -GSU_PATH_REV = None
 | 
| -GSU_PATH_LATEST = None
 | 
| -GSU_API_DOCS_PATH = None
 | 
| -GSU_API_DOCS_BUCKET = 'gs://dartlang-api-docs'
 | 
| -
 | 
|  CHANNEL = None
 | 
|  PLUGINS_BUILD = None
 | 
|  REVISION = None
 | 
|  SYSTEM = None
 | 
| -TRUNK_BUILD = None
 | 
|  
 | 
|  NO_UPLOAD = None
 | 
|  
 | 
| @@ -44,8 +38,6 @@
 | 
|  
 | 
|  def DartArchiveFile(local_path, remote_path, create_md5sum=False):
 | 
|    # Copy it to the new unified gs://dart-archive bucket
 | 
| -  # TODO(kustermann/ricow): Remove all the old archiving code, once everything
 | 
| -  # points to the new location
 | 
|    gsutil = bot_utils.GSUtil()
 | 
|    gsutil.upload(local_path, remote_path, public=True)
 | 
|    if create_md5sum:
 | 
| @@ -57,9 +49,6 @@
 | 
|      gsutil.upload(local_md5sum, remote_path + '.md5sum', public=True)
 | 
|  
 | 
|  def DartArchiveUploadEditorZipFile(zipfile):
 | 
| -  # TODO(kustermann): We don't archive trunk builds to gs://dart-archive/
 | 
| -  # Remove this once the channel transition is done.
 | 
| -  if CHANNEL == 'trunk': return
 | 
|    namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
 | 
|    gsutil = bot_utils.GSUtil()
 | 
|  
 | 
| @@ -85,9 +74,6 @@
 | 
|          create_md5sum=True)
 | 
|  
 | 
|  def DartArchiveUploadUpdateSite(local_path):
 | 
| -  # TODO(kustermann): We don't archive trunk builds to gs://dart-archive/
 | 
| -  # Remove this once the channel transition is done.
 | 
| -  if CHANNEL == 'trunk': return
 | 
|    namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
 | 
|    gsutil = bot_utils.GSUtil()
 | 
|    for revision in [REVISION, 'latest']:
 | 
| @@ -100,9 +86,6 @@
 | 
|      gsutil.upload(local_path, update_site_dir, recursive=True, public=True)
 | 
|  
 | 
|  def DartArchiveUploadSDKs(system, sdk32_zip, sdk64_zip):
 | 
| -  # TODO(kustermann): We don't archive trunk builds to gs://dart-archive/
 | 
| -  # Remove this once the channel transition is done.
 | 
| -  if CHANNEL == 'trunk': return
 | 
|    namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
 | 
|    for revision in [REVISION, 'latest']:
 | 
|      path32 = namer.sdk_zipfilepath(revision, system, 'ia32', 'release')
 | 
| @@ -111,9 +94,6 @@
 | 
|      DartArchiveFile(sdk64_zip, path64, create_md5sum=True)
 | 
|  
 | 
|  def DartArchiveUploadAPIDocs(api_zip):
 | 
| -  # TODO(kustermann): We don't archive trunk builds to gs://dart-archive/
 | 
| -  # Remove this once the channel transition is done.
 | 
| -  if CHANNEL == 'trunk': return
 | 
|    namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
 | 
|    for revision in [REVISION, 'latest']:
 | 
|      destination = (namer.apidocs_directory(revision) + '/' +
 | 
| @@ -121,9 +101,6 @@
 | 
|      DartArchiveFile(api_zip, destination, create_md5sum=False)
 | 
|  
 | 
|  def DartArchiveUploadVersionFile(version_file):
 | 
| -  # TODO(kustermann): We don't archive trunk builds to gs://dart-archive/.
 | 
| -  # Remove this once the channel transition is done.
 | 
| -  if CHANNEL == 'trunk': return
 | 
|    namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
 | 
|    for revision in [REVISION, 'latest']:
 | 
|      DartArchiveFile(version_file, namer.version_filepath(revision),
 | 
| @@ -249,7 +226,6 @@
 | 
|  def BuildOptions():
 | 
|    """Setup the argument processing for this program."""
 | 
|    result = optparse.OptionParser()
 | 
| -  result.set_default('dest', 'gs://dart-editor-archive-continuous')
 | 
|    result.add_option('-m', '--mode',
 | 
|                      help='Build variants (comma-separated).',
 | 
|                      metavar='[all,debug,release]',
 | 
| @@ -279,15 +255,11 @@
 | 
|    global BUILD_OS
 | 
|    global CHANNEL
 | 
|    global DART_PATH
 | 
| -  global GSU_API_DOCS_PATH
 | 
| -  global GSU_PATH_LATEST
 | 
| -  global GSU_PATH_REV
 | 
|    global NO_UPLOAD
 | 
|    global PLUGINS_BUILD
 | 
|    global REVISION
 | 
|    global SYSTEM
 | 
|    global TOOLS_PATH
 | 
| -  global TRUNK_BUILD
 | 
|  
 | 
|    if not sys.argv:
 | 
|      print 'Script pathname not known, giving up.'
 | 
| @@ -370,13 +342,8 @@
 | 
|      buildout = os.path.abspath(options.out)
 | 
|      print 'buildout       = {0}'.format(buildout)
 | 
|  
 | 
| -    # Get user name. If it does not start with chrome then deploy to the test
 | 
| -    # bucket; otherwise deploy to the continuous bucket.
 | 
| -    username = os.environ.get('USER')
 | 
| -    if username is None:
 | 
| -      username = os.environ.get('USERNAME')
 | 
| -
 | 
| -    if username is None:
 | 
| +    username = utils.GetUserName()
 | 
| +    if not username:
 | 
|        print 'Could not find username'
 | 
|        return 6
 | 
|  
 | 
| @@ -385,12 +352,10 @@
 | 
|      if sdk_environment.has_key('JAVA_HOME'):
 | 
|        print 'JAVA_HOME = {0}'.format(str(sdk_environment['JAVA_HOME']))
 | 
|  
 | 
| -    # dart-editor[-trunk], dart-editor-(win/mac/linux)[-trunk/be/dev/stable]
 | 
| -    builder_name = str(options.name)
 | 
| -
 | 
|      EDITOR_REGEXP = (r'^dart-editor(-(?P<installer>(installer)))?'
 | 
|                        '(-(?P<system>(win|mac|linux)))?' +
 | 
| -                      '(-(?P<channel>(trunk|be|dev|stable)))?$')
 | 
| +                      '(-(?P<channel>(be|dev|stable)))?$')
 | 
| +    builder_name = str(options.name)
 | 
|      match = re.match(EDITOR_REGEXP, builder_name)
 | 
|      if not match:
 | 
|        raise Exception("Buildername '%s' does not match pattern '%s'."
 | 
| @@ -400,28 +365,14 @@
 | 
|      SYSTEM = match.groupdict()['system']
 | 
|      BUILD_INSTALLER = bool(match.groupdict()['installer'])
 | 
|  
 | 
| -    TRUNK_BUILD = CHANNEL == 'trunk'
 | 
|      PLUGINS_BUILD = SYSTEM is None
 | 
|      REVISION = revision
 | 
|  
 | 
|      # Make sure the buildername and the options agree
 | 
|      assert BUILD_INSTALLER == options.build_installer
 | 
|  
 | 
| -    if username.startswith('chrome'):
 | 
| -      if TRUNK_BUILD:
 | 
| -        bucket = 'gs://dart-editor-archive-trunk'
 | 
| -      else:
 | 
| -        bucket = 'gs://dart-editor-archive-continuous'
 | 
| -      running_on_buildbot = True
 | 
| -    else:
 | 
| -      bucket = 'gs://dart-editor-archive-testing'
 | 
| -      running_on_buildbot = False
 | 
| -      sdk_environment['DART_LOCAL_BUILD'] = 'dart-editor-archive-testing'
 | 
| +    running_on_buildbot = username.startswith('chrome')
 | 
|  
 | 
| -    GSU_PATH_REV = '%s/%s' % (bucket, REVISION)
 | 
| -    GSU_PATH_LATEST = '%s/%s' % (bucket, 'latest')
 | 
| -    GSU_API_DOCS_PATH = '%s/%s' % (GSU_API_DOCS_BUCKET, REVISION)
 | 
| -
 | 
|      homegsutil = join(DART_PATH, 'third_party', 'gsutil', 'gsutil')
 | 
|      gsu = gsutil.GsUtil(False, homegsutil,
 | 
|        running_on_buildbot=running_on_buildbot)
 | 
| @@ -599,12 +550,10 @@
 | 
|            if running_on_buildbot:
 | 
|              version_file = _FindVersionFile(buildout)
 | 
|              if version_file:
 | 
| -              UploadFile(version_file, False)
 | 
|                DartArchiveUploadVersionFile(version_file)
 | 
|  
 | 
|              found_zips = _FindRcpZipFiles(buildout)
 | 
|              for zipfile in found_zips:
 | 
| -              UploadFile(zipfile)
 | 
|                DartArchiveUploadEditorZipFile(zipfile)
 | 
|  
 | 
|          return 0
 | 
| @@ -820,113 +769,10 @@
 | 
|    shutil.rmtree(tmp_dir, True)
 | 
|  
 | 
|  
 | 
| -def InstallDartiumFromOldDartiumArchive(buildroot, buildout, buildos, gsu):
 | 
| -  """Install Dartium into the RCP zip files and upload a version of Dartium
 | 
| -
 | 
| -  Args:
 | 
| -    buildroot: the boot of the build output
 | 
| -    buildout: the location of the ant build output
 | 
| -    buildos: the OS the build is running under
 | 
| -    gsu: the gsutil wrapper
 | 
| -  Raises:
 | 
| -    Exception: if no dartium files can be found
 | 
| -  """
 | 
| -  print 'InstallDartium(%s, %s, %s)' % (buildroot, buildout, buildos)
 | 
| -
 | 
| -  tmp_dir = os.path.join(buildroot, 'tmp')
 | 
| -
 | 
| -  rcpZipFiles = _FindRcpZipFiles(buildout)
 | 
| -
 | 
| -  for rcpZipFile in rcpZipFiles:
 | 
| -    print '  found rcp: %s' % rcpZipFile
 | 
| -
 | 
| -  dartiumFiles = []
 | 
| -
 | 
| -  dartiumFiles.append("gs://dartium-archive/dartium-mac-full-trunk/"
 | 
| -    + "dartium-mac-full-trunk-%s.0.zip" % REVISION)
 | 
| -  dartiumFiles.append("gs://dartium-archive/dartium-win-full-trunk/"
 | 
| -    + "dartium-win-full-trunk-%s.0.zip" % REVISION)
 | 
| -  dartiumFiles.append("gs://dartium-archive/dartium-lucid32-full-trunk/"
 | 
| -    + "dartium-lucid32-full-trunk-%s.0.zip" % REVISION)
 | 
| -  dartiumFiles.append("gs://dartium-archive/dartium-lucid64-full-trunk/"
 | 
| -    + "dartium-lucid64-full-trunk-%s.0.zip" % REVISION)
 | 
| -
 | 
| -  for rcpZipFile in rcpZipFiles:
 | 
| -    searchString = None
 | 
| -
 | 
| -    # dart-editor-linux.gtk.x86.zip, ...
 | 
| -
 | 
| -    if '-linux.gtk.x86.zip' in rcpZipFile:
 | 
| -      searchString = 'dartium-lucid32'
 | 
| -    if '-linux.gtk.x86_64.zip' in rcpZipFile:
 | 
| -      searchString = 'dartium-lucid64'
 | 
| -    if 'macosx' in rcpZipFile:
 | 
| -      searchString = 'dartium-mac'
 | 
| -    if 'win32' in rcpZipFile:
 | 
| -      searchString = 'dartium-win'
 | 
| -
 | 
| -    for dartiumFile in dartiumFiles:
 | 
| -      if searchString in dartiumFile:
 | 
| -        #download and unzip dartium
 | 
| -        unzip_dir = os.path.join(tmp_dir,
 | 
| -          os.path.splitext(os.path.basename(dartiumFile))[0])
 | 
| -        if not os.path.exists(unzip_dir):
 | 
| -          os.makedirs(unzip_dir)
 | 
| -        # Always download as searchString.zip
 | 
| -        basename = "%s.zip" % searchString
 | 
| -        tmp_zip_file = os.path.join(tmp_dir, basename)
 | 
| -
 | 
| -        if not os.path.exists(tmp_zip_file):
 | 
| -          if gsu.Copy(dartiumFile, tmp_zip_file, False):
 | 
| -            raise Exception("gsutil command failed, aborting.")
 | 
| -
 | 
| -          # Upload dartium zip to make sure we have consistent dartium downloads
 | 
| -          UploadFile(tmp_zip_file)
 | 
| -
 | 
| -          # Dartium is unzipped into ~ unzip_dir/dartium-win-full-7665.7665
 | 
| -          dartium_zip = ziputils.ZipUtil(tmp_zip_file, buildos)
 | 
| -          dartium_zip.UnZip(unzip_dir)
 | 
| -        else:
 | 
| -          dartium_zip = ziputils.ZipUtil(tmp_zip_file, buildos)
 | 
| -
 | 
| -        dart_zip_path = join(buildout, rcpZipFile)
 | 
| -        dart_zip = ziputils.ZipUtil(dart_zip_path, buildos)
 | 
| -
 | 
| -        if 'lin' in buildos:
 | 
| -          paths = glob.glob(join(unzip_dir, 'dartium-*'))
 | 
| -          add_path = paths[0]
 | 
| -          zip_rel_path = 'dart/chromium'
 | 
| -          # add to the rcp zip
 | 
| -          dart_zip.AddDirectoryTree(add_path, zip_rel_path)
 | 
| -        if 'win' in buildos:
 | 
| -          paths = glob.glob(join(unzip_dir, 'dartium-*'))
 | 
| -          add_path = paths[0]
 | 
| -          zip_rel_path = 'dart/chromium'
 | 
| -          FileDelete(join(add_path, 'mini_installer.exe'))
 | 
| -          FileDelete(join(add_path, 'sync_unit_tests.exe'))
 | 
| -          FileDelete(join(add_path, 'chrome.packed.7z'))
 | 
| -          # add to the rcp zip
 | 
| -          dart_zip.AddDirectoryTree(add_path, zip_rel_path)
 | 
| -        if 'mac' in buildos:
 | 
| -          paths = glob.glob(join(unzip_dir, 'dartium-*'))
 | 
| -          add_path = paths[0]
 | 
| -          zip_rel_path = 'dart/chromium'
 | 
| -          # add to the rcp zip
 | 
| -          dart_zip.AddDirectoryTree(add_path, zip_rel_path)
 | 
| -
 | 
| -
 | 
| -  shutil.rmtree(tmp_dir, True)
 | 
| -
 | 
| -
 | 
|  def InstallDartium(buildroot, buildout, buildos, gsu):
 | 
| -  if TRUNK_BUILD:
 | 
| -    # On trunk builds we fetch dartium from the old location (where the
 | 
| -    # dartium-*-trunk builders archive to)
 | 
| -    InstallDartiumFromOldDartiumArchive(buildroot, buildout, buildos, gsu)
 | 
| -  else:
 | 
| -    # On our be/dev/stable channels, we fetch dartium from the new
 | 
| -    # gs://dart-archive/ location.
 | 
| -    InstallDartiumFromDartArchive(buildroot, buildout, buildos, gsu)
 | 
| +  # On our be/dev/stable channels, we fetch dartium from the new
 | 
| +  # gs://dart-archive/ location.
 | 
| +  InstallDartiumFromDartArchive(buildroot, buildout, buildos, gsu)
 | 
|  
 | 
|  
 | 
|  def _InstallArtifacts(buildout, buildos, extra_artifacts):
 | 
| @@ -1066,7 +912,7 @@
 | 
|        # If we're on -dev/-stable build: add an editor.properties file
 | 
|        # pointing to the correct update location of the editor for the channel
 | 
|        # we're building for.
 | 
| -      if not TRUNK_BUILD and CHANNEL != 'be':
 | 
| +      if CHANNEL != 'be':
 | 
|          f = ziputils.ZipUtil(zipFile, buildos)
 | 
|          f.AddFile(editor_properties, 'dart/editor.properties')
 | 
|  
 | 
| @@ -1121,7 +967,7 @@
 | 
|    # Add -d64 to give better error messages to user in 64 bit mode.
 | 
|    lines[lines.index('-vmargs\n')] = '-vmargs\n-d64\n'
 | 
|    f = open(iniFilePath, 'w')
 | 
| -  f.writelines(lines);
 | 
| +  f.writelines(lines)
 | 
|    f.close()
 | 
|  
 | 
|  
 | 
| @@ -1215,28 +1061,10 @@
 | 
|      BuildStepFailure()
 | 
|    else:
 | 
|      StartBuildStep('upload_artifacts')
 | 
| -    UploadSite(buildout, "%s/%s" % (GSU_PATH_REV, 'eclipse-update'))
 | 
| -    UploadSite(buildout, "%s/%s" % (GSU_PATH_LATEST, 'eclipse-update'))
 | 
| +    DartArchiveUploadUpdateSite(join(buildout, 'buildRepo'))
 | 
|    return status
 | 
|  
 | 
|  
 | 
| -def UploadSite(buildout, gsPath) :
 | 
| -  # remove any old artifacts
 | 
| -  try:
 | 
| -    Gsutil(['rm', '-R', join(gsPath, '*')])
 | 
| -  except:
 | 
| -    # Ignore this, in the general case there is nothing.
 | 
| -    pass
 | 
| -  # create eclipse-update/index.html first to ensure eclipse-update prefix
 | 
| -  # exists (needed for recursive copy to follow)
 | 
| -  Gsutil(['cp', '-a', 'public-read',
 | 
| -          r'file://' + join(buildout, 'buildRepo', 'index.html'),
 | 
| -          join(gsPath,'index.html')])
 | 
| -
 | 
| -  # recursively copy update site contents
 | 
| -  UploadDirectory(glob.glob(join(buildout, 'buildRepo', '*')), gsPath)
 | 
| -  DartArchiveUploadUpdateSite(join(buildout, 'buildRepo'))
 | 
| -
 | 
|  def CreateApiDocs(buildLocation):
 | 
|    """Zip up api_docs, upload it, and upload the raw tree of docs"""
 | 
|  
 | 
| @@ -1254,9 +1082,6 @@
 | 
|  
 | 
|    CreateZip(apidir, api_zip)
 | 
|  
 | 
| -  # upload to continuous/svn_rev and to continuous/latest
 | 
| -  UploadFile(api_zip, False)
 | 
| -
 | 
|    DartArchiveUploadAPIDocs(api_zip)
 | 
|  
 | 
|  
 | 
| @@ -1280,20 +1105,11 @@
 | 
|    CallBuildScript('release', 'ia32,x64', 'create_sdk')
 | 
|  
 | 
|    sdk32_zip = join(sdkpath, 'dartsdk-linux-32.zip')
 | 
| -  sdk32_tgz = join(sdkpath, 'dartsdk-linux-32.tar.gz')
 | 
|    sdk64_zip = join(sdkpath, 'dartsdk-linux-64.zip')
 | 
| -  sdk64_tgz = join(sdkpath, 'dartsdk-linux-64.tar.gz')
 | 
|  
 | 
|    CreateZip(sdkdir32, sdk32_zip)
 | 
| -  CreateTgz(sdkdir32, sdk32_tgz)
 | 
|    CreateZip(sdkdir64, sdk64_zip)
 | 
| -  CreateTgz(sdkdir64, sdk64_tgz)
 | 
|  
 | 
| -  UploadFile(sdk32_zip)
 | 
| -  UploadFile(sdk32_tgz)
 | 
| -  UploadFile(sdk64_zip)
 | 
| -  UploadFile(sdk64_tgz)
 | 
| -
 | 
|    DartArchiveUploadSDKs('linux', sdk32_zip, sdk64_zip)
 | 
|  
 | 
|    return sdk32_zip
 | 
| @@ -1305,23 +1121,12 @@
 | 
|  
 | 
|    sdk32_zip = join(sdkpath, 'dartsdk-macos-32.zip')
 | 
|    sdk64_zip = join(sdkpath, 'dartsdk-macos-64.zip')
 | 
| -  sdk32_tgz = join(sdkpath, 'dartsdk-macos-32.tar.gz')
 | 
| -  sdk64_tgz = join(sdkpath, 'dartsdk-macos-64.tar.gz')
 | 
|  
 | 
|    CreateZip(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'ia32'),
 | 
|                   'dart-sdk'), sdk32_zip)
 | 
|    CreateZip(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'x64'),
 | 
|                   'dart-sdk'), sdk64_zip)
 | 
| -  CreateTgz(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'ia32'),
 | 
| -                 'dart-sdk'), sdk32_tgz)
 | 
| -  CreateTgz(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'x64'),
 | 
| -                 'dart-sdk'), sdk64_tgz)
 | 
|  
 | 
| -  UploadFile(sdk32_zip)
 | 
| -  UploadFile(sdk64_zip)
 | 
| -  UploadFile(sdk32_tgz)
 | 
| -  UploadFile(sdk64_tgz)
 | 
| -
 | 
|    DartArchiveUploadSDKs('macos', sdk32_zip, sdk64_zip)
 | 
|  
 | 
|    return sdk32_zip
 | 
| @@ -1341,9 +1146,6 @@
 | 
|                          utils.GetBuildRoot('win32', 'release', 'x64'),
 | 
|                          'dart-sdk'), sdk64_zip)
 | 
|  
 | 
| -  UploadFile(sdk32_zip)
 | 
| -  UploadFile(sdk64_zip)
 | 
| -
 | 
|    DartArchiveUploadSDKs('win32', sdk32_zip, sdk64_zip)
 | 
|  
 | 
|    return sdk32_zip
 | 
| @@ -1356,8 +1158,8 @@
 | 
|           target]
 | 
|    try:
 | 
|      ExecuteCommand(cmd, DART_PATH)
 | 
| -  except:
 | 
| -    print '%s build failed: %s' % (target, status)
 | 
| +  except Exception as error:
 | 
| +    print '%s build failed: %s' % (target, error)
 | 
|      BuildStepFailure()
 | 
|      raise Exception('%s build failed' % target)
 | 
|  
 | 
| @@ -1380,68 +1182,28 @@
 | 
|                   os.path.dirname(directory))
 | 
|  
 | 
|  
 | 
| -def CreateTgz(directory, targetFile):
 | 
| -  """tar gzip the given directory into the file"""
 | 
| -  EnsureDirectoryExists(targetFile)
 | 
| -  FileDelete(targetFile)
 | 
| -  ExecuteCommand(['tar', 'czf', targetFile, os.path.basename(directory)],
 | 
| -                 os.path.dirname(directory))
 | 
| -
 | 
| -
 | 
| -def UploadFile(targetFile, createChecksum=True):
 | 
| -  """Upload the given file to google storage."""
 | 
| -
 | 
| -  if (NO_UPLOAD):
 | 
| -    return
 | 
| -
 | 
| -  filePathRev = "%s/%s" % (GSU_PATH_REV, os.path.basename(targetFile))
 | 
| -  filePathLatest = "%s/%s" % (GSU_PATH_LATEST, os.path.basename(targetFile))
 | 
| -
 | 
| -  if createChecksum:
 | 
| -    checksum = bot_utils.CreateChecksumFile(targetFile)
 | 
| -
 | 
| -    checksumRev = "%s/%s" % (GSU_PATH_REV, os.path.basename(checksum))
 | 
| -    checksumLatest = "%s/%s" % (GSU_PATH_LATEST, os.path.basename(checksum))
 | 
| -
 | 
| -  Gsutil(['cp', '-a', 'public-read', r'file://' + targetFile, filePathRev])
 | 
| -
 | 
| -  if (createChecksum):
 | 
| -    Gsutil(['cp', '-a', 'public-read', r'file://' + checksum, checksumRev])
 | 
| -
 | 
| -  Gsutil(['cp', '-a', 'public-read', filePathRev, filePathLatest])
 | 
| -  if (createChecksum):
 | 
| -    Gsutil(['cp', '-a', 'public-read', checksumRev, checksumLatest])
 | 
| -
 | 
| -
 | 
| -def UploadDirectory(filesToUpload, gs_dir):
 | 
| -  Gsutil(['-m', 'cp', '-a', 'public-read', '-r'] + filesToUpload + [gs_dir])
 | 
| -
 | 
| -
 | 
|  def UploadApiDocs(dirName):
 | 
| -  # create file in dartlang-api-docs/REVISION/index.html
 | 
| -  # this lets us do the recursive copy in the next step
 | 
| +  apidocs_namer = bot_utils.GCSNamerApiDocs(CHANNEL)
 | 
| +  apidocs_destination_gcsdir = apidocs_namer.docs_dirpath(REVISION)
 | 
| +  apidocs_destination_latestfile = apidocs_namer.docs_latestpath(REVISION)
 | 
|  
 | 
| -  localIndexFile = join(dirName, 'index.html')
 | 
| -  destIndexFile = GSU_API_DOCS_PATH + '/index.html'
 | 
| +  # Delete the old revision specific apidocs directory if present.
 | 
| +  Gsutil(['-m', 'rm', '-R', '-f', apidocs_destination_gcsdir])
 | 
|  
 | 
| -  Gsutil(['cp', '-a', 'public-read', localIndexFile, destIndexFile])
 | 
| +  # Upload everything inside the built apidocs directory.
 | 
| +  Gsutil(['-m', 'cp', '-R', '-a', 'public-read', dirName,
 | 
| +          apidocs_destination_gcsdir])
 | 
|  
 | 
| -  # copy -R api_docs into dartlang-api-docs/REVISION
 | 
| -  filesToUpload = glob.glob(join(dirName, '*'))
 | 
| -  result = Gsutil(['-m', 'cp', '-q', '-a', 'public-read', '-r'] +
 | 
| -                  filesToUpload + [GSU_API_DOCS_PATH])
 | 
| +  # Update latest.txt to contain the newest revision.
 | 
| +  with utils.TempDir('latest_file') as temp_dir:
 | 
| +    latest_file = join(temp_dir, 'latest.txt')
 | 
| +    with open(latest_file, 'w') as f:
 | 
| +      f.write('%s' % REVISION)
 | 
|  
 | 
| -  if result == 0:
 | 
| -    destLatestRevFile = GSU_API_DOCS_BUCKET + '/latest.txt'
 | 
| -    localLatestRevFilename = join(dirName, 'latest.txt')
 | 
| -    with open(localLatestRevFilename, 'w+') as f:
 | 
| -      f.write(REVISION)
 | 
| +    Gsutil(['cp', '-a', 'public-read', latest_file,
 | 
| +            apidocs_destination_latestfile])
 | 
|  
 | 
| -    # overwrite dartlang-api-docs/latest.txt to contain REVISION
 | 
| -    Gsutil(['cp', '-a', 'public-read', localLatestRevFilename,
 | 
| -            destLatestRevFile])
 | 
|  
 | 
| -
 | 
|  def Gsutil(cmd):
 | 
|    gsutilTool = join(DART_PATH, 'third_party', 'gsutil', 'gsutil')
 | 
|    ExecuteCommand([sys.executable, gsutilTool] + cmd)
 | 
| 
 |