Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 | 2 |
| 3 # Copyright 2015 Google Inc. | 3 # Copyright 2015 Google Inc. |
| 4 # | 4 # |
| 5 # Use of this source code is governed by a BSD-style license that can be | 5 # Use of this source code is governed by a BSD-style license that can be |
| 6 # found in the LICENSE file. | 6 # found in the LICENSE file. |
| 7 | 7 |
| 8 # This script will update Skia's dependencies as necessary and run | 8 # This script will update Skia's dependencies as necessary and run |
| 9 # gyp if needed. | 9 # gyp if needed. |
| 10 | 10 |
| 11 # Depends on: Python, and Git. | 11 # Depends on: Python, Git, and depot_tools. |
| 12 # | 12 # |
| 13 # Example usage: | 13 # Example usage: |
| 14 # | 14 # |
| 15 # git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git | |
| 16 # export PATH="${PWD}/depot_tools:${PATH}" | |
| 15 # git clone https://skia.googlesource.com/skia | 17 # git clone https://skia.googlesource.com/skia |
| 16 # cd skia | 18 # cd skia |
| 17 # python bin/sync-and-gyp | 19 # python bin/sync-and-gyp |
| 18 # ninja -C out/Debug && out/Debug/dm | 20 # ninja -C out/Debug && out/Debug/dm |
| 19 # | 21 # |
| 20 # Once changes are made to DEPS or gyp/ or the source, call: | 22 # Once changes are made to DEPS or gyp/ or the source, call: |
| 21 # | 23 # |
| 22 # python bin/sync-and-gyp | 24 # python bin/sync-and-gyp |
| 23 | 25 |
| 24 import fnmatch | 26 import fnmatch |
| 25 import hashlib | 27 import hashlib |
| 26 import subprocess | 28 import subprocess |
| 27 import os | 29 import os |
| 28 | 30 |
| 29 skia_dir = os.path.join(os.path.dirname(__file__), os.pardir) | 31 skia_dir = os.path.join(os.path.dirname(__file__), os.pardir) |
| 30 | 32 |
| 31 skia_out = os.environ.get("SKIA_OUT") | 33 skia_out = os.environ.get("SKIA_OUT") |
| 32 if skia_out: | 34 if skia_out: |
| 33 skia_out = os.path.abspath(skia_out) | 35 skia_out = os.path.abspath(skia_out) |
| 34 hash_path = os.path.join(skia_out, 'gyp_hash') | 36 hash_path = os.path.join(skia_out, 'gyp_hash') |
| 35 else: | 37 else: |
| 36 hash_path = os.path.join('out', 'gyp_hash') | 38 hash_path = os.path.join('out', 'gyp_hash') |
| 37 | 39 |
| 38 os.chdir(skia_dir) | 40 os.chdir(skia_dir) |
| 39 | 41 |
| 40 if not os.path.isfile('DEPS'): | 42 if not os.path.isfile('DEPS'): |
| 41 sys.stderr.write('DEPS file missing') | 43 sys.stderr.write('DEPS file missing') |
| 42 exit(1) | 44 exit(1) |
| 43 | 45 |
| 44 env = os.environ.copy() | 46 deps_hasher = hashlib.sha1() |
| 45 env["GIT_SYNC_DEPS_QUIET"] = "1" | 47 with open('DEPS', 'r') as f: |
| 46 subprocess.call(['python', 'tools/git-sync-deps'], env=env) | 48 deps_hasher.update(f.read()) |
| 49 deps_hash = deps_hasher.hexdigest() | |
| 50 current_deps_hash = None | |
| 51 if os.path.isfile('.deps_sha1'): | |
| 52 with open('.deps_sha1', 'r') as f: | |
| 53 current_deps_hash = f.read().strip() | |
| 54 | |
| 55 default_gclient_config = ''' | |
| 56 solutions = [ | |
| 57 { "name" : ".", | |
| 58 "url" : "https://skia.googlesource.com/skia.git", | |
| 59 "deps_file" : "DEPS", | |
| 60 "managed" : False, | |
| 61 "custom_deps" : { | |
| 62 }, | |
| 63 "safesync_url": "", | |
| 64 }, | |
| 65 ] | |
| 66 cache_dir = None | |
| 67 ''' | |
| 68 if current_deps_hash != deps_hash: | |
| 69 # `gclient sync` is very slow, so skip whenever we can. | |
| 70 if not os.path.isfile('.gclient'): | |
| 71 with open('.gclient', 'w') as o: | |
| 72 o.write(default_gclient_config) | |
| 73 try: | |
| 74 subprocess.check_call(['gclient', 'sync']) | |
| 75 except: | |
| 76 sys.stderr.write('\n`gclient sync` failed.\n') | |
|
kjlubick
2016/02/17 13:57:04
Drive by comment, sys is not defined.
| |
| 77 os.remove('.deps_sha1') # Unknown state. | |
| 78 exit(1) | |
| 79 # Only write hash after a successful sync. | |
| 80 with open('.deps_sha1', 'w') as o: | |
| 81 o.write(deps_hash) | |
| 47 | 82 |
| 48 hasher = hashlib.sha1() | 83 hasher = hashlib.sha1() |
| 49 | 84 |
| 50 for var in ['AR', 'AR_host', 'AR_target', | 85 for var in ['AR', 'AR_host', 'AR_target', |
| 51 'CC', 'CC_host', 'CC_target', | 86 'CC', 'CC_host', 'CC_target', |
| 52 'CFLAGS', 'CFLAGS_host', | 87 'CFLAGS', 'CFLAGS_host', |
| 53 'CPPFLAGS', 'CPPFLAGS_host', | 88 'CPPFLAGS', 'CPPFLAGS_host', |
| 54 'CXX', 'CXX_host', 'CXX_target', | 89 'CXX', 'CXX_host', 'CXX_target', |
| 55 'GYP_DEFINES', 'GYP_GENERATORS', | 90 'GYP_DEFINES', 'GYP_GENERATORS', |
| 56 'NM', 'NM_host', 'NM_target', | 91 'NM', 'NM_host', 'NM_target', |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 79 return f.read() | 114 return f.read() |
| 80 return '' | 115 return '' |
| 81 | 116 |
| 82 if cat_if_exists(hash_path).strip() != gyp_hash: | 117 if cat_if_exists(hash_path).strip() != gyp_hash: |
| 83 env = os.environ.copy() | 118 env = os.environ.copy() |
| 84 if skia_out: | 119 if skia_out: |
| 85 env['SKIA_OUT'] = skia_out | 120 env['SKIA_OUT'] = skia_out |
| 86 subprocess.call(['python', './gyp_skia'], env=env) | 121 subprocess.call(['python', './gyp_skia'], env=env) |
| 87 with open(hash_path, 'w') as o: | 122 with open(hash_path, 'w') as o: |
| 88 o.write(gyp_hash) | 123 o.write(gyp_hash) |
| OLD | NEW |