diff --git a/dev-lang/python/patches/python310-3.10.7.patchset b/dev-lang/python/patches/python3.10-3.10.8.patchset similarity index 87% rename from dev-lang/python/patches/python310-3.10.7.patchset rename to dev-lang/python/patches/python3.10-3.10.8.patchset index 6b607599b..16bc959fe 100644 --- a/dev-lang/python/patches/python310-3.10.7.patchset +++ b/dev-lang/python/patches/python3.10-3.10.8.patchset @@ -1,4 +1,4 @@ -From 62ed086ee059b4926f2de439d241f8ee2ab72ff6 Mon Sep 17 00:00:00 2001 +From 177367d9679fe27e9a38c251bd0e072f85aa7fb3 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Thu, 10 Apr 2014 16:03:33 +0000 Subject: initial Haiku patch @@ -152,7 +152,7 @@ index 0000000..4372ee2 +set -v +eval $PYTHON_FOR_BUILD ../../Tools/scripts/h2py.py -i "'(u_long)'" $HEADERS/posix/netinet/in.h diff --git a/Lib/site.py b/Lib/site.py -index 939893e..51f375e 100644 +index 939893e..108918a 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -281,6 +281,14 @@ def _getuserbase(): @@ -250,7 +250,7 @@ index 4269b0e..314aa75 100644 # Somehow /dev/tty appears seekable on some BSDs self.assertEqual(f.seekable(), False) diff --git a/Makefile.pre.in b/Makefile.pre.in -index ee85f35..445ad51 100644 +index 8ee44bf..9953cc7 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -141,7 +141,7 @@ BINDIR= @bindir@ @@ -362,10 +362,10 @@ index 0d69c29..02f692d 100644 #endif diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c -index ab8618b..b2aee8b 100644 +index 6a9ac2c..e696af1 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c -@@ -7464,7 +7464,9 @@ PyInit__socket(void) +@@ -7473,7 +7473,9 @@ PyInit__socket(void) /* SOCK_RAW is marked as optional in the POSIX specification */ PyModule_AddIntMacro(m, SOCK_RAW); #endif @@ -416,10 +416,10 @@ index acea306..050a3d0 100644 else PyErr_SetString(PyExc_KeyError, "getspnam(): name not found"); diff --git a/configure.ac b/configure.ac -index 0c06914..d3d980c 100644 +index cc69015..310e434 100644 --- a/configure.ac +++ b/configure.ac -@@ -1154,6 +1154,16 @@ if test $enable_shared = "yes"; then +@@ -1159,6 +1159,16 @@ if test $enable_shared = "yes"; then PY3LIBRARY=libpython3.so fi ;; @@ -436,7 +436,7 @@ index 0c06914..d3d980c 100644 hp*|HP*) case `uname -m` in ia64) -@@ -1229,6 +1239,7 @@ AC_PROG_MKDIR_P +@@ -1234,6 +1244,7 @@ AC_PROG_MKDIR_P AC_SUBST(LN) if test -z "$LN" ; then case $ac_sys_system in @@ -444,7 +444,7 @@ index 0c06914..d3d980c 100644 CYGWIN*) LN="ln -s";; *) LN=ln;; esac -@@ -2707,7 +2718,7 @@ then +@@ -2712,7 +2723,7 @@ then BLDSHARED="$LDSHARED" fi ;; @@ -453,7 +453,7 @@ index 0c06914..d3d980c 100644 LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; FreeBSD*) -@@ -2774,7 +2785,7 @@ then +@@ -2779,7 +2790,7 @@ then else CCSHARED="+z"; fi;; Linux-android*) ;; @@ -462,7 +462,7 @@ index 0c06914..d3d980c 100644 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; OpenUNIX*|UnixWare*) if test "$GCC" = "yes" -@@ -2802,7 +2813,7 @@ then +@@ -2807,7 +2818,7 @@ then LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; @@ -471,7 +471,7 @@ index 0c06914..d3d980c 100644 # -u libsys_s pulls in all symbols in libsys Darwin/*) LINKFORSHARED="$extra_undefs -framework CoreFoundation" -@@ -3074,6 +3085,12 @@ AC_SUBST(TZPATH) +@@ -3079,6 +3090,12 @@ AC_SUBST(TZPATH) AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4 AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets @@ -484,7 +484,7 @@ index 0c06914..d3d980c 100644 AC_MSG_CHECKING(for --with-libs) AC_ARG_WITH(libs, AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs (default is no)]), -@@ -4467,6 +4484,7 @@ AC_CHECK_FUNC(__fpu_control, +@@ -4471,6 +4488,7 @@ AC_CHECK_FUNC(__fpu_control, AC_SUBST(LIBM) case $ac_sys_system in Darwin) ;; @@ -493,7 +493,7 @@ index 0c06914..d3d980c 100644 esac AC_MSG_CHECKING(for --with-libm=STRING) diff --git a/setup.py b/setup.py -index 43e807f..6834df3 100644 +index 85a2b26..2779048 100644 --- a/setup.py +++ b/setup.py @@ -86,6 +86,7 @@ CYGWIN = (HOST_PLATFORM == 'cygwin') @@ -504,7 +504,7 @@ index 43e807f..6834df3 100644 CC = os.environ.get("CC") if not CC: CC = sysconfig.get_config_var("CC") -@@ -868,6 +869,11 @@ class PyBuildExt(build_ext): +@@ -869,6 +870,11 @@ class PyBuildExt(build_ext): with open(config_h) as file: self.config_h_vars = sysconfig.parse_config_h(file) @@ -516,7 +516,7 @@ index 43e807f..6834df3 100644 # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb) if HOST_PLATFORM in ['osf1', 'unixware7', 'openunix8']: self.lib_dirs += ['/usr/ccs/lib'] -@@ -914,14 +920,14 @@ class PyBuildExt(build_ext): +@@ -915,14 +921,14 @@ class PyBuildExt(build_ext): extra_compile_args=['-DPy_BUILD_CORE_MODULE'], extra_objects=[shared_math], depends=['_math.h', shared_math], @@ -533,7 +533,7 @@ index 43e807f..6834df3 100644 # time libraries: librt may be needed for clock_gettime() time_libs = [] -@@ -935,7 +941,7 @@ class PyBuildExt(build_ext): +@@ -936,7 +942,7 @@ class PyBuildExt(build_ext): # libm is needed by delta_new() that uses round() and by accum() that # uses modf(). self.add(Extension('_datetime', ['_datetimemodule.c'], @@ -542,7 +542,7 @@ index 43e807f..6834df3 100644 extra_compile_args=['-DPy_BUILD_CORE_MODULE'])) # zoneinfo module self.add(Extension('_zoneinfo', ['_zoneinfo.c'], -@@ -1028,7 +1034,7 @@ class PyBuildExt(build_ext): +@@ -1029,7 +1035,7 @@ class PyBuildExt(build_ext): # # audioop needs libm for floor() in multiple functions. self.add(Extension('audioop', ['audioop.c'], @@ -551,7 +551,7 @@ index 43e807f..6834df3 100644 # CSV files self.add(Extension('_csv', ['_csv.c'])) -@@ -2265,7 +2271,7 @@ class PyBuildExt(build_ext): +@@ -2269,7 +2275,7 @@ class PyBuildExt(build_ext): # function my_sqrt() needs libm for sqrt() self.add(Extension('_ctypes_test', sources=['_ctypes/_ctypes_test.c'], @@ -560,7 +560,7 @@ index 43e807f..6834df3 100644 ffi_inc = sysconfig.get_config_var("LIBFFI_INCLUDEDIR") ffi_lib = None -@@ -2330,7 +2336,7 @@ class PyBuildExt(build_ext): +@@ -2334,7 +2340,7 @@ class PyBuildExt(build_ext): 'Modules', '_decimal', 'libmpdec'))] @@ -569,7 +569,7 @@ index 43e807f..6834df3 100644 sources = [ '_decimal/_decimal.c', '_decimal/libmpdec/basearith.c', -@@ -2587,7 +2593,7 @@ class PyBuildExt(build_ext): +@@ -2591,7 +2597,7 @@ class PyBuildExt(build_ext): )) def detect_nis(self): @@ -579,20 +579,20 @@ index 43e807f..6834df3 100644 return -- -2.30.2 +2.37.3 -From d9cebf903832a1f364da9b702bcf17767ece7acd Mon Sep 17 00:00:00 2001 +From 1f4b6ce5cad2a030114c646952dbc148abc8f865 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Sun, 16 Apr 2017 10:05:42 +0200 Subject: fix for negative errnos diff --git a/Lib/subprocess.py b/Lib/subprocess.py -index ccb46a6..4a8ef65 100644 +index ffe9170..d1aca2c 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py -@@ -1830,6 +1830,8 @@ class Popen: +@@ -1835,6 +1835,8 @@ class Popen: SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) @@ -602,7 +602,7 @@ index ccb46a6..4a8ef65 100644 if child_exec_never_called: err_msg = "" diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c -index a58159a..aa938be 100644 +index b852ad7..60d4a6e 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -623,6 +623,10 @@ error: @@ -617,10 +617,10 @@ index a58159a..aa938be 100644 *--cur = Py_hexdigits[saved_errno % 16]; saved_errno /= 16; -- -2.30.2 +2.37.3 -From b6d2c9b36b2a2560e164f5a3026bbf8ca5aea368 Mon Sep 17 00:00:00 2001 +From 827ba2ca9d05f29cba3506bf1ad9de9b83e45585 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Wed, 24 May 2017 11:09:43 +0000 Subject: Implement CTypes's find_library for Haiku @@ -701,10 +701,10 @@ index 0c2510e..2b4f04c 100644 print(cdll.LoadLibrary("libm.so")) print(cdll.LoadLibrary("libcrypt.so")) -- -2.30.2 +2.37.3 -From 2c1eddce5a0e37a961428a0745c6fd67ab6fae63 Mon Sep 17 00:00:00 2001 +From b658720a43ac7ff9be0e825fbc3ba208e717aab9 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Mon, 23 Sep 2019 09:14:58 +0200 Subject: webbrowser: Support for default browsers on Haiku @@ -727,17 +727,17 @@ index ec3cece..6a29d2a 100755 # Prefer X browsers if present if os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY"): -- -2.30.2 +2.37.3 -From e71e66cd48a32e7b41a770755b84c7a4f9dbefc2 Mon Sep 17 00:00:00 2001 +From 9a9b8f003e77bed5cb9c41a12b06b20b7e6ad91a Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Fri, 4 Oct 2019 22:02:35 +0200 Subject: since 3.8, don't reinit locks on fork. diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py -index 555f598..f151fd0 100644 +index 09810bd..0a92e3f 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -235,7 +235,7 @@ def _releaseLock(): @@ -750,10 +750,10 @@ index 555f598..f151fd0 100644 pass # no-op when os.register_at_fork does not exist. else: -- -2.30.2 +2.37.3 -From 0c2158b279579bd9e01e2009b58433a774f38b55 Mon Sep 17 00:00:00 2001 +From 8f572438ad956810da6a7be3dfd433a15f95bccc Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Fri, 15 May 2020 15:20:57 +0200 Subject: handle errors returned by internal_connect() @@ -761,10 +761,10 @@ Subject: handle errors returned by internal_connect() upstream bug #40628 by Ryan C. Gordon diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c -index b2aee8b..1c43b96 100644 +index e696af1..bf21d2e 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c -@@ -3280,7 +3280,7 @@ sock_connect(PySocketSockObject *s, PyObject *addro) +@@ -3289,7 +3289,7 @@ sock_connect(PySocketSockObject *s, PyObject *addro) } res = internal_connect(s, SAS2SA(&addrbuf), addrlen, 1); @@ -773,7 +773,7 @@ index b2aee8b..1c43b96 100644 return NULL; Py_RETURN_NONE; -@@ -3311,7 +3311,7 @@ sock_connect_ex(PySocketSockObject *s, PyObject *addro) +@@ -3320,7 +3320,7 @@ sock_connect_ex(PySocketSockObject *s, PyObject *addro) } res = internal_connect(s, SAS2SA(&addrbuf), addrlen, 0); @@ -783,20 +783,20 @@ index b2aee8b..1c43b96 100644 return PyLong_FromLong((long) res); -- -2.30.2 +2.37.3 -From 1213f8a74b3940676029784407a5acc633d83345 Mon Sep 17 00:00:00 2001 +From f89256611156df626de21c85286b4d49c7dd5705 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Mon, 19 Oct 2020 18:03:09 +0200 Subject: ttyname_r can use MAXPATHLEN diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c -index 03de470..663e6cc 100644 +index f92e2ae..e5b6042 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c -@@ -3073,11 +3073,14 @@ static PyObject * +@@ -3087,11 +3087,14 @@ static PyObject * os_ttyname_impl(PyObject *module, int fd) /*[clinic end generated code: output=c424d2e9d1cd636a input=9ff5a58b08115c55]*/ { @@ -813,5 +813,58 @@ index 03de470..663e6cc 100644 if (buffer == NULL) { return PyErr_NoMemory(); -- -2.30.2 +2.37.3 + + +From 4eecfa64d1216d685184ae2e8530254c45ea0c7f Mon Sep 17 00:00:00 2001 +From: Oscar Lesta +Date: Fri, 21 Oct 2022 19:58:50 -0300 +Subject: Lib/test: require the "largefile" usage flag for I/O heavy tests. + +The same was done for Windows and MacOSX already. + +This avoids needing several GBs of storage to run the tests +(unless they "largefile" resource usage flag is enabled). + +diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py +index fb83762..32dc8bd 100644 +--- a/Lib/test/test_io.py ++++ b/Lib/test/test_io.py +@@ -601,7 +601,7 @@ class IOTest(unittest.TestCase): + # On Windows and Mac OSX this test consumes large resources; It takes + # a long time to build the >2 GiB file and takes >2 GiB of disk space + # therefore the resource must be enabled to run this test. +- if sys.platform[:3] == 'win' or sys.platform == 'darwin': ++ if sys.platform[:3] == 'win' or sys.platform == 'darwin' or sys.platform == 'haiku1': + support.requires( + 'largefile', + 'test requires %s bytes and a long time to run' % self.LARGE) +diff --git a/Lib/test/test_largefile.py b/Lib/test/test_largefile.py +index 8f6bec1..dcd9678 100644 +--- a/Lib/test/test_largefile.py ++++ b/Lib/test/test_largefile.py +@@ -251,7 +251,7 @@ def setUpModule(): + # takes a long time to build the >2 GiB file and takes >2 GiB of disk + # space therefore the resource must be enabled to run this test. + # If not, nothing after this line stanza will be executed. +- if sys.platform[:3] == 'win' or sys.platform == 'darwin': ++ if sys.platform[:3] == 'win' or sys.platform == 'darwin' or sys.platform == 'haiku1': + requires('largefile', + 'test requires %s bytes and a long time to run' % str(size)) + else: +diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py +index 8f34c18..999063f 100644 +--- a/Lib/test/test_mmap.py ++++ b/Lib/test/test_mmap.py +@@ -806,7 +806,7 @@ class LargeMmapTests(unittest.TestCase): + unlink(TESTFN) + + def _make_test_file(self, num_zeroes, tail): +- if sys.platform[:3] == 'win' or sys.platform == 'darwin': ++ if sys.platform[:3] == 'win' or sys.platform == 'darwin' or sys.platform == 'haiku1': + requires('largefile', + 'test requires %s bytes and a long time to run' % str(0x180000000)) + f = open(TESTFN, 'w+b') +-- +2.37.3 diff --git a/dev-lang/python/patches/python310_x86-3.10.7.patchset b/dev-lang/python/patches/python3.10_x86-3.10.8.patchset similarity index 100% rename from dev-lang/python/patches/python310_x86-3.10.7.patchset rename to dev-lang/python/patches/python3.10_x86-3.10.8.patchset diff --git a/dev-lang/python/python310-3.10.7.recipe b/dev-lang/python/python3.10-3.10.8.recipe similarity index 51% rename from dev-lang/python/python310-3.10.7.recipe rename to dev-lang/python/python3.10-3.10.8.recipe index 5e5b867b5..07a4111cd 100644 --- a/dev-lang/python/python310-3.10.7.recipe +++ b/dev-lang/python/python3.10-3.10.8.recipe @@ -11,12 +11,12 @@ LICENSE="Python" COPYRIGHT="1990-2022 Python Software Foundation" REVISION="1" SOURCE_URI="https://www.python.org/ftp/python/$portVersion/Python-$portVersion.tar.xz" -CHECKSUM_SHA256="6eed8415b7516fb2f260906db5d48dd4c06acc0cb24a7d6cc15296a604dcdc48" +CHECKSUM_SHA256="6a30ecde59c47048013eb5a658c9b5dec277203d2793667f578df7671f7f03f3" SOURCE_DIR="Python-$portVersion" -PATCHES="python310-$portVersion.patchset" +PATCHES="python3.10-$portVersion.patchset" if [ "$secondaryArchSuffix" = _x86 ] ; then PATCHES+=" - python310_x86-$portVersion.patchset + python3.10_x86-$portVersion.patchset " fi @@ -31,7 +31,12 @@ if [ "$targetArchitecture" = x86_gcc2 ]; then commandBinDir=$prefix/bin fi +GLOBAL_WRITABLE_FILES=" + non-packaged/lib/python3.10/site-packages directory keep-old + " + PROVIDES=" + python3.10$secondaryArchSuffix = $portVersion compat >= 3.10 python310$secondaryArchSuffix = $portVersion compat >= 3.10 cmd:2to3_3.10 = $portVersion compat >= 3.10 cmd:idle3.10 = $portVersion compat >= 3.10 @@ -56,6 +61,9 @@ REQUIRES=" lib:libsqlite3$secondaryArchSuffix lib:libz$secondaryArchSuffix " +REPLACES=" + python310$secondaryArchSuffix + " BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel devel:libbz2$secondaryArchSuffix @@ -82,10 +90,6 @@ BUILD_PREREQUIRES=" cmd:make " -GLOBAL_WRITABLE_FILES=" - non-packaged/lib/python3.10/site-packages directory keep-old - " - BUILD() { export CFLAGS="-D_BSD_SOURCE" @@ -95,7 +99,8 @@ BUILD() export OPT="" runConfigure --omit-dirs binDir,includeDir ./configure \ - --enable-shared --without-ensurepip --with-system-ffi --with-readline=editline \ + --enable-shared --enable-optimizations \ + --with-ensurepip=no --with-system-ffi --with-readline=editline \ --with-system-expat --bindir=$commandBinDir --includedir=$developDir/headers # prevent make from rebuilding stuff that requires python @@ -108,7 +113,8 @@ BUILD() INSTALL() { - make install + # altinstall avoids clobbering $prefix/bin/{2to3,idle3,pydoc3,python3,python3-config} + make altinstall rm $libDir/libpython3.so @@ -134,16 +140,96 @@ INSTALL() cd $prefix/lib/python3.10 rm -rf ctypes/test distutils/tests idlelib/idle_test lib2to3/tests \ sqlite3/test test tkinter/test unittest/test - - rm -f $prefix/bin/{2to3,idle3,pydoc3,python3,python3-config} } +# Some of the test will crash, invoking the crash dialog, and will hang waiting for +# user's interaction. To avoid that, make sure to configure your system by adding +# the following lines in the file "~/config/settings/system/debug_server/settings": +##--- +# executable_actions { +# /sources/Python-$portVersion/python kill +# } +##--- +# Replace $portVersion as necessary. + +# For some tests that purposefully crash, it would make sense to add support for +# crash-report suppression (as done for other platforms) on "tests/support/__init__,py"'s +# SuppressCrashReport class. +# But that needs support from Haiku's debug_server, as we can't change settings from +# the recipe's building environment at the moment (https://dev.haiku-os.org/ticket/10301) + TEST() { + # Remove tests data left-overs, if any + rm -f -r /boot/system/cache/tmp/ + rm -f -d -r build/test_python* + cd Lib/test - rm -f test_asynchat.py # this one stalls, so skip it for now - rm -f test_multiprocessing.py # this one stalls, so skip it for now + + # The following tests invoke the crash dialog, and unless your configure + # debug_server default action to "kill" or "report", they will hang waiting for + # user input. See comment above TEST(). + # Otherwise... uncomment these to skip them. +# rm -f test_asyncio/test_futures.py # Crashes: Exception (Segment violation) +# rm -f test_faulthandler.py +# rm -f test_subprocess.py +# rm -f test_threading.py + + # Many of the tests hang/stall. We have two options: + # + # 1- Manually remove the problematic test-cases. + # 2- Set a TIMEOUT. + # + # Option 1: Works, but requires manual identification/mainteinance. + # + # Option 2: Doesn't requires maintaining a list of stalling tests, but: + # - Causes errors at the end of the run: + # "unmounting failed: Device/File/Resource Busy" + # - Leaves dangling threads running when the tests timeout: + # "Warning -- threading_cleanup() failed to cleanup 0 threads (count: 0, dangling: 2)" + # - The time it takes to run the full suite goes from 14 to 30+ minutes, + # + # For Option 2, use: export EXTRATESTOPTS="--timeout=300" + # before calling "make $jobArgs test". + # + # Let's use Option 1, for now at least: + + # These hang reliably. + # You might want then to manually restore them on re-runs, use: + # > git checkout -- Lib/test/ + rm -f test__xxsubinterpreters.py + rm -f test_asynchat.py + rm -f test_concurrent_futures.py + rm -f test_importlib/test_threaded_import.py + rm -f test_interpreters.py + rm -f test_multiprocessing_fork.py + rm -f test_multiprocessing_forkserver.py + rm -f test_multiprocessing_main_handling.py + rm -f test_multiprocessing_spawn.py + rm -f test_multiprocessing.py + rm -f test_socketserver.py + + # "test_asyncio" doesn't seems to runs reliably, even after individually skipping + # all the problematic test-cases that could be identify by running them one by one. + rm -f -r test_asyncio +# rm -f test_asyncio/test_base_events.py +# rm -f test_asyncio/test_buffered_proto.py # Exception on Exception handler. +# rm -f test_asyncio/test_events.py +# rm -f test_asyncio/test_sendfile.py +# rm -f test_asyncio/test_server.py # Exception on Exception handler. +# rm -f test_asyncio/test_sslproto.py # Exception on Exception handler. +# rm -f test_asyncio/test_streams.py + + # These not always hang/stall, but they do it enough to warrant skipping for now. + rm -f test_imaplib.py + rm -f test_signal.py + rm -f test_socket.py + rm -f test_ssl.py + rm -f test_urllib2_localnet.py cd ../.. + + # We could enable/disable certain tests by "resource" type: + # export EXTRATESTOPTS="-u all,-largefile,-audio,-gui,-network,-cpu,-urlfetch,-tzdata" make $jobArgs test }