_emerge.EbuildProcess module

class _emerge.EbuildProcess.EbuildProcess(**kwargs)

Bases: _emerge.AbstractEbuildProcess.AbstractEbuildProcess

_CGROUP_CLEANUP_RETRY_MAX = 8
_async_unlock_builddir(returncode=None)

Release the lock asynchronously, and if a returncode parameter is given then set self.returncode and notify exit listeners.

_async_wait()

Override _async_wait to asynchronously unlock self._build_dir when necessary.

_async_waitpid()

Wait for exit status of self.pid asynchronously, and then set the returncode, and finally notify exit listeners via the _async_wait method. Subclasses may override this method in order to implement an alternative means to retrieve pid exit status, or as a means to delay action until some pending task(s) have completed (such as reading data that the subprocess is supposed to have written to a pipe).

_async_waitpid_cb(*args, **kwargs)

Override _async_waitpid_cb to perform cleanup that is not necessarily idempotent.

_bufsize = 4096
_build_dir
_build_dir_unlock
_can_log(slave_fd)
_cancel()

Subclasses should implement this, as a template method to be called by AsynchronousTask.cancel().

_cancel_timeout = 1
_cancel_timeout_cb()
_cancelled_returncode = -2
_cgroup_cleanup()
_dummy_pipe_fd
_eerror(lines)
_elog(elog_funcname, lines)
_enable_ipc_daemon = True
_exit_command
_exit_command_callback()
_exit_command_timeout_cb()
_exit_listener_cb(listener)
_exit_listener_handles
_exit_listeners
_exit_timeout = 10
_exit_timeout_id
_files
_init_ipc_fifos()
_ipc_daemon
_killed_by_signal(signum)
async _main(build_logger, pipe_logger, loop=None)
_main_cancel(build_logger, pipe_logger)
_main_exit(main_task)
_main_task
_main_task_cancel
_orphan_process_warn()
_phases_interactive_whitelist = ('config',)
_phases_without_builddir = ('clean', 'cleanrm', 'depend', 'help')
_pipe(fd_pipes)
Parameters

fd_pipes (dict) – pipes from which to copy terminal size if desired.

_poll()
_read_array(f)

NOTE: array.fromfile() is used here only for testing purposes, because it has bugs in all known versions of Python (including Python 2.7 and Python 3.2). See PipeReaderArrayTestCase.

A benchmark that copies bytes from /dev/zero to /dev/null shows that arrays give a 15% performance improvement for Python 2.7.14. However, arrays significantly decrease performance for Python 3.

_read_buf(fd)

Read self._bufsize into a string of bytes, handling EAGAIN and EIO. This will only call os.read() once, so the caller should call this method in a loop until either None or an empty string of bytes is returned. An empty string of bytes indicates EOF. None indicates EAGAIN.

NOTE: os.read() will be called regardless of the event flags,

since otherwise data may be lost (see bug #531724).

Parameters

fd (int) – file descriptor (non-blocking mode required)

Return type

bytes or None

Returns

A string of bytes, or None

_registered
_selinux_type
_spawn(args, **kwargs)
_spawn_kwarg_names = ('env', 'opt_name', 'fd_pipes', 'uid', 'gid', 'groups', 'umask', 'logfile', 'path_lookup', 'pre_exec', 'close_fds', 'cgroup', 'unshare_ipc', 'unshare_mount', 'unshare_pid', 'unshare_net')
_start()
_start_future
_start_hook()
_start_ipc_daemon()
_start_listeners
_start_post_builddir_lock(lock_future=None, start_ipc_daemon=False)
_unexpected_exit()
_unlock_builddir_exit(unlock_future, returncode=None)
_unregister()

Unregister from the scheduler and close open files.

_wait_hook()

Call this method after the task completes, just before returning the returncode from wait() or poll(). This hook is used to trigger exit listeners when the returncode first becomes available.

_wait_loop(timeout=None)
_waitpid_id
_was_cancelled()

If cancelled, set returncode if necessary and return True. Otherwise, return False.

actionmap
addExitListener(f)

The function will be called with one argument, a reference to self.

addStartListener(f)

The function will be called with one argument, a reference to self.

args
async_wait()

Wait for returncode asynchronously. Notification is available via the add_done_callback method of the returned Future instance.

Returns

Future, result is self.returncode

background
cancel()

Cancel the task, but do not wait for exit status. If asynchronous exit notification is desired, then use addExitListener to add a listener before calling this method. NOTE: Synchronous waiting for status is not supported, since it would be vulnerable to hitting the recursion limit when a large number of tasks need to be terminated simultaneously, like in bug #402335.

cancelled
cgroup
close_fds
copy()

Create a new instance and copy all attributes defined from __slots__ (including those from inherited classes).

env
fd_pipes
gid
groups
isAlive()
log_filter_file
logfile
opt_name
path_lookup
phase
pid
poll()
pre_exec
removeExitListener(f)
removeStartListener(f)
returncode
scheduler
settings
start()

Start an asynchronous task and then return as soon as possible.

uid
umask
unshare_ipc
unshare_mount
unshare_net
unshare_pid
wait()

Wait for the returncode attribute to become ready, and return it. If the returncode is not ready and the event loop is already running, then the async_wait() method should be used instead of wait(), because wait() will raise asyncio.InvalidStateError in this case.

Return type

int

Returns

the value of self.returncode