| Index: build_apprtc_collider.py
|
| diff --git a/build_apprtc_collider.py b/build_apprtc_collider.py
|
| index b5d63ddd4ee828fb77da94776c70675dd9138d2b..c9873a73016a9bc39fda63f4bed4b0707eef0fd6 100755
|
| --- a/build_apprtc_collider.py
|
| +++ b/build_apprtc_collider.py
|
| @@ -13,14 +13,53 @@ import os
|
| import shutil
|
| import subprocess
|
| import sys
|
| +import time
|
|
|
| import utils
|
|
|
|
|
| +# Code partially copied from
|
| +# https://cs.chromium.org#chromium/build/scripts/common/chromium_utils.py
|
| +def RemoveDirectory(*path):
|
| + """Recursively removes a directory, even if it's marked read-only.
|
| +
|
| + Remove the directory located at *path, if it exists.
|
| +
|
| + shutil.rmtree() doesn't work on Windows if any of the files or directories
|
| + are read-only, which svn repositories and some .svn files are. We need to
|
| + be able to force the files to be writable (i.e., deletable) as we traverse
|
| + the tree.
|
| +
|
| + Even with all this, Windows still sometimes fails to delete a file, citing
|
| + a permission error (maybe something to do with antivirus scans or disk
|
| + indexing). The best suggestion any of the user forums had was to wait a
|
| + bit and try again, so we do that too. It's hand-waving, but sometimes it
|
| + works. :/
|
| + """
|
| + file_path = os.path.join(*path)
|
| + if not os.path.exists(file_path):
|
| + return
|
| +
|
| + if sys.platform == 'win32':
|
| + # Give up and use cmd.exe's rd command.
|
| + file_path = os.path.normcase(file_path)
|
| + for _ in xrange(3):
|
| + print 'RemoveDirectory running %s' % (' '.join(
|
| + ['cmd.exe', '/c', 'rd', '/q', '/s', file_path]))
|
| + if not subprocess.call(['cmd.exe', '/c', 'rd', '/q', '/s', file_path]):
|
| + break
|
| + print ' Failed'
|
| + time.sleep(3)
|
| + return
|
| + else:
|
| + shutil.rmtree(file_path, ignore_errors=True)
|
| +
|
| +
|
| def main():
|
| apprtc_dir = os.path.join('apprtc', 'src')
|
| golang_workspace = os.path.join('src', 'out', 'go-workspace')
|
| - shutil.rmtree(golang_workspace, ignore_errors=True)
|
| + RemoveDirectory(golang_workspace)
|
| +
|
| golang_workspace_src = os.path.join(golang_workspace, 'src')
|
|
|
| collider_dir = os.path.join(apprtc_dir, 'collider')
|
| @@ -41,3 +80,4 @@ def main():
|
|
|
| if __name__ == '__main__':
|
| sys.exit(main())
|
| +
|
|
|