portage.git
13 years agoemerge: fix indent for --binpkg-respect-use help
Zac Medico [Thu, 28 Apr 2011 12:58:35 +0000 (05:58 -0700)]
emerge: fix indent for --binpkg-respect-use help

13 years agoemerge: add --help for 3 new options
Zac Medico [Wed, 27 Apr 2011 22:58:16 +0000 (15:58 -0700)]
emerge: add --help for 3 new options

13 years agoemerge: add 3 new options similar to --exclude
David James [Wed, 27 Apr 2011 22:07:12 +0000 (15:07 -0700)]
emerge: add 3 new options similar to --exclude

Add --nousepkg-atoms, --useoldpkg-atoms, and --reinstall-atoms flag
to Portage

reinstall-atoms accepts a space separated list of package names or
slot atoms. Emerge will treat matching packages as if they are not
installed, and reinstall them if necessary.

useoldpkg-atoms accepts a space separated list of package names or
slot atoms. Emerge will prefer matching binary packages over newer
unbuilt packages. This is useful in case you want to request that a
particular package won't be rebuilt from source.

nousepkg-atoms accepts a space separated list of package names or
slot atoms. Emerge will ignore matching binary packages.

Change-Id: I0d73039c6a4cd63695b28ffc80215628e0e05c95

BUG=chromium-os:12507 TEST=Try out the flag

Review URL: http://codereview.chromium.org/6577024

13 years ago--autounmask: Don't change masked/forced flags
Sebastian Luther [Wed, 27 Apr 2011 20:36:15 +0000 (13:36 -0700)]
--autounmask: Don't change masked/forced flags

This will fix bug #364701.

13 years agoexpand_new_virt: don't traverse blockers
Zac Medico [Wed, 27 Apr 2011 16:13:51 +0000 (09:13 -0700)]
expand_new_virt: don't traverse blockers

13 years agoexpand_new_virt: validate EAPI, IUSE and USE
Zac Medico [Wed, 27 Apr 2011 14:35:57 +0000 (07:35 -0700)]
expand_new_virt: validate EAPI, IUSE and USE

13 years agoexpand_new_virt: eliminate cpv_getkey
Zac Medico [Wed, 27 Apr 2011 14:05:24 +0000 (07:05 -0700)]
expand_new_virt: eliminate cpv_getkey

13 years agoexpand_new_virt: use stack for recursion
Zac Medico [Tue, 26 Apr 2011 23:57:20 +0000 (16:57 -0700)]
expand_new_virt: use stack for recursion

13 years agoBug #364467 - handle gcc-4.6-style QA warnings
Ryan Hill [Tue, 26 Apr 2011 21:16:20 +0000 (14:16 -0700)]
Bug #364467 - handle gcc-4.6-style QA warnings

13 years agoFix a typo.
Arfrever Frehtes Taifersar Arahesis [Tue, 26 Apr 2011 20:50:03 +0000 (22:50 +0200)]
Fix a typo.

13 years agoemerge --info: support new-style virtuals
Zac Medico [Tue, 26 Apr 2011 20:19:34 +0000 (13:19 -0700)]
emerge --info: support new-style virtuals

This will fix bug #364673.

13 years agoebuild(1): fix env FEATURES overrides bug #364035
Zac Medico [Sat, 23 Apr 2011 15:41:07 +0000 (08:41 -0700)]
ebuild(1): fix env FEATURES overrides bug #364035

13 years agorepoman: deprecate more eclasses
Tomas Chvatal [Wed, 20 Apr 2011 23:56:06 +0000 (16:56 -0700)]
repoman: deprecate more eclasses

13 years agorepoman: cleanup gpgsign v2.2.0_alpha30
Zac Medico [Thu, 14 Apr 2011 01:54:30 +0000 (18:54 -0700)]
repoman: cleanup gpgsign

13 years agoUpdate timestamps in headers of modified files.
Zac Medico [Wed, 13 Apr 2011 07:59:38 +0000 (00:59 -0700)]
Update timestamps in headers of modified files.

13 years agodoins: tweak $DISTDIR symlink handling
Zac Medico [Tue, 12 Apr 2011 01:09:20 +0000 (18:09 -0700)]
doins: tweak $DISTDIR symlink handling

