| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
do the job now. Also, hide SubProcess.files since there's no reason to expose
it.
svn path=/main/trunk/; revision=11053
|
|
|
|
|
|
|
| |
and remove the related code from SequentialTaskQueue.schedule() since
this makes it obsolete.
svn path=/main/trunk/; revision=11052
|
|
|
|
|
|
|
|
|
| |
queue between _poll_loop() and _schedule_wait(). This solves an intermittent
KeyError from _poll_loop() which occured when an event handler called
_schedule_wait() which unregistered an event handler for an event that
_poll_loop() had already recieved but hadn't processed yet.
svn path=/main/trunk/; revision=11051
|
|
|
|
|
|
|
| |
before restarting in _restart_if_necessary() to kill any parallel-fetch tasks
that may still be running.
svn path=/main/trunk/; revision=11050
|
|
|
|
|
|
|
|
|
| |
_wait() to make sure everything is cleaned up before wait() returns.
This might solve an intermittent KeyError that is sometimes raised from
the main poll() loop when a handler is no longer registered for a poll()
event that has occurred.
svn path=/main/trunk/; revision=11049
|
|
|
|
|
|
|
| |
avoid stale events that can trigger a KeyError in Scheduler._poll_loop()
if the event's file descriptor no longer has a registered handler.
svn path=/main/trunk/; revision=11047
|
|
|
|
|
|
| |
properly.
svn path=/main/trunk/; revision=11046
|
|
|
|
|
|
|
|
|
| |
* Add async support for pkg_prerm and pkg_postrm.
* Add missing "treetype" parameter to dblink constructor calls.
* Fix SubProcess._wait() to check self.returncode _after_ calling
the scheduler.
svn path=/main/trunk/; revision=11045
|
|
|
|
|
|
|
| |
scheduler's poll loop to run so that other parallel tasks aren't starved for
output handling while pkg_preinst and pkg_postinst are executing.
svn path=/main/trunk/; revision=11044
|
|
|
|
|
|
| |
it's now handled inside the _schedule() call.
svn path=/main/trunk/; revision=11043
|
|
|
|
|
|
| |
queue is empty.
svn path=/main/trunk/; revision=11042
|
|
|
|
|
|
| |
since it was only used by can_poll_pty().
svn path=/main/trunk/; revision=11040
|
|
|
|
|
|
|
|
|
| |
blocking forever, replace it with a simpler test on /dev/null that's
derived from a test in a glib2 configure script.
* Remove PtyReaderTestCase since it has the same problem as can_poll_pty().
svn path=/main/trunk/; revision=11039
|
|
|
|
|
|
|
|
|
| |
so see any error message it generates (due to PipeReader closing it's
end of the pty). The error message is irrelevant since all we want to
know is whether or not the data is successfully transmitted through the
pty.
svn path=/main/trunk/; revision=11037
|
|
|
|
|
|
| |
to be committed yet.
svn path=/main/trunk/; revision=11035
|
|
|
|
|
|
| |
entries are correctly from the Packages index.
svn path=/main/trunk/; revision=11034
|
|
|
|
|
|
|
|
| |
merge, add a FakeVartree.sync() method and so that the same FakeVartree
can be reused. Package counters and timestamps are used to validate package
instances during each sync() call.
svn path=/main/trunk/; revision=11033
|
|
|
|
|
|
| |
package has already failed.
svn path=/main/trunk/; revision=11032
|
|
|
|
|
|
|
| |
built or extracted). This will allow additional jobs to spawn sooner in
some cases when there may be idle resources.
svn path=/main/trunk/; revision=11031
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that automatically returns early from any recursive calls that the
_schedule_tasks() call might trigger. This makes _schedule() safe to call from
inside exit listeners.
* Call _schedule() inside Scheduler._job_exit() to trigger a new job when
possible.
* Fix SequentialTaskQueue._task_exit() to avoid a potential KeyError if the
task had already been removed from self.running_tasks for some reason.
svn path=/main/trunk/; revision=11030
|
|
|
|
| |
svn path=/main/trunk/; revision=11029
|
|
|
|
| |
svn path=/main/trunk/; revision=11028
|
|
|
|
| |
svn path=/main/trunk/; revision=11027
|
|
|
|
|
|
| |
be set when calling _set_digraph().
svn path=/main/trunk/; revision=11026
|
|
|
|
|
|
|
|
|
|
|
| |
read data from a pty device. The test only runs the first time that the
can_poll_pty() function is called (currently happens when the first
PollScheduler instance is created). The test is known to fail on Darwin and
we're not sure how many other kernels might have a similar problem, this
runtime test allows us to avoid having to maintain special cases for various
kernels.
svn path=/main/trunk/; revision=11025
|
|
|
|
| |
svn path=/main/trunk/; revision=11024
|
|
|
|
|
|
|
| |
fail on some operating systems such as Darwin that do not support poll() on
pty devices.
svn path=/main/trunk/; revision=11023
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pipe and assert that the data written to the pipe is identical to the data
read from the pipe. In order to implement this test, several useful classes
have been added:
* PipeReader
Reads output from one or more files and saves it in memory,
for retrieval via the getvalue() method. This is driven by
the scheduler's poll() loop, so it runs entirely within the
current process.
* QueueScheduler
Add instances of SequentialTaskQueue and then call run().
The run() method returns when no tasks remain.
* TaskScheduler
A simple way to handle scheduling of AsynchrousTask instances. Simply
add tasks and call run(). The run() method returns when no tasks remain.
svn path=/main/trunk/; revision=11022
|
|
|
|
|
|
|
|
| |
Scheduler._pkg().
* Define digraph.__contains__ for containment tests via the "in" operator.
svn path=/main/trunk/; revision=11021
|
|
|
|
|
|
| |
compatibility with python-2.6_beta. Thanks to Arfrever for reporting.
svn path=/main/trunk/; revision=11020
|
|
|
|
|
|
| |
spawn call fails.
svn path=/main/trunk/; revision=11019
|
|
|
|
| |
svn path=/main/trunk/; revision=11018
|
|
|
|
|
|
|
| |
portdbapi.aux_get() since it's still needed there or else aux_get won't
properly return INHERITED.
svn path=/main/trunk/; revision=11016
|
|
|
|
|
|
|
|
| |
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).
svn path=/main/trunk/; revision=11015
|
|
|
|
| |
svn path=/main/trunk/; revision=11014
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
svn path=/main/trunk/; revision=11013
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/main/trunk/; revision=11012
|
|
|
|
|
|
|
| |
for the replaced package to Scheduler._completed_tasks so that it's properly
accounted for in _dependent_on_scheduled_merges().
svn path=/main/trunk/; revision=11011
|
|
|
|
|
|
|
| |
write a message to stderr showing the exact call that failed, including the
path of the file, in order to aid in debugging.
svn path=/main/trunk/; revision=11010
|
|
|
|
|
|
| |
the background.
svn path=/main/trunk/; revision=11009
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/main/trunk/; revision=11008
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/main/trunk/; revision=11007
|
|
|
|
|
|
|
| |
version of portage is the same exact version as the currently running
instance.
svn path=/main/trunk/; revision=11006
|
|
|
|
| |
svn path=/main/trunk/; revision=11005
|
|
|
|
|
|
| |
getmaskingstatus() that's triggered by a conditional in LICENSE.
svn path=/main/trunk/; revision=11004
|
|
|
|
|
|
| |
constructor.
svn path=/main/trunk/; revision=11003
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/main/trunk/; revision=11002
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"jobs" queue.
* Add support for logging fetches to /var/log/emerge-fetch.log when
--jobs is enabled. Previously this log was only used for
the parallel-fetch feature but now it's also used for --jobs.
The scheduler's "prefetch" queue has been renamed to "fetch" since
it's not exclusively used for parallel-fetch anymore.
* Pass the "background" parameter from Binpkg in to the BinpkgFetcher
instance, to send output to emerge-fetch.log instead of stdout.
svn path=/main/trunk/; revision=10999
|
|
|
|
| |
svn path=/main/trunk/; revision=10998
|
|
|
|
|
|
| |
blockers) in the correct order when building in parallel.
svn path=/main/trunk/; revision=10996
|