portage.git
11 years agoWarn if 2 make.profile dirs found, bug #452176
Zac Medico [Tue, 15 Jan 2013 15:02:59 +0000 (07:02 -0800)]
Warn if 2 make.profile dirs found, bug #452176

11 years agotest-fail-continue: mark complete, bug #452030
Zac Medico [Tue, 15 Jan 2013 14:45:46 +0000 (06:45 -0800)]
test-fail-continue: mark complete, bug #452030

11 years agoSpawnProcess: avoid fd_pipes interference
Zac Medico [Tue, 15 Jan 2013 14:12:27 +0000 (06:12 -0800)]
SpawnProcess: avoid fd_pipes interference

This fixes a random collision that can occur with FileDigester,
triggering malfunction and a KeyError.

11 years agoebuild.1: update obsolete md5 references
Zac Medico [Tue, 15 Jan 2013 11:10:22 +0000 (03:10 -0800)]
ebuild.1: update obsolete md5 references

11 years agoRespect LINGUAS in 'make install'.
Arfrever Frehtes Taifersar Arahesis [Mon, 14 Jan 2013 23:10:34 +0000 (00:10 +0100)]
Respect LINGUAS in 'make install'.

11 years agoMakefile: install man/ru/* v2.2.0_alpha152
Zac Medico [Mon, 14 Jan 2013 17:16:14 +0000 (09:16 -0800)]
Makefile: install man/ru/*

11 years agoebuild.1: add Russian translation, bug #450372
Vladimir Romanov [Mon, 14 Jan 2013 16:20:28 +0000 (08:20 -0800)]
ebuild.1: add Russian translation, bug #450372

11 years agoselinux: python3 unicode paths, bug #430488
Arfrever Frehtes Taifersar Arahesis [Mon, 14 Jan 2013 11:35:00 +0000 (03:35 -0800)]
selinux: python3 unicode paths, bug #430488

11 years agoTweak init.d qa check for bug #451386.
Zac Medico [Sat, 12 Jan 2013 00:09:25 +0000 (16:09 -0800)]
Tweak init.d qa check for bug #451386.

11 years agomake.conf.5: tweak escape format for apostrophy v2.2.0_alpha151
Zac Medico [Fri, 11 Jan 2013 08:07:29 +0000 (00:07 -0800)]
make.conf.5: tweak escape format for apostrophy

11 years agoDoebuildSpawnTestCase: also call spawn_nofetch
Zac Medico [Fri, 11 Jan 2013 07:22:03 +0000 (23:22 -0800)]
DoebuildSpawnTestCase: also call spawn_nofetch

11 years agospawn_nofetch: import portage, bug #451344
Zac Medico [Fri, 11 Jan 2013 06:54:30 +0000 (22:54 -0800)]
spawn_nofetch: import portage, bug #451344

11 years agoRevert "_ctypes: don't cache library, bug #448858" v2.2.0_alpha150
Zac Medico [Thu, 10 Jan 2013 14:41:15 +0000 (06:41 -0800)]
Revert "_ctypes: don't cache library, bug #448858"

This reverts commit 9e37cca4f54260bd8c45a3041fcee00938c71649.
As noted in bug #448858, comment #14, dlclose is not called
automatically, so we may as well cache our library handles.
In order to protect ourselves, we use a fork since commit
7ebb2f54877edb28621c33e380f8777b1b1dc201.

11 years agoUse EventLoop, no SchedulerInterface if possible.
Zac Medico [Thu, 10 Jan 2013 14:06:34 +0000 (06:06 -0800)]
Use EventLoop, no SchedulerInterface if possible.

11 years agoemerge/test_simple.py: override PATH more
Zac Medico [Thu, 10 Jan 2013 12:03:45 +0000 (04:03 -0800)]
emerge/test_simple.py: override PATH more

Override things that may be unavailable, or may have portability
issues when running tests in exotic environments.

11 years agoSpawnProcess: handle fcntl ENOTTY for FreeBSD
Zac Medico [Thu, 10 Jan 2013 11:11:35 +0000 (03:11 -0800)]
SpawnProcess: handle fcntl ENOTTY for FreeBSD

11 years ago_emirrordist/main.py: remove extra Config import
Zac Medico [Thu, 10 Jan 2013 10:34:49 +0000 (02:34 -0800)]
_emirrordist/main.py: remove extra Config import

11 years agoFetchTask: use umask for copied files
Zac Medico [Thu, 10 Jan 2013 09:40:38 +0000 (01:40 -0800)]
FetchTask: use umask for copied files

11 years agoFetchTask: avoid possible duplicate URI
Zac Medico [Thu, 10 Jan 2013 09:17:46 +0000 (01:17 -0800)]
FetchTask: avoid possible duplicate URI

11 years agoFetchTask: randomize thirdpartymirrors
Zac Medico [Thu, 10 Jan 2013 09:05:40 +0000 (01:05 -0800)]
FetchTask: randomize thirdpartymirrors

11 years agoFetchTask: log_failure for distfiles digester
Zac Medico [Thu, 10 Jan 2013 08:41:01 +0000 (00:41 -0800)]
FetchTask: log_failure for distfiles digester

11 years agoFetchIterator: support PORTAGE_CHECKSUM_FILTER
Zac Medico [Thu, 10 Jan 2013 07:54:26 +0000 (23:54 -0800)]
FetchIterator: support PORTAGE_CHECKSUM_FILTER

11 years agomake.conf.5: escape apostropy quote, bug #451118
Zac Medico [Thu, 10 Jan 2013 07:17:09 +0000 (23:17 -0800)]
make.conf.5: escape apostropy quote, bug #451118

11 years agoFetchIterator: use RepoConfig.load_manifest()
Zac Medico [Thu, 10 Jan 2013 03:57:09 +0000 (19:57 -0800)]
FetchIterator: use RepoConfig.load_manifest()

11 years ago_fetch_digester_exit: fix NoneType AttributeError
Zac Medico [Wed, 9 Jan 2013 22:23:28 +0000 (14:23 -0800)]
_fetch_digester_exit: fix NoneType AttributeError

11 years agoMakefile: install emirrordist
Zac Medico [Wed, 9 Jan 2013 18:51:10 +0000 (10:51 -0800)]
Makefile: install emirrordist

11 years agoAdd emirrordist, a tool for mirroring distfiles.
Zac Medico [Wed, 9 Jan 2013 14:38:16 +0000 (06:38 -0800)]
Add emirrordist, a tool for mirroring distfiles.

Special thanks to Brian Harring, author of the mirror-dist program from
which emirrordist is derived.

11 years agoManifest: make distdir argument optional
Zac Medico [Wed, 9 Jan 2013 12:19:57 +0000 (04:19 -0800)]
Manifest: make distdir argument optional

11 years agoautounmask: tweak --autounmask-write suggestion
Zac Medico [Wed, 9 Jan 2013 01:28:34 +0000 (17:28 -0800)]
autounmask: tweak --autounmask-write suggestion

11 years agoautounmask: show file names for suggested changes
Ben Kohler [Wed, 9 Jan 2013 01:06:01 +0000 (17:06 -0800)]
autounmask: show file names for suggested changes

Also, advise the user to examine the proposed config changes carefully.

X-Gentoo-Bug: 450960
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=450960

11 years agoSpawnProcess: stdout_fd FD_CLOEXEC
Zac Medico [Tue, 8 Jan 2013 02:08:40 +0000 (18:08 -0800)]
SpawnProcess: stdout_fd FD_CLOEXEC

11 years agoManifestTask: use PipeLogger for monitoring
Zac Medico [Tue, 8 Jan 2013 01:48:11 +0000 (17:48 -0800)]
ManifestTask: use PipeLogger for monitoring

11 years agoDeclare regex literal as such.
Zac Medico [Tue, 8 Jan 2013 01:03:32 +0000 (17:03 -0800)]
Declare regex literal as such.

11 years agoparseManifest2: handle space in name, bug 450736
Zac Medico [Tue, 8 Jan 2013 00:56:12 +0000 (16:56 -0800)]
parseManifest2: handle space in name, bug 450736

11 years agoPipeLogger: handle file object for input_fd
Zac Medico [Mon, 7 Jan 2013 09:16:11 +0000 (01:16 -0800)]
PipeLogger: handle file object for input_fd

11 years agoIf 2 make.conf files found, then warn.
Zac Medico [Mon, 7 Jan 2013 07:11:28 +0000 (23:11 -0800)]
If 2 make.conf files found, then warn.

This may give a clue to those who unintentionally end up with 2
make.conf files somehow.

11 years agoMetadataRegen: simplify _iter_every_cp
Zac Medico [Mon, 7 Jan 2013 00:28:04 +0000 (16:28 -0800)]
MetadataRegen: simplify _iter_every_cp

11 years agoMetadataRegen: call cp_all for each category
Zac Medico [Sun, 6 Jan 2013 20:50:28 +0000 (12:50 -0800)]
MetadataRegen: call cp_all for each category

List categories individually, in order to start yielding quicker,
and in order to reduce latency in case of a signal interrupt.

11 years agoportdbapi.cp_all(): add reverse sort parameter
Zac Medico [Sun, 6 Jan 2013 20:48:04 +0000 (12:48 -0800)]
portdbapi.cp_all(): add reverse sort parameter

11 years ago_keep_scheduling: check _terminated.is_set()
Zac Medico [Sun, 6 Jan 2013 11:15:49 +0000 (03:15 -0800)]
_keep_scheduling: check _terminated.is_set()

This ensures that scheduling loops terminate as soon as possible after
an interrupt is received.

11 years agoManifestScheduler: fix signal interrupt handling
Zac Medico [Sun, 6 Jan 2013 11:05:58 +0000 (03:05 -0800)]
ManifestScheduler: fix signal interrupt handling

11 years agoMetadataRegen: portdbapi.cp_all() already sorted
Zac Medico [Sun, 6 Jan 2013 09:14:18 +0000 (01:14 -0800)]
MetadataRegen: portdbapi.cp_all() already sorted

11 years agoMetadataRegen: fix signal interrupt handling
Zac Medico [Sun, 6 Jan 2013 08:44:12 +0000 (00:44 -0800)]
MetadataRegen: fix signal interrupt handling

We have to force it out of the scheduling loop before
_termination_check can have an effect.

11 years agoHandle os.write() return code with loop.
Zac Medico [Sat, 5 Jan 2013 15:43:20 +0000 (07:43 -0800)]
Handle os.write() return code with loop.

11 years agoBinpkgVerifier: use async FileDigester
Zac Medico [Sat, 5 Jan 2013 15:18:29 +0000 (07:18 -0800)]
BinpkgVerifier: use async FileDigester

11 years agoAdd async FileDigester class.
Zac Medico [Sat, 5 Jan 2013 15:18:05 +0000 (07:18 -0800)]
Add async FileDigester class.

11 years ago.gitignore: __pycache__/
Zac Medico [Sat, 5 Jan 2013 11:14:30 +0000 (03:14 -0800)]
.gitignore: __pycache__/

11 years agoAdd QA_AM_MAINTAINER_MODE for bug #450278.
Zac Medico [Sat, 5 Jan 2013 04:37:35 +0000 (20:37 -0800)]
Add QA_AM_MAINTAINER_MODE for bug #450278.

11 years agoSchedulerInterface: use loop for proxied attrs
Zac Medico [Sat, 5 Jan 2013 03:40:45 +0000 (19:40 -0800)]
SchedulerInterface: use loop for proxied attrs

11 years agoruntests.sh summary: add minimum column width
Zac Medico [Fri, 4 Jan 2013 13:55:00 +0000 (05:55 -0800)]
runtests.sh summary: add minimum column width

11 years agoebuild-ipc: add FifoWriter class
Zac Medico [Fri, 4 Jan 2013 13:22:48 +0000 (05:22 -0800)]
ebuild-ipc: add FifoWriter class

11 years agoebuild-ipc: fix read timeout msg / daemon check
Zac Medico [Fri, 4 Jan 2013 07:34:05 +0000 (23:34 -0800)]
ebuild-ipc: fix read timeout msg / daemon check

It got disabled in commit 06d31ef00da24352a6614f20bccfc892d2120ed9.

11 years agoebuild-ipc: fix waiting message
Zac Medico [Fri, 4 Jan 2013 07:14:07 +0000 (23:14 -0800)]
ebuild-ipc: fix waiting message

It got disabled by commit 439151bb5b0bd2ac4c9d2dd218fe377ce0b988e6.

11 years agoebuild-ipc: use PipeReader in _receive_reply
Zac Medico [Fri, 4 Jan 2013 07:07:00 +0000 (23:07 -0800)]
ebuild-ipc: use PipeReader in _receive_reply

11 years agoebuild-ipc: use PipeReader in _wait
Zac Medico [Fri, 4 Jan 2013 06:29:48 +0000 (22:29 -0800)]
ebuild-ipc: use PipeReader in _wait

11 years agoPipeReader: support plain fd without file obj
Zac Medico [Fri, 4 Jan 2013 06:08:56 +0000 (22:08 -0800)]
PipeReader: support plain fd without file obj

11 years agotest_paren_reduce: disable deprecation warning
Zac Medico [Fri, 4 Jan 2013 04:35:40 +0000 (20:35 -0800)]
test_paren_reduce: disable deprecation warning

11 years agoEnable FD_CLOEXEC for lock fd.
Zac Medico [Fri, 4 Jan 2013 04:25:15 +0000 (20:25 -0800)]
Enable FD_CLOEXEC for lock fd.

11 years agoEnable FD_CLOEXEC for non-blocking pipes.
Zac Medico [Fri, 4 Jan 2013 04:16:17 +0000 (20:16 -0800)]
Enable FD_CLOEXEC for non-blocking pipes.

11 years agoEventLoop: enable FD_CLOEXEC on epoll fd
Zac Medico [Fri, 4 Jan 2013 03:39:19 +0000 (19:39 -0800)]
EventLoop: enable FD_CLOEXEC on epoll fd

11 years agoportage._internal_caller: use global_event_loop
Zac Medico [Fri, 4 Jan 2013 02:23:42 +0000 (18:23 -0800)]
portage._internal_caller: use global_event_loop

It's more efficient to use global_event_loop than a local EventLoop
instance, so do that when we know it's safe.

11 years agoSpawnProcess: support close_fds
Zac Medico [Fri, 4 Jan 2013 00:02:28 +0000 (16:02 -0800)]
SpawnProcess: support close_fds

11 years ago_doebuild_spawn: disable close_fds for "depend"
Zac Medico [Thu, 3 Jan 2013 23:55:42 +0000 (15:55 -0800)]
_doebuild_spawn: disable close_fds for "depend"

11 years agospawn: add close_fds parameter
Zac Medico [Thu, 3 Jan 2013 23:45:38 +0000 (15:45 -0800)]
spawn: add close_fds parameter

11 years agorunTests: portage._internal_caller = True
Zac Medico [Thu, 3 Jan 2013 23:31:15 +0000 (15:31 -0800)]
runTests: portage._internal_caller = True

11 years agoAdd portage._internal_caller var, and use it.
Zac Medico [Thu, 3 Jan 2013 23:04:40 +0000 (15:04 -0800)]
Add portage._internal_caller var, and use it.

11 years agoportdbapi: use global_event_loop when safe
Zac Medico [Thu, 3 Jan 2013 22:42:41 +0000 (14:42 -0800)]
portdbapi: use global_event_loop when safe

11 years agoemerge --depclean: show atoms in verbose output
Zac Medico [Thu, 3 Jan 2013 02:51:47 +0000 (18:51 -0800)]
emerge --depclean: show atoms in verbose output

11 years agoresume_depgraph: check for alternative installed
Zac Medico [Wed, 2 Jan 2013 06:03:54 +0000 (22:03 -0800)]
resume_depgraph: check for alternative installed

When pruning packages from the merge list, only prune them if the
relevant dependency is not satisfied by an alternative package which
is already installed. This should fix bug #448176, and now there's also
reasons logged for why a particular package is dropped.

11 years agodepgraph: dynamic deps parallel metadata regen
Zac Medico [Wed, 2 Jan 2013 04:48:05 +0000 (20:48 -0800)]
depgraph: dynamic deps parallel metadata regen

11 years agoFakeVartree: split _apply_dynamic_deps method
Zac Medico [Wed, 2 Jan 2013 02:42:18 +0000 (18:42 -0800)]
FakeVartree: split _apply_dynamic_deps method

This will eventually be used for parallelization of aux_get/regen
processes.

11 years agorepoman: improve thirdpartymirrors output
Sergei Trofimovich [Wed, 2 Jan 2013 00:44:33 +0000 (16:44 -0800)]
repoman: improve thirdpartymirrors output

11 years agorepoman: tell user which mirror identifiers contain SRC_URI
Sergei Trofimovich [Tue, 1 Jan 2013 14:15:39 +0000 (17:15 +0300)]
repoman: tell user which mirror identifiers contain SRC_URI

before the patch:
    $ repoman full

    RepoMan scours the neighborhood...
      metadata.missing              1
       dev-haskell/qthaskellc/metadata.xml
      SRC_URI.mirror                1
       dev-haskell/qthaskellc/qthaskellc-1.1.4.ebuild: 'http://download.berlios.de/' found in thirdpartymirrors

after the patch:
    $ repoman full

    RepoMan scours the neighborhood...
      metadata.missing              1
       dev-haskell/qthaskellc/metadata.xml
      SRC_URI.mirror                1
       dev-haskell/qthaskellc/qthaskellc-1.1.4.ebuild: 'http://download.berlios.de/' found in thirdpartymirrors: 'mirror://berlios'

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
11 years agouse(): fatal missing IUSE in EAPI 5, bug #449708
Zac Medico [Tue, 1 Jan 2013 23:50:21 +0000 (15:50 -0800)]
use(): fatal missing IUSE in EAPI 5, bug #449708

11 years agorepoman: usex check 4-python and 4-slot-abi
Zac Medico [Tue, 1 Jan 2013 23:39:50 +0000 (15:39 -0800)]
repoman: usex check 4-python and 4-slot-abi

11 years agorepoman: handle EAPI 5 usex, bug #449678
Zac Medico [Tue, 1 Jan 2013 23:23:46 +0000 (15:23 -0800)]
repoman: handle EAPI 5 usex, bug #449678

11 years agoRevert "AsynchronousLock: override _async_wait_cb"
Zac Medico [Tue, 1 Jan 2013 22:37:45 +0000 (14:37 -0800)]
Revert "AsynchronousLock: override _async_wait_cb"

This reverts commit 83cfc04df383b56592b89f1dc58428c0e8d09925.
This override could be bad if the base class needs to call _async_wait
for some reason.

11 years agoruntests.sh: summarize results for all versions
Zac Medico [Tue, 1 Jan 2013 12:24:14 +0000 (04:24 -0800)]
runtests.sh: summarize results for all versions

11 years agoAsynchronousLock: override _async_wait_cb
Zac Medico [Tue, 1 Jan 2013 11:08:49 +0000 (03:08 -0800)]
AsynchronousLock: override _async_wait_cb

11 years agotest_echangelog: sync year with UpdateChangeLog
Zac Medico [Tue, 1 Jan 2013 04:57:07 +0000 (20:57 -0800)]
test_echangelog: sync year with UpdateChangeLog

The code has to be in sync in order to prevent erroneous test failures
triggered by new year's day timezone differences.

11 years agoemerge --depclean: clarify unsatisfied atoms
Zac Medico [Mon, 31 Dec 2012 23:52:46 +0000 (15:52 -0800)]
emerge --depclean: clarify unsatisfied atoms

If the atom is unsatisfied due to a USE dep that's only visible in the
unevaluated form, then display the unevaluated form.

11 years ago_LockThread: use thread-safe EventLoop.idle_add()
Zac Medico [Mon, 31 Dec 2012 22:24:04 +0000 (14:24 -0800)]
_LockThread: use thread-safe EventLoop.idle_add()

11 years agoAsynchronousTask: _async_wait is thread-safe
Zac Medico [Mon, 31 Dec 2012 22:11:38 +0000 (14:11 -0800)]
AsynchronousTask: _async_wait is thread-safe

11 years agoEventLoop.iteration: no IO blocking if possible
Zac Medico [Mon, 31 Dec 2012 03:16:11 +0000 (19:16 -0800)]
EventLoop.iteration: no IO blocking if possible

Avoid blocking for IO if there are any timeout or idle callback events
available to process. This will prevent starvation of the idle
callbacks, which are much more common since commit
a3100be184ba1cac2f672f0a1cadcf01690c6d3f. We don't want these idle
callbacks to be delayed by long periods of IO blocking.

11 years agoAsynchronousTask: add _async_wait method
Zac Medico [Mon, 31 Dec 2012 01:01:59 +0000 (17:01 -0800)]
AsynchronousTask: add _async_wait method

For cases where _start returns synchronously, this method is a
convenient way to trigger an asynchronous call to self.wait()
(in order to notify exit listeners), avoiding excessive event
loop recursion (or stack overflow) that synchronous calling of
exit listeners can cause.

11 years agoUse ctypes in subprocess for bug #448858.
Zac Medico [Sun, 30 Dec 2012 09:33:10 +0000 (01:33 -0800)]
Use ctypes in subprocess for bug #448858.

Isolate ctypes usage in a subprocess, in order to avoid potential
problems with stale cached libraries as described in bug #448858,
comment #14 (also see http://bugs.python.org/issue14597).

11 years agoemerge --select: add -w short option
Zac Medico [Sat, 29 Dec 2012 22:34:42 +0000 (14:34 -0800)]
emerge --select: add -w short option

11 years agoUse run_main_scheduler where possible.
Zac Medico [Sat, 29 Dec 2012 07:44:39 +0000 (23:44 -0800)]
Use run_main_scheduler where possible.

11 years agoAdd run_main_scheduler helper function.
Zac Medico [Sat, 29 Dec 2012 07:18:47 +0000 (23:18 -0800)]
Add run_main_scheduler helper function.

11 years agoUse 'with file' more.
Zac Medico [Sat, 29 Dec 2012 06:30:09 +0000 (22:30 -0800)]
Use 'with file' more.

This helps to minimize ResourceWarning triggered by ^C with python3.

11 years agoegencache: fix --strict-manifests=n
Zac Medico [Sat, 29 Dec 2012 01:11:15 +0000 (17:11 -0800)]
egencache: fix --strict-manifests=n

11 years ago_MergeProcess: tweak merge-sync library lookup
Zac Medico [Fri, 28 Dec 2012 22:44:34 +0000 (14:44 -0800)]
_MergeProcess: tweak merge-sync library lookup

The library handle is no longer cached, since commit
9e37cca4f54260bd8c45a3041fcee00938c71649, so skip the LoadLibrary
call and just call find_library instead.

11 years ago_ctypes: don't cache library, bug #448858
Zac Medico [Fri, 28 Dec 2012 22:31:10 +0000 (14:31 -0800)]
_ctypes: don't cache library, bug #448858

11 years agoman pages: refer to /etc/portage/make.conf
Zac Medico [Fri, 28 Dec 2012 21:36:04 +0000 (13:36 -0800)]
man pages: refer to /etc/portage/make.conf

11 years agoquickpkg.1: document options, bug #243192
Zac Medico [Fri, 28 Dec 2012 21:21:45 +0000 (13:21 -0800)]
quickpkg.1: document options, bug #243192

11 years agoPipeReaderBlockingIO handle threading ImportError
Zac Medico [Fri, 28 Dec 2012 06:30:07 +0000 (22:30 -0800)]
PipeReaderBlockingIO handle threading ImportError

11 years agoEventLoop.iteration(): avoid busy waiting
Zac Medico [Fri, 28 Dec 2012 01:35:49 +0000 (17:35 -0800)]
EventLoop.iteration(): avoid busy waiting

In order to avoid blocking forever when may_block is True (the
default), callers must be careful to ensure that at least one of the
following conditions is met:
1) An event source or timeout is registered which is guaranteed
to trigger at least on event (a call to an idle function
only counts as an event if it returns a False value which
causes it to be stop being called)
2) Another thread is guaranteed to call one of the thread-safe
methods which notify iteration to stop waiting (such as
idle_add or timeout_add).
These rules ensure that iteration is able to block until an event
arrives, without doing any busy waiting that would waste CPU time.

This will fix busy waiting which would be triggered by
PopenPipeBlockingIOTestCase when waiting for the thread from
PipeReaderBlockingIO to call idle_add.

11 years agoAdd PipeReaderBlockingIO, Jython experimentation.
Zac Medico [Thu, 27 Dec 2012 08:15:22 +0000 (00:15 -0800)]
Add PipeReaderBlockingIO, Jython experimentation.

11 years agomerge-sync: handle PyPy syncfs fail, bug #446610
Zac Medico [Thu, 27 Dec 2012 03:10:16 +0000 (19:10 -0800)]
merge-sync: handle PyPy syncfs fail, bug #446610

11 years agoEventLoop: thread-safe idle_add and timeout_add
Zac Medico [Thu, 27 Dec 2012 02:31:18 +0000 (18:31 -0800)]
EventLoop: thread-safe idle_add and timeout_add

This may be useful for using threads to handle blocking IO with Jython,
since Jython lacks the fcntl module which is needed for non-blocking IO
(see http://bugs.jython.org/issue1074).