def test_is_host_build(): from rpython.translator import platform assert platform.host == platform.platform assert platform.is_host_build() platform.set_platform('maemo', None) assert platform.host != platform.platform assert not platform.is_host_build()
def test_is_host_build(): from platform import machine from rpython.translator import platform assert platform.host == platform.platform assert platform.is_host_build() # do we support non-host builds? if machine().startswith('arm'): platform.set_platform('arm', None) assert platform.host != platform.platform assert not platform.is_host_build()
def compile(f, gc, **kwds): from rpython.annotator.listdef import s_list_of_strings from rpython.translator.translator import TranslationContext from rpython.jit.metainterp.warmspot import apply_jit from rpython.translator.platform import platform, is_host_build from rpython.translator.c import genc # t = TranslationContext() t.config.translation.gc = gc if not is_host_build(): t.platform = platform if gc != 'boehm': t.config.translation.gcremovetypeptr = True for name, value in kwds.items(): setattr(t.config.translation, name, value) ann = t.buildannotator() ann.build_types(f, [s_list_of_strings], main_entry_point=True) t.buildrtyper().specialize() if kwds['jit']: patch = get_functions_to_patch() old_value = {} try: for (obj, attr), value in patch.items(): old_value[obj, attr] = getattr(obj, attr) setattr(obj, attr, value) # apply_jit(t) # finally: for (obj, attr), oldvalue in old_value.items(): setattr(obj, attr, oldvalue) cbuilder = genc.CStandaloneBuilder(t, f, t.config) cbuilder.generate_source(defines=cbuilder.DEBUG_DEFINES) cbuilder.compile() return cbuilder
from rpython.rtyper.annlowlevel import hlstr from rpython.rtyper.extfunc import extdef from rpython.rtyper.lltypesystem import rffi, lltype from rpython.rtyper.lltypesystem.rtupletype import TUPLE_TYPE from rpython.rtyper.tool import rffi_platform as platform from rpython.tool.pairtype import pairtype from rpython.tool.sourcetools import func_renamer from rpython.translator.platform import is_host_build from rpython.translator.tool.cbuild import ExternalCompilationInfo # Support for float times is here. # - ALL_STAT_FIELDS contains Float fields if the system can retrieve # sub-second timestamps. # - TIMESPEC is defined when the "struct stat" contains st_atim field. if not is_host_build(): TIMESPEC = None elif sys.platform.startswith('linux') or sys.platform.startswith('openbsd'): TIMESPEC = platform.Struct('struct timespec', [('tv_sec', rffi.TIME_T), ('tv_nsec', rffi.LONG)]) else: TIMESPEC = None # all possible fields - some of them are not available on all platforms ALL_STAT_FIELDS = [ ("st_mode", lltype.Signed), ("st_ino", lltype.SignedLongLong), ("st_dev", lltype.SignedLongLong), ("st_nlink", lltype.Signed), ("st_uid", lltype.Signed),
def autodetect(): if not is_host_build(): return detect_model_from_c_compiler() else: return detect_model_from_host_platform()