chromium/ios/third_party/webkit/copy_webkit_for_clusterfuzz.py

# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import argparse
import os
import shutil
import subprocess
import sys


def main():
  description = 'Packages WebKit build for Clusterfuzz.'
  parser = argparse.ArgumentParser(description=description)
  parser.add_argument('--output',
                    help='Name of the output file.')
  parser.add_argument('--webkit_build',
                      help='WebKit build directory to copy.')
  parser.add_argument('--clusterfuzz_script',
                      help='Clusterfuzz script to copy.')
  parser.add_argument('--clang_asan_library',
                      help='Clang ASan library to copy.')

  opts = parser.parse_args()

  if os.path.exists(opts.output):
    shutil.rmtree(opts.output)

  shutil.copytree(opts.webkit_build, opts.output, symlinks=True)
  shutil.copyfile(
        opts.clusterfuzz_script,
        os.path.join(opts.output,
                     os.path.basename(opts.clusterfuzz_script)))
  shutil.copyfile(
        opts.clang_asan_library,
        os.path.join(opts.output,
                     os.path.basename(opts.clang_asan_library)))

  zip_command = ['zip', '--symlinks', '-r', os.extsep.join([opts.output, 'zip']), opts.output]
  proc = subprocess.Popen(zip_command)
  proc.communicate()
  return proc.returncode


if __name__ == '__main__':
  sys.exit(main())