python: Fix 32-bit builds
authorFredrik Fornwall <fredrik@fornwall.net>
Tue, 18 Jul 2017 22:59:00 +0000 (00:59 +0200)
committerFredrik Fornwall <fredrik@fornwall.net>
Tue, 18 Jul 2017 22:59:00 +0000 (00:59 +0200)
packages/python/posixmodule.c.patch [new file with mode: 0644]

diff --git a/packages/python/posixmodule.c.patch b/packages/python/posixmodule.c.patch
new file mode 100644 (file)
index 0000000..afbce08
--- /dev/null
@@ -0,0 +1,51 @@
+https://github.com/python/cpython/commit/50e86033de85294d87b7e942701d456342abde8e
+
+diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
+index e8c15a9473c..5c739180ea6 100644
+--- a/Modules/posixmodule.c
++++ b/Modules/posixmodule.c
+@@ -1927,14 +1927,8 @@ _pystat_fromstructstat(STRUCT_STAT *st)
+         return NULL;
+     PyStructSequence_SET_ITEM(v, 0, PyLong_FromLong((long)st->st_mode));
+-#if defined(HAVE_LARGEFILE_SUPPORT) || defined(MS_WINDOWS)
+     Py_BUILD_ASSERT(sizeof(unsigned long long) >= sizeof(st->st_ino));
+-    PyStructSequence_SET_ITEM(v, 1,
+-                              PyLong_FromUnsignedLongLong(st->st_ino));
+-#else
+-    Py_BUILD_ASSERT(sizeof(unsigned long) >= sizeof(st->st_ino));
+-    PyStructSequence_SET_ITEM(v, 1, PyLong_FromUnsignedLong(st->st_ino));
+-#endif
++    PyStructSequence_SET_ITEM(v, 1, PyLong_FromUnsignedLongLong(st->st_ino));
+ #ifdef MS_WINDOWS
+     PyStructSequence_SET_ITEM(v, 2, PyLong_FromUnsignedLong(st->st_dev));
+ #else
+@@ -1948,12 +1942,8 @@ _pystat_fromstructstat(STRUCT_STAT *st)
+     PyStructSequence_SET_ITEM(v, 4, _PyLong_FromUid(st->st_uid));
+     PyStructSequence_SET_ITEM(v, 5, _PyLong_FromGid(st->st_gid));
+ #endif
+-#ifdef HAVE_LARGEFILE_SUPPORT
+-    PyStructSequence_SET_ITEM(v, 6,
+-                              PyLong_FromLongLong((long long)st->st_size));
+-#else
+-    PyStructSequence_SET_ITEM(v, 6, PyLong_FromLong(st->st_size));
+-#endif
++    Py_BUILD_ASSERT(sizeof(long long) >= sizeof(st->st_size));
++    PyStructSequence_SET_ITEM(v, 6, PyLong_FromLongLong(st->st_size));
+ #if defined(HAVE_STAT_TV_NSEC)
+     ansec = st->st_atim.tv_nsec;
+@@ -11451,11 +11441,8 @@ os_DirEntry_inode_impl(DirEntry *self)
+     Py_BUILD_ASSERT(sizeof(unsigned long long) >= sizeof(self->win32_file_index));
+     return PyLong_FromUnsignedLongLong(self->win32_file_index);
+ #else /* POSIX */
+-#ifdef HAVE_LARGEFILE_SUPPORT
+-    return PyLong_FromLongLong((long long)self->d_ino);
+-#else
+-    return PyLong_FromLong((long)self->d_ino);
+-#endif
++    Py_BUILD_ASSERT(sizeof(unsigned long long) >= sizeof(self->d_ino));
++    return PyLong_FromUnsignedLongLong(self->d_ino);
+ #endif
+ }