#!/usr/bin/python2 # # Copyright 2016 The ANGLE Project Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # update_canary_angle.py: # Helper script that copies Windows ANGLE DLLs into the Canary # application directory. Much faster than compiling Chrome from # source. The script checks for the most recent DLLs in a set of # search paths, and copies that into the most recent Canary # binary folder. Only works on Windows. import glob, sys, os, shutil # Set of search paths. script_dir = os.path.dirname(sys.argv[0]) os.chdir(os.path.join(script_dir, "..")) source_paths = glob.glob('out/*') # Default Canary installation path. chrome_folder = os.path.join(os.environ['LOCALAPPDATA'], 'Google', 'Chrome SxS', 'Application') # Find the most recent ANGLE DLLs binary_name = 'libGLESv2.dll' newest_folder = None newest_mtime = None for path in source_paths: binary_path = os.path.join(path, binary_name) if os.path.exists(binary_path): binary_mtime = os.path.getmtime(binary_path) if (newest_folder is None) or (binary_mtime > newest_mtime): newest_folder = path newest_mtime = binary_mtime if newest_folder is None: sys.exit("Could not find ANGLE DLLs!") source_folder = newest_folder # Is a folder a chrome binary directory? def is_chrome_bin(str): chrome_file = os.path.join(chrome_folder, str) return os.path.isdir(chrome_file) and all([char.isdigit() or char == '.' for char in str]) sorted_chrome_bins = sorted( [folder for folder in os.listdir(chrome_folder) if is_chrome_bin(folder)], reverse=True) dest_folder = os.path.join(chrome_folder, sorted_chrome_bins[0]) print('Copying DLLs from ' + source_folder + ' to ' + dest_folder + '.') for dll in ['libGLESv2.dll', 'libEGL.dll']: src = os.path.join(source_folder, dll) if os.path.exists(src): # Make a backup of the original unmodified DLLs if they are present. backup = os.path.join(source_folder, dll + '.backup') if not os.path.exists(backup): shutil.copyfile(src, backup) shutil.copyfile(src, os.path.join(dest_folder, dll)) shutil.copyfile(src + ".pdb", os.path.join(dest_folder, dll + ".pdb"))