def from_targetspec(targetspec_dic, config=None, args=None, empty_translator=None, disable=[], default_goal=None): if args is None: args = [] driver = TranslationDriver(config=config, default_goal=default_goal, disable=disable) # patch some attributes of the os module to make sure they # have the same value on every platform. backend, ts = driver.get_backend_and_type_system() if backend in ('cli', 'jvm'): from pypy.translator.oosupport.support import patch_os driver.old_cli_defs = patch_os() target = targetspec_dic['target'] spec = target(driver, args) try: entry_point, inputtypes, policy = spec except ValueError: entry_point, inputtypes = spec policy = None driver.setup(entry_point, inputtypes, policy=policy, extra=targetspec_dic, empty_translator=empty_translator) return driver
def test_patch_os(self): import os from pypy.translator.oosupport.support import patch_os, unpatch_os, NT_OS original_O_CREAT = os.O_CREAT olddefs = patch_os() assert os.O_CREAT == NT_OS['O_CREAT'] unpatch_os(olddefs) assert os.O_CREAT == original_O_CREAT
def compile_function(func, annotation=[], graph=None, backendopt=True, auto_raise_exc=False, exctrans=False, annotatorpolicy=None, nowrap=False): olddefs = patch_os() gen = _build_gen(func, annotation, graph, backendopt, exctrans, annotatorpolicy, nowrap) gen.generate_source() exe_name = gen.build_exe() unpatch_os(olddefs) # restore original values return CliFunctionWrapper(exe_name, func.__name__, auto_raise_exc)
def compile(self, fn, args, ann=None, backendopt=False): if ann is None: ann = [lltype_to_annotation(typeOf(x)) for x in args] if self._func is fn and self._ann == ann: return JvmGeneratedSourceWrapper(self._jvm_src) else: self._func = fn self._ann = ann olddefs = patch_os() self._jvm_src = generate_source_for_function(fn, ann, backendopt) unpatch_os(olddefs) if not getoption('noasm'): self._jvm_src.compile() return JvmGeneratedSourceWrapper(self._jvm_src)
def pre_translation_hook(self): from pypy.translator.oosupport.support import patch_os self.olddefs = patch_os()