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

Unified Diff: telemetry/third_party/cv2/roll_cv2

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « telemetry/telemetry/internal/binary_dependencies.json ('k') | telemetry/third_party/numpy/roll_numpy » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: telemetry/third_party/cv2/roll_cv2
diff --git a/telemetry/third_party/cv2/roll_cv2 b/telemetry/third_party/cv2/roll_cv2
index 8e49b3513f74fd444a498bf5fccb206495346aee..1f498b0701f6046ae02d7c8d969e7425ddfa56ef 100755
--- a/telemetry/third_party/cv2/roll_cv2
+++ b/telemetry/third_party/cv2/roll_cv2
@@ -4,10 +4,23 @@
# found in the LICENSE file.
#
# Script to download, package, update, and upload OpenCV (cv2).
+#
+# Note: This has not been tested on Windows. The Windows cv2 binary in
+# Cloud Storage was created manually by the following process:
+# * Download
+# https://github.com/opencv/opencv/releases/download/2.4.13.2/opencv-2.4.13.2-vc14.exe
+# * Open using 7-Zip (or just run the exe)
+# * Extract opencv/build/python/2.7/x64/cv2.pyd
+# * Create a zip file containing only cv2.pyd
+# * Rename cv2.zip to cv2_$(sha1sum cv2.zip)
+# * Upload to cloud storage at chromium-telemetry/binary_dependencies
+# * Add entry including hash and version number to cv2 win_AMD64 entry
+# in binary_dependencies.json
DESCRIPTION = '''\
Downloads + builds OpenCV (cv2), packages it as a zip, and updates \
-binary_dependencies.json and Cloud Storage with the result.'''
+binary_dependencies.json and Cloud Storage with the result. (NOTE: \
+Not tested on Windows. See comments for details.)'''
import argparse
import contextlib
@@ -43,6 +56,9 @@ NUMPY_PATH = NUMPY_PATH[0]
# insert rather than append to make sure we don't get system numpy.
sys.path.insert(1, NUMPY_PATH)
+class RollError(Exception):
+ pass
+
# Dependency update helper
def update_dependency(dependency, path, version):
config = os.path.join(CATAPULT_ROOT, 'telemetry', 'telemetry', 'internal',
@@ -53,11 +69,26 @@ def update_dependency(dependency, path, version):
platform = "{}_{}".format(os_name, arch_name)
c = base_config.BaseConfig(config, writable=True)
- c.AddCloudStorageDependencyUpdateJob(
- dependency, platform, path, version=version, execute_job=True)
+ try:
+ old_version = c.GetVersion(dependency, platform)
+ print 'Updating from version: {}'.format(old_version)
+ except ValueError:
+ raise RollError(
+ ('binary_dependencies.json entry for {} missing or invalid; please add '
+ 'it first! (need download_path and path_within_archive)')
+ .format(platform))
+
+ if path:
+ c.AddCloudStorageDependencyUpdateJob(
+ dependency, platform, path, version=version, execute_job=True)
+
+def verify_dependency_entry(dependency):
+ update_dependency(dependency, None, None)
# Main
def main(version):
+ verify_dependency_entry('cv2')
+
outdir = os.path.join(SCRIPT_DIR, 'lib')
if os.path.exists(outdir):
shutil.rmtree(outdir)
@@ -95,7 +126,7 @@ def main(version):
print 'Zipping result...'
root_dir = glob.glob(os.path.join('lib', 'python2.*', '*-packages'))
if len(root_dir) != 1:
- raise Exception(
+ raise RollError(
'Expected one glob match, found {}'.format(len(root_dir)))
root_dir = root_dir[0]
zip_result = shutil.make_archive(
@@ -106,7 +137,7 @@ def main(version):
print 'Uploading zip...'
update_dependency('cv2', zip_result, version)
- print '''\
+ print '''\
Don't forget to run:
$ GYP_DEFINES=fetch_telemetry_dependencies=1 \
bin/fetch_telemetry_binary_dependencies
@@ -126,6 +157,6 @@ if __name__ == '__main__':
os.chdir(SCRIPT_DIR)
main(args.version)
- except Exception as e:
+ except RollError as e:
print '{}: {}'.format(type(e).__name__, e.message)
sys.exit(1)
« no previous file with comments | « telemetry/telemetry/internal/binary_dependencies.json ('k') | telemetry/third_party/numpy/roll_numpy » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698