| Index: ports/python_modules/python-host/nacl.patch
|
| diff --git a/ports/python_modules/python-host/nacl.patch b/ports/python_modules/python-host/nacl.patch
|
| deleted file mode 100644
|
| index 81f514e08064485824ce1314cc88119c2b5f28e4..0000000000000000000000000000000000000000
|
| --- a/ports/python_modules/python-host/nacl.patch
|
| +++ /dev/null
|
| @@ -1,643 +0,0 @@
|
| -diff --git a/Include/datetime.h b/Include/datetime.h
|
| -index c0e7ffd..b6d6036 100644
|
| ---- a/Include/datetime.h
|
| -+++ b/Include/datetime.h
|
| -@@ -166,6 +166,8 @@ typedef struct {
|
| -
|
| - #ifdef Py_BUILD_CORE
|
| -
|
| -+#define PyDataTime_STATIC 1
|
| -+
|
| - /* Macros for type checking when building the Python core. */
|
| - #define PyDate_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateType)
|
| - #define PyDate_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DateType)
|
| -diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
|
| -index 2aa1cb1..40b0aff 100644
|
| ---- a/Lib/distutils/unixccompiler.py
|
| -+++ b/Lib/distutils/unixccompiler.py
|
| -@@ -286,3 +286,42 @@ class UnixCCompiler(CCompiler):
|
| -
|
| - # Oops, didn't find it in *any* of 'dirs'
|
| - return None
|
| -+
|
| -+# Thanks to the GPAW project for this function.
|
| -+def _link_shared_object (self,
|
| -+ objects,
|
| -+ output_filename,
|
| -+ output_dir=None,
|
| -+ libraries=None,
|
| -+ library_dirs=None,
|
| -+ runtime_library_dirs=None,
|
| -+ export_symbols=None,
|
| -+ debug=0,
|
| -+ extra_preargs=None,
|
| -+ extra_postargs=None,
|
| -+ build_temp=None,
|
| -+ target_lang=None):
|
| -+
|
| -+ if output_dir is None:
|
| -+ (output_dir, output_filename) = os.path.split(output_filename)
|
| -+ output_fullname = os.path.join(output_dir, output_filename)
|
| -+ output_fullname = os.path.abspath(output_fullname)
|
| -+ linkline = "%s %s" % (output_filename[:-2], output_fullname)
|
| -+ for l in library_dirs:
|
| -+ linkline += " -L" + l
|
| -+ for l in libraries:
|
| -+ linkline += " -l" + l
|
| -+ old_fmt = self.static_lib_format
|
| -+ self.static_lib_format = "%s%.0s"
|
| -+ self.create_static_lib(objects,
|
| -+ output_filename,
|
| -+ output_dir,
|
| -+ debug,
|
| -+ target_lang)
|
| -+
|
| -+ self.static_lib_format = old_fmt
|
| -+
|
| -+# Only override when the NACL_SDK_ROOT
|
| -+import os
|
| -+if os.environ.get("NACL_PORT_BUILD", None) in ["dest", "bootstrap"]:
|
| -+ UnixCCompiler.link_shared_object = _link_shared_object
|
| -diff --git a/Makefile.pre.in b/Makefile.pre.in
|
| -index a70119a..3cb02a5 100644
|
| ---- a/Makefile.pre.in
|
| -+++ b/Makefile.pre.in
|
| -@@ -597,14 +597,18 @@ Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule
|
| -
|
| - $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS)
|
| - @$(MKDIR_P) Include
|
| -+ifndef CROSS_COMPILE
|
| - $(MAKE) $(PGEN)
|
| -+endif
|
| - $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
|
| - $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS)
|
| - $(MAKE) $(GRAMMAR_H)
|
| - touch $(GRAMMAR_C)
|
| -
|
| -+ifndef CROSS_COMPILE
|
| - $(PGEN): $(PGENOBJS)
|
| - $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
|
| -+endif
|
| -
|
| - Parser/grammar.o: $(srcdir)/Parser/grammar.c \
|
| - $(srcdir)/Include/token.h \
|
| -@@ -1009,6 +1013,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
|
| - $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
|
| - $(DESTDIR)$(LIBDEST)/distutils/tests ; \
|
| - fi
|
| -+ifndef CROSS_COMPILE
|
| - PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
| - $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
|
| - -d $(LIBDEST) -f \
|
| -@@ -1027,6 +1032,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
|
| - $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
| - -d $(LIBDEST)/site-packages -f \
|
| - -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
|
| -+endif
|
| - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
| - $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
|
| - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
| -diff --git a/Modules/_ctypes/libffi/configure b/Modules/_ctypes/libffi/configure
|
| -index 8230830..1ab4dcb 100755
|
| ---- a/Modules/_ctypes/libffi/configure
|
| -+++ b/Modules/_ctypes/libffi/configure
|
| -@@ -13393,7 +13393,7 @@ case "$host" in
|
| - TARGETDIR=x86
|
| - if test $ac_cv_sizeof_size_t = 4; then
|
| - case "$host" in
|
| -- *-gnux32)
|
| -+ *-gnux32 | *-nacl)
|
| - TARGET=X86_64
|
| - ;;
|
| - *)
|
| -diff --git a/Modules/_ctypes/libffi/src/x86/ffi64.c b/Modules/_ctypes/libffi/src/x86/ffi64.c
|
| -index 2014af2..cacf894 100644
|
| ---- a/Modules/_ctypes/libffi/src/x86/ffi64.c
|
| -+++ b/Modules/_ctypes/libffi/src/x86/ffi64.c
|
| -@@ -202,10 +202,12 @@ classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
|
| - case FFI_TYPE_DOUBLE:
|
| - classes[0] = X86_64_SSEDF_CLASS;
|
| - return 1;
|
| -+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
|
| - case FFI_TYPE_LONGDOUBLE:
|
| - classes[0] = X86_64_X87_CLASS;
|
| - classes[1] = X86_64_X87UP_CLASS;
|
| - return 2;
|
| -+#endif
|
| - case FFI_TYPE_STRUCT:
|
| - {
|
| - const int UNITS_PER_WORD = 8;
|
| -diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
|
| -index e4885d1..8f27a5b 100644
|
| ---- a/Modules/_testcapimodule.c
|
| -+++ b/Modules/_testcapimodule.c
|
| -@@ -1278,6 +1278,9 @@ static int test_run_counter = 0;
|
| -
|
| - static PyObject *
|
| - test_datetime_capi(PyObject *self, PyObject *args) {
|
| -+#ifdef PyDataTime_STATIC
|
| -+ Py_RETURN_NONE;
|
| -+#else
|
| - if (PyDateTimeAPI) {
|
| - if (test_run_counter) {
|
| - /* Probably regrtest.py -R */
|
| -@@ -1295,6 +1298,7 @@ test_datetime_capi(PyObject *self, PyObject *args) {
|
| - Py_RETURN_NONE;
|
| - else
|
| - return NULL;
|
| -+#endif
|
| - }
|
| -
|
| -
|
| -diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
|
| -index cd4672c..9bacfad 100644
|
| ---- a/Modules/posixmodule.c
|
| -+++ b/Modules/posixmodule.c
|
| -@@ -663,9 +663,13 @@ posix_error_with_unicode_filename(Py_UNICODE* name)
|
| -
|
| -
|
| - static PyObject *
|
| --posix_error_with_allocated_filename(char* name)
|
| -+posix_error_with_allocated_filename(const char* func, char* name)
|
| - {
|
| -- PyObject *rc = PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
|
| -+ PyObject *rc;
|
| -+ if (errno == ENOSYS)
|
| -+ rc = PyErr_SetFromErrnoWithFilename(PyExc_OSError, func);
|
| -+ else
|
| -+ rc = PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
|
| - PyMem_Free(name);
|
| - return rc;
|
| - }
|
| -@@ -826,7 +830,7 @@ posix_1str(PyObject *args, char *format, int (*func)(const char*))
|
| - res = (*func)(path1);
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path1);
|
| -+ return posix_error_with_allocated_filename(format, path1);
|
| - PyMem_Free(path1);
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -@@ -1859,7 +1863,7 @@ posix_chmod(PyObject *self, PyObject *args)
|
| - res = chmod(path, i);
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("chmod", path);
|
| - PyMem_Free(path);
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -@@ -1906,7 +1910,7 @@ posix_lchmod(PyObject *self, PyObject *args)
|
| - res = lchmod(path, i);
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("lchmod", path);
|
| - PyMem_Free(path);
|
| - Py_RETURN_NONE;
|
| - }
|
| -@@ -1931,7 +1935,7 @@ posix_chflags(PyObject *self, PyObject *args)
|
| - res = chflags(path, flags);
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("chflags", path);
|
| - PyMem_Free(path);
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -@@ -1957,7 +1961,7 @@ posix_lchflags(PyObject *self, PyObject *args)
|
| - res = lchflags(path, flags);
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("lchflags", path);
|
| - PyMem_Free(path);
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -@@ -2028,7 +2032,7 @@ posix_chown(PyObject *self, PyObject *args)
|
| - res = chown(path, uid, gid);
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("chown", path);
|
| - PyMem_Free(path);
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -@@ -2083,7 +2087,7 @@ posix_lchown(PyObject *self, PyObject *args)
|
| - res = lchown(path, uid, gid);
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("lchown", path);
|
| - PyMem_Free(path);
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -@@ -2478,7 +2482,7 @@ posix_listdir(PyObject *self, PyObject *args)
|
| - dirp = opendir(name);
|
| - Py_END_ALLOW_THREADS
|
| - if (dirp == NULL) {
|
| -- return posix_error_with_allocated_filename(name);
|
| -+ return posix_error_with_allocated_filename("listdir", name);
|
| - }
|
| - if ((d = PyList_New(0)) == NULL) {
|
| - Py_BEGIN_ALLOW_THREADS
|
| -@@ -2500,7 +2504,7 @@ posix_listdir(PyObject *self, PyObject *args)
|
| - closedir(dirp);
|
| - Py_END_ALLOW_THREADS
|
| - Py_DECREF(d);
|
| -- return posix_error_with_allocated_filename(name);
|
| -+ return posix_error_with_allocated_filename("listdir", name);
|
| - }
|
| - }
|
| - if (ep->d_name[0] == '.' &&
|
| -@@ -2660,7 +2664,7 @@ posix_mkdir(PyObject *self, PyObject *args)
|
| - #endif
|
| - Py_END_ALLOW_THREADS
|
| - if (res < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("mkdir", path);
|
| - PyMem_Free(path);
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -@@ -3059,7 +3063,7 @@ done:
|
| - #endif /* HAVE_UTIMES */
|
| - }
|
| - if (res < 0) {
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("utime", path);
|
| - }
|
| - PyMem_Free(path);
|
| - Py_INCREF(Py_None);
|
| -@@ -6316,7 +6320,7 @@ posix_readlink(PyObject *self, PyObject *args)
|
| - n = readlink(path, buf, (int) sizeof buf);
|
| - Py_END_ALLOW_THREADS
|
| - if (n < 0)
|
| -- return posix_error_with_allocated_filename(path);
|
| -+ return posix_error_with_allocated_filename("readlink", path);
|
| -
|
| - PyMem_Free(path);
|
| - v = PyString_FromStringAndSize(buf, n);
|
| -@@ -6562,7 +6566,7 @@ posix_open(PyObject *self, PyObject *args)
|
| - PyErr_Clear();
|
| - #endif
|
| -
|
| -- if (!PyArg_ParseTuple(args, "eti|i",
|
| -+ if (!PyArg_ParseTuple(args, "eti|i:open",
|
| - Py_FileSystemDefaultEncoding, &file,
|
| - &flag, &mode))
|
| - return NULL;
|
| -@@ -6571,7 +6575,7 @@ posix_open(PyObject *self, PyObject *args)
|
| - fd = open(file, flag, mode);
|
| - Py_END_ALLOW_THREADS
|
| - if (fd < 0)
|
| -- return posix_error_with_allocated_filename(file);
|
| -+ return posix_error_with_allocated_filename("open", file);
|
| - PyMem_Free(file);
|
| - return PyInt_FromLong((long)fd);
|
| - }
|
| -diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
|
| -index c2907f6..faa3ad6 100644
|
| ---- a/Modules/pwdmodule.c
|
| -+++ b/Modules/pwdmodule.c
|
| -@@ -94,6 +94,29 @@ mkpwent(struct passwd *p)
|
| - return v;
|
| - }
|
| -
|
| -+#ifdef __native_client__
|
| -+// python relies on a working version of getpwuid(3)
|
| -+// which Native Client does not yet provide.
|
| -+// TODO(sbc): This should only really be needed when
|
| -+// building for the sel_ldr. It should be possible to
|
| -+// use the C-library version (which tries of open files
|
| -+// under /etc) when using nacl_io.
|
| -+static struct passwd *my_getpwuid(uid_t uid)
|
| -+{
|
| -+ static struct passwd dummy = {
|
| -+ "nacl_user",
|
| -+ "nacl_pass",
|
| -+ 1,
|
| -+ 1,
|
| -+ "NaCl User",
|
| -+ "/home/nacl_user",
|
| -+ "/bin/sh",
|
| -+ };
|
| -+ return &dummy;
|
| -+}
|
| -+#define getpwuid my_getpwuid
|
| -+#endif
|
| -+
|
| - PyDoc_STRVAR(pwd_getpwuid__doc__,
|
| - "getpwuid(uid) -> (pw_name,pw_passwd,pw_uid,\n\
|
| - pw_gid,pw_gecos,pw_dir,pw_shell)\n\
|
| -diff --git a/Modules/python.c b/Modules/python.c
|
| -index 2739b8b..5a5b753 100644
|
| ---- a/Modules/python.c
|
| -+++ b/Modules/python.c
|
| -@@ -6,6 +6,19 @@
|
| - #include <floatingpoint.h>
|
| - #endif
|
| -
|
| -+#ifdef __native_client__
|
| -+#include <stdio.h>
|
| -+#include <sys/utsname.h>
|
| -+
|
| -+// Dummy implementation of uname. This is only needed for the sel_ldr
|
| -+// version of python. Otherwise it gets provided by nacl_io.
|
| -+int uname(struct utsname *buf)
|
| -+{
|
| -+ sprintf(buf->sysname, "NaCl");
|
| -+ return 0;
|
| -+}
|
| -+#endif
|
| -+
|
| - int
|
| - main(int argc, char **argv)
|
| - {
|
| -@@ -20,5 +33,9 @@ main(int argc, char **argv)
|
| - m = fpgetmask();
|
| - fpsetmask(m & ~FP_X_OFL);
|
| - #endif
|
| -+#ifdef __native_client__
|
| -+ setvbuf(stdout, NULL, _IOLBF, 0);
|
| -+ setvbuf(stdin, NULL, _IOLBF, 0);
|
| -+#endif
|
| - return Py_Main(argc, argv);
|
| - }
|
| -diff --git a/Modules/timemodule.c b/Modules/timemodule.c
|
| -index 12c43b0..b727afa 100644
|
| ---- a/Modules/timemodule.c
|
| -+++ b/Modules/timemodule.c
|
| -@@ -34,6 +34,11 @@ extern int ftime(struct timeb *);
|
| - #endif /* MS_WINDOWS */
|
| - #endif /* HAVE_FTIME */
|
| -
|
| -+#if defined(__native_client__) && !defined(__GLIBC__)
|
| -+#define timezone _timezone
|
| -+#define daylight _daylight
|
| -+#endif
|
| -+
|
| - #if defined(__WATCOMC__) && !defined(__QNX__)
|
| - #include <i86.h>
|
| - #else
|
| -diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c
|
| -index 17ebab1..93ea45d 100644
|
| ---- a/Python/dynload_shlib.c
|
| -+++ b/Python/dynload_shlib.c
|
| -@@ -84,6 +84,11 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
|
| - PyOS_snprintf(funcname, sizeof(funcname),
|
| - LEAD_UNDERSCORE "init%.200s", shortname);
|
| -
|
| -+
|
| -+/* Native Client's fstat() imlemenation doesn't set st_dev
|
| -+ * and st_ino correctly so disable the dlopen handle cache.
|
| -+ * TODO(sbc): fix NaCl's fstat() */
|
| -+#ifndef __native_client__
|
| - if (fp != NULL) {
|
| - int i;
|
| - struct stat statb;
|
| -@@ -107,6 +112,7 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
|
| - #endif
|
| - }
|
| - }
|
| -+#endif
|
| -
|
| - #if !(defined(PYOS_OS2) && defined(PYCC_GCC))
|
| - dlopenflags = PyThreadState_GET()->interp->dlopenflags;
|
| -diff --git a/Python/getversion.c b/Python/getversion.c
|
| -index 7bd6efd..b4f6702 100644
|
| ---- a/Python/getversion.c
|
| -+++ b/Python/getversion.c
|
| -@@ -8,8 +8,8 @@
|
| - const char *
|
| - Py_GetVersion(void)
|
| - {
|
| -- static char version[250];
|
| -- PyOS_snprintf(version, sizeof(version), "%.80s (%.80s) %.80s",
|
| -+ static char version[270];
|
| -+ PyOS_snprintf(version, sizeof(version), "%.80s (%.80s) %.100s",
|
| - PY_VERSION, Py_GetBuildInfo(), Py_GetCompiler());
|
| - return version;
|
| - }
|
| -diff --git a/Python/thread.c b/Python/thread.c
|
| -index dd333e8..33fec81 100644
|
| ---- a/Python/thread.c
|
| -+++ b/Python/thread.c
|
| -@@ -14,9 +14,19 @@
|
| - library (e.g. gnu pth in pthread emulation) */
|
| - # ifdef HAVE_PTHREAD_H
|
| - # include <pthread.h> /* _POSIX_THREADS */
|
| -+# if defined __native_client__ && !defined __GLIBC__
|
| -+ /* Under NaCl newlib neither pthread.h nor unistd.h defines _POSIX_THREADS.
|
| -+ However this file expects it to be defined if pthreads are present so we
|
| -+ define it here after including pthread.h
|
| -+ TODO(sbc): remove this hack once newlib is fixed:
|
| -+ https://code.google.com/p/nativeclient/issues/detail?id=3551
|
| -+ */
|
| -+# define _POSIX_THREADS
|
| -+# endif
|
| - # endif
|
| - #endif
|
| -
|
| -+
|
| - #ifndef DONT_HAVE_STDIO_H
|
| - #include <stdio.h>
|
| - #endif
|
| -diff --git a/configure b/configure
|
| -index 2e32be2..2140ece 100755
|
| ---- a/configure
|
| -+++ b/configure
|
| -@@ -2861,19 +2861,27 @@ if test "$cross_compiling" = yes; then
|
| - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python interpreter for cross build" >&5
|
| - $as_echo_n "checking for python interpreter for cross build... " >&6; }
|
| - if test -z "$PYTHON_FOR_BUILD"; then
|
| -- for interp in python$PACKAGE_VERSION python2 python; do
|
| -- which $interp >/dev/null 2>&1 || continue
|
| -- if $interp -c 'import sys;sys.exit(not (sys.version_info[:2] >= (2,7) and sys.version_info[0] < 3))'; then
|
| -- break
|
| -- fi
|
| -- interp=
|
| -- done
|
| -+ case "$host" in
|
| -+ *-*-nacl*)
|
| -+ interp=$(cd ../build-nacl-host && pwd)/python.exe
|
| -+ if [ ! -f $interp ]; then interp=$(cd ../build-nacl-host && pwd)/python; fi
|
| -+ ;;
|
| -+ *)
|
| -+ for interp in python$PACKAGE_VERSION python2 python; do
|
| -+ which $interp >/dev/null 2>&1 || continue
|
| -+ if $interp -c 'import sys;sys.exit(not (sys.version_info@<:@:2@:>@ >= (2,7) and sys.version_info@<:@0@:>@ < 3))'; then
|
| -+ break
|
| -+ fi
|
| -+ interp=
|
| -+ done
|
| -+ ;;
|
| -+ esac
|
| - if test x$interp = x; then
|
| - as_fn_error $? "python$PACKAGE_VERSION interpreter not found" "$LINENO" 5
|
| - fi
|
| - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5
|
| - $as_echo "$interp" >&6; }
|
| -- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
|
| -+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(abs_srcdir)/Lib:$(abs_srcdir)/Lib/plat-$(MACHDEP) '$interp
|
| - fi
|
| - elif test "$cross_compiling" = maybe; then
|
| - as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5
|
| -@@ -3177,6 +3185,9 @@ then
|
| - # `define_xopen_source' in the case statement below. For the
|
| - # current supported cross builds, this macro is not adjusted.
|
| - case "$host" in
|
| -+ *-*-nacl*)
|
| -+ ac_sys_system=NaCl
|
| -+ ;;
|
| - *-*-linux*)
|
| - ac_sys_system=Linux
|
| - ;;
|
| -@@ -3226,6 +3237,15 @@ if test "$cross_compiling" = yes; then
|
| - _host_cpu=$host_cpu
|
| - esac
|
| - ;;
|
| -+ *-*-nacl*)
|
| -+ case "$host_cpu" in
|
| -+ arm*)
|
| -+ _host_cpu=arm
|
| -+ ;;
|
| -+ *)
|
| -+ _host_cpu=$host_cpu
|
| -+ esac
|
| -+ ;;
|
| - *-*-cygwin*)
|
| - _host_cpu=
|
| - ;;
|
| -@@ -8235,7 +8255,7 @@ then
|
| - fi
|
| - fi
|
| - ;;
|
| -- Linux*|GNU*|QNX*)
|
| -+ Linux*|GNU*|QNX*|NaCl*)
|
| - LDSHARED='$(CC) -shared'
|
| - LDCXXSHARED='$(CXX) -shared';;
|
| - BSD/OS*/4*)
|
| -@@ -8309,7 +8329,7 @@ then
|
| - then CCSHARED="-fPIC";
|
| - else CCSHARED="+z";
|
| - fi;;
|
| -- Linux*|GNU*) CCSHARED="-fPIC";;
|
| -+ Linux*|GNU*|NaCl*) CCSHARED="-fPIC";;
|
| - BSD/OS*/4*) CCSHARED="-fpic";;
|
| - FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
|
| - OpenUNIX*|UnixWare*)
|
| -@@ -8343,7 +8363,7 @@ then
|
| - LINKFORSHARED="-Wl,-E -Wl,+s";;
|
| - # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
|
| - BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
| -- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
| -+ Linux*|GNU*|NaCl*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
| - # -u libsys_s pulls in all symbols in libsys
|
| - Darwin/*)
|
| - # -u _PyMac_Error is needed to pull in the mac toolbox glue,
|
| -diff --git a/configure.ac b/configure.ac
|
| -index ee7e5fc..eacd03d 100644
|
| ---- a/configure.ac
|
| -+++ b/configure.ac
|
| -@@ -19,18 +19,25 @@ AC_SUBST(host)
|
| - if test "$cross_compiling" = yes; then
|
| - AC_MSG_CHECKING([for python interpreter for cross build])
|
| - if test -z "$PYTHON_FOR_BUILD"; then
|
| -- for interp in python$PACKAGE_VERSION python2 python; do
|
| -- which $interp >/dev/null 2>&1 || continue
|
| -- if $interp -c 'import sys;sys.exit(not (sys.version_info@<:@:2@:>@ >= (2,7) and sys.version_info@<:@0@:>@ < 3))'; then
|
| -- break
|
| -- fi
|
| -- interp=
|
| -- done
|
| -+ case "$host" in
|
| -+ *-*-nacl*)
|
| -+ interp=$(cd ../build-nacl-host && pwd)/python
|
| -+ ;;
|
| -+ *)
|
| -+ for interp in python$PACKAGE_VERSION python2 python; do
|
| -+ which $interp >/dev/null 2>&1 || continue
|
| -+ if $interp -c 'import sys;sys.exit(not (sys.version_info@<:@:2@:>@ >= (2,7) and sys.version_info@<:@0@:>@ < 3))'; then
|
| -+ break
|
| -+ fi
|
| -+ interp=
|
| -+ done
|
| -+ ;;
|
| -+ esac
|
| - if test x$interp = x; then
|
| - AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
|
| - fi
|
| - AC_MSG_RESULT($interp)
|
| -- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
|
| -+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(abs_srcdir)/Lib:$(abs_srcdir)/Lib/plat-$(MACHDEP) '$interp
|
| - fi
|
| - elif test "$cross_compiling" = maybe; then
|
| - AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
|
| -@@ -319,6 +326,9 @@ then
|
| - *-*-cygwin*)
|
| - ac_sys_system=Cygwin
|
| - ;;
|
| -+ *-*-nacl*)
|
| -+ ac_sys_system=NaCl
|
| -+ ;;
|
| - *)
|
| - # for now, limit cross builds to known configurations
|
| - MACHDEP="unknown"
|
| -@@ -362,6 +372,15 @@ if test "$cross_compiling" = yes; then
|
| - _host_cpu=$host_cpu
|
| - esac
|
| - ;;
|
| -+ *-*-nacl*)
|
| -+ case "$host_cpu" in
|
| -+ arm*)
|
| -+ _host_cpu=arm
|
| -+ ;;
|
| -+ *)
|
| -+ _host_cpu=$host_cpu
|
| -+ esac
|
| -+ ;;
|
| - *-*-cygwin*)
|
| - _host_cpu=
|
| - ;;
|
| -@@ -2017,7 +2036,7 @@ then
|
| - fi
|
| - fi
|
| - ;;
|
| -- Linux*|GNU*|QNX*)
|
| -+ Linux*|GNU*|QNX*|NaCl*)
|
| - LDSHARED='$(CC) -shared'
|
| - LDCXXSHARED='$(CXX) -shared';;
|
| - BSD/OS*/4*)
|
| -@@ -2089,7 +2108,7 @@ then
|
| - then CCSHARED="-fPIC";
|
| - else CCSHARED="+z";
|
| - fi;;
|
| -- Linux*|GNU*) CCSHARED="-fPIC";;
|
| -+ Linux*|GNU*|NaCl*) CCSHARED="-fPIC";;
|
| - BSD/OS*/4*) CCSHARED="-fpic";;
|
| - FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
|
| - OpenUNIX*|UnixWare*)
|
| -@@ -2121,7 +2140,7 @@ then
|
| - LINKFORSHARED="-Wl,-E -Wl,+s";;
|
| - # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
|
| - BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
| -- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
| -+ Linux*|GNU*|NaCl*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
| - # -u libsys_s pulls in all symbols in libsys
|
| - Darwin/*)
|
| - # -u _PyMac_Error is needed to pull in the mac toolbox glue,
|
| -diff --git a/setup.py b/setup.py
|
| -index 2b4119a..a3a70cc 100644
|
| ---- a/setup.py
|
| -+++ b/setup.py
|
| -@@ -1404,7 +1404,9 @@ class PyBuildExt(build_ext):
|
| - version = line.split()[2]
|
| - break
|
| - if version >= version_req:
|
| -- if (self.compiler.find_library_file(lib_dirs, 'z')):
|
| -+ # Unconditionally try to link zlib.
|
| -+ # Changing the library path seems to provoke other issues.
|
| -+ if True or (self.compiler.find_library_file(lib_dirs, 'z')):
|
| - if host_platform == "darwin":
|
| - zlib_extra_link_args = ('-Wl,-search_paths_first',)
|
| - else:
|
|
|