summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/Scheduler.py
Commit message (Collapse)AuthorAgeFilesLines
* Scheduler: fix _running_tasks for uninstallsv2.2.0_alpha46Zac Medico2011-07-191-1/+3
|
* Scheduler: simplify _terminate_tasksZac Medico2011-07-181-19/+8
| | | | | | This should also fix bugs related to CompositeTask instances waiting for queued tasks to start and not being properly terminated in this case.
* Scheduler: allow concurrent fetch with --jobs > 1Zac Medico2011-07-171-3/+12
| | | | | | | This reverts behavior from bug #375331 (commit f07f8386e945b48358c11c121960e4833c539752) for cases in which --jobs is greater than 1. We can add a separate --fetch-jobs option later, but for now, this preserves previous behavior for --jobs > 1.
* Scheduler: enable prefetch for first packageZac Medico2011-07-161-4/+1
| | | | | | Since commit f07f8386e945b48358c11c121960e4833c539752, the first will have to wait for later ones to fetch unless we start its prefetcher first.
* Remove python-2.6 StringIO.StringIO fallback.Zac Medico2011-07-121-1/+0
| | | | | | | | Since the io module in python-2.6 was broken when threading was disabled, we needed to fall back from io.StringIO to StringIO.StringIO in this case (typically just for Gentoo's stage1 and stage2 tarballs). Now that python-2.7 is stable in stages and we rely on io.open() being available, we can also rely on io.StringIO being available.
* Scheduler: make --fetchonly skip pkg_pretendZac Medico2011-06-131-3/+4
|
* Scheduler: init _fetch_log in constructorZac Medico2011-06-051-3/+4
| | | | This ensures that we account for EMERGE_LOG_DIR.
* dblink.merge: remove unused scheduler callbacksZac Medico2011-06-031-67/+1
|
* Package: add new _gen_hash_key methodZac Medico2011-05-221-20/+4
|
* merge_wait_queue: use deque.clear()Zac Medico2011-05-081-1/+1
|
* Be careful with system pkgs + parallel-install.Zac Medico2011-05-071-10/+18
| | | | | This should prevent FEATURES=parallel-install from interfering with the fixes from bug #256616 and bug #259954.
* Scheduler: add queue for ebuild-locksZac Medico2011-05-071-2/+11
| | | | | | | | Use a separate queue for ebuild-locks when the merge queue allows more than 1 job (due to parallel-install), since the portage.locks module does not behave as desired if we try to lock the same file multiple times concurrently from the same process.
* Add FEATURES=parallel-install for finer locks.Zac Medico2011-05-071-1/+2
|
* Use finer grained locks for install.David James2011-05-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Narrow scope of merge locks to improve performance. Instead of locking the DB for the entire package merge, just lock it when we actually need to do so. Also add locks around conf_mem_file updating and pkg_* phases. Locking in pkg_* phases can be turned off with FEATURES="no-ebuild-locks" if you use ebuilds that are careful not to mess with each other during theses phases. The default is to leave this locking enabled. Given this new locking, I've improved the scheduler to run merge jobs in parallel. Time required for merging 348 packages with --usepkgonly: - Before patch: 29m50s - After patch: 10m2s - After patch w/o locks: 7m9s Change-Id: I63588c4cc59fa6fe2f8327ea1e4a9e71b241d4fe Review URL: http://gerrit.chromium.org/gerrit/498
* depgraph: migrate implicit libc deps from SchedZac Medico2011-04-301-65/+0
| | | | | Now all the virtual/libc handling is done by the depgraph, which will be helpful when fixing bug #364681.
* Remove unnecessary sync in Scheduler.py.David James2011-04-111-1/+1
| | | | | | | | | | | | | | If we are passed a fakevartree object, it should already be sync'd, so there is no need to sync it again here. This sync is only needed when we create a new FakeVartree, so I moved the sync to the right place to fix this. BUG=chromium-os:14035 TEST=Build a bunch of packages with this patch. Change-Id: I89d79cf946f4c0c27ad585ad7c88a41985260342 Review URL: http://codereview.chromium.org/6813084
* Fix a typo in a comment.Zac Medico2011-04-101-1/+1
|
* Scheduler: add more info in docstring commentsZac Medico2011-04-101-1/+7
| | | | This clarifies the purposes of _system_merge_started and _choose_pkg.
* Scheduler: pkg_to_replace beware old-style virtZac Medico2011-03-261-1/+2
|
* Update Portage to sync BlockerDB at init.David James2011-03-241-17/+7
| | | | | | | | | | | | Currently, Portage syncs the BlockerDB before every merge. This slows down merges considerably because it requires reading the entire vardb from disk. Since Portage doesn't merge conflicting packages anyway, we can optimize this by just reading the vardb at initialization and caching that. Change-Id: I6701926f022ef3aa2da10482fc8b09573ae24610 Review URL: http://codereview.chromium.org/6688037
* Update Scheduler to protect against infinite loopDavid James2011-03-161-4/+2
| | | | | If we have running tasks, but we're not listening to these tasks, we're going to loop forever. So throw an exception in this case.
* Scheduler: tweak prefetcher cancellation logicZac Medico2011-03-161-1/+9
| | | | | This should prevent "TypeError: an integer is required" raised from waitpid when trying to cancel a prefetcher that never started.
* Scheduler: terminate _merge_wait_queueZac Medico2011-03-161-0/+4
|
* Scheduler: fix AttributeError in _terminate_tasksZac Medico2011-03-121-1/+4
| | | | | Thanks to David James <davidjames@google.com> for reporting this error: AttributeError: 'EbuildPhase' object has no attribute 'merge'
* PollScheduler: tweek termination logicZac Medico2011-03-101-4/+4
| | | | | | | | | * PollScheduler and all subclasses now use the _terminated_tasks variable to check whether or not _terminate_tasks() has been called, and behave appropriately in that case. * The _schedule_tasks() method now has documentation about the relationship with _terminate_tasks() and _terminated_tasks.
* Scheduler: avoid infinite loop after CTRL-CZac Medico2011-03-101-1/+14
| | | | | | | | If CTRL-C was received at certain times, it was possible for discarded tasks to be erroneously left in Scheduler._running_tasks, which would cause the main loop to run infinitely. Thanks to David James <davidjames@google.com> for reporting this issue and helping to devise a solution.
* Scheduler: ensure _prefetchers is clearedZac Medico2011-02-201-0/+1
|
* Recognize git-2.eclass when reinstalling self.Zac Medico2011-02-141-1/+2
|
* Scheduler: remove uninstall task from pkg_queuev2.2.0_alpha16Zac Medico2011-01-171-0/+4
|
* Tweak PollScheduler signal handling.Zac Medico2011-01-151-3/+29
|
* Add PollScheduler.terminate() for interruption.Zac Medico2011-01-151-8/+17
| | | | | This allows PollScheduler instances to do basic cleanup and terminate gracefully when SIGINT or SIGTERM signals are received.
* Scheduler: free unneeded uninstall task from memv2.2.0_alpha14Zac Medico2011-01-061-1/+5
|
* Scheduler: handle same cpv with different SLOTZac Medico2011-01-051-0/+3
|
* Scheduler: fix reposyntax uninstall hash breakageZac Medico2011-01-051-8/+10
|
* Scheduler: always share FakeVartree pkg_cacheZac Medico2011-01-051-1/+2
|
* Scheduler: avoid unecessary Package instancesZac Medico2011-01-051-1/+0
|
* Scheduler: cache more Packages in --nodeps modeZac Medico2011-01-051-0/+2
|
* Scheduler: cache Package instance moreZac Medico2011-01-051-9/+12
| | | | | | | | This helps to avoid some cases in which emerge crashes due to ebuild modification that leads to failure in aux_get/manifest check while the Scheduler is running. Typically such modifications are harmless, so it's beneficial to cache the metadata so that aux_get is less likely to be called when it will fail.
* Scheduler: fix pkg cache more for reposyntaxZac Medico2010-12-071-1/+1
|
* Scheduler: fix pkg cache for reposyntaxZac Medico2010-12-071-5/+20
|
* inject binpkg after fetch for pkg_pretendv2.2.0_alpha7Zac Medico2010-12-051-0/+4
|
* Fix pkg_pretend output and error handling.Zac Medico2010-12-051-50/+73
|
* Scheduler: Always display message for pkg_pretendZac Medico2010-12-051-8/+2
|
* Sync EMERGE_FROM code with MERGE_TYPE code.Zac Medico2010-12-051-0/+2
|
* Scheduler: set MERGE_TYPE for pkg_pretendZac Medico2010-12-041-0/+5
|
* Scheduler._run_pkg_pretend: call setcpvZac Medico2010-12-031-0/+1
|
* Scheduler: eliminate redundant display callsZac Medico2010-10-271-1/+6
|
* Raise StopIteration from _poll() if needed.Zac Medico2010-10-261-0/+5
|
* Scheduler: ensure display update every 3 secondsZac Medico2010-10-231-1/+36
|
* Fix pretend phase doebuild_environment().Zac Medico2010-10-211-3/+2
|