def launch(self, *args, **kwargs): agent = self._file('setbufsize.so') shutil.copyfile(setbufsize_path, agent) env = { # Forward LD_LIBRARY_PATH for systems (e.g. Android Termux) that require # it to find shared libraries 'LD_LIBRARY_PATH': os.environ.get('LD_LIBRARY_PATH', ''), 'LD_PRELOAD': agent, 'CPTBOX_STDOUT_BUFFER_SIZE': kwargs.get('stdout_buffer_size'), 'CPTBOX_STDERR_BUFFER_SIZE': kwargs.get('stderr_buffer_size'), } env.update(self.get_env()) return SecurePopen( [utf8bytes(a) for a in self.get_cmdline() + list(args)], executable=utf8bytes(self.get_executable()), security=self.get_security(launch_kwargs=kwargs), address_grace=self.get_address_grace(), personality=self.personality, fds=kwargs.get('fds'), time=kwargs.get('time'), memory=kwargs.get('memory'), wall_time=kwargs.get('wall_time'), stderr=(PIPE if kwargs.get('pipe_stderr', False) else None), env=env, cwd=utf8bytes(self._dir), nproc=self.get_nproc())
def launch(self, *args, **kwargs): agent = self._file('setbufsize.so') shutil.copyfile(setbufsize_path, agent) env = { 'LD_PRELOAD': agent, 'CPTBOX_STDOUT_BUFFER_SIZE': kwargs.get('stdout_buffer_size'), 'CPTBOX_STDERR_BUFFER_SIZE': kwargs.get('stderr_buffer_size'), } env.update(self.get_env()) return SecurePopen( [utf8bytes(a) for a in self.get_cmdline() + list(args)], executable=utf8bytes(self.get_executable()), security=self.get_security(launch_kwargs=kwargs), address_grace=self.get_address_grace(), personality=self.personality, time=kwargs.get('time'), memory=kwargs.get('memory'), wall_time=kwargs.get('wall_time'), stderr=(PIPE if kwargs.get('pipe_stderr', False) else None), env=env, cwd=utf8bytes(self._dir), nproc=self.get_nproc())
def get_env(self): env = super(BaseExecutor, self).get_env() env_key = self.get_executor_name().lower() + '_env' if env_key in self.runtime_dict: env = env or {} env.update(self.runtime_dict[env_key]) return env
def launch(self, *args, **kwargs) -> TracedPopen: assert self._dir is not None for src, dst in kwargs.get('symlinks', {}).items(): src = os.path.abspath(os.path.join(self._dir, src)) # Disallow the creation of symlinks outside the submission directory. if os.path.commonprefix([src, self._dir]) == self._dir: # If a link already exists under this name, it's probably from a # previous case, but might point to something different. if os.path.islink(src): os.unlink(src) os.symlink(dst, src) else: raise InternalError( 'cannot symlink outside of submission directory') agent = self._file('setbufsize.so') # Hardcode the ABIs for different executors for now if self.name == 'CPP17X': shutil.copyfile(setbufsize32_path, agent) elif self.name == 'TUR': shutil.copyfile(setbufsize86_path, agent) else: shutil.copyfile(setbufsize_path, agent) env = { # Forward LD_LIBRARY_PATH for systems (e.g. Android Termux) that require # it to find shared libraries 'LD_LIBRARY_PATH': os.environ.get('LD_LIBRARY_PATH', ''), 'LD_PRELOAD': agent, 'CPTBOX_STDOUT_BUFFER_SIZE': kwargs.get('stdout_buffer_size'), 'CPTBOX_STDERR_BUFFER_SIZE': kwargs.get('stderr_buffer_size'), } env.update(self.get_env()) executable = self.get_executable() assert executable is not None return TracedPopen( [utf8bytes(a) for a in self.get_cmdline(**kwargs) + list(args)], executable=utf8bytes(executable), security=self.get_security(launch_kwargs=kwargs), address_grace=self.get_address_grace(), data_grace=self.data_grace, personality=self.personality, time=kwargs.get('time', 0), memory=kwargs.get('memory', 0), wall_time=kwargs.get('wall_time'), stdin=kwargs.get('stdin'), stdout=kwargs.get('stdout'), stderr=kwargs.get('stderr'), env=env, cwd=utf8bytes(self._dir), nproc=self.get_nproc(), fsize=self.fsize, )
def get_env(self): env = super(GCCExecutor, self).get_env() or {} env.update(GCC_ENV) return env
def get_env(self) -> dict: env = super().get_env() or {} env.update(GCC_ENV) return env
def get_env(self) -> Dict[str, str]: env = super().get_env() or {} env.update(GCC_ENV) return env