/* On-device check: embed CPython 2.7 the way CPythonLauncher does, then run py_embed_spike.py. */ #include #include int main(int argc, char **argv) { const char *home = argc > 1 ? argv[1] : "/data/local/tmp/pyspike"; char buf[2048], spike[1024]; Py_NoSiteFlag = 1; Py_IgnoreEnvironmentFlag = 1; Py_DontWriteBytecodeFlag = 1; Py_FrozenFlag = 1; /* no "Could not find platform libraries" noise */ Py_SetProgramName(argv[0]); Py_SetPythonHome((char *)home); Py_Initialize(); printf("Py_Initialize ok: %s\n", Py_GetVersion()); snprintf(buf, sizeof buf, "import sys\n" "sys.path[:] = ['%s/python27.zip']\n" "sys.argv = ['py_embed_spike.py', '--out', '%s/result.txt']\n", home, home); if (PyRun_SimpleString(buf) != 0) return 2; snprintf(spike, sizeof spike, "%s/py_embed_spike.py", home); FILE *fp = fopen(spike, "r"); if (!fp) { perror(spike); return 3; } int rc = PyRun_SimpleFileExFlags(fp, spike, 1, NULL); printf("spike rc=%d\n", rc); Py_Finalize(); return rc; }