Only match stuff inside $PORTAGE_ACTUAL_DISTDIR/ so that we don't
stray from PMS.

13 years agodoins: dereference abs symlinks to files
Zac Medico [Mon, 11 Apr 2011 23:23:54 +0000 (16:23 -0700)]
doins: dereference abs symlinks to files

Our fake $DISTDIR contains symlinks that should not be reproduced
inside $D. In order to ensure that things like dodoc
"$DISTDIR"/foo.pdf work as expected, we dereference symlinked files
that are referenced by absolute paths. Thanks to James Cloos
<cloos@jhcloos.com> for reporting this issue which he observed with
the sci-mathematics/minisat ebuild.

13 years agoextract_affecting_use: test bug #363073
Zac Medico [Mon, 11 Apr 2011 23:00:02 +0000 (16:00 -0700)]
extract_affecting_use: test bug #363073

13 years agoextract_affecting_use: allow parens in atoms
Zac Medico [Mon, 11 Apr 2011 22:30:13 +0000 (15:30 -0700)]
extract_affecting_use: allow parens in atoms

This fixes bug #363073 in which an InvalidDependString exception is
erroneously triggered by atoms containing EAPI 4 USE dependency
defaults. This case is very similar to bug #354003 which was fixed in
commit 8735222b77e66850213e2aa6a7ea48e744ba0d4f.

13 years agoRemove unnecessary sync in Scheduler.py.
David James [Mon, 11 Apr 2011 19:00:39 +0000 (12:00 -0700)]
Remove unnecessary sync in Scheduler.py.

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

13 years agoFix a typo in a comment.
Zac Medico [Sun, 10 Apr 2011 20:05:45 +0000 (13:05 -0700)]
Fix a typo in a comment.

13 years agoScheduler: add more info in docstring comments
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.

13 years agoAdd force-mirror FEATURE.
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

13 years agofilter PORTAGE_GPG_SIGNING_COMMAND for ebuild env
Zac Medico [Mon, 4 Apr 2011 22:03:01 +0000 (15:03 -0700)]
filter PORTAGE_GPG_SIGNING_COMMAND for ebuild env

13 years agoMerge branch 'master' of git+ssh://git.overlays.gentoo.org/proj/portage
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

13 years agoSupport PORTAGE_GPG_SIGNING_COMMAND variable.
Arfrever Frehtes Taifersar Arahesis [Sun, 3 Apr 2011 17:28:58 +0000 (19:28 +0200)]
Support PORTAGE_GPG_SIGNING_COMMAND variable.

13 years agorepoman: fix profiles.desc overlay path
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.

13 years agoDisplay: fix fetch restrict msg for RO_DISTDIRS
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.

13 years agoMinor improvements in gpgsign().
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.

13 years agoSimplify calculation of repoman_settings["PORTAGE_GPG_DIR"] in gpgsign().
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.

13 years agochk_updated_info_files: handle --quiet
Zac Medico [Wed, 30 Mar 2011 18:36:35 +0000 (11:36 -0700)]
chk_updated_info_files: handle --quiet

This will fix bug #361257.

13 years agoUse os.path.expanduser() to simplify code.
Arfrever Frehtes Taifersar Arahesis [Wed, 30 Mar 2011 15:03:22 +0000 (17:03 +0200)]
Use os.path.expanduser() to simplify code.

13 years agodisplay_merge: tweak background/logging logic v2.2.0_alpha29
Zac Medico [Sun, 27 Mar 2011 22:37:47 +0000 (15:37 -0700)]
display_merge: tweak background/logging logic

13 years agodblink: rename 'buffer' var in _elog_process
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.

13 years agounmerge: fix lock/UnsupportedAPIException logic
Zac Medico [Sun, 27 Mar 2011 20:57:35 +0000 (13:57 -0700)]
unmerge: fix lock/UnsupportedAPIException logic

13 years agoUnsupportedAPIException: handle unicode in EAPI
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.

13 years agoemerge-webrsync: drop lzma support
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

13 years agoMergeProcess: add fallback setcpv call
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.

13 years agoMergeProcess: query blockers in the main process
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.

