From d90e711e61e676ae3d0fa61fcf6f58a28727cf55 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Tue, 16 Jul 2019 22:09:18 -0600 Subject: [PATCH] Update python to 3.7.4, reduce patch significantly --- recipes/python/python.patch | 275 ------------------------------------ recipes/python/recipe.sh | 18 ++- recipes/python/redox.patch | 91 ++++++++++++ 3 files changed, 104 insertions(+), 280 deletions(-) delete mode 100644 recipes/python/python.patch create mode 100644 recipes/python/redox.patch diff --git a/recipes/python/python.patch b/recipes/python/python.patch deleted file mode 100644 index fc81d5fb2..000000000 --- a/recipes/python/python.patch +++ /dev/null @@ -1,275 +0,0 @@ -diff -ru Python-3.6.1/configure Python-3.6.1-new/configure ---- Python-3.6.1/configure 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/configure 2017-07-03 15:26:44.804152125 -0700 -@@ -3256,6 +3256,9 @@ - *-*-cygwin*) - ac_sys_system=Cygwin - ;; -+ *-*-redox*) -+ ac_sys_system=Redox -+ ;; - *) - # for now, limit cross builds to known configurations - MACHDEP="unknown" -@@ -3302,9 +3305,7 @@ - _host_cpu= - ;; - *) -- # for now, limit cross builds to known configurations -- MACHDEP="unknown" -- as_fn_error $? "cross build not supported for $host" "$LINENO" 5 -+ _host_cpu=$host_cpu - esac - _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" - fi -@@ -11343,7 +11344,6 @@ - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - --$as_echo "#define HAVE_FCHDIR 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -@@ -11393,7 +11393,6 @@ - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - --$as_echo "#define HAVE_FDATASYNC 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -@@ -12093,7 +12092,6 @@ - _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - --$as_echo "#define HAVE_SETGROUPS 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -@@ -12491,8 +12489,8 @@ - $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } - if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : - -- LIBS="$LIBS -lrt" - $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h -+ LIBS="$LIBS -lrt" - - - $as_echo "#define TIMEMODULE_LIB rt" >>confdefs.h -@@ -12510,7 +12508,6 @@ - ac_fn_c_check_func "$LINENO" "clock_getres" "ac_cv_func_clock_getres" - if test "x$ac_cv_func_clock_getres" = xyes; then : - cat >>confdefs.h <<_ACEOF --#define HAVE_CLOCK_GETRES 1 - _ACEOF - - else -@@ -12553,7 +12550,6 @@ - $as_echo "$ac_cv_lib_rt_clock_getres" >&6; } - if test "x$ac_cv_lib_rt_clock_getres" = xyes; then : - -- $as_echo "#define HAVE_CLOCK_GETRES 1" >>confdefs.h - - - fi -diff -ru Python-3.6.1/Lib/posixpath.py Python-3.6.1-new/Lib/posixpath.py ---- Python-3.6.1/Lib/posixpath.py 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Lib/posixpath.py 2017-07-04 13:28:08.034693302 -0700 -@@ -165,11 +165,7 @@ - - def islink(path): - """Test whether a path is a symbolic link""" -- try: -- st = os.lstat(path) -- except (OSError, AttributeError): -- return False -- return stat.S_ISLNK(st.st_mode) -+ return False - - # Being true for dangling symbolic links is also useful. - -diff -ru Python-3.6.1/Modules/clinic/posixmodule.c.h Python-3.6.1-new/Modules/clinic/posixmodule.c.h ---- Python-3.6.1/Modules/clinic/posixmodule.c.h 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/clinic/posixmodule.c.h 2017-07-03 14:47:11.991792352 -0700 -@@ -519,7 +519,7 @@ - - #endif /* defined(HAVE_LCHFLAGS) */ - --#if defined(HAVE_CHROOT) -+#if 0 - - PyDoc_STRVAR(os_chroot__doc__, - "chroot($module, /, path)\n" -diff -ru Python-3.6.1/Modules/faulthandler.c Python-3.6.1-new/Modules/faulthandler.c ---- Python-3.6.1/Modules/faulthandler.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/faulthandler.c 2017-07-03 14:39:30.321353882 -0700 -@@ -906,7 +906,7 @@ - SetErrorMode(mode | SEM_NOGPFAULTERRORBOX); - #endif - --#ifdef HAVE_SYS_RESOURCE_H -+#if 0 - struct rlimit rl; - - /* Disable creation of core dump */ -diff -ru Python-3.6.1/Modules/_io/fileio.c Python-3.6.1-new/Modules/_io/fileio.c ---- Python-3.6.1/Modules/_io/fileio.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/_io/fileio.c 2017-07-04 13:13:07.963211923 -0700 -@@ -457,7 +457,7 @@ - } - } - else { --#if defined(S_ISDIR) && defined(EISDIR) -+#if 0 - /* On Unix, open will succeed for directories. - In Python, there should be no file objects referring to - directories, so we need a check. */ -@@ -467,7 +467,7 @@ - goto error; - } - #endif /* defined(S_ISDIR) */ --#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE -+#if 0 - if (fdfstat.st_blksize > 1) - self->blksize = fdfstat.st_blksize; - #endif /* HAVE_STRUCT_STAT_ST_BLKSIZE */ -diff -ru Python-3.6.1/Modules/posixmodule.c Python-3.6.1-new/Modules/posixmodule.c ---- Python-3.6.1/Modules/posixmodule.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/posixmodule.c 2017-07-03 15:31:13.753481813 -0700 -@@ -188,7 +188,6 @@ - #define HAVE_PIPE 1 - #define HAVE_SYSTEM 1 - #define HAVE_WAIT 1 --#define HAVE_TTYNAME 1 - #endif /* _MSC_VER */ - #endif /* ! __WATCOMC__ || __QNX__ */ - -@@ -2940,7 +2939,7 @@ - #endif /* HAVE_LCHFLAGS */ - - --#ifdef HAVE_CHROOT -+#if 0 - /*[clinic input] - os.chroot - path: path_t -@@ -5563,8 +5562,6 @@ - os_sched_yield_impl(PyObject *module) - /*[clinic end generated code: output=902323500f222cac input=e54d6f98189391d4]*/ - { -- if (sched_yield()) -- return posix_error(); - Py_RETURN_NONE; - } - -@@ -11804,7 +11801,7 @@ - (name_len == 1 || (direntp->d_name[1] == '.' && name_len == 2)); - if (!is_dot) { - entry = DirEntry_from_posix_info(&iterator->path, direntp->d_name, -- name_len, direntp->d_ino -+ name_len, 0 - #ifdef HAVE_DIRENT_D_TYPE - , direntp->d_type - #endif -diff -ru Python-3.6.1/Modules/timemodule.c Python-3.6.1-new/Modules/timemodule.c ---- Python-3.6.1/Modules/timemodule.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Modules/timemodule.c 2017-07-03 14:41:43.868293016 -0700 -@@ -966,7 +966,7 @@ - return PyFloat_FromDouble(total * 1e-7); - #else - --#if defined(HAVE_SYS_RESOURCE_H) -+#if 0 - struct rusage ru; - #endif - #ifdef HAVE_TIMES -@@ -1000,7 +1000,7 @@ - } - #endif - --#if defined(HAVE_SYS_RESOURCE_H) -+#if 0 - if (getrusage(RUSAGE_SELF, &ru) == 0) { - double total; - total = ru.ru_utime.tv_sec + ru.ru_utime.tv_usec * 1e-6; -@@ -1195,7 +1195,7 @@ - - And I'm lazy and hate C so nyer. - */ --#if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__) -+#if 0 - PyObject *otz0, *otz1; - tzset(); - PyModule_AddIntConstant(m, "timezone", timezone); -diff -ru Python-3.6.1/Python/pylifecycle.c Python-3.6.1-new/Python/pylifecycle.c ---- Python-3.6.1/Python/pylifecycle.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Python/pylifecycle.c 2017-07-04 09:28:10.863071915 -0700 -@@ -998,7 +998,7 @@ - #else - if (Py_FileSystemDefaultEncoding == NULL) - { -- Py_FileSystemDefaultEncoding = get_locale_encoding(); -+ Py_FileSystemDefaultEncoding = "utf-8"; - if (Py_FileSystemDefaultEncoding == NULL) - Py_FatalError("Py_Initialize: Unable to get the locale encoding"); - -diff -ru Python-3.6.1/Python/pytime.c Python-3.6.1-new/Python/pytime.c ---- Python-3.6.1/Python/pytime.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Python/pytime.c 2017-07-03 15:29:14.832184973 -0700 -@@ -578,9 +578,6 @@ - info->implementation = "clock_gettime(CLOCK_REALTIME)"; - info->monotonic = 0; - info->adjustable = 1; -- if (clock_getres(CLOCK_REALTIME, &res) == 0) -- info->resolution = res.tv_sec + res.tv_nsec * 1e-9; -- else - info->resolution = 1e-9; - } - #else /* HAVE_CLOCK_GETTIME */ -@@ -714,15 +711,10 @@ - } - - if (info) { -- struct timespec res; - info->monotonic = 1; - info->implementation = implementation; - info->adjustable = 0; -- if (clock_getres(clk_id, &res) != 0) { -- PyErr_SetFromErrno(PyExc_OSError); -- return -1; -- } -- info->resolution = res.tv_sec + res.tv_nsec * 1e-9; -+ info->resolution = 1e-5; - } - if (_PyTime_FromTimespec(tp, &ts, raise) < 0) - return -1; -diff -ru Python-3.6.1/Python/random.c Python-3.6.1-new/Python/random.c ---- Python-3.6.1/Python/random.c 2017-03-20 23:32:38.000000000 -0700 -+++ Python-3.6.1-new/Python/random.c 2017-07-03 16:07:31.740783648 -0700 -@@ -79,7 +79,7 @@ - - #else /* !MS_WINDOWS */ - --#if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL) -+#if 0 - #define PY_GETRANDOM 1 - - /* Call getrandom() to get random bytes: -@@ -316,7 +316,7 @@ - if (urandom_cache.fd >= 0) - fd = urandom_cache.fd; - else { -- fd = _Py_open("/dev/urandom", O_RDONLY); -+ fd = _Py_open("rand:", O_RDONLY); - if (fd < 0) { - if (errno == ENOENT || errno == ENXIO || - errno == ENODEV || errno == EACCES) { -@@ -361,7 +361,7 @@ - } while (0 < size); - } - else { -- fd = _Py_open_noraise("/dev/urandom", O_RDONLY); -+ fd = _Py_open_noraise("rand:", O_RDONLY); - if (fd < 0) { - return -1; - } diff --git a/recipes/python/recipe.sh b/recipes/python/recipe.sh index ed96cb55b..10357bbec 100644 --- a/recipes/python/recipe.sh +++ b/recipes/python/recipe.sh @@ -1,5 +1,6 @@ -VERSION=3.6.2 +VERSION=3.7.4 TAR=https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz +BUILD_DEPENDS=(openssl) export CONFIG_SITE=config.site @@ -15,7 +16,15 @@ function recipe_update { function recipe_build { cp ../config.site ./ - ./configure --build=${BUILD} --host=${HOST} --build=${ARCH} --prefix=/ + ./configure \ + --build=${BUILD} \ + --host=${HOST} \ + --build=${ARCH} \ + --prefix=/ \ + --disable-ipv6 + sed -i 's|#define HAVE_PTHREAD_KILL 1|/* #undef HAVE_PTHREAD_KILL */|g' pyconfig.h + sed -i 's|#define HAVE_SCHED_SETSCHEDULER 1|/* #undef HAVE_SCHED_SETSCHEDULER */|g' pyconfig.h + sed -i 's|#define HAVE_SYS_RESOURCE_H 1|/* #undef HAVE_SYS_RESOURCE_H */|g' pyconfig.h make -j"$(nproc)" skip=1 } @@ -32,8 +41,7 @@ function recipe_clean { function recipe_stage { dest="$(realpath $1)" - make prefix="$dest" install - $STRIP "$dest/bin/python3.6" - rm -rf "$dest"/{share,lib/*.a,include} + make DESTDIR="$dest" install -j"$(nproc)" + "$STRIP" "$dest/bin/python3.7" skip=1 } diff --git a/recipes/python/redox.patch b/recipes/python/redox.patch new file mode 100644 index 000000000..6f1da623d --- /dev/null +++ b/recipes/python/redox.patch @@ -0,0 +1,91 @@ +diff -ruwN source/configure source-new/configure +--- source/configure 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/configure 2019-07-16 21:25:29.432607847 -0600 +@@ -3261,6 +3261,9 @@ + *-*-cygwin*) + ac_sys_system=Cygwin + ;; ++ *-*-redox*) ++ ac_sys_system=Redox ++ ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" +@@ -3293,7 +3296,7 @@ + + if test "$cross_compiling" = yes; then + case "$host" in +- *-*-linux*) ++ *-*-linux*|*-*-redox*) + case "$host_cpu" in + arm*) + _host_cpu=arm +diff -ruwN source/Lib/distutils/util.py source-new/Lib/distutils/util.py +--- source/Lib/distutils/util.py 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Lib/distutils/util.py 2019-07-16 22:07:35.994862914 -0600 +@@ -131,7 +131,7 @@ + if not os.path.isabs(pathname): + return os.path.join(new_root, pathname) + else: +- return os.path.join(new_root, pathname[1:]) ++ return os.path.join(new_root, pathname.lstrip('/')) + + elif os.name == 'nt': + (drive, path) = os.path.splitdrive(pathname) +diff -ruwN source/Modules/main.c source-new/Modules/main.c +--- source/Modules/main.c 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Modules/main.c 2019-07-16 21:46:53.037866142 -0600 +@@ -56,6 +56,16 @@ + } \ + } while (0) + ++#if defined(__redox__) ++wchar_t * wcstok(wchar_t * wcs, const wchar_t * delimiters, wchar_t ** ptr) { ++ return NULL; ++} ++ ++long wcstol(const wchar_t *restrict nptr, wchar_t **restrict endptr, int base) { ++ return 0; ++} ++#endif ++ + #ifdef MS_WINDOWS + #define WCSTOK wcstok_s + #else +diff -ruwN source/Python/pathconfig.c source-new/Python/pathconfig.c +--- source/Python/pathconfig.c 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Python/pathconfig.c 2019-07-16 21:55:34.549726910 -0600 +@@ -5,6 +5,10 @@ + #include "internal/pystate.h" + #include <wchar.h> + ++#if defined(__redox__) ++wchar_t * wcstok(wchar_t * wcs, const wchar_t * delimiters, wchar_t ** ptr); ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif +diff -ruwN source/Python/pytime.c source-new/Python/pytime.c +--- source/Python/pytime.c 2019-07-08 12:03:50.000000000 -0600 ++++ source-new/Python/pytime.c 2019-07-16 21:36:53.233119225 -0600 +@@ -7,6 +7,19 @@ + #include <mach/mach_time.h> /* mach_absolute_time(), mach_timebase_info() */ + #endif + ++#if defined(__redox__) ++int clock_getres(clockid_t clk_id, struct timespec *res) { ++ if (res) { ++ res->tv_sec = 0; ++ res->tv_nsec = 1000; ++ return 0; ++ } else { ++ errno = EFAULT; ++ return -1; ++ } ++} ++#endif ++ + #define _PyTime_check_mul_overflow(a, b) \ + (assert(b > 0), \ + (_PyTime_t)(a) < _PyTime_MIN / (_PyTime_t)(b) \ -- GitLab