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

Side by Side Diff: parallel_emerge

Issue 2870068: parallel_emerge: Fix builds when PORTAGE_BINHOST is unset (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git
Patch Set: Move test down into function Created 10 years, 4 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 | Annotate | Revision Log
« 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 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 737
738 # Mark this package as non-optional 738 # Mark this package as non-optional
739 deps_info[pkg]["optional"] = False 739 deps_info[pkg]["optional"] = False
740 this_pkg[merge_type] = True 740 this_pkg[merge_type] = True
741 for w in this_pkg["provides"]: 741 for w in this_pkg["provides"]:
742 MergeChildren(w, merge_type) 742 MergeChildren(w, merge_type)
743 743
744 if this_pkg["action"] == "nomerge": 744 if this_pkg["action"] == "nomerge":
745 this_pkg["action"] = "merge" 745 this_pkg["action"] = "merge"
746 746
747 def RemotePackageDatabase(): 747 def RemotePackageDatabase(binhost_url):
748 """Grab the latest binary package database from the prebuilt server. 748 """Grab the latest binary package database from the prebuilt server.
749 749
750 We need to know the modification times of the prebuilt packages so that we 750 We need to know the modification times of the prebuilt packages so that we
751 know when it is OK to use these packages and when we should rebuild them 751 know when it is OK to use these packages and when we should rebuild them
752 instead. 752 instead.
753 753
754 Args:
755 binhost_url: Base URL of remote packages (PORTAGE_BINHOST).
756
754 Returns: 757 Returns:
755 A dict mapping package identifiers to modification times. 758 A dict mapping package identifiers to modification times.
756 """ 759 """
757 url = self.emerge.settings["PORTAGE_BINHOST"] + "/Packages" 760
761 if not binhost_url:
762 return {}
763
764 url = binhost_url + "/Packages"
758 765
759 prebuilt_pkgs = {} 766 prebuilt_pkgs = {}
760 f = urllib2.urlopen(url) 767 f = urllib2.urlopen(url)
761 for line in f: 768 for line in f:
762 if line.startswith("CPV: "): 769 if line.startswith("CPV: "):
763 pkg = line.replace("CPV: ", "").rstrip() 770 pkg = line.replace("CPV: ", "").rstrip()
764 elif line.startswith("MTIME: "): 771 elif line.startswith("MTIME: "):
765 prebuilt_pkgs[pkg] = int(line[:-1].replace("MTIME: ", "")) 772 prebuilt_pkgs[pkg] = int(line[:-1].replace("MTIME: ", ""))
766 f.close() 773 f.close()
767 774
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 for db_pkg in final_db.match_pkgs(pkg): 953 for db_pkg in final_db.match_pkgs(pkg):
947 deps_map[str(db_pkg.cpv)]["mandatory_source"] = True 954 deps_map[str(db_pkg.cpv)]["mandatory_source"] = True
948 else: 955 else:
949 for pkg in self.mandatory_source.copy(): 956 for pkg in self.mandatory_source.copy():
950 for db_pkg in final_db.match_pkgs(pkg): 957 for db_pkg in final_db.match_pkgs(pkg):
951 MergeChildren(str(db_pkg.cpv), "mandatory_source") 958 MergeChildren(str(db_pkg.cpv), "mandatory_source")
952 959
953 cycles = FindCycles() 960 cycles = FindCycles()
954 if self.rebuild: 961 if self.rebuild:
955 local_pkgs = LocalPackageDatabase() 962 local_pkgs = LocalPackageDatabase()
956 remote_pkgs = RemotePackageDatabase() 963 remote_pkgs = RemotePackageDatabase(emerge.settings["PORTAGE_BINHOST"])
957 AutoRebuildDeps(local_pkgs, remote_pkgs, cycles) 964 AutoRebuildDeps(local_pkgs, remote_pkgs, cycles)
958 965
959 # We need to remove installed packages so that we can use the dependency 966 # We need to remove installed packages so that we can use the dependency
960 # ordering of the install process to show us what cycles to crack. Once 967 # ordering of the install process to show us what cycles to crack. Once
961 # we've done that, we also need to recalculate our list of cycles so that 968 # we've done that, we also need to recalculate our list of cycles so that
962 # we don't include the installed packages in our cycles. 969 # we don't include the installed packages in our cycles.
963 RemoveInstalledPackages() 970 RemoveInstalledPackages()
964 cycles = FindCycles() 971 cycles = FindCycles()
965 SanitizeTree(cycles) 972 SanitizeTree(cycles)
966 if deps_map: 973 if deps_map:
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 for db_pkg in final_db.match_pkgs(pkg): 1268 for db_pkg in final_db.match_pkgs(pkg):
1262 print "Adding %s to world" % db_pkg.cp 1269 print "Adding %s to world" % db_pkg.cp
1263 new_world_pkgs.append(db_pkg.cp) 1270 new_world_pkgs.append(db_pkg.cp)
1264 if new_world_pkgs: 1271 if new_world_pkgs:
1265 world_set.update(new_world_pkgs) 1272 world_set.update(new_world_pkgs)
1266 1273
1267 print "Done" 1274 print "Done"
1268 1275
1269 if __name__ == "__main__": 1276 if __name__ == "__main__":
1270 main() 1277 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