You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.8 KiB

#!/usr/bin/env python2
#
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Script to patch Android repo with diffs that are needed by the suite.
Run this script before running the suite.
"""
from __future__ import print_function
import config
import os
import subprocess
# The patches to be added to the android repo.
# An error may occur if it is already patched, or meets some error.
# FIXME: Needs to be FIXED in the future.
def try_patch_skia():
skia_dir = os.path.join(config.android_home, config.bench_dict['Skia'])
# You may want to change the file based on aosp or internal
if config.android_type == 'internal':
print('No need to patch skia for internal repo.')
return
elif config.android_type == 'aosp':
skia_patch = os.path.join(
os.path.dirname(os.path.realpath(__file__)), 'skia_aosp.diff')
else:
raise ValueError('Adnroid source type should be either aosp or internal.')
# FIXME: A quick hack, need to handle errors and check whether has been
# applied in the future.
try:
subprocess.check_call(['git', '-C', skia_dir, 'apply', skia_patch])
print('Skia patched successfully!')
except subprocess.CalledProcessError:
print('Skia patch not applied, error or already patched.')
def try_patch_autotest():
# Patch autotest, which includes all the testcases on device, setting device,
# and running the benchmarks
autotest_dir = os.path.join(config.android_home, config.autotest_dir)
autotest_patch = os.path.join(
os.path.dirname(os.path.realpath(__file__)), 'autotest.diff')
dex2oat_dir = os.path.join(autotest_dir, 'server/site_tests/android_Dex2oat')
panorama_dir = os.path.join(autotest_dir,
'server/site_tests/android_Panorama')
# FIXME: A quick hack, need to handle errors and check whether has been
# applied in the future.
try:
subprocess.check_call(['git', '-C', autotest_dir, 'apply', autotest_patch])
subprocess.check_call(['cp', '-rf', 'dex2oat_input', dex2oat_dir])
subprocess.check_call(['cp', '-rf', 'panorama_input', panorama_dir])
print('Autotest patched successfully!')
except subprocess.CalledProcessError:
print('Autotest patch not applied, error or already patched.')
def try_patch_panorama():
panorama_dir = os.path.join(config.android_home,
config.bench_dict['Panorama'])
panorama_patch = os.path.join(
os.path.dirname(os.path.realpath(__file__)), 'panorama.diff')
# FIXME: A quick hack, need to handle errors and check whether has been
# applied in the future.
try:
subprocess.check_call(['git', '-C', panorama_dir, 'apply', panorama_patch])
print('Panorama patched successfully!')
except subprocess.CalledProcessError:
print('Panorama patch not applied, error or already patched.')
def try_patch_synthmark():
synthmark_dir = 'devrel/tools/synthmark'
# FIXME: A quick hack, need to handle errors and check whether has been
# applied in the future.
try:
subprocess.check_call([
'bash', '-c', 'mkdir devrel && '
'cd devrel && '
'repo init -u sso://devrel/manifest && '
'repo sync tools/synthmark'
])
synthmark_patch = os.path.join(
os.path.dirname(os.path.realpath(__file__)), 'synthmark.diff')
subprocess.check_call(['git', '-C', synthmark_dir,
'apply', synthmark_patch])
subprocess.check_call(['mv', '-f', synthmark_dir, config.android_home])
subprocess.check_call(['rm', '-rf', 'devrel'])
print('Synthmark patched successfully!')
except subprocess.CalledProcessError:
print('Synthmark patch not applied, error or already patched.')
def main():
try_patch_skia()
try_patch_autotest()
try_patch_panorama()
try_patch_synthmark()
if __name__ == '__main__':
main()