Zac Medico [Sun, 10 Apr 2011 20:03:11 +0000 (13:03 -0700)]
Scheduler: add more info in docstring comments
This clarifies the purposes of _system_merge_started and _choose_pkg.
David James [Thu, 7 Apr 2011 23:49:58 +0000 (16:49 -0700)]
Add force-mirror FEATURE.
force-mirror: Only fetch files from configured mirrors, ignoring
SRC_URI, except when mirror is in the ebuild(5) RESTRICT variable.
BUG=chromium-os:13221
TEST=Test that ebuilds now fail with FEATURES=force-mirror if files are
not in the configured mirror.
Change-Id: I8484d5af8dff97b431398030b33c024ff1295ba0
Review URL: http://codereview.chromium.org/
6677171
Zac Medico [Mon, 4 Apr 2011 22:03:01 +0000 (15:03 -0700)]
filter PORTAGE_GPG_SIGNING_COMMAND for ebuild env
Arfrever Frehtes Taifersar Arahesis [Sun, 3 Apr 2011 17:30:33 +0000 (19:30 +0200)]
Merge branch 'master' of git+ssh://git.overlays.gentoo.org/proj/portage
Arfrever Frehtes Taifersar Arahesis [Sun, 3 Apr 2011 17:28:58 +0000 (19:28 +0200)]
Support PORTAGE_GPG_SIGNING_COMMAND variable.
Zac Medico [Sun, 3 Apr 2011 15:54:10 +0000 (08:54 -0700)]
repoman: fix profiles.desc overlay path
Thanks to Alexey Shvetsov <alexxy@gentoo.org> for reporting this issue
and testing the fix.
Zac Medico [Thu, 31 Mar 2011 15:41:52 +0000 (08:41 -0700)]
Display: fix fetch restrict msg for RO_DISTDIRS
This will fix bug #361463.
Arfrever Frehtes Taifersar Arahesis [Wed, 30 Mar 2011 22:19:54 +0000 (00:19 +0200)]
Minor improvements in gpgsign().
repoman_settings["PORTAGE_GPG_DIR"] is always set.
Arfrever Frehtes Taifersar Arahesis [Wed, 30 Mar 2011 20:32:45 +0000 (22:32 +0200)]
Simplify calculation of repoman_settings["PORTAGE_GPG_DIR"] in gpgsign().
os.path.expanduser() works even when HOME environment variable is not set.
Zac Medico [Wed, 30 Mar 2011 18:36:35 +0000 (11:36 -0700)]
chk_updated_info_files: handle --quiet
This will fix bug #361257.
Arfrever Frehtes Taifersar Arahesis [Wed, 30 Mar 2011 15:03:22 +0000 (17:03 +0200)]
Use os.path.expanduser() to simplify code.
Zac Medico [Sun, 27 Mar 2011 22:37:47 +0000 (15:37 -0700)]
display_merge: tweak background/logging logic
Zac Medico [Sun, 27 Mar 2011 21:26:08 +0000 (14:26 -0700)]
dblink: rename 'buffer' var in _elog_process
Avoid name collision with built-in 'buffer' function.
Zac Medico [Sun, 27 Mar 2011 20:57:35 +0000 (13:57 -0700)]
unmerge: fix lock/UnsupportedAPIException logic
Zac Medico [Sun, 27 Mar 2011 20:55:11 +0000 (13:55 -0700)]
UnsupportedAPIException: handle unicode in EAPI
Normally EAPI doesn't contain unicode, but as in bug #359675, it can
contain practically anything if files in /var/db/pkg are corrupt.
Zac Medico [Sun, 27 Mar 2011 20:01:10 +0000 (13:01 -0700)]
emerge-webrsync: drop lzma support
The lzma snapshots have been replaced by xz snapshots, as discussed in
the "RFC: Remove .lzma in favor of .xz portage snapshots" thread on the
gentoo-dev ml:
http://archives.gentoo.org/gentoo-dev/msg_7de1b57ce531fdf33d33b5b070006436.xml
Zac Medico [Sun, 27 Mar 2011 06:09:27 +0000 (23:09 -0700)]
MergeProcess: add fallback setcpv call
It's important that this metadata access happens in the parent process,
since closing of file descriptors in the subprocess can prevent access
to open database connections such as that used by the sqlite metadata
cache module.
Zac Medico [Sat, 26 Mar 2011 23:25:15 +0000 (16:25 -0700)]
MergeProcess: query blockers in the main process
Metadata cache queries may not work for some databases from within a
subprocess. For example, sqlite is known to misbehave.
Zac Medico [Sat, 26 Mar 2011 18:00:44 +0000 (11:00 -0700)]
display_merge: pass through noiselevel args
Zac Medico [Sat, 26 Mar 2011 17:10:24 +0000 (10:10 -0700)]
Scheduler: pkg_to_replace beware old-style virt
Zac Medico [Sat, 26 Mar 2011 16:12:38 +0000 (09:12 -0700)]
BlockerDB: add SLOT match in discardBlocker
Zac Medico [Sat, 26 Mar 2011 08:52:49 +0000 (01:52 -0700)]
MergeListItem: inherit _poll and _wait
Zac Medico [Sat, 26 Mar 2011 08:18:12 +0000 (01:18 -0700)]
MergeProcess: relocate portage reinstall code
This code goes inside _start since it needs to execute in the parent
process.
Zac Medico [Sat, 26 Mar 2011 07:38:23 +0000 (00:38 -0700)]
unmerge: fix PORTAGE_BACKGROUND logic
Zac Medico [Sat, 26 Mar 2011 07:06:01 +0000 (00:06 -0700)]
Reoranize PackageMerge/MergeListItem interaction.
Zac Medico [Sat, 26 Mar 2011 03:38:11 +0000 (20:38 -0700)]
PackageMerge: call wait() for conformity
Zac Medico [Sat, 26 Mar 2011 03:36:47 +0000 (20:36 -0700)]
Update header timestamps for modified files.
Zac Medico [Sat, 26 Mar 2011 03:24:10 +0000 (20:24 -0700)]
MergeProcess: call elog_process for replaced pkgs
Zac Medico [Sat, 26 Mar 2011 02:43:12 +0000 (19:43 -0700)]
dblink: use self.mycpv in _elog
Zac Medico [Sat, 26 Mar 2011 02:00:16 +0000 (19:00 -0700)]
MergeProcess: toggle vardbapi._pkgs_changed
Zac Medico [Sat, 26 Mar 2011 01:44:46 +0000 (18:44 -0700)]
config: blacklist PORTAGE_BACKGROUND* vars
Zac Medico [Fri, 25 Mar 2011 20:52:16 +0000 (13:52 -0700)]
MergeProcess: handle unicode in elog pipe
David James [Fri, 25 Mar 2011 17:10:54 +0000 (10:10 -0700)]
env_update: remove sleep_for_mtime_granularity
Instead of sleeping, use os.utime to avoid mtime ambiguity.
Change-Id: I359ececca19b6be9f5997ac5c8fe6fea6ea49dd5
Review URL: http://codereview.chromium.org/
6676150
Zac Medico [Fri, 25 Mar 2011 16:52:40 +0000 (09:52 -0700)]
PollScheduler: tweak _unregister event cleanup
Zac Medico [Fri, 25 Mar 2011 15:57:10 +0000 (08:57 -0700)]
PollScheduler: handle missing log directory
This can be triggered by AbstractPollTask._log_poll_exception(), as
reported by Michael Haubenwallner <haubi@gentoo.org> for AIX.
Zac Medico [Fri, 25 Mar 2011 10:39:15 +0000 (03:39 -0700)]
dblink: fix elog bugs for unmerge phases
Zac Medico [Fri, 25 Mar 2011 10:12:55 +0000 (03:12 -0700)]
vartree: remove broken scheduler reference
Zac Medico [Fri, 25 Mar 2011 09:47:17 +0000 (02:47 -0700)]
vartree: remove unused scheduler references
Since all the merge code runs inside MergeProcess now, there's no
reason to yield to the scheduler.
Zac Medico [Fri, 25 Mar 2011 09:29:06 +0000 (02:29 -0700)]
MergeProcess: separate unmerge output from merge
The unmerge output has been mixed together with the merge output since
commit
7535cabdf2fab76fc55df83643157613dfd66be9 because
dblink._scheduler was set to None. Now it's fixed to produce separate
logs like it used to.
Zac Medico [Fri, 25 Mar 2011 08:23:51 +0000 (01:23 -0700)]
ebuild(1): fix AttributeError for merge phase
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'
Zac Medico [Fri, 25 Mar 2011 08:11:45 +0000 (01:11 -0700)]
MergeProcess: close elog_writer_fd leak
Zac Medico [Fri, 25 Mar 2011 04:32:38 +0000 (21:32 -0700)]
MergeProcess: Fix PORTAGE_BACKGROUND/LOG_FILE use
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.
Zac Medico [Fri, 25 Mar 2011 03:03:28 +0000 (20:03 -0700)]
Preserve elog message continuity during updates.
This integrates the fix from commit
8209aeab647b1ab80a64d5931069b3533776ef75 with the asynchronous merge
changes from commit
7535cabdf2fab76fc55df83643157613dfd66be9.
David James [Fri, 25 Mar 2011 02:36:33 +0000 (19:36 -0700)]
Merge packages asynchronously in Portage.
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
David James [Fri, 25 Mar 2011 01:14:45 +0000 (18:14 -0700)]
Update Portage to sync BlockerDB at init.
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
Zac Medico [Thu, 24 Mar 2011 18:15:47 +0000 (11:15 -0700)]
emerge: support [ y | n ] for --ask
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.
David James [Thu, 24 Mar 2011 05:05:15 +0000 (22:05 -0700)]
Optimize ebuild.sh to cache preprocessing output.
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
Zac Medico [Thu, 24 Mar 2011 04:08:35 +0000 (21:08 -0700)]
get_dep_chain: handle InvalidDependString
Zac Medico [Mon, 21 Mar 2011 00:11:14 +0000 (17:11 -0700)]
chk_updated_cfg_files: fix whitespace in message
Thanks to Dennis Schridde in bug #359681.
Zac Medico [Sun, 20 Mar 2011 17:41:24 +0000 (10:41 -0700)]
portageq owners: list orphans via stderr
Zac Medico [Sun, 20 Mar 2011 15:57:42 +0000 (08:57 -0700)]
emerge_main: add "args" parameter (sys.argv[1:])
Also, fix local portage.debug import so that "global portage" is
not necessary.
Zac Medico [Fri, 18 Mar 2011 23:45:47 +0000 (16:45 -0700)]
TaskSequence: also call CompositeTask._cancel()
This is a regression from commit
363a7478a100495d2e8597bc6c6d2fdac94339e0 but it's usually not
noticeable with Ctrl-C since SIGINT is propagated to nested processes.
Zac Medico [Fri, 18 Mar 2011 21:44:05 +0000 (14:44 -0700)]
Update timestamps in headers of modified files.
Zac Medico [Fri, 18 Mar 2011 21:38:38 +0000 (14:38 -0700)]
PackageVirtualDbapi: fix get() for reposyntax
Zac Medico [Fri, 18 Mar 2011 21:05:07 +0000 (14:05 -0700)]
CompositeTask: fix _wait for TASK_QUEUED
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.
Zac Medico [Thu, 17 Mar 2011 21:52:41 +0000 (14:52 -0700)]
ebuild-ipc: import errno
Zac Medico [Thu, 17 Mar 2011 21:39:53 +0000 (14:39 -0700)]
EbuildIpcDaemon: use non-blocking write
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.
Zac Medico [Thu, 17 Mar 2011 21:12:13 +0000 (14:12 -0700)]
ebuild-ipc: use non-blocking read
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).
Zac Medico [Thu, 17 Mar 2011 20:08:35 +0000 (13:08 -0700)]
AsynchronousLock: implement _cancel
Zac Medico [Thu, 17 Mar 2011 19:01:57 +0000 (12:01 -0700)]
make.conf.5: fix "direcory" spelling
Thanks to Francesco Turco in bug #359273.
Zac Medico [Thu, 17 Mar 2011 18:39:28 +0000 (11:39 -0700)]
dep_check: return errors as unicode
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)
Zac Medico [Thu, 17 Mar 2011 05:36:33 +0000 (22:36 -0700)]
AsynchronousTask: add _cancel template method
David James [Thu, 17 Mar 2011 04:54:37 +0000 (21:54 -0700)]
Update Scheduler to protect against infinite loop
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.
Zac Medico [Thu, 17 Mar 2011 04:50:36 +0000 (21:50 -0700)]
Scheduler: tweak prefetcher cancellation logic
This should prevent "TypeError: an integer is required" raised from
waitpid when trying to cancel a prefetcher that never started.
Zac Medico [Thu, 17 Mar 2011 03:44:55 +0000 (20:44 -0700)]
CompositeTask: handle unstarted terminated tasks
Zac Medico [Thu, 17 Mar 2011 01:42:59 +0000 (18:42 -0700)]
CompositeTask: fix assertion in _wait
Zac Medico [Thu, 17 Mar 2011 01:19:02 +0000 (18:19 -0700)]
AsynchronousTask: always call wait() if cancelled
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.
Zac Medico [Thu, 17 Mar 2011 00:36:36 +0000 (17:36 -0700)]
Scheduler: terminate _merge_wait_queue
Zac Medico [Wed, 16 Mar 2011 20:58:17 +0000 (13:58 -0700)]
iter_owners: try the hashed approach in any case
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.
Zac Medico [Tue, 15 Mar 2011 22:58:02 +0000 (15:58 -0700)]
slot_conflict: tweak message and fix grammar
Zac Medico [Mon, 14 Mar 2011 17:52:17 +0000 (10:52 -0700)]
emerge: support [ y | n ] for --quiet
This allows --quiet and --quiet-build to be enabled via
EMERGE_DEFAULT_OPTS, and then temporarily disabled via the command-
line.
Zac Medico [Mon, 14 Mar 2011 16:40:40 +0000 (09:40 -0700)]
Update timestamps in headers of modified files.
Zac Medico [Sat, 12 Mar 2011 18:35:23 +0000 (10:35 -0800)]
Scheduler: fix AttributeError in _terminate_tasks
Thanks to David James <davidjames@google.com> for reporting this error:
AttributeError: 'EbuildPhase' object has no attribute 'merge'
Zac Medico [Fri, 11 Mar 2011 21:02:31 +0000 (13:02 -0800)]
Make all temp dirs under $PORTAGE_TMPDIR/portage.
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.
Zac Medico [Fri, 11 Mar 2011 06:02:19 +0000 (22:02 -0800)]
PollScheduler: tweek termination logic
* 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.
Zac Medico [Fri, 11 Mar 2011 05:21:19 +0000 (21:21 -0800)]
PollScheduler: call _terminate_tasks in _schedule
This prevents it from being called while the _schedule_tasks()
implementation is running, in order to avoid potential interference.
Zac Medico [Fri, 11 Mar 2011 03:29:57 +0000 (19:29 -0800)]
Scheduler: avoid infinite loop after CTRL-C
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.
Zac Medico [Thu, 10 Mar 2011 22:49:47 +0000 (14:49 -0800)]
ebuild-ipc: use plain file read instead of array
Array.fromfile() seems to be more error prone. For example, see
bug 337465.
Zac Medico [Thu, 10 Mar 2011 05:46:17 +0000 (21:46 -0800)]
AbstractPollTask: log exceptional events
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
Zac Medico [Wed, 9 Mar 2011 03:28:21 +0000 (19:28 -0800)]
unmerge: use vardbapi._dblink() to simplify
The dblink constructor is complex and best avoided.
Arfrever Frehtes Taifersar Arahesis [Wed, 9 Mar 2011 02:57:23 +0000 (03:57 +0100)]
Bug #357009: Disallow uninstallation of currently used Python interpreter.
Zac Medico [Mon, 7 Mar 2011 17:34:02 +0000 (09:34 -0800)]
portdbapi: source ebuilds when eclass dir missing
This will fix bug #357581.
Zac Medico [Sun, 6 Mar 2011 00:41:00 +0000 (16:41 -0800)]
eclass_cache: remove deprecated methods
Zac Medico [Fri, 4 Mar 2011 16:39:53 +0000 (08:39 -0800)]
config: quote overlays containing spaces
This will fix bug #357297.
Zac Medico [Wed, 2 Mar 2011 19:46:57 +0000 (11:46 -0800)]
Remove redundant CONTENTS parent dir generation.
This code is redunant now, since similar code has been added to
dblink.getcontents() in commit
e0b4048274b2cfc1617f2eff379cbe8435e13ed4.
Zac Medico [Wed, 2 Mar 2011 18:51:41 +0000 (10:51 -0800)]
dblink.getcontents(): generate parent directories
We can't necessarily assume that they are explicitly listed in
CONTENTS, and they are crucial for callers such as dblink.isowner().
Zac Medico [Wed, 2 Mar 2011 17:59:11 +0000 (09:59 -0800)]
grablines: allow inline comments
Theo Chatzimichos [Wed, 2 Mar 2011 17:39:56 +0000 (09:39 -0800)]
grabdict: allow inline comments
Zac Medico [Wed, 2 Mar 2011 16:39:14 +0000 (08:39 -0800)]
depgraph: don't output \b to non-tty
This will fix bug #357093.
Zac Medico [Wed, 2 Mar 2011 04:52:28 +0000 (20:52 -0800)]
dodoc: update copyright date
Zac Medico [Wed, 2 Mar 2011 00:53:25 +0000 (16:53 -0800)]
ebuild(1): fix ebuild modification check
This has been broken since the setcpv call (triggering metadata
generation) was added before it in commit
0b39d24bb8270e5c89eaddfd1f5a4181cf9e31d3.
Zac Medico [Tue, 1 Mar 2011 21:52:04 +0000 (13:52 -0800)]
action_deselect: expand cat against world atoms
Zac Medico [Tue, 1 Mar 2011 21:20:59 +0000 (13:20 -0800)]
unmerge: log pre/postrm FAILED messages
Zac Medico [Tue, 1 Mar 2011 21:04:41 +0000 (13:04 -0800)]
owners_cache: fix EPREFIX miscalculation
This reverts commit
43e0b3ea4289aab9b4258d29d06afac40abd6c01 and
renames the root_len variable to eroot_len (for clarity).
Zac Medico [Tue, 1 Mar 2011 20:42:56 +0000 (12:42 -0800)]
owners_cache: add parent dirs deeper than EPREFIX
Zac Medico [Tue, 1 Mar 2011 20:07:53 +0000 (12:07 -0800)]
unmerge: implicitly unmerge parent directories
We can't necessarily assume that they are explicitly listed in
CONTENTS.
Zac Medico [Tue, 1 Mar 2011 18:06:01 +0000 (10:06 -0800)]
owners_cache: implicitly add parent directories
We can't necessarily assume that they are explicitly listed in
CONTENTS.
Zac Medico [Mon, 28 Feb 2011 20:37:22 +0000 (12:37 -0800)]
repoman: variable.usedwithhelpers ignore quoted
Zac Medico [Mon, 28 Feb 2011 18:57:53 +0000 (10:57 -0800)]
ebuild(1): apply package.env earlier
This makes it possible to override PORTAGE_TMPDIR.
Zac Medico [Mon, 28 Feb 2011 17:58:27 +0000 (09:58 -0800)]
depgraph: case insensitive search for unsatisfied
This will fix bug #356555.