Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve roll.py to work with HEAD Chromium #73

Merged
merged 1 commit into from
Jul 17, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions sky/tools/roll/android_build.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
--- a/build/android/pylib/constants/__init__.py
+++ b/build/android/pylib/constants/__init__.py
@@ -184,7 +184,7 @@ class ANDROID_SDK_VERSION_CODES(object):
LOLLIPOP_MR1 = 22

ANDROID_SDK_VERSION = ANDROID_SDK_VERSION_CODES.LOLLIPOP_MR1
-ANDROID_SDK_BUILD_TOOLS_VERSION = '22.0.0'
+ANDROID_SDK_BUILD_TOOLS_VERSION = '22.0.1'
ANDROID_SDK_ROOT = os.path.join(DIR_SOURCE_ROOT,
'third_party/android_tools/sdk')
ANDROID_SDK_TOOLS = os.path.join(ANDROID_SDK_ROOT,
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -1682,7 +1682,7 @@
'android_host_arch%': '<!(uname -m)',
# Android API-level of the SDK used for compilation.
'android_sdk_version%': '22',
- 'android_sdk_build_tools_version%': '22.0.0',
+ 'android_sdk_build_tools_version%': '22.0.1',
'host_os%': "<!(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')",
},
# Copy conditionally-set variables out one scope.
--- a/build/config/android/config.gni
+++ b/build/config/android/config.gni
@@ -17,7 +17,7 @@ if (is_android) {
if (!defined(default_android_sdk_root)) {
default_android_sdk_root = "//third_party/android_tools/sdk"
default_android_sdk_version = "22"
- default_android_sdk_build_tools_version = "22.0.0"
+ default_android_sdk_build_tools_version = "22.0.1"
}

if (!defined(google_play_services_library)) {
43 changes: 43 additions & 0 deletions sky/tools/roll/patch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env python
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import os
import subprocess
import utils

def patch_and_filter():
"""Applies the *.patch files in the current dir and some hardcoded filters."""
os.chdir(utils.mojo_root_dir)

utils.filter_file("build/landmines.py",
lambda line: not "gyp_environment" in line)
utils.commit("filter gyp_environment out of build/landmines.py")

patch()


def patch(relative_patches_dir=os.curdir):
"""Applies the *.patch files in |relative_patches_dir|.

Args:
relative_patches_dir: A directory path relative to the current directory.
Defaults to the directory of this file.

Raises:
subprocess.CalledProcessError if the patch couldn't be applied.
"""
patches_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
relative_patches_dir)
assert os.path.isdir(patches_dir)

os.chdir(utils.mojo_root_dir)
for p in utils.find(["*.patch"], patches_dir):
print "applying patch %s" % os.path.basename(p)
try:
utils.system(["git", "apply", p])
utils.commit("applied patch %s" % os.path.basename(p))
except subprocess.CalledProcessError:
print "ERROR: patch %s failed to apply" % os.path.basename(p)
raise
66 changes: 40 additions & 26 deletions sky/tools/roll/roll.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import urllib2
from utils import commit
from utils import system
import patch

# //base and its dependencies
_base_deps = [
Expand Down Expand Up @@ -95,33 +96,39 @@
'build/config/ui.gni',
'build/ls.py',
'build/module_args/mojo.gni',
'build/symlink.py',
'tools/android/VERSION_LINUX_NDK',
'tools/android/VERSION_LINUX_SDK',
'tools/android/VERSION_MACOSX_NDK',
'tools/android/VERSION_MACOSX_SDK',
'tools/android/download_android_tools.py',
]


def rev(source_dir, dest_dir, dirs_to_rev):
for d in dirs_to_rev:
print "removing directory %s" % d
try:
system(["git", "rm", "-r", d], cwd=dest_dir)
except subprocess.CalledProcessError:
print "Could not remove %s" % d
print "cloning directory %s" % d
files = system(["git", "ls-files", d], cwd=source_dir)
for f in files.splitlines():
source_path = os.path.join(source_dir, f)
if not os.path.isfile(source_path):
continue
dest_path = os.path.join(dest_dir, f)
system(["mkdir", "-p", os.path.dirname(dest_path)], cwd=source_dir)
system(["cp", source_path, dest_path], cwd=source_dir)
system(["git", "add", d], cwd=dest_dir)

for f in files_not_to_roll:
system(["git", "checkout", "HEAD", f], cwd=dest_dir)

system(["git", "add", "."], cwd=dest_dir)
src_commit = system(["git", "rev-parse", "HEAD"], cwd=source_dir).strip()
commit("Update to mojo %s" % src_commit, cwd=dest_dir)
def rev(source_dir, dest_dir, dirs_to_rev, name):
for d in dirs_to_rev:
print "removing directory %s" % d
try:
system(["git", "rm", "-r", d], cwd=dest_dir)
except subprocess.CalledProcessError:
print "Could not remove %s" % d
print "cloning directory %s" % d
files = system(["git", "ls-files", d], cwd=source_dir)
for f in files.splitlines():
source_path = os.path.join(source_dir, f)
if not os.path.isfile(source_path):
continue
dest_path = os.path.join(dest_dir, f)
system(["mkdir", "-p", os.path.dirname(dest_path)], cwd=source_dir)
system(["cp", source_path, dest_path], cwd=source_dir)
system(["git", "add", d], cwd=dest_dir)

for f in files_not_to_roll:
system(["git", "checkout", "HEAD", f], cwd=dest_dir)

system(["git", "add", "."], cwd=dest_dir)
src_commit = system(["git", "rev-parse", "HEAD"], cwd=source_dir).strip()
commit("Update to %s %s" % (name, src_commit), cwd=dest_dir)


def main():
Expand All @@ -134,10 +141,17 @@ def main():
args = parser.parse_args()

if args.mojo_dir:
rev(args.mojo_dir, args.dest_dir, dirs_from_mojo)
rev(args.mojo_dir, args.dest_dir, dirs_from_mojo, 'mojo')

if args.chromium_dir:
rev(args.chromium_dir, args.dest_dir, dirs_from_chromium)
rev(args.chromium_dir, args.dest_dir, dirs_from_chromium, 'chromium')

try:
patch.patch_and_filter()
except subprocess.CalledProcessError:
print "ERROR: Roll failed due to a patch not applying"
print "Fix the patch to apply, commit the result, and re-run this script"
return 1

return 0

Expand Down