| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
File "pym/portage/dbapi/vartree.py", line 4043, in merge
merge_task.start()
File "pym/_emerge/AsynchronousTask.py", line 23, in start
self._start()
File "pym/_emerge/SpawnProcess.py", line 118, in _start
self._reg_id = self.scheduler.register(files.process.fileno(),
AttributeError: 'NoneType' object has no attribute 'register'
|
| |
|
|
|
|
|
|
|
|
| |
In this subprocess we don't want PORTAGE_BACKGROUND to suppress
stdout/stderr output since they are pipes. We also don't want to open
PORTAGE_LOG_FILE, since it will already be opened by the parent
process, so we set the PORTAGE_BACKGROUND="subprocess" value for use
in conditional logging code involving PORTAGE_LOG_FILE.
|
|
|
|
|
|
| |
This integrates the fix from commit
8209aeab647b1ab80a64d5931069b3533776ef75 with the asynchronous merge
changes from commit 7535cabdf2fab76fc55df83643157613dfd66be9.
|
|
|
|
|
|
|
|
| |
This allows for the scheduler to continue to run while packages are
being merged and installed, allowing for additional parallelism and
making better use of the CPUs.
Review URL: http://codereview.chromium.org/6713043
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
This allows --ask to be enabled via EMERGE_DEFAULT_OPTS, and then
temporarily disabled via the command-line. This may be useful for
programs that call emerge non-interactively, as in bug #360233.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now ebuild.sh runs preprocessing steps multiple times during the
same build. It processes the same environment and produces the same
output every time. This slows down the build unnecessarily.
This optimization cuts build time for 50 binary packages with 16 jobs
from 3m22 to 2m33 (33%).
Change-Id: I72ac84cce2eb60d17736cc5f5343d4a858ec86f4
Review URL: http://codereview.chromium.org/6733008
|
| |
|
|
|
|
| |
Thanks to Dennis Schridde in bug #359681.
|
| |
|
|
|
|
|
| |
Also, fix local portage.debug import so that "global portage" is
not necessary.
|
|
|
|
|
|
| |
This is a regression from commit
363a7478a100495d2e8597bc6c6d2fdac94339e0 but it's usually not
noticeable with Ctrl-C since SIGINT is propagated to nested processes.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Though this case might never have been triggered, the logic was broken
for cases in which self.cancelled was false and a task was queued. In
this case we need to call back into the scheduler until the queued task
is started or we are cancelled, whichever comes first.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This prevents the Scheduler from hanging if the client is killed before
we can send the reply, as reported by David James:
http://codereview.chromium.org/6713003
This commit depends on ebuild-ipc (the client) opening the other side
of this fifo before it sends its request, which has already been added
in commit eff879ff0ce7dcc1ce68d5f16de1ec73051f8c18.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes it possible for the daemon to send a reply without blocking,
thereby improving performance and also making it possible for the
daemon to do a non-blocking write without a race condition.
This reverts part of commit 81fc303212b8379219cf5d463c8717359b972dba,
which probably didn't help portability anyway. Now, ebuild-ipc is using
non-blocking read with os.read and EAGAIN handling, just like
EbuildIpcDaemon since commit 7e5b81da12dd7bd59f6620840dc0d824e3f4d69a
(known compatible with FreeBSD).
|
| |
|
|
|
|
| |
Thanks to Francesco Turco in bug #359273.
|
|
|
|
|
|
|
|
|
|
|
| |
This should prevent the following error due to returning raw bytes,
reported in forum thread #869281:
File "pym/_emerge/BlockerDB.py", line 72, in findInstalledBlockers
portage.writemsg("!!! %s/*DEPEND: %s\n" % \
(pkg_location, atoms), noiselevel=-1)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in
position 23: ordinal not in range(128)
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This should prevent "TypeError: an integer is required" raised from
waitpid when trying to cancel a prefetcher that never started.
|
| |
|
| |
|
|
|
|
|
|
| |
This is needed in order to ensure that exit listeners are called.
Subclasses call the base class cancel() method in order to inherit the
wait() call.
|
| |
|
|
|
|
|
|
| |
Previously, the slow approach was used whenever more than 10 files were
given as input. However, large numbers of files don't necessarily
mean the hashed approach is a bad choice, so try it in any case.
|
| |
|
|
|
|
|
|
| |
This allows --quiet and --quiet-build to be enabled via
EMERGE_DEFAULT_OPTS, and then temporarily disabled via the command-
line.
|
| |
|
|
|
|
|
| |
Thanks to David James <davidjames@google.com> for reporting this error:
AttributeError: 'EbuildPhase' object has no attribute 'merge'
|
|
|
|
|
|
|
|
|
|
|
| |
Before, some temporary directories would be created directly in
$PORTAGE_TMPDIR. Now, all are subdirectories of $PORTAGE_TMPDIR/portage
since it's common for people to assume that this is the case anyway.
With the default PORTAGE_TMPDIR setting of /var/tmp, this allows
/var/tmp to be mounted with the "noexec" option, as long as the
/var/tmp/portage subdirectory is a separate mount (people have already
tended to assume that they can do this, so we're making it a reality
in order to avoid any more bug reports). This will fix bug #346899.
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
| |
This prevents it from being called while the _schedule_tasks()
implementation is running, in order to avoid potential interference.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Array.fromfile() seems to be more error prone. For example, see
bug 337465.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, when AbstractPollTask receives a POLLERR or POLLNVAL event,
it would silently cancel the task. Now it will generate a message like
this:
!!! SpawnProcess received strange poll event: 8
The message is displayed via a new _log_poll_exception method, which
is overridden by AbstractEbuildProcess to log the message via elog.
This might help diagnose reported cases of SIGTERM signals killing
ebuild processes for no apparent reason:
http://code.google.com/p/chromium-os/issues/detail?id=12968
|
|
|
|
| |
The dblink constructor is complex and best avoided.
|
| |
|
|
|
|
| |
This will fix bug #357581.
|
| |
|
|
|
|
| |
This will fix bug #357297.
|
|
|
|
|
|
| |
This code is redunant now, since similar code has been added to
dblink.getcontents() in commit
e0b4048274b2cfc1617f2eff379cbe8435e13ed4.
|
|
|
|
|
| |
We can't necessarily assume that they are explicitly listed in
CONTENTS, and they are crucial for callers such as dblink.isowner().
|
| |
|
| |
|
|
|
|
| |
This will fix bug #357093.
|