diff --git a/Modules/expat/xmlparse.c b/Modules/expat/xmlparse.c
--- a/Modules/expat/xmlparse.c
+++ b/Modules/expat/xmlparse.c
@@ -84,6 +84,8 @@
 # define LOAD_LIBRARY_SEARCH_SYSTEM32  0x00000800
 #endif
 
+#define XML_POOR_ENTROPY 1
+
 #if !defined(HAVE_GETRANDOM) && !defined(HAVE_SYSCALL_GETRANDOM) \
     && !defined(HAVE_ARC4RANDOM_BUF) && !defined(HAVE_ARC4RANDOM) \
     && !defined(XML_DEV_URANDOM) \
diff --git a/Modules/getpath.c b/Modules/getpath.c
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -101,8 +101,35 @@
 #endif
 
 
-#if !defined(PREFIX) || !defined(EXEC_PREFIX) || !defined(VERSION) || !defined(VPATH)
-#error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
+   /* These variables were set this way in old versions of Python, but
+      changed somewhere between 3.5.0 and 3.5.3. Here we just force
+      the old way again. A better solution would be to work out where
+      they should be defined, and make the CrystaX build scripts do
+      so. */
+
+/* #if !defined(PREFIX) || !defined(EXEC_PREFIX) || !defined(VERSION) || !defined(VPATH) */
+/* #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined" */
+/* #endif */
+
+#ifndef VERSION
+#define VERSION "2.1"
+#endif
+
+#ifndef VPATH
+#define VPATH "."
+#endif
+
+#ifndef PREFIX
+#  define PREFIX "/usr/local"
+#endif
+
+#ifndef EXEC_PREFIX
+#define EXEC_PREFIX PREFIX
+#endif
+
+#ifndef PYTHONPATH
+#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
+              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
 #endif
 
 #ifndef LANDMARK
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -358,18 +358,20 @@ time_gmtime(PyObject *self, PyObject *args)
 #endif
 }
 
-#ifndef HAVE_TIMEGM
-static time_t
-timegm(struct tm *p)
-{
-    /* XXX: the following implementation will not work for tm_year < 1970.
-       but it is likely that platforms that don't have timegm do not support
-       negative timestamps anyways. */
-    return p->tm_sec + p->tm_min*60 + p->tm_hour*3600 + p->tm_yday*86400 +
-        (p->tm_year-70)*31536000 + ((p->tm_year-69)/4)*86400 -
-        ((p->tm_year-1)/100)*86400 + ((p->tm_year+299)/400)*86400;
-}
-#endif
+/* In the Android build, HAVE_TIMEGM apparently should be defined but isn't. A better fix would be to work out why and fix that. */
+
+/* #ifndef HAVE_TIMEGM */
+/* static time_t */
+/* timegm(struct tm *p) */
+/* { */
+/*     /\* XXX: the following implementation will not work for tm_year < 1970. */
+/*        but it is likely that platforms that don't have timegm do not support */
+/*        negative timestamps anyways. *\/ */
+/*     return p->tm_sec + p->tm_min*60 + p->tm_hour*3600 + p->tm_yday*86400 + */
+/*         (p->tm_year-70)*31536000 + ((p->tm_year-69)/4)*86400 - */
+/*         ((p->tm_year-1)/100)*86400 + ((p->tm_year+299)/400)*86400; */
+/* } */
+/* #endif */
 
 PyDoc_STRVAR(gmtime_doc,
 "gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,\n\
