Added Python3. (Still testing integration)
This commit is contained in:
@@ -0,0 +1,255 @@
|
||||
diff -ru Python-3.3.5/Modules/Setup.dist Python-3.3.5-android/Modules/Setup.dist
|
||||
--- Python-3.3.5/Modules/Setup.dist 2014-03-09 09:40:23.000000000 +0100
|
||||
+++ Python-3.3.5-android/Modules/Setup.dist 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -118,7 +118,7 @@
|
||||
itertools itertoolsmodule.c # Functions creating iterators for efficient looping
|
||||
|
||||
# access to ISO C locale support
|
||||
-_locale _localemodule.c # -lintl
|
||||
+#_locale _localemodule.c # -lintl
|
||||
|
||||
# Standard I/O baseline
|
||||
_io -I$(srcdir)/Modules/_io _io/_iomodule.c _io/iobase.c _io/fileio.c _io/bytesio.c _io/bufferedio.c _io/textio.c _io/stringio.c
|
||||
diff -ru Python-3.3.5/Modules/_decimal/libmpdec/io.c Python-3.3.5-android/Modules/_decimal/libmpdec/io.c
|
||||
--- Python-3.3.5/Modules/_decimal/libmpdec/io.c 2014-03-09 09:40:25.000000000 +0100
|
||||
+++ Python-3.3.5-android/Modules/_decimal/libmpdec/io.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -868,10 +868,17 @@
|
||||
}
|
||||
spec->type = *cp++;
|
||||
spec->type = (spec->type == 'N') ? 'G' : 'g';
|
||||
+#ifdef __ANDROID__
|
||||
+ spec->dot = ".";
|
||||
+ spec->sep = ",";
|
||||
+ spec->grouping = "\3";
|
||||
+#else
|
||||
lc = localeconv();
|
||||
spec->dot = lc->decimal_point;
|
||||
spec->sep = lc->thousands_sep;
|
||||
spec->grouping = lc->grouping;
|
||||
+#endif
|
||||
+
|
||||
if (mpd_validate_lconv(spec) < 0) {
|
||||
return 0; /* GCOV_NOT_REACHED */
|
||||
}
|
||||
diff -ru Python-3.3.5/Modules/_localemodule.c Python-3.3.5-android/Modules/_localemodule.c
|
||||
--- Python-3.3.5/Modules/_localemodule.c 2014-03-09 09:40:26.000000000 +0100
|
||||
+++ Python-3.3.5-android/Modules/_localemodule.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -38,6 +38,13 @@
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
+#if __ANDROID__
|
||||
+/* Android's locale support is pretty much unusable, it's better to have the
|
||||
+ higher-level module fall back to C locale emulation. */
|
||||
+#error "Android's locale support is too incomplete to create a usable module."
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
PyDoc_STRVAR(locale__doc__, "Support for POSIX locales.");
|
||||
|
||||
static PyObject *Error;
|
||||
@@ -141,6 +148,11 @@
|
||||
if (!result)
|
||||
return NULL;
|
||||
|
||||
+#ifdef __ANDROID__
|
||||
+ /* Don't even try on Android's broken locale.h. */
|
||||
+ goto failed;
|
||||
+#else
|
||||
+
|
||||
/* if LC_NUMERIC is different in the C library, use saved value */
|
||||
l = localeconv();
|
||||
|
||||
@@ -189,6 +201,7 @@
|
||||
RESULT_INT(p_sign_posn);
|
||||
RESULT_INT(n_sign_posn);
|
||||
return result;
|
||||
+#endif // __ANDROID__
|
||||
|
||||
failed:
|
||||
Py_XDECREF(result);
|
||||
diff -ru Python-3.3.5/Modules/main.c Python-3.3.5-android/Modules/main.c
|
||||
--- Python-3.3.5/Modules/main.c 2014-03-09 09:40:27.000000000 +0100
|
||||
+++ Python-3.3.5-android/Modules/main.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -522,7 +522,7 @@
|
||||
oldloc = strdup(setlocale(LC_ALL, NULL));
|
||||
setlocale(LC_ALL, "");
|
||||
for (p = strtok(buf, ","); p != NULL; p = strtok(NULL, ",")) {
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__ANDROID__)
|
||||
/* Use utf-8 on Mac OS X */
|
||||
unicode = PyUnicode_FromString(p);
|
||||
#else
|
||||
diff -ru Python-3.3.5/Objects/unicodeobject.c Python-3.3.5-android/Objects/unicodeobject.c
|
||||
--- Python-3.3.5/Objects/unicodeobject.c 2014-03-09 09:40:30.000000000 +0100
|
||||
+++ Python-3.3.5-android/Objects/unicodeobject.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -3295,13 +3295,22 @@
|
||||
static int
|
||||
locale_error_handler(const char *errors, int *surrogateescape)
|
||||
{
|
||||
+
|
||||
if (errors == NULL) {
|
||||
+#ifdef __ANDROID__
|
||||
+ *surrogateescape = 1;
|
||||
+#else
|
||||
*surrogateescape = 0;
|
||||
+#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp(errors, "strict") == 0) {
|
||||
+#ifdef __ANDROID__
|
||||
+ *surrogateescape = 1;
|
||||
+#else
|
||||
*surrogateescape = 0;
|
||||
+#endif
|
||||
return 0;
|
||||
}
|
||||
if (strcmp(errors, "surrogateescape") == 0) {
|
||||
@@ -3429,7 +3438,7 @@
|
||||
{
|
||||
#ifdef HAVE_MBCS
|
||||
return PyUnicode_EncodeCodePage(CP_ACP, unicode, NULL);
|
||||
-#elif defined(__APPLE__)
|
||||
+#elif defined(__APPLE__) || defined(__ANDROID__)
|
||||
return _PyUnicode_AsUTF8String(unicode, "surrogateescape");
|
||||
#else
|
||||
PyInterpreterState *interp = PyThreadState_GET()->interp;
|
||||
@@ -3709,7 +3718,7 @@
|
||||
{
|
||||
#ifdef HAVE_MBCS
|
||||
return PyUnicode_DecodeMBCS(s, size, NULL);
|
||||
-#elif defined(__APPLE__)
|
||||
+#elif defined(__APPLE__) || defined(__ANDROID__)
|
||||
return PyUnicode_DecodeUTF8Stateful(s, size, "surrogateescape", NULL);
|
||||
#else
|
||||
PyInterpreterState *interp = PyThreadState_GET()->interp;
|
||||
@@ -4835,7 +4844,7 @@
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__ANDROID__)
|
||||
|
||||
/* Simplified UTF-8 decoder using surrogateescape error handler,
|
||||
used to decode the command line arguments on Mac OS X.
|
||||
diff -ru Python-3.3.5/Python/bltinmodule.c Python-3.3.5-android/Python/bltinmodule.c
|
||||
--- Python-3.3.5/Python/bltinmodule.c 2014-03-09 09:40:32.000000000 +0100
|
||||
+++ Python-3.3.5-android/Python/bltinmodule.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -24,7 +24,7 @@
|
||||
#ifdef HAVE_MBCS
|
||||
const char *Py_FileSystemDefaultEncoding = "mbcs";
|
||||
int Py_HasFileSystemDefaultEncoding = 1;
|
||||
-#elif defined(__APPLE__)
|
||||
+#elif defined(__APPLE__) || defined(__ANDROID__)
|
||||
const char *Py_FileSystemDefaultEncoding = "utf-8";
|
||||
int Py_HasFileSystemDefaultEncoding = 1;
|
||||
#else
|
||||
diff -ru Python-3.3.5/Python/fileutils.c Python-3.3.5-android/Python/fileutils.c
|
||||
--- Python-3.3.5/Python/fileutils.c 2014-03-09 09:40:32.000000000 +0100
|
||||
+++ Python-3.3.5-android/Python/fileutils.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -10,7 +10,7 @@
|
||||
#include <langinfo.h>
|
||||
#endif
|
||||
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__ANDROID__)
|
||||
extern wchar_t* _Py_DecodeUTF8_surrogateescape(const char *s, Py_ssize_t size);
|
||||
#endif
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
-#if !defined(__APPLE__) && !defined(MS_WINDOWS)
|
||||
+#if !defined(__APPLE__) && !defined(__ANDROID__) && !defined(MS_WINDOWS)
|
||||
extern int _Py_normalize_encoding(const char *, char *, size_t);
|
||||
|
||||
/* Workaround FreeBSD and OpenIndiana locale encoding issue with the C locale.
|
||||
@@ -194,7 +194,7 @@
|
||||
}
|
||||
#endif /* !defined(__APPLE__) && !defined(MS_WINDOWS) */
|
||||
|
||||
-#if !defined(__APPLE__) && (!defined(MS_WINDOWS) || !defined(HAVE_MBRTOWC))
|
||||
+#if !defined(__APPLE__) && !defined(__ANDROID__) && (!defined(MS_WINDOWS) || !defined(HAVE_MBRTOWC))
|
||||
static wchar_t*
|
||||
decode_ascii_surrogateescape(const char *arg, size_t *size)
|
||||
{
|
||||
@@ -241,7 +241,7 @@
|
||||
wchar_t*
|
||||
_Py_char2wchar(const char* arg, size_t *size)
|
||||
{
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__ANDROID__)
|
||||
wchar_t *wstr;
|
||||
wstr = _Py_DecodeUTF8_surrogateescape(arg, strlen(arg));
|
||||
if (size != NULL) {
|
||||
@@ -384,7 +384,7 @@
|
||||
char*
|
||||
_Py_wchar2char(const wchar_t *text, size_t *error_pos)
|
||||
{
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__ANDROID__)
|
||||
Py_ssize_t len;
|
||||
PyObject *unicode, *bytes = NULL;
|
||||
char *cpath;
|
||||
diff -ru Python-3.3.5/Python/formatter_unicode.c Python-3.3.5-android/Python/formatter_unicode.c
|
||||
--- Python-3.3.5/Python/formatter_unicode.c 2014-03-09 09:40:32.000000000 +0100
|
||||
+++ Python-3.3.5-android/Python/formatter_unicode.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -665,6 +665,7 @@
|
||||
{
|
||||
switch (type) {
|
||||
case LT_CURRENT_LOCALE: {
|
||||
+#ifndef __ANDROID__
|
||||
struct lconv *locale_data = localeconv();
|
||||
locale_info->decimal_point = PyUnicode_DecodeLocale(
|
||||
locale_data->decimal_point,
|
||||
@@ -680,6 +681,7 @@
|
||||
}
|
||||
locale_info->grouping = locale_data->grouping;
|
||||
break;
|
||||
+#endif // __ANDROID__
|
||||
}
|
||||
case LT_DEFAULT_LOCALE:
|
||||
locale_info->decimal_point = PyUnicode_FromOrdinal('.');
|
||||
diff -ru Python-3.3.5/Python/pystrtod.c Python-3.3.5-android/Python/pystrtod.c
|
||||
--- Python-3.3.5/Python/pystrtod.c 2014-03-09 09:40:33.000000000 +0100
|
||||
+++ Python-3.3.5-android/Python/pystrtod.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -177,8 +177,12 @@
|
||||
|
||||
fail_pos = NULL;
|
||||
|
||||
+#ifdef __ANDROID__
|
||||
+ decimal_point = ".";
|
||||
+#else
|
||||
locale_data = localeconv();
|
||||
decimal_point = locale_data->decimal_point;
|
||||
+#endif
|
||||
decimal_point_len = strlen(decimal_point);
|
||||
|
||||
assert(decimal_point_len != 0);
|
||||
@@ -378,8 +382,12 @@
|
||||
Py_LOCAL_INLINE(void)
|
||||
change_decimal_from_locale_to_dot(char* buffer)
|
||||
{
|
||||
+#ifdef __ANDROID__
|
||||
+ const char *decimal_point = ".";
|
||||
+#else
|
||||
struct lconv *locale_data = localeconv();
|
||||
const char *decimal_point = locale_data->decimal_point;
|
||||
+#endif
|
||||
|
||||
if (decimal_point[0] != '.' || decimal_point[1] != 0) {
|
||||
size_t decimal_point_len = strlen(decimal_point);
|
||||
diff -ru Python-3.3.5/Python/pythonrun.c Python-3.3.5-android/Python/pythonrun.c
|
||||
--- Python-3.3.5/Python/pythonrun.c 2014-03-09 09:40:33.000000000 +0100
|
||||
+++ Python-3.3.5-android/Python/pythonrun.c 2014-08-04 22:16:29.000000000 +0200
|
||||
@@ -188,6 +188,8 @@
|
||||
return NULL;
|
||||
}
|
||||
return get_codec_name(codeset);
|
||||
+#elif __ANDROID__
|
||||
+ return get_codec_name("UTF-8");
|
||||
#else
|
||||
PyErr_SetNone(PyExc_NotImplementedError);
|
||||
return NULL;
|
||||
Reference in New Issue
Block a user