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

Side by Side Diff: parallel_emerge

Issue 3418001: Turn on --fast on official builds. (Closed) Base URL: http://git.chromium.org/git/crosutils.git
Patch Set: Typo fix -- thanks nsanders Created 10 years 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 | « common.sh ('k') | 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 [--force-remote-binary=PKGS] [emerge args] package 10 [--force-remote-binary=PKGS] [emerge args] package
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 board_no_variant = self.board.split('_')[0] 303 board_no_variant = self.board.split('_')[0]
304 f = open(toolchain_path % (scripts_dir, board_no_variant)) 304 f = open(toolchain_path % (scripts_dir, board_no_variant))
305 os.environ["CHOST"] = f.readline().strip() 305 os.environ["CHOST"] = f.readline().strip()
306 f.close() 306 f.close()
307 307
308 # Although CHROMEOS_ROOT isn't specific to boards, it's normally setup 308 # Although CHROMEOS_ROOT isn't specific to boards, it's normally setup
309 # inside emerge-${BOARD}, so we set it up here for compatibility. It 309 # inside emerge-${BOARD}, so we set it up here for compatibility. It
310 # will be going away soon as we migrate to CROS_WORKON_SRCROOT. 310 # will be going away soon as we migrate to CROS_WORKON_SRCROOT.
311 os.environ.setdefault("CHROMEOS_ROOT", os.environ["HOME"] + "/trunk") 311 os.environ.setdefault("CHROMEOS_ROOT", os.environ["HOME"] + "/trunk")
312 312
313 # Modify the environment to disable locking by default.
314 # TODO(davidjames): This option can cause problems if packages muck
315 # with each other during the post-install step. There are a few host
316 # packages that do this, so we only do this environment modification for
317 # board builds.
318 os.environ.setdefault("PORTAGE_LOCKS", "false")
319
320 # Turn off interactive delays 313 # Turn off interactive delays
321 os.environ["EBEEP_IGNORE"] = "1" 314 os.environ["EBEEP_IGNORE"] = "1"
322 os.environ["EPAUSE_IGNORE"] = "1" 315 os.environ["EPAUSE_IGNORE"] = "1"
323 os.environ["UNMERGE_DELAY"] = "0" 316 os.environ["UNMERGE_DELAY"] = "0"
324 317
325 # Parse the emerge options. 318 # Parse the emerge options.
326 action, opts, cmdline_packages = parse_opts(emerge_args) 319 action, opts, cmdline_packages = parse_opts(emerge_args)
327 320
328 # If we're installing to the board, we want the --root-deps option so that 321 # If we're installing to the board, we want the --root-deps option so that
329 # portage will install the build dependencies to that location as well. 322 # portage will install the build dependencies to that location as well.
(...skipping 20 matching lines...) Expand all
350 # packages that own the same file. The collision-protect feature is more 343 # packages that own the same file. The collision-protect feature is more
351 # strict, and less useful: it fails if it finds a conflicting file, even 344 # strict, and less useful: it fails if it finds a conflicting file, even
352 # if that file was created by an earlier ebuild that failed to install. 345 # if that file was created by an earlier ebuild that failed to install.
353 # 346 #
354 # We want to disable collision-protect here because we don't handle 347 # We want to disable collision-protect here because we don't handle
355 # failures during the merge step very well. Sometimes we leave old files 348 # failures during the merge step very well. Sometimes we leave old files
356 # lying around and they cause problems, so for now we disable the flag. 349 # lying around and they cause problems, so for now we disable the flag.
357 # TODO(davidjames): Look for a better solution. 350 # TODO(davidjames): Look for a better solution.
358 features = os.environ.get("FEATURES", "") + " -collision-protect" 351 features = os.environ.get("FEATURES", "") + " -collision-protect"
359 352
360 # If we're cross-compiling, updating the environment every time we install 353 # If we're installing packages to the board, and we're not using the
361 # a package isn't necessary, and leads to race conditions when 354 # official flag, we can enable the following optimizations:
362 # PORTAGE_LOCKS is false. In this case, do environment updates at the end, 355 # 1) Don't lock during install step. This allows multiple packages to be
363 # instead. 356 # installed at once. This is safe because our board packages do not
364 if self.board and os.environ.get("PORTAGE_LOCKS") == "false": 357 # muck with each other during the post-install step.
358 # 2) Don't update the environment until the end of the build. This is
359 # safe because board packages don't need to run during the build --
360 # they're cross-compiled, so our CPU architecture doesn't support them
361 # anyway.
362 if self.board and os.environ.get("CHROMEOS_OFFICIAL") != "1":
363 os.environ.setdefault("PORTAGE_LOCKS", "false")
365 features = features + " no-env-update" 364 features = features + " no-env-update"
366 365
367 os.environ["FEATURES"] = features 366 os.environ["FEATURES"] = features
368 367
369 # Now that we've setup the necessary environment variables, we can load the 368 # Now that we've setup the necessary environment variables, we can load the
370 # emerge config from disk. 369 # emerge config from disk.
371 settings, trees, mtimedb = load_emerge_config() 370 settings, trees, mtimedb = load_emerge_config()
372 371
373 # Check whether our portage tree is out of date. Typically, this happens 372 # Check whether our portage tree is out of date. Typically, this happens
374 # when you're setting up a new portage tree, such as in setup_board and 373 # when you're setting up a new portage tree, such as in setup_board and
(...skipping 1461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1836 # need to upgrade the rest of the packages. So we'll go ahead and do that. 1835 # need to upgrade the rest of the packages. So we'll go ahead and do that.
1837 if portage_upgrade: 1836 if portage_upgrade:
1838 args = sys.argv[1:] + ["--nomerge=sys-apps/portage"] 1837 args = sys.argv[1:] + ["--nomerge=sys-apps/portage"]
1839 os.execvp(os.path.realpath(sys.argv[0]), args) 1838 os.execvp(os.path.realpath(sys.argv[0]), args)
1840 1839
1841 print "Done" 1840 print "Done"
1842 sys.exit(0) 1841 sys.exit(0)
1843 1842
1844 if __name__ == "__main__": 1843 if __name__ == "__main__":
1845 main() 1844 main()
OLDNEW
« no previous file with comments | « common.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698