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

Side by Side Diff: syzygy/build/gitdeps.py

Issue 2693863004: Fix race condition in gitdeps.py (Closed)
Patch Set: Created 3 years, 10 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 | « no previous file | 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 # Copyright 2014 Google Inc. All Rights Reserved. 1 # Copyright 2014 Google Inc. All Rights Reserved.
2 # 2 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); 3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License. 4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at 5 # You may obtain a copy of the License at
6 # 6 #
7 # http://www.apache.org/licenses/LICENSE-2.0 7 # http://www.apache.org/licenses/LICENSE-2.0
8 # 8 #
9 # Unless required by applicable law or agreed to in writing, software 9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, 10 # distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 # so that the new checkout can start immediately. 522 # so that the new checkout can start immediately.
523 _LOGGER.info('Erasing stale checkout directory: %s', repo.checkout_dir) 523 _LOGGER.info('Erasing stale checkout directory: %s', repo.checkout_dir)
524 524
525 # Any existing junctions to this repo must be removed otherwise the 525 # Any existing junctions to this repo must be removed otherwise the
526 # rename may fail. 526 # rename may fail.
527 for d in repo.remote_dirs: 527 for d in repo.remote_dirs:
528 j = os.path.abspath(os.path.join(repo.output_dir, d)) 528 j = os.path.abspath(os.path.join(repo.output_dir, d))
529 _RemoveOrphanedJunction(options, j) 529 _RemoveOrphanedJunction(options, j)
530 530
531 newpath = _RenameCheckout(repo.checkout_dir, options.dry_run) 531 newpath = _RenameCheckout(repo.checkout_dir, options.dry_run)
532 body = lambda: _DeleteCheckout(newpath, options.dry_run) 532 thread = threading.Thread(target=_DeleteCheckout,
533 thread = threading.Thread(target=body) 533 args=(newpath, options.dry_run))
534 threads.append(thread) 534 threads.append(thread)
535 thread.start() 535 thread.start()
536 536
537 # Create and update the checkout as necessary. 537 # Create and update the checkout as necessary.
538 if create_checkout: 538 if create_checkout:
539 _CreateCheckout(repo.checkout_dir, repo, options.dry_run) 539 _CreateCheckout(repo.checkout_dir, repo, options.dry_run)
540 else: 540 else:
541 _LOGGER.debug('Reusing checkout directory: %s', repo.checkout_dir) 541 _LOGGER.debug('Reusing checkout directory: %s', repo.checkout_dir)
542 if update_checkout: 542 if update_checkout:
543 _UpdateCheckout(repo.checkout_dir, repo, options.dry_run) 543 _UpdateCheckout(repo.checkout_dir, repo, options.dry_run)
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 io.write(j) 895 io.write(j)
896 io.write('\n') 896 io.write('\n')
897 897
898 # Iterate all directories in the cache directory. Any that we didn't 898 # Iterate all directories in the cache directory. Any that we didn't
899 # specifically create or update should be cleaned up. Do this in parallel 899 # specifically create or update should be cleaned up. Do this in parallel
900 # so things are cleaned up as soon as possible. 900 # so things are cleaned up as soon as possible.
901 threads = [] 901 threads = []
902 for path in glob.glob(os.path.join(options.cache_dir, '*')): 902 for path in glob.glob(os.path.join(options.cache_dir, '*')):
903 if os.path.join(path, 'src') not in checkout_dirs: 903 if os.path.join(path, 'src') not in checkout_dirs:
904 _LOGGER.debug('Erasing orphaned checkout directory: %s', path) 904 _LOGGER.debug('Erasing orphaned checkout directory: %s', path)
905 body = lambda: _DeleteCheckout(path, options.dry_run) 905 thread = threading.Thread(target=_DeleteCheckout,
906 thread = threading.Thread(target=body) 906 args=(path, options.dry_run))
907 threads.append(thread) 907 threads.append(thread)
908 thread.start() 908 thread.start()
909 for thread in threads: 909 for thread in threads:
910 thread.join() 910 thread.join()
911 911
912 # Recursively process other dependencies. 912 # Recursively process other dependencies.
913 for repo in all_deps: 913 for repo in all_deps:
914 if not repo.recurse: 914 if not repo.recurse:
915 continue 915 continue
916 if not checkout_dirs[repo.checkout_dir] and not options.force: 916 if not checkout_dirs[repo.checkout_dir] and not options.force:
917 continue 917 continue
918 _RecurseRepository(options, repo) 918 _RecurseRepository(options, repo)
919 919
920 return 920 return
921 921
922 922
923 if __name__ == '__main__': 923 if __name__ == '__main__':
924 main() 924 main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698