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

Side by Side Diff: parallel_emerge

Issue 3047009: Fix infinite recursion in PrebuiltsReady when graph is cyclic. (Closed) Base URL: ssh://git@chromiumos-git/crosutils.git
Patch Set: Created 10 years, 5 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 #!/usr/bin/python2.6 1 #!/usr/bin/python2.6
2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium OS 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 """Program to run emerge in parallel, for significant speedup. 6 """Program to run emerge in parallel, for significant speedup.
7 7
8 Usage: 8 Usage:
9 ./parallel_emerge [--board=BOARD] [--workon=PKGS] [--no-workon-deps] 9 ./parallel_emerge [--board=BOARD] [--workon=PKGS] [--no-workon-deps]
10 [emerge args] package" 10 [emerge args] package"
(...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 cache: A dict, where the results are stored. 812 cache: A dict, where the results are stored.
813 813
814 Returns: 814 Returns:
815 True iff the prebuilts are ready for pkg and all deps. 815 True iff the prebuilts are ready for pkg and all deps.
816 """ 816 """
817 if pkg in cache: 817 if pkg in cache:
818 return cache[pkg] 818 return cache[pkg]
819 if pkg not in pkg_db: 819 if pkg not in pkg_db:
820 cache[pkg] = False 820 cache[pkg] = False
821 else: 821 else:
822 cache[pkg] = True
822 for dep in deps_map[pkg]["needs"]: 823 for dep in deps_map[pkg]["needs"]:
823 if not PrebuiltsReady(dep, pkg_db, cache): 824 if not PrebuiltsReady(dep, pkg_db, cache):
824 cache[pkg] = False 825 cache[pkg] = False
825 break 826 break
826 return cache.setdefault(pkg, True) 827 return cache[pkg]
827 828
828 def LastModifiedWithDeps(pkg, pkg_db, cache): 829 def LastModifiedWithDeps(pkg, pkg_db, cache):
829 """Calculate the last modified time of a package and its dependencies. 830 """Calculate the last modified time of a package and its dependencies.
830 831
831 This function looks at all the packages needed by the specified package 832 This function looks at all the packages needed by the specified package
832 and checks the most recent modification time of all of those packages. 833 and checks the most recent modification time of all of those packages.
833 If the dependencies of a package were modified more recently than the 834 If the dependencies of a package were modified more recently than the
834 package itself, then we know the package needs to be rebuilt. 835 package itself, then we know the package needs to be rebuilt.
835 836
836 Args: 837 Args:
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 for db_pkg in final_db.match_pkgs(pkg): 1258 for db_pkg in final_db.match_pkgs(pkg):
1258 print "Adding %s to world" % db_pkg.cp 1259 print "Adding %s to world" % db_pkg.cp
1259 new_world_pkgs.append(db_pkg.cp) 1260 new_world_pkgs.append(db_pkg.cp)
1260 if new_world_pkgs: 1261 if new_world_pkgs:
1261 world_set.update(new_world_pkgs) 1262 world_set.update(new_world_pkgs)
1262 1263
1263 print "Done" 1264 print "Done"
1264 1265
1265 if __name__ == "__main__": 1266 if __name__ == "__main__":
1266 main() 1267 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