def spawn_nofetch(portdb, ebuild_path, settings=None, fd_pipes=None): """ Create a NofetchPrivateTmpdir instance, and execute it synchronously. This function must not be called from asynchronous code, since it will trigger event loop recursion which is incompatible with asyncio. """ nofetch = SpawnNofetchWithoutBuilddir(background=False, portdb=portdb, ebuild_path=ebuild_path, scheduler=SchedulerInterface(asyncio._safe_loop()), fd_pipes=fd_pipes, settings=settings) nofetch.start() return nofetch.wait()
def spawn_nofetch(portdb, ebuild_path, settings=None, fd_pipes=None): """ Create a NofetchPrivateTmpdir instance, and execute it synchronously. This function must not be called from asynchronous code, since it will trigger event loop recursion which is incompatible with asyncio. """ nofetch = SpawnNofetchWithoutBuilddir(background=False, portdb=portdb, ebuild_path=ebuild_path, scheduler=SchedulerInterface( asyncio._safe_loop()), fd_pipes=fd_pipes, settings=settings) nofetch.start() return nofetch.wait()
def __init__(self, main=False, event_loop=None): """ @param main: If True then use global_event_loop(), otherwise use a local EventLoop instance (default is False, for safe use in a non-main thread) @type main: bool """ self._term_rlock = threading.RLock() self._terminated = threading.Event() self._terminated_tasks = False self._term_check_handle = None self._max_jobs = 1 self._max_load = None self._scheduling = False self._background = False if event_loop is not None: self._event_loop = event_loop elif main: self._event_loop = global_event_loop() else: self._event_loop = asyncio._safe_loop() self._sched_iface = SchedulerInterface( self._event_loop, is_background=self._is_background)
def __init__(self, main=False, event_loop=None): """ @param main: If True then use global_event_loop(), otherwise use a local EventLoop instance (default is False, for safe use in a non-main thread) @type main: bool """ self._term_rlock = threading.RLock() self._terminated = threading.Event() self._terminated_tasks = False self._term_check_handle = None self._max_jobs = 1 self._max_load = None self._scheduling = False self._background = False if event_loop is not None: self._event_loop = event_loop elif main: self._event_loop = global_event_loop() else: self._event_loop = asyncio._safe_loop() self._sched_iface = SchedulerInterface(self._event_loop, is_background=self._is_background)
def _sync(self, selected_repos, return_messages, emaint_opts=None): msgs = [] if not selected_repos: if return_messages: msgs.append("Nothing to sync... returning") return (True, msgs) return (True, None) if emaint_opts is not None: for k, v in emaint_opts.items(): if v is not None: k = "--" + k.replace("_", "-") self.emerge_config.opts[k] = v # Portage needs to ensure a sane umask for the files it creates. os.umask(0o22) sync_manager = SyncManager(self.emerge_config.target_config.settings, emergelog) max_jobs = ( self.emerge_config.opts.get('--jobs', 1) if 'parallel-fetch' in self.emerge_config.target_config.settings.features else 1) sync_scheduler = SyncScheduler(emerge_config=self.emerge_config, selected_repos=selected_repos, sync_manager=sync_manager, max_jobs=max_jobs, event_loop=asyncio._safe_loop()) sync_scheduler.start() sync_scheduler.wait() retvals = sync_scheduler.retvals msgs.extend(sync_scheduler.msgs) returncode = True if retvals: msgs.extend(self.rmessage(retvals, 'sync')) for repo, retval in retvals: if retval != os.EX_OK: returncode = False break else: msgs.extend(self.rmessage([('None', os.EX_OK)], 'sync')) # run the post_sync_hook one last time for # run only at sync completion hooks if sync_scheduler.global_hooks_enabled: rcode = sync_manager.perform_post_sync_hook('') if rcode: msgs.extend(self.rmessage([('None', rcode)], 'post-sync')) if rcode != os.EX_OK: returncode = False # Reload the whole config. portage._sync_mode = False self._reload_config() self._do_pkg_moves() msgs.extend(self._check_updates()) display_news_notification(self.emerge_config.target_config, self.emerge_config.opts) if return_messages: return (returncode, msgs) return (returncode, None)
def _event_loop(self): return asyncio._safe_loop()
def _event_loop(self): return asyncio._safe_loop()
def _sync(self, selected_repos, return_messages, emaint_opts=None): msgs = [] if not selected_repos: if return_messages: msgs.append("Nothing to sync... returning") return (True, msgs) return (True, None) if emaint_opts is not None: for k, v in emaint_opts.items(): if v is not None: k = "--" + k.replace("_", "-") self.emerge_config.opts[k] = v # Portage needs to ensure a sane umask for the files it creates. os.umask(0o22) sync_manager = SyncManager( self.emerge_config.target_config.settings, emergelog) max_jobs = (self.emerge_config.opts.get('--jobs', 1) if 'parallel-fetch' in self.emerge_config. target_config.settings.features else 1) sync_scheduler = SyncScheduler(emerge_config=self.emerge_config, selected_repos=selected_repos, sync_manager=sync_manager, max_jobs=max_jobs, event_loop=asyncio._safe_loop()) sync_scheduler.start() sync_scheduler.wait() retvals = sync_scheduler.retvals msgs.extend(sync_scheduler.msgs) returncode = True if retvals: msgs.extend(self.rmessage(retvals, 'sync')) for repo, retval in retvals: if retval != os.EX_OK: returncode = False break else: msgs.extend(self.rmessage([('None', os.EX_OK)], 'sync')) # run the post_sync_hook one last time for # run only at sync completion hooks if sync_scheduler.global_hooks_enabled: rcode = sync_manager.perform_post_sync_hook('') if rcode: msgs.extend(self.rmessage([('None', rcode)], 'post-sync')) if rcode != os.EX_OK: returncode = False # Reload the whole config. portage._sync_mode = False self._reload_config() self._do_pkg_moves() msgs.extend(self._check_updates()) display_news_notification(self.emerge_config.target_config, self.emerge_config.opts) if return_messages: return (returncode, msgs) return (returncode, None)