Skip to content

Commit

Permalink
bpo-32593: Drop FreeBSD 9 and older support (python#5232)
Browse files Browse the repository at this point in the history
Drop support of FreeBSD 9 and older.
  • Loading branch information
vstinner authored Jan 22, 2018
1 parent b0a7a03 commit 13ff245
Show file tree
Hide file tree
Showing 18 changed files with 23 additions and 108 deletions.
4 changes: 2 additions & 2 deletions Doc/library/time.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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

Expand Down
5 changes: 5 additions & 0 deletions Doc/whatsnew/3.7.rst
Original file line number Diff line number Diff line change
Expand Up @@ -806,6 +806,11 @@ Windows Only
Removed
=======

Platform Support Removals
-------------------------

* FreeBSD 9 and older are no longer supported.

API and Feature Removals
------------------------

Expand Down
34 changes: 9 additions & 25 deletions Include/py_curses.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <osreldate.h>
#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)
Expand Down
12 changes: 1 addition & 11 deletions Include/pyport.h
Original file line number Diff line number Diff line change
Expand Up @@ -564,18 +564,8 @@ extern char * _getpty(int *, int, mode_t, int);
* workaround was provided by Tim Robbins of FreeBSD project.
*/

#ifdef __FreeBSD__
#include <osreldate.h>
#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
Expand Down
2 changes: 0 additions & 2 deletions Lib/test/test_asyncio/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 0 additions & 2 deletions Lib/test/test_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down
9 changes: 1 addition & 8 deletions Lib/test/test_logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
"""
Expand Down
4 changes: 1 addition & 3 deletions Lib/test/test_os.py
Original file line number Diff line number Diff line change
Expand Up @@ -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":
Expand Down
1 change: 1 addition & 0 deletions Lib/test/test_posix.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
1 change: 0 additions & 1 deletion Lib/test/test_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
21 changes: 1 addition & 20 deletions Lib/test/test_signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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):
Expand Down
4 changes: 0 additions & 4 deletions Lib/test/test_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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)

Expand Down
3 changes: 1 addition & 2 deletions Lib/test/test_threading.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
8 changes: 0 additions & 8 deletions Lib/unittest/test/test_break.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Drop support of FreeBSD 9 and older.
10 changes: 0 additions & 10 deletions Python/thread_pthread.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <osreldate.h>
#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
Expand Down
4 changes: 0 additions & 4 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -481,10 +481,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.*
Expand Down
6 changes: 0 additions & 6 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -1571,12 +1571,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 = []
Expand Down

0 comments on commit 13ff245

Please sign in to comment.