<Hermetic> Build Python2.7 statically using Soong.
1. Build Python2.7 statically (for sys libs, still dynamically get
linked) for Linux-x86-64 host.
2. Fixed a small build issue for _testcapi.
Modules/config.c is checked-in as source file. Ideally it can be
generated by parsing Android.bp file with some genrule.
Linux/pyconfig.h is for x86-64bit. For arm versioin, another pyconfig.h
will be checked-in under "Arm" dir.
Module: _ctypes is not contained within this patch. I am still trying to
figure out how the libffi works. Or we maybe use .swig directly.
For .py std libs, this static interpreter depends on /usr/lib/python2.7
for now.
Next step: pack up .py std libs, and bundle with this static
interpreter.
Test: cd out/host/linux-x86/bin/python2.7;./python -S
Bug: b/38395161
Change-Id: I680b120c1e056ff3589e8b4faa836bb204210437
diff --git a/Modules/config.c b/Modules/config.c
new file mode 100644
index 0000000..4f0e55e
--- /dev/null
+++ b/Modules/config.c
@@ -0,0 +1,172 @@
+/* Generated automatically from ./Modules/config.c.in by makesetup. */
+/* -*- C -*- ***********************************************
+Copyright (c) 2000, BeOpen.com.
+Copyright (c) 1995-2000, Corporation for National Research Initiatives.
+Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
+All rights reserved.
+
+See the file "Misc/COPYRIGHT" for information on usage and
+redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+******************************************************************/
+
+/* Module configuration */
+
+/* !!! !!! !!! This file is edited by the makesetup script !!! !!! !!! */
+
+/* This file contains the table of built-in modules.
+ See init_builtin() in import.c. */
+
+#include "Python.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+extern void initthread(void);
+extern void initsignal(void);
+extern void initposix(void);
+extern void initerrno(void);
+extern void initpwd(void);
+extern void init_sre(void);
+extern void init_codecs(void);
+extern void init_weakref(void);
+extern void initzipimport(void);
+extern void init_symtable(void);
+extern void initarray(void);
+extern void initcmath(void);
+extern void initmath(void);
+extern void init_struct(void);
+extern void inittime(void);
+extern void initoperator(void);
+extern void init_testcapi(void);
+extern void init_random(void);
+extern void init_collections(void);
+extern void init_heapq(void);
+extern void inititertools(void);
+extern void initstrop(void);
+extern void init_functools(void);
+extern void initdatetime(void);
+extern void init_bisect(void);
+extern void initunicodedata(void);
+extern void init_io(void);
+extern void initfcntl(void);
+extern void initselect(void);
+extern void initmmap(void);
+extern void init_csv(void);
+extern void init_socket(void);
+extern void inittermios(void);
+extern void init_md5(void);
+extern void init_sha(void);
+extern void init_sha256(void);
+extern void init_sha512(void);
+extern void initbinascii(void);
+extern void initparser(void);
+extern void initcStringIO(void);
+extern void initcPickle(void);
+extern void initxxsubtype(void);
+extern void initfuture_builtins(void);
+extern void init_json(void);
+extern void init_hotshot(void);
+extern void init_lsprof(void);
+extern void initgrp(void);
+extern void initsyslog(void);
+extern void initaudioop(void);
+extern void initresource(void);
+extern void init_multibytecodec(void);
+extern void init_multiprocessing(void);
+
+/* -- ADDMODULE MARKER 1 -- */
+
+extern void PyMarshal_Init(void);
+extern void initimp(void);
+extern void initgc(void);
+extern void init_ast(void);
+extern void _PyWarnings_Init(void);
+
+struct _inittab _PyImport_Inittab[] = {
+
+ {"thread", initthread},
+ {"signal", initsignal},
+ {"posix", initposix},
+ {"errno", initerrno},
+ {"pwd", initpwd},
+ {"_sre", init_sre},
+ {"_codecs", init_codecs},
+ {"_weakref", init_weakref},
+ {"zipimport", initzipimport},
+ {"_symtable", init_symtable},
+ {"array", initarray},
+ {"cmath", initcmath},
+ {"math", initmath},
+ {"_struct", init_struct},
+ {"time", inittime},
+ {"operator", initoperator},
+ {"_testcapi", init_testcapi},
+ {"_random", init_random},
+ {"_collections", init_collections},
+ {"_heapq", init_heapq},
+ {"itertools", inititertools},
+ {"strop", initstrop},
+ {"_functools", init_functools},
+ {"datetime", initdatetime},
+ {"_bisect", init_bisect},
+ {"unicodedata", initunicodedata},
+ {"_io", init_io},
+ {"fcntl", initfcntl},
+ {"select", initselect},
+ {"mmap", initmmap},
+ {"_csv", init_csv},
+ {"_socket", init_socket},
+ {"termios", inittermios},
+ {"_md5", init_md5},
+ {"_sha", init_sha},
+ {"_sha256", init_sha256},
+ {"_sha512", init_sha512},
+ {"binascii", initbinascii},
+ {"parser", initparser},
+ {"cStringIO", initcStringIO},
+ {"cPickle", initcPickle},
+ {"xxsubtype", initxxsubtype},
+ {"future_builtins", initfuture_builtins},
+ {"_json", init_json},
+ {"_hotshot", init_hotshot},
+ {"_lsprof", init_lsprof},
+ {"grp", initgrp},
+ {"syslog", initsyslog},
+ {"audioop", initaudioop},
+ {"resource", initresource},
+ {"_multibytecodec", init_multibytecodec},
+ {"_multiprocessing", init_multiprocessing},
+
+/* -- ADDMODULE MARKER 2 -- */
+
+ /* This module lives in marshal.c */
+ {"marshal", PyMarshal_Init},
+
+ /* This lives in import.c */
+ {"imp", initimp},
+
+ /* This lives in Python/Python-ast.c */
+ {"_ast", init_ast},
+
+ /* These entries are here for sys.builtin_module_names */
+ {"__main__", NULL},
+ {"__builtin__", NULL},
+ {"sys", NULL},
+ {"exceptions", NULL},
+
+ /* This lives in gcmodule.c */
+ {"gc", initgc},
+
+ /* This lives in _warnings.c */
+ {"_warnings", _PyWarnings_Init},
+
+ /* Sentinel */
+ {0, 0}
+};
+
+
+#ifdef __cplusplus
+}
+#endif