Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Side by Side Diff: telemetry/third_party/numpy/roll_numpy

Issue 2892313002: Telemetry/Windows: add numpy and cv2 binary dependencies (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « telemetry/third_party/cv2/roll_cv2 ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2017 The Chromium Authors. All rights reserved. 2 # Copyright 2017 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 DESCRIPTION = '''\ 6 DESCRIPTION = '''\
7 Downloads numpy via pip, packages it as a zip, and updates \ 7 Downloads numpy via pip, packages it as a zip, and updates \
8 binary_dependencies.json and Cloud Storage with the result.''' 8 binary_dependencies.json and Cloud Storage with the result.'''
9 9
10 import argparse 10 import argparse
11 import glob 11 import glob
12 import os 12 import os
13 import shutil 13 import shutil
14 import sys 14 import sys
15 import virtualenv 15 import virtualenv
16 16
17 # Catapult imports 17 # Catapult imports
18 SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) 18 SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
19 CATAPULT_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..', '..')) 19 CATAPULT_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..', '..'))
20 sys.path.append(os.path.join(CATAPULT_ROOT, 'common', 'py_utils')) 20 sys.path.append(os.path.join(CATAPULT_ROOT, 'common', 'py_utils'))
21 from py_utils import shell_util as sh 21 from py_utils import shell_util as sh
22 sys.path.append(os.path.join(CATAPULT_ROOT, 'telemetry')) 22 sys.path.append(os.path.join(CATAPULT_ROOT, 'telemetry'))
23 from telemetry.core import platform as platform_module 23 from telemetry.core import platform as platform_module
24 sys.path.append(os.path.join(CATAPULT_ROOT, 'dependency_manager')) 24 sys.path.append(os.path.join(CATAPULT_ROOT, 'dependency_manager'))
25 from dependency_manager import base_config 25 from dependency_manager import base_config
26 26
27 class RollError(Exception):
28 pass
29
27 # Dependency update helper 30 # Dependency update helper
28 def update_dependency(dependency, path, version): 31 def update_dependency(dependency, path, version):
29 config = os.path.join(CATAPULT_ROOT, 'telemetry', 'telemetry', 'internal', 32 config = os.path.join(CATAPULT_ROOT, 'telemetry', 'telemetry', 'internal',
30 'binary_dependencies.json') 33 'binary_dependencies.json')
31 34
32 os_name = platform_module.GetHostPlatform().GetOSName() 35 os_name = platform_module.GetHostPlatform().GetOSName()
33 arch_name = platform_module.GetHostPlatform().GetArchName() 36 arch_name = platform_module.GetHostPlatform().GetArchName()
34 platform = "{}_{}".format(os_name, arch_name) 37 platform = "{}_{}".format(os_name, arch_name)
35 38
36 c = base_config.BaseConfig(config, writable=True) 39 c = base_config.BaseConfig(config, writable=True)
37 c.AddCloudStorageDependencyUpdateJob( 40 try:
38 dependency, platform, path, version=version, execute_job=True) 41 old_version = c.GetVersion(dependency, platform)
42 print 'Updating from version: {}'.format(old_version)
43 except ValueError:
44 raise RollError(
45 ('binary_dependencies.json entry for {} missing or invalid; please add '
46 'it first! (need download_path and path_within_archive)')
47 .format(platform))
48
49 if path:
50 c.AddCloudStorageDependencyUpdateJob(
51 dependency, platform, path, version=version, execute_job=True)
52
53 def verify_dependency_entry(dependency):
54 update_dependency(dependency, None, None)
39 55
40 # Main 56 # Main
41 def main(version): 57 def main(version):
58 verify_dependency_entry('numpy')
59
42 outdir = os.path.join(SCRIPT_DIR, 'lib') 60 outdir = os.path.join(SCRIPT_DIR, 'lib')
43 if os.path.exists(outdir): 61 if os.path.exists(outdir):
44 shutil.rmtree(outdir) 62 shutil.rmtree(outdir)
45 os.mkdir(outdir) 63 os.mkdir(outdir)
46 64
47 zip_full_base = os.path.join(outdir, 'numpy') 65 zip_full_base = os.path.join(outdir, 'numpy')
48 zip_result = None 66 zip_result = None
49 67
50 with sh.ScopedTempDir(): 68 with sh.ScopedTempDir():
51 virtualenv.create_environment('env') 69 virtualenv.create_environment('env', site_packages=False)
52 with sh.ScopedChangeDir('env'): 70 with sh.ScopedChangeDir('env'):
53 sh.CallProgram(['bin', 'pip'], 'install', 'numpy=={}'.format(version)) 71 if os.path.isdir('bin'): # Linux/Mac
54 root_dir = glob.glob(os.path.join('lib', 'python2.*', 'site-packages')) 72 bin_dir = 'bin'
73 root_dir = glob.glob(os.path.join('lib', 'python2.*', 'site-packages'))
74 elif os.path.isdir('Scripts'): # Windows
75 bin_dir = 'Scripts'
76 root_dir = glob.glob(os.path.join('Lib', 'site-packages'))
77 else:
78 raise RollError("Can't find the bin directory at bin/ or Scripts/")
79
80 activate_this = os.path.join(bin_dir, 'activate_this.py')
81 execfile(activate_this, dict(__file__=activate_this))
82
83 sh.CallProgram(['pip'], 'install', 'numpy=={}'.format(version))
55 if len(root_dir) != 1: 84 if len(root_dir) != 1:
56 raise Exception('Expected one glob match, found ' + len(root_dir)) 85 raise RollError(
86 'Expected one glob match, found {}'.format(len(root_dir)))
57 root_dir = root_dir[0] 87 root_dir = root_dir[0]
58 print 'Zipping result...' 88 print 'Zipping result...'
59 zip_result = shutil.make_archive( 89 zip_result = shutil.make_archive(
60 base_name=zip_full_base, 90 base_name=zip_full_base,
61 format='zip', 91 format='zip',
62 root_dir=root_dir, 92 root_dir=root_dir,
63 base_dir='numpy') 93 base_dir='numpy')
64 print 'Uploading zip...' 94 print 'Uploading zip...'
65 update_dependency('numpy', zip_result, version) 95 update_dependency('numpy', zip_result, version)
66 96
67 print '''\ 97 print '''\
68 Don't forget to run: 98 Don't forget to run:
69 $ GYP_DEFINES=fetch_telemetry_dependencies=1 \ 99 $ GYP_DEFINES=fetch_telemetry_dependencies=1 \
70 bin/fetch_telemetry_binary_dependencies 100 bin/fetch_telemetry_binary_dependencies
71 if you want to use the new dependency version locally!''' 101 if you want to use the new dependency version locally!'''
72 102
73 if __name__ == '__main__': 103 if __name__ == '__main__':
74 VERSION_HELP = '''\ 104 VERSION_HELP = '''\
75 Numpy package version, e.g. 1.11.3. For a release list, see \ 105 Numpy package version, e.g. 1.11.3. For a release list, see \
76 <https://github.com/numpy/numpy/tree/master/doc/release>. \ 106 <https://github.com/numpy/numpy/tree/master/doc/release>. \
77 For version support, see \ 107 For version support, see \
78 `telemetry/telemetry/internal/util/external_modules.py`.''' 108 `telemetry/telemetry/internal/util/external_modules.py`.'''
79 109
80 try: 110 try:
81 parser = argparse.ArgumentParser(description=DESCRIPTION) 111 parser = argparse.ArgumentParser(description=DESCRIPTION)
82 parser.add_argument('version', help=VERSION_HELP) 112 parser.add_argument('version', help=VERSION_HELP)
83 args = parser.parse_args() 113 args = parser.parse_args()
84 114
85 os.chdir(SCRIPT_DIR) 115 os.chdir(SCRIPT_DIR)
86 main(args.version) 116 main(args.version)
87 except Exception as e: 117 except RollError as e:
88 print '{}: {}'.format(type(e).__name__, e.message) 118 print '{}: {}'.format(type(e).__name__, e.message)
89 sys.exit(1) 119 sys.exit(1)
OLDNEW
« no previous file with comments | « telemetry/third_party/cv2/roll_cv2 ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698