13 years agodisplay_merge: pass through noiselevel args
Zac Medico [Sat, 26 Mar 2011 18:00:44 +0000 (11:00 -0700)]
display_merge: pass through noiselevel args

13 years agoScheduler: pkg_to_replace beware old-style virt
Zac Medico [Sat, 26 Mar 2011 17:10:24 +0000 (10:10 -0700)]
Scheduler: pkg_to_replace beware old-style virt

13 years agoBlockerDB: add SLOT match in discardBlocker
Zac Medico [Sat, 26 Mar 2011 16:12:38 +0000 (09:12 -0700)]
BlockerDB: add SLOT match in discardBlocker

13 years agoMergeListItem: inherit _poll and _wait
Zac Medico [Sat, 26 Mar 2011 08:52:49 +0000 (01:52 -0700)]
MergeListItem: inherit _poll and _wait

13 years agoMergeProcess: relocate portage reinstall code
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.

13 years agounmerge: fix PORTAGE_BACKGROUND logic
Zac Medico [Sat, 26 Mar 2011 07:38:23 +0000 (00:38 -0700)]
unmerge: fix PORTAGE_BACKGROUND logic

13 years agoReoranize PackageMerge/MergeListItem interaction.
Zac Medico [Sat, 26 Mar 2011 07:06:01 +0000 (00:06 -0700)]
Reoranize PackageMerge/MergeListItem interaction.

13 years agoPackageMerge: call wait() for conformity
Zac Medico [Sat, 26 Mar 2011 03:38:11 +0000 (20:38 -0700)]
PackageMerge: call wait() for conformity

13 years agoUpdate header timestamps for modified files.
Zac Medico [Sat, 26 Mar 2011 03:36:47 +0000 (20:36 -0700)]
Update header timestamps for modified files.

13 years agoMergeProcess: call elog_process for replaced pkgs
Zac Medico [Sat, 26 Mar 2011 03:24:10 +0000 (20:24 -0700)]
MergeProcess: call elog_process for replaced pkgs

13 years agodblink: use self.mycpv in _elog
Zac Medico [Sat, 26 Mar 2011 02:43:12 +0000 (19:43 -0700)]
dblink: use self.mycpv in _elog

13 years agoMergeProcess: toggle vardbapi._pkgs_changed
Zac Medico [Sat, 26 Mar 2011 02:00:16 +0000 (19:00 -0700)]
MergeProcess: toggle vardbapi._pkgs_changed

13 years agoconfig: blacklist PORTAGE_BACKGROUND* vars
Zac Medico [Sat, 26 Mar 2011 01:44:46 +0000 (18:44 -0700)]
config: blacklist PORTAGE_BACKGROUND* vars

13 years agoMergeProcess: handle unicode in elog pipe
Zac Medico [Fri, 25 Mar 2011 20:52:16 +0000 (13:52 -0700)]
MergeProcess: handle unicode in elog pipe

13 years agoenv_update: remove sleep_for_mtime_granularity
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

13 years agoPollScheduler: tweak _unregister event cleanup
Zac Medico [Fri, 25 Mar 2011 16:52:40 +0000 (09:52 -0700)]
PollScheduler: tweak _unregister event cleanup

13 years agoPollScheduler: handle missing log directory
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.

13 years agodblink: fix elog bugs for unmerge phases
Zac Medico [Fri, 25 Mar 2011 10:39:15 +0000 (03:39 -0700)]
dblink: fix elog bugs for unmerge phases

13 years agovartree: remove broken scheduler reference
Zac Medico [Fri, 25 Mar 2011 10:12:55 +0000 (03:12 -0700)]
vartree: remove broken scheduler reference

13 years agovartree: remove unused scheduler references
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.

13 years agoMergeProcess: separate unmerge output from merge
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.

13 years agoebuild(1): fix AttributeError for merge phase
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'

13 years agoMergeProcess: close elog_writer_fd leak
Zac Medico [Fri, 25 Mar 2011 08:11:45 +0000 (01:11 -0700)]
MergeProcess: close elog_writer_fd leak

13 years agoMergeProcess: Fix PORTAGE_BACKGROUND/LOG_FILE use
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.

13 years agoPreserve elog message continuity during updates.
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.

