def test_create_exe(): if not os.name == 'nt': py.test.skip('Windows only test') dst_name = udir.join('dst/pypy.exe') src_name = udir.join('src/dydy2.exe') dll_name = udir.join('src/pypy.dll') lib_name = udir.join('src/pypy.lib') pdb_name = udir.join('src/pypy.pdb') src_name.ensure() src_name.write('exe') dll_name.ensure() dll_name.write('dll') lib_name.ensure() lib_name.write('lib') pdb_name.ensure() pdb_name.write('pdb') dst_name.ensure() class CBuilder(object): shared_library_name = dll_name td = TranslationDriver(exe_name=str(dst_name)) td.c_entryp = str(src_name) td.cbuilder = CBuilder() td.create_exe() assert dst_name.read() == 'exe' assert dst_name.new(ext='dll').read() == 'dll' assert dst_name.new(purebasename='python27',ext='lib').read() == 'lib'
def main(): assert not we_are_translated() driver = TranslationDriver() optiondescr = get_additional_config_options() config = get_combined_translation_config( optiondescr, existing_config=driver.config, translating=True) driver.config = config tgt = target(driver, []) try: f, _1, _2 = tgt except TypeError: f = tgt except ValueError: f, _ = tgt try: sys.exit(f(sys.argv)) except SystemExit: raise except: _type, value, tb = sys.exc_info() traceback.print_exception(_type, value, tb) pdb.post_mortem(tb)
def test_create_exe(): if not os.name == 'nt': py.test.skip('Windows only test') dst_name = udir.join('dst/pypy.exe') src_name = udir.join('src/dydy2.exe') wsrc_name = udir.join('src/dydy2w.exe') dll_name = udir.join('src/pypy.dll') lib_name = udir.join('src/pypy.lib') pdb_name = udir.join('src/pypy.pdb') src_name.ensure() src_name.write('exe') wsrc_name.ensure() wsrc_name.write('wexe') dll_name.ensure() dll_name.write('dll') lib_name.ensure() lib_name.write('lib') pdb_name.ensure() pdb_name.write('pdb') # Create the dst directory dst_name.ensure() class CBuilder(object): shared_library_name = dll_name td = TranslationDriver(exe_name=str(dst_name)) td.c_entryp = str(src_name) td.cbuilder = CBuilder() td.create_exe() assert dst_name.read() == 'exe' assert dst_name.new(ext='dll').read() == 'dll' assert dst_name.new(ext='lib').read() == 'lib' assert dst_name.new(purebasename=dst_name.purebasename + 'w').read() == 'wexe'
def test_ctr(): td = TranslationDriver() expected = [ 'annotate', 'backendopt', 'llinterpret', 'rtype', 'source', 'compile', 'pyjitpl' ] assert set(td.exposed) == set(expected) assert td.backend_select_goals(['compile_c']) == ['compile_c'] assert td.backend_select_goals(['compile']) == ['compile_c'] assert td.backend_select_goals(['rtype']) == ['rtype_lltype'] assert td.backend_select_goals(['rtype_lltype']) == ['rtype_lltype'] assert td.backend_select_goals(['backendopt']) == ['backendopt_lltype'] assert td.backend_select_goals(['backendopt_lltype' ]) == ['backendopt_lltype'] td = TranslationDriver({'backend': None, 'type_system': None}) assert td.backend_select_goals(['compile_c']) == ['compile_c'] py.test.raises(Exception, td.backend_select_goals, ['compile']) py.test.raises(Exception, td.backend_select_goals, ['rtype']) assert td.backend_select_goals(['rtype_lltype']) == ['rtype_lltype'] py.test.raises(Exception, td.backend_select_goals, ['backendopt']) assert td.backend_select_goals(['backendopt_lltype' ]) == ['backendopt_lltype'] expected = [ 'annotate', 'backendopt_lltype', 'llinterpret_lltype', 'rtype_lltype', 'source_c', 'compile_c', 'pyjitpl_lltype', ] assert set(td.exposed) == set(expected) td = TranslationDriver({'backend': None, 'type_system': 'lltype'}) assert td.backend_select_goals(['compile_c']) == ['compile_c'] py.test.raises(Exception, td.backend_select_goals, ['compile']) assert td.backend_select_goals(['rtype_lltype']) == ['rtype_lltype'] assert td.backend_select_goals(['rtype']) == ['rtype_lltype'] assert td.backend_select_goals(['backendopt']) == ['backendopt_lltype'] assert td.backend_select_goals(['backendopt_lltype' ]) == ['backendopt_lltype'] expected = [ 'annotate', 'backendopt', 'llinterpret', 'rtype', 'source_c', 'compile_c', 'pyjitpl' ] assert set(td.exposed) == set(expected)
def print_help(config): to_optparse(config).print_help() take_options = True def get_additional_config_options(): return system.translation_options() if __name__ == '__main__': assert not objectmodel.we_are_translated() from rpython.translator.driver import TranslationDriver driver = TranslationDriver() driver.config = get_combined_translation_config( system.translation_options(), translating=False) if "--" in sys.argv: idx = sys.argv.index("--") configargs, args = sys.argv[0:idx], sys.argv[idx:] else: configargs, args = [], sys.argv f, _, _ = target(driver, configargs) try: sys.exit(f(args)) except SystemExit: pass except: if hasattr(sys, 'ps1') or not sys.stderr.isatty(): # we are in interactive mode or we don't have a tty-like
# _____ Target and Main _____ def target(driver, *args): driver.exe_name = "rsqueak" return safe_entry_point, None def jitpolicy(self): return JitPolicy() if __name__ == '__main__': assert not objectmodel.we_are_translated() from rpython.translator.driver import TranslationDriver f, _ = target(TranslationDriver(), sys.argv) try: sys.exit(f(sys.argv)) except SystemExit: pass except: if hasattr(sys, 'ps1') or not sys.stderr.isatty(): # we are in interactive mode or we don't have a tty-like # device, so we call the default hook sys.__excepthook__(type, value, tb) else: import pdb, traceback _type, value, tb = sys.exc_info() traceback.print_exception(_type, value, tb) pdb.post_mortem(tb)
def test_ctr(): td = TranslationDriver() expected = ['annotate', 'backendopt', 'llinterpret', 'rtype', 'source', 'compile', 'pyjitpl'] assert set(td.exposed) == set(expected) assert td.backend_select_goals(['compile_c']) == ['compile_c'] assert td.backend_select_goals(['compile']) == ['compile_c'] assert td.backend_select_goals(['rtype']) == ['rtype_lltype'] assert td.backend_select_goals(['rtype_lltype']) == ['rtype_lltype'] assert td.backend_select_goals(['backendopt']) == ['backendopt_lltype'] assert td.backend_select_goals(['backendopt_lltype']) == [ 'backendopt_lltype'] td = TranslationDriver({'backend': None, 'type_system': None}) assert td.backend_select_goals(['compile_c']) == ['compile_c'] py.test.raises(Exception, td.backend_select_goals, ['compile']) py.test.raises(Exception, td.backend_select_goals, ['rtype']) assert td.backend_select_goals(['rtype_lltype']) == ['rtype_lltype'] py.test.raises(Exception, td.backend_select_goals, ['backendopt']) assert td.backend_select_goals(['backendopt_lltype']) == [ 'backendopt_lltype'] expected = ['annotate', 'backendopt_lltype', 'llinterpret_lltype', 'rtype_lltype', 'source_c', 'compile_c', 'pyjitpl_lltype', ] assert set(td.exposed) == set(expected) td = TranslationDriver({'backend': None, 'type_system': 'lltype'}) assert td.backend_select_goals(['compile_c']) == ['compile_c'] py.test.raises(Exception, td.backend_select_goals, ['compile']) assert td.backend_select_goals(['rtype_lltype']) == ['rtype_lltype'] assert td.backend_select_goals(['rtype']) == ['rtype_lltype'] assert td.backend_select_goals(['backendopt']) == ['backendopt_lltype'] assert td.backend_select_goals(['backendopt_lltype']) == [ 'backendopt_lltype'] expected = ['annotate', 'backendopt', 'llinterpret', 'rtype', 'source_c', 'compile_c', 'pyjitpl'] assert set(td.exposed) == set(expected)
def parser(config): return to_optparse(config, useoptions=["rsqueak.*"]) def print_help(config): to_optparse(config).print_help() take_options = True def get_additional_config_options(): return system.translation_options() if __name__ == '__main__': assert not objectmodel.we_are_translated() from rpython.translator.driver import TranslationDriver driver = TranslationDriver() driver.config = get_combined_translation_config( system.translation_options(), translating=False) if "--" in sys.argv: idx = sys.argv.index("--") configargs, args = sys.argv[0:idx], sys.argv[idx:] else: configargs, args = [], sys.argv f, _, _ = target(driver, configargs) try: sys.exit(f(args)) except SystemExit: pass except: if hasattr(sys, 'ps1') or not sys.stderr.isatty():
def test_compile_c(host, suffix): exe_name = 'pypy-%(backend)s' # Created by the fake "compile" function # Create the dst directory to be tested dst_name = udir.join('dst/pypy-c' + suffix) dst_name.ensure() class CBuilder(object): def compile(self, exe_name): from rpython.translator.tool.cbuild import ExternalCompilationInfo # CBuilder.gen_makefile is called via CBuilder.generate_source # in driver.task_source_c. We are faking parts of it here targetdir = udir.join('src') exe_name = targetdir.join(exe_name) platform = host(cc='not_really_going_to_compile') mk = platform.gen_makefile( [], ExternalCompilationInfo(), exe_name=exe_name, path=targetdir, shared=True, ) # "compile" the needed outputs src_name = udir.join('src/pypy-c' + suffix) src_name.ensure() src_name.write('exe') dll_name = udir.join('src/pypy-c.dll') dll_name.ensure() dll_name.write('dll') self.shared_library_name = dll_name # mock the additional windows artifacts as well wsrc_name = udir.join('src/pypy-cw.exe') wsrc_name.ensure() wsrc_name.write('wexe') self.executable_name_w = wsrc_name lib_name = udir.join('src/pypy-c.lib') lib_name.ensure() lib_name.write('lib') pdb_name = udir.join('src/pypy-c.pdb') pdb_name.ensure() pdb_name.write('pdb') self.executable_name = mk.exe_name td = TranslationDriver(exe_name=str(exe_name)) # Normally done in the database_c task td.cbuilder = CBuilder() # Normally done when creating the driver via from_targetspec td.standalone = True cwd = os.getcwd() # This calls compile(), sets td.c_entryp to CBuilder.executable_name, # and calls create_exe(). We must cd into the target directory since # create_exe() copies back to the current directory try: os.chdir(dst_name.dirname) td.task_compile_c() finally: os.chdir(cwd) assert dst_name.read() == 'exe' assert dst_name.new(ext='dll').read() == 'dll' if host is windows.MsvcPlatform: assert dst_name.new(ext='lib').read() == 'lib' assert dst_name.new(purebasename=dst_name.purebasename + 'w').read() == 'wexe'