old_contents: #!/usr/bin/env python
  #
  # Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
  # for details. All rights reserved. Use of this source code is governed by a
  # BSD-style license that can be found in the LICENSE file.
  #
  
  # A script that copies a core file and binary to GCS
  # We expect the dumps to be located in /tmp/coredump_PID directory
  # After we copy out the core files we delete the dumps localy
  
  import os
  import shutil
  import sys
  import subprocess
  import tarfile
  import utils
  import uuid
  
  GCS_FOLDER = 'dart-crashes'
  
  def CreateTarball(input_dir, tarname):
    print 'Creating tar file: %s' % tarname
    tar = tarfile.open(tarname, mode='w:gz')
    tar.add(input_dir)
    tar.close()
  
  def CopyToGCS(filename):
    gs_location = 'gs://%s/%s/' % (GCS_FOLDER, uuid.uuid4())
    cmd = ['gsutil', 'cp', filename, gs_location]
    print 'Running command: %s' % cmd
    subprocess.check_call(cmd)
    archived_filename = '%s%s' % (gs_location, filename.split('/').pop())
    print 'Dump now available in %s' % archived_filename
  
  def TEMPArchiveBuild():
    d = '/b/build/slave/vm-linux-debug-x64-asan-be/build/dart/out/DebugX64/dart'
    CopyToGCS(d)
  
  def Main():
    if 'PWD' in os.environ and 'x64-asan' in os.environ['PWD']:
      TEMPArchiveBuild()
    if utils.GuessOS() != 'linux':
      print 'Currently only archiving crash dumps on linux'
      return 0
    print 'Looking for crash dumps'
    num_dumps = 0
    for v in os.listdir('/tmp'):
      if v.startswith('coredump'):
        fullpath = '/tmp/%s' % v
        if os.path.isdir(fullpath):
          num_dumps += 1
          tarname = '%s.tar.gz' % fullpath
          CreateTarball(fullpath, tarname)
          CopyToGCS(tarname)
          os.unlink(tarname)
          shutil.rmtree(fullpath)
    print 'Found %s core dumps' % num_dumps
  
  if __name__ == '__main__':
    sys.exit(Main())
  
new_contents: #!/usr/bin/env python
  #
  # Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
  # for details. All rights reserved. Use of this source code is governed by a
  # BSD-style license that can be found in the LICENSE file.
  #
  
  # A script that copies a core file and binary to GCS
  # We expect the dumps to be located in /tmp/coredump_PID directory
  # After we copy out the core files we delete the dumps localy
  
  import os
  import shutil
  import sys
  import subprocess
  import tarfile
  import utils
  import uuid
  
  GCS_FOLDER = 'dart-crashes'
  GSUTIL='/b/build/scripts/slave/gsutil'
  
  def CreateTarball(input_dir, tarname):
    print 'Creating tar file: %s' % tarname
    tar = tarfile.open(tarname, mode='w:gz')
    tar.add(input_dir)
    tar.close()
  
  def CopyToGCS(filename):
    gs_location = 'gs://%s/%s/' % (GCS_FOLDER, uuid.uuid4())
    cmd = [GSUTIL, 'cp', filename, gs_location]
    print 'Running command: %s' % cmd
    subprocess.check_call(cmd)
    archived_filename = '%s%s' % (gs_location, filename.split('/').pop())
    print 'Dump now available in %s' % archived_filename
  
  def TEMPArchiveBuild():
    d = '/b/build/slave/vm-linux-debug-x64-asan-be/build/dart/out/DebugX64/dart'
    CopyToGCS(d)
  
  def Main():
    if 'PWD' in os.environ and 'x64-asan' in os.environ['PWD']:
      TEMPArchiveBuild()
    if utils.GuessOS() != 'linux':
      print 'Currently only archiving crash dumps on linux'
      return 0
    print 'Looking for crash dumps'
    num_dumps = 0
    for v in os.listdir('/tmp'):
      if v.startswith('coredump'):
        fullpath = '/tmp/%s' % v
        if os.path.isdir(fullpath):
          num_dumps += 1
          tarname = '%s.tar.gz' % fullpath
          CreateTarball(fullpath, tarname)
          CopyToGCS(tarname)
          os.unlink(tarname)
          shutil.rmtree(fullpath)
    print 'Found %s core dumps' % num_dumps
  
  if __name__ == '__main__':
    sys.exit(Main())
  
subject: Set full path to gsutil on bot