13 years agoMerge packages asynchronously in Portage.
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

13 years agoUpdate Portage to sync BlockerDB at init.
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

13 years agoemerge: support [ y | n ] for --ask
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.

13 years agoOptimize ebuild.sh to cache preprocessing output.
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

13 years agoget_dep_chain: handle InvalidDependString
Zac Medico [Thu, 24 Mar 2011 04:08:35 +0000 (21:08 -0700)]
get_dep_chain: handle InvalidDependString

13 years agochk_updated_cfg_files: fix whitespace in message
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.

13 years agoportageq owners: list orphans via stderr
Zac Medico [Sun, 20 Mar 2011 17:41:24 +0000 (10:41 -0700)]
portageq owners: list orphans via stderr

13 years agoemerge_main: add "args" parameter (sys.argv[1:])
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.

13 years agoTaskSequence: also call CompositeTask._cancel()
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.

13 years agoUpdate timestamps in headers of modified files. v2.2.0_alpha28
Zac Medico [Fri, 18 Mar 2011 21:44:05 +0000 (14:44 -0700)]
Update timestamps in headers of modified files.

13 years agoPackageVirtualDbapi: fix get() for reposyntax
Zac Medico [Fri, 18 Mar 2011 21:38:38 +0000 (14:38 -0700)]
PackageVirtualDbapi: fix get() for reposyntax

13 years agoCompositeTask: fix _wait for TASK_QUEUED
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.

13 years agoebuild-ipc: import errno
Zac Medico [Thu, 17 Mar 2011 21:52:41 +0000 (14:52 -0700)]
ebuild-ipc: import errno

13 years agoEbuildIpcDaemon: use non-blocking write
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.

13 years agoebuild-ipc: use non-blocking read
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).

13 years agoAsynchronousLock: implement _cancel
Zac Medico [Thu, 17 Mar 2011 20:08:35 +0000 (13:08 -0700)]
AsynchronousLock: implement _cancel

13 years agomake.conf.5: fix "direcory" spelling
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.

13 years agodep_check: return errors as unicode
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)

13 years agoAsynchronousTask: add _cancel template method
Zac Medico [Thu, 17 Mar 2011 05:36:33 +0000 (22:36 -0700)]
AsynchronousTask: add _cancel template method

13 years agoUpdate Scheduler to protect against infinite loop
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.

13 years agoScheduler: tweak prefetcher cancellation logic
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.

13 years agoCompositeTask: handle unstarted terminated tasks
Zac Medico [Thu, 17 Mar 2011 03:44:55 +0000 (20:44 -0700)]
CompositeTask: handle unstarted terminated tasks

13 years agoCompositeTask: fix assertion in _wait
Zac Medico [Thu, 17 Mar 2011 01:42:59 +0000 (18:42 -0700)]
CompositeTask: fix assertion in _wait

13 years agoAsynchronousTask: always call wait() if cancelled
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.

13 years agoScheduler: terminate _merge_wait_queue
Zac Medico [Thu, 17 Mar 2011 00:36:36 +0000 (17:36 -0700)]
Scheduler: terminate _merge_wait_queue

13 years agoiter_owners: try the hashed approach in any case
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.

13 years agoslot_conflict: tweak message and fix grammar
Zac Medico [Tue, 15 Mar 2011 22:58:02 +0000 (15:58 -0700)]
slot_conflict: tweak message and fix grammar

13 years agoemerge: support [ y | n ] for --quiet v2.2.0_alpha27
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.

13 years agoUpdate timestamps in headers of modified files.
Zac Medico [Mon, 14 Mar 2011 16:40:40 +0000 (09:40 -0700)]
Update timestamps in headers of modified files.

13 years agoScheduler: fix AttributeError in _terminate_tasks
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'

13 years agoMake all temp dirs under $PORTAGE_TMPDIR/portage.
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.

13 years agoPollScheduler: tweek termination logic
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.

13 years agoPollScheduler: call _terminate_tasks in _schedule
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.

13 years agoScheduler: avoid infinite loop after CTRL-C
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.

13 years agoebuild-ipc: use plain file read instead of array
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.

13 years agoAbstractPollTask: log exceptional events
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