Merged from trunk 11001:11016
| 11002 | Use the EbuildFetcher class to implement async fetch for the |
| zmedico | EbuildBuild class. When in background mode, fetch output is |
| | logged to emerge-fetch.log. This solves a problem with |
| | calling doebuild(returnpid=1) and then doebuild calling |
| | fetch() synchronously. In that case, doebuild would return |
| | an int if fetch() failed (including when running |
| | pkg_nofetch), which would lead to a TypeError since |
| | doebuild(returnpid=1) is supposed to return a list |
| | containing a spawned pid. |
| 11003 | For parallel-fetch prefetchers, pass fetchonly=1 into the |
| zmedico | EbuildFetcher constructor. |
| 11004 | Bug #231358 - Fix 'NameError: global name 'p' is not |
| zmedico | defined' in getmaskingstatus() that's triggered by a |
| | conditional in LICENSE. |
| 11005 | Like in Binpkg, cancel or wait for the prefetcher in |
| zmedico | EbuildBuild. |
| 11006 | Fix Scheduler._is_restart_necessary() to return False if the |
| zmedico | replacement version of portage is the same exact version as |
| | the currently running instance. |
| 11007 | * Handle errno.ECHILD and errno.ESRCH from waitpid() and |
| zmedico | kill() calls. These errors commonly occur when ^C is used to |
| | kill emerge. * Remove spawned pids from |
| | portage.process.spawned_pids immediately in order to avoid a |
| | race condition for removing it. |
| 11008 | * Fix AsynchronousTask._wait_hook() to prevent potential |
| zmedico | recursive calls triggered when calling exit listeners. * |
| | Make SequentialTaskQueue use exit listeners to trigger |
| | scheduling as soon as a task exits. This makes it possible |
| | for the queues to automatically schedule new tasks while |
| | scheduler remains in it's poll() loop. |
| 11009 | Make digestcheck() skip the "checking ebuild checksums" part |
| zmedico | when fetching in the background. |
| 11010 | Bug #231382 - If the open() call in getconfig() raises an |
| zmedico | unexpected IOError, write a message to stderr showing the |
| | exact call that failed, including the path of the file, in |
| | order to aid in debugging. |
| 11011 | When a package replaces another one, add the corresponding |
| zmedico | uninstall task for the replaced package to |
| | Scheduler._completed_tasks so that it's properly accounted |
| | for in _dependent_on_scheduled_merges(). |
| 11012 | Add support for parallel --regen, using the existing --jobs |
| zmedico | and --load-average options: * Split out a PollLoop base |
| | class from Scheduler and derive a MetadataRegen class to |
| | handle parallel scheduling for --regen. * Add |
| | pordbapi._metadata_process() and _metadata_callback() |
| | methods to implement asynchronous metadata generation. One |
| | method returns an EbuildMetadataPhase instance to |
| | encapsulate the async task. The other method is called to |
| | save the metadata when the process completes successfully. |
| | These methods share code with aux_get to avoid duplicate |
| | code. |
| 11013 | Refactor and simplify the main task scheduling and poll |
| zmedico | loops: * Make output handlers unregister themselves and call |
| | wait() to notify exit listeners immediately. This makes the |
| | exit listeners more useful for scheduling tasks. This makes |
| | the poll loop nice an clean because it just calls the |
| | handlers and then the handlers can do the scheduling when |
| | necessary. * Make SequentialTaskQueue.add() and addFront() |
| | trigger scheduling internally, so that it's more of a chain |
| | reaction than something that has to be done explicitly. |
| 11014 | Document the new --jobs and --load-average options for |
| zmedico | parallelization. |
| 11015 | Call settings.reset() in EbuildMetadataPhase.start() since |
| zmedico | that's what portdbapi does too before generating metadata, |
| | and without it, a previous CATEGORY can leak into the ebuild |
| | env and corrupt it (breaks lots of packages that reference |
| | $CATEGORY). |
| 11016 | Copy INHERITED/_eclasses_ handling from |
| zmedico | portdbapi._metadata_callback() to portdbapi.aux_get() since |
| | it's still needed there or else aux_get won't properly |
| | return INHERITED. |
svn path=/main/branches/prefix/; revision=11017