From 0327458e50968928a5a1031d23ff48a8c53d87c9 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 18 Jan 2018 11:07:33 +0100 Subject: [PATCH 1/4] bpo-32593: Drop FreeBSD 9 and older support Drop support of FreeBSD 9 and older. --- Doc/library/time.rst | 4 ++-- Include/py_curses.h | 34 ++++++++-------------------- Include/pyport.h | 12 +--------- Lib/distutils/unixccompiler.py | 2 +- Lib/test/test_asyncio/test_events.py | 2 -- Lib/test/test_io.py | 2 -- Lib/test/test_logging.py | 9 +------- Lib/test/test_os.py | 4 +--- Lib/test/test_posix.py | 1 + Lib/test/test_resource.py | 1 - Lib/test/test_signal.py | 21 +---------------- Lib/test/test_socket.py | 4 ---- Lib/test/test_threading.py | 3 +-- Lib/unittest/test/test_break.py | 8 ------- Python/thread_pthread.h | 10 -------- configure.ac | 4 ---- setup.py | 6 ----- 17 files changed, 18 insertions(+), 109 deletions(-) diff --git a/Doc/library/time.rst b/Doc/library/time.rst index ccbb3f37877b2c..3eddc3f1ad3d90 100644 --- a/Doc/library/time.rst +++ b/Doc/library/time.rst @@ -792,7 +792,7 @@ These constants are used as parameters for :func:`clock_getres` and High-resolution per-process timer from the CPU. - Availability: FreeBSD 3 or later, NetBSD 7 or later, OpenBSD. + Availability: FreeBSD, NetBSD 7 or later, OpenBSD. .. versionadded:: 3.7 @@ -812,7 +812,7 @@ These constants are used as parameters for :func:`clock_getres` and suspended, providing accurate uptime measurement, both absolute and interval. - Availability: FreeBSD 7 or later, OpenBSD 5.5 or later. + Availability: FreeBSD, OpenBSD 5.5 or later. .. versionadded:: 3.7 diff --git a/Include/py_curses.h b/Include/py_curses.h index 597f419eaca9a8..0eebc362a15e16 100644 --- a/Include/py_curses.h +++ b/Include/py_curses.h @@ -12,31 +12,15 @@ #endif #endif /* __APPLE__ */ -#ifdef __FreeBSD__ -/* -** On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards -** against multiple definition of wchar_t and wint_t. -*/ -#ifdef _XOPEN_SOURCE_EXTENDED -#ifndef __FreeBSD_version -#include -#endif -#if __FreeBSD_version >= 500000 -#ifndef __wchar_t -#define __wchar_t -#endif -#ifndef __wint_t -#define __wint_t -#endif -#else -#ifndef _WCHAR_T -#define _WCHAR_T -#endif -#ifndef _WINT_T -#define _WINT_T -#endif -#endif -#endif +/* On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards + against multiple definition of wchar_t and wint_t. */ +#if defined(__FreeBSD__) && defined(_XOPEN_SOURCE_EXTENDED) +# ifndef __wchar_t +# define __wchar_t +# endif +# ifndef __wint_t +# define __wint_t +# endif #endif #if !defined(HAVE_CURSES_IS_PAD) && defined(WINDOW_HAS_FLAGS) diff --git a/Include/pyport.h b/Include/pyport.h index f2e247a374e063..c1f4c7fbb52c99 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -564,18 +564,8 @@ extern char * _getpty(int *, int, mode_t, int); * workaround was provided by Tim Robbins of FreeBSD project. */ -#ifdef __FreeBSD__ -#include -#if (__FreeBSD_version >= 500040 && __FreeBSD_version < 602113) || \ - (__FreeBSD_version >= 700000 && __FreeBSD_version < 700054) || \ - (__FreeBSD_version >= 800000 && __FreeBSD_version < 800001) -# define _PY_PORT_CTYPE_UTF8_ISSUE -#endif -#endif - - #if defined(__APPLE__) -# define _PY_PORT_CTYPE_UTF8_ISSUE +# define _PY_PORT_CTYPE_UTF8_ISSUE #endif #ifdef _PY_PORT_CTYPE_UTF8_ISSUE diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index ab4d4de1566198..e14b923f134240 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -227,7 +227,7 @@ def runtime_library_dir_option(self, dir): if sys.platform[:6] == "darwin": # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir - elif sys.platform[:7] == "freebsd": + elif sys.platform.startswith("freebsd"): return "-Wl,-rpath=" + dir elif sys.platform[:5] == "hp-ux": if self._is_gcc(compiler): diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index 4140f03967ee6c..e4b053681b4e91 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -1471,8 +1471,6 @@ async def connect(): @unittest.skipUnless(sys.platform != 'win32', "Don't support pipes for Windows") @unittest.skipIf(sys.platform == 'darwin', 'test hangs on MacOS') - # Issue #20495: The test hangs on FreeBSD 7.2 but pass on FreeBSD 9 - @support.requires_freebsd_version(8) def test_read_pty_output(self): proto = MyReadPipeProto(loop=self.loop) diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 3aee5f1083cee1..c6345e9199ca74 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -4107,8 +4107,6 @@ def test_interrupted_write_unbuffered(self): def test_interrupted_write_buffered(self): self.check_interrupted_write(b"xy", b"xy", mode="wb") - # Issue #22331: The test hangs on FreeBSD 7.2 - @support.requires_freebsd_version(8) def test_interrupted_write_text(self): self.check_interrupted_write("xy", b"xy", mode="w", encoding="ascii") diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 54049d2fb369e9..eee2ed0c19ec11 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -773,14 +773,7 @@ def serve_forever(self, poll_interval): :func:`select` or :func:`poll` call by :func:`asyncore.loop`. """ - try: - asyncore.loop(poll_interval, map=self._map) - except OSError: - # On FreeBSD 8, closing the server repeatably - # raises this error. We swallow it if the - # server has been closed. - if self.connected or self.accepting: - raise + asyncore.loop(poll_interval, map=self._map) def stop(self, timeout=None): """ diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 83e214d91eacec..02611d223b7665 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -782,9 +782,7 @@ def test_environb(self): value_str = value.decode(sys.getfilesystemencoding(), 'surrogateescape') self.assertEqual(os.environ['bytes'], value_str) - # On FreeBSD < 7 and OS X < 10.6, unsetenv() doesn't return a value (issue - # #13415). - @support.requires_freebsd_version(7) + # On OS X < 10.6, unsetenv() doesn't return a value (bpo-13415). @support.requires_mac_ver(10, 6) def test_unset_error(self): if sys.platform == "win32": diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 44b8d6a7ad0796..6c504063179906 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -559,6 +559,7 @@ def test_makedev(self): self.assertRaises(TypeError, posix.minor) self.assertRaises((ValueError, OverflowError), posix.minor, -1) + # FIXME: reenable these tests on FreeBSD with the kernel fix if sys.platform.startswith('freebsd') and dev >= 0x1_0000_0000: self.skipTest("bpo-31044: on FreeBSD CURRENT, minor() truncates " "64-bit dev to 32-bit") diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py index cc9c57024dee8e..4b852789be7e44 100644 --- a/Lib/test/test_resource.py +++ b/Lib/test/test_resource.py @@ -138,7 +138,6 @@ def test_linux_constants(self): with contextlib.suppress(AttributeError): self.assertIsInstance(getattr(resource, 'RLIMIT_' + attr), int) - @support.requires_freebsd_version(9) def test_freebsd_contants(self): for attr in ['SWAP', 'SBSIZE', 'NPTS']: with contextlib.suppress(AttributeError): diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py index f17123c3bb50d1..48b7a392e50b34 100644 --- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -56,9 +56,6 @@ def test_getsignal(self): self.assertEqual(signal.getsignal(signal.SIGHUP), hup) # Issue 3864, unknown if this affects earlier versions of freebsd also - @unittest.skipIf(sys.platform=='freebsd6', - 'inter process signals not reliable (do not mix well with threading) ' - 'on freebsd6') def test_interprocess_signal(self): dirname = os.path.dirname(__file__) script = os.path.join(dirname, 'signalinterproctester.py') @@ -651,7 +648,7 @@ def test_itimer_real(self): self.assertEqual(self.hndl_called, True) # Issue 3864, unknown if this affects earlier versions of freebsd also - @unittest.skipIf(sys.platform in ('freebsd6', 'netbsd5'), + @unittest.skipIf(sys.platform in ('netbsd5',), 'itimer not reliable (does not mix well with threading) on some BSDs.') def test_itimer_virtual(self): self.itimer = signal.ITIMER_VIRTUAL @@ -673,9 +670,6 @@ def test_itimer_virtual(self): # and the handler should have been called self.assertEqual(self.hndl_called, True) - # Issue 3864, unknown if this affects earlier versions of freebsd also - @unittest.skipIf(sys.platform=='freebsd6', - 'itimer not reliable (does not mix well with threading) on freebsd6') def test_itimer_prof(self): self.itimer = signal.ITIMER_PROF signal.signal(signal.SIGPROF, self.sig_prof) @@ -762,16 +756,6 @@ def handler(signum, frame): signal.signal(signum, handler) - if sys.platform == 'freebsd6': - # Issue #12392 and #12469: send a signal to the main thread - # doesn't work before the creation of the first thread on - # FreeBSD 6 - def noop(): - pass - thread = threading.Thread(target=noop) - thread.start() - thread.join() - tid = threading.get_ident() try: signal.pthread_kill(tid, signum) @@ -1010,9 +994,6 @@ def read_sigmask(): """ assert_python_ok('-c', code) - @unittest.skipIf(sys.platform == 'freebsd6', - "issue #12392: send a signal to the main thread doesn't work " - "before the creation of the first thread on FreeBSD 6") @unittest.skipUnless(hasattr(signal, 'pthread_kill'), 'need signal.pthread_kill()') def test_pthread_kill_main_thread(self): diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 43688eacf06a81..22d142c8f802c9 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -2598,9 +2598,6 @@ def testRecvmsgShorter(self): def _testRecvmsgShorter(self): self.sendToServer(MSG) - # FreeBSD < 8 doesn't always set the MSG_TRUNC flag when a truncated - # datagram is received (issue #13001). - @support.requires_freebsd_version(8) def testRecvmsgTrunc(self): # Receive part of message, check for truncation indicators. msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, @@ -2610,7 +2607,6 @@ def testRecvmsgTrunc(self): self.assertEqual(ancdata, []) self.checkFlags(flags, eor=False) - @support.requires_freebsd_version(8) def _testRecvmsgTrunc(self): self.sendToServer(MSG) diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 007581d7213b1f..db70dfa95df052 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -25,8 +25,7 @@ # #12316 and #11870), and fork() from a worker thread is known to trigger # problems with some operating systems (issue #3863): skip problematic tests # on platforms known to behave badly. -platforms_to_skip = ('freebsd4', 'freebsd5', 'freebsd6', 'netbsd5', - 'hp-ux11') +platforms_to_skip = ('netbsd5', 'hp-ux11') # A trivial mutable counter. diff --git a/Lib/unittest/test/test_break.py b/Lib/unittest/test/test_break.py index 2c7501952c7e48..aa2c69eea01ac6 100644 --- a/Lib/unittest/test/test_break.py +++ b/Lib/unittest/test/test_break.py @@ -10,8 +10,6 @@ @unittest.skipUnless(hasattr(os, 'kill'), "Test requires os.kill") @unittest.skipIf(sys.platform =="win32", "Test cannot run on Windows") -@unittest.skipIf(sys.platform == 'freebsd6', "Test kills regrtest on freebsd6 " - "if threads have been used") class TestBreak(unittest.TestCase): int_handler = None @@ -267,22 +265,16 @@ def test(): @unittest.skipUnless(hasattr(os, 'kill'), "Test requires os.kill") @unittest.skipIf(sys.platform =="win32", "Test cannot run on Windows") -@unittest.skipIf(sys.platform == 'freebsd6', "Test kills regrtest on freebsd6 " - "if threads have been used") class TestBreakDefaultIntHandler(TestBreak): int_handler = signal.default_int_handler @unittest.skipUnless(hasattr(os, 'kill'), "Test requires os.kill") @unittest.skipIf(sys.platform =="win32", "Test cannot run on Windows") -@unittest.skipIf(sys.platform == 'freebsd6', "Test kills regrtest on freebsd6 " - "if threads have been used") class TestBreakSignalIgnored(TestBreak): int_handler = signal.SIG_IGN @unittest.skipUnless(hasattr(os, 'kill'), "Test requires os.kill") @unittest.skipIf(sys.platform =="win32", "Test cannot run on Windows") -@unittest.skipIf(sys.platform == 'freebsd6', "Test kills regrtest on freebsd6 " - "if threads have been used") class TestBreakSignalDefault(TestBreak): int_handler = signal.SIG_DFL diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index b7463c0ca67763..697140558fdc5e 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -56,16 +56,6 @@ #endif #endif -/* Before FreeBSD 5.4, system scope threads was very limited resource - in default setting. So the process scope is preferred to get - enough number of threads to work. */ -#ifdef __FreeBSD__ -#include -#if __FreeBSD_version >= 500000 && __FreeBSD_version < 504101 -#undef PTHREAD_SYSTEM_SCHED_SUPPORTED -#endif -#endif - #if !defined(pthread_attr_default) # define pthread_attr_default ((pthread_attr_t *)NULL) #endif diff --git a/configure.ac b/configure.ac index 1894e21f30446d..d69a6019d49449 100644 --- a/configure.ac +++ b/configure.ac @@ -479,10 +479,6 @@ case $ac_sys_system/$ac_sys_release in # but used in struct sockaddr.sa_family. Reported by Tim Rice. SCO_SV/3.2) define_xopen_source=no;; - # On FreeBSD 4, the math functions C89 does not cover are never defined - # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them. - FreeBSD/4.*) - define_xopen_source=no;; # On MacOS X 10.2, a bug in ncurses.h means that it craps out if # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which # identifies itself as Darwin/7.* diff --git a/setup.py b/setup.py index 8e98fdcb7ef3ca..f4e3739bc7ce7d 100644 --- a/setup.py +++ b/setup.py @@ -1630,12 +1630,6 @@ class db_found(Exception): pass macros = dict() libraries = [] - elif host_platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8'): - # FreeBSD's P1003.1b semaphore support is very experimental - # and has many known problems. (as of June 2008) - macros = dict() - libraries = [] - elif host_platform.startswith('openbsd'): macros = dict() libraries = [] From e4f07a0994e482315e4f32c92972876f52bd1d52 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 18 Jan 2018 11:10:54 +0100 Subject: [PATCH 2/4] Add NEWS enty --- Misc/NEWS.d/next/Build/2018-01-18-11-10-52.bpo-32593.XIrf3v.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Build/2018-01-18-11-10-52.bpo-32593.XIrf3v.rst diff --git a/Misc/NEWS.d/next/Build/2018-01-18-11-10-52.bpo-32593.XIrf3v.rst b/Misc/NEWS.d/next/Build/2018-01-18-11-10-52.bpo-32593.XIrf3v.rst new file mode 100644 index 00000000000000..e033cf2cedf68d --- /dev/null +++ b/Misc/NEWS.d/next/Build/2018-01-18-11-10-52.bpo-32593.XIrf3v.rst @@ -0,0 +1 @@ +Drop support of FreeBSD 9 and older. From e6a28e338bcd776ac2542ca39412837d27322e83 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 18 Jan 2018 14:43:05 +0100 Subject: [PATCH 3/4] Revert distutils change --- Lib/distutils/unixccompiler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index e14b923f134240..ab4d4de1566198 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -227,7 +227,7 @@ def runtime_library_dir_option(self, dir): if sys.platform[:6] == "darwin": # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir - elif sys.platform.startswith("freebsd"): + elif sys.platform[:7] == "freebsd": return "-Wl,-rpath=" + dir elif sys.platform[:5] == "hp-ux": if self._is_gcc(compiler): From 2c3059a84f971e8342fe7f034fe16abb7038295f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 18 Jan 2018 14:46:41 +0100 Subject: [PATCH 4/4] What's New in Python 3.7: mention change --- Doc/whatsnew/3.7.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index 009df38d8ece19..52e400a238363c 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -803,6 +803,11 @@ Windows Only Removed ======= +Platform Support Removals +------------------------- + +* FreeBSD 9 and older are no longer supported. + API and Feature Removals ------------------------ pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy