Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Unified Diff: ports/python_modules/python-host/nacl.patch

Issue 710193003: Reduce the number of times we build a host copy of python. (Closed) Base URL: https://chromium.googlesource.com/external/naclports.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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:

Powered by Google App Engine
This is Rietveld 408576698