pkgsrc/lang/python37/patches/patch-setup.py
adam 74b47a89d4 python37: added version 3.7.0
Python 3.7.0 is the newest major release of the Python language, and it contains many new features and optimizations.

Among the major new features in Python 3.7 are:

PEP 539, new C API for thread-local storage
PEP 545, Python documentation translations
New documentation translations: Japanese, French, and Korean.
PEP 552, Deterministic pyc files
PEP 553, Built-in breakpoint()
PEP 557, Data Classes
PEP 560, Core support for typing module and generic types
PEP 562, Customization of access to module attributes
PEP 563, Postponed evaluation of annotations
PEP 564, Time functions with nanosecond resolution
PEP 565, Improved DeprecationWarning handling
PEP 567, Context Variables
Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion and PEP 540, forced UTF-8 runtime mode)
The insertion-order preservation nature of dict objects is now an official part of the Python language spec.
Notable performance improvements in many areas.
2018-07-03 03:55:40 +00:00

141 lines
6.4 KiB
Python

$NetBSD: patch-setup.py,v 1.1 2018/07/03 03:55:40 adam Exp $
Disable certain modules, so they can be built as separate packages.
Do not look for ncursesw.
Assume panel_library is correct; this is a fix for ncurses' gnupanel
which will get transformed to panel in buildlink.
Also look for uuid/uuid.h.
--- setup.py.orig 2018-05-02 07:41:45.000000000 +0000
+++ setup.py
@@ -8,6 +8,7 @@ import importlib.util
import sysconfig
from distutils import log
+from distutils import text_file
from distutils.errors import *
from distutils.core import Extension, setup
from distutils.command.build_ext import build_ext
@@ -43,7 +44,7 @@ host_platform = get_platform()
COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var("CONFIG_ARGS"))
# This global variable is used to hold the list of modules to be disabled.
-disabled_module_list = []
+disabled_module_list = ["_curses", "_curses_panel", "_elementtree", "_gdbm", "pyexpat", "readline", "_sqlite3", "_tkinter", "xxlimited"]
def add_dir_to_list(dirlist, dir):
"""Add the directory 'dir' to the list 'dirlist' (after any relative
@@ -537,15 +538,15 @@ class PyBuildExt(build_ext):
os.unlink(tmpfile)
def detect_modules(self):
- # Ensure that /usr/local is always used, but the local build
- # directories (i.e. '.' and 'Include') must be first. See issue
- # 10520.
- if not cross_compiling:
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- # only change this for cross builds for 3.3, issues on Mageia
- if cross_compiling:
- self.add_gcc_paths()
+ # Add the buildlink directories for pkgsrc
+ if os.environ.get('BUILDLINK_DIR'):
+ dir = os.environ['BUILDLINK_DIR']
+ libdir = dir + '/lib'
+ incdir = dir + '/include'
+ if libdir not in self.compiler.library_dirs:
+ self.compiler.library_dirs.insert(0, libdir)
+ if incdir not in self.compiler.include_dirs:
+ self.compiler.include_dirs.insert(0, incdir)
self.add_multiarch_paths()
# Add paths specified in the environment variables LDFLAGS and
@@ -814,8 +815,6 @@ class PyBuildExt(build_ext):
# use the same library for the readline and curses modules.
if 'curses' in readline_termcap_library:
curses_library = readline_termcap_library
- elif self.compiler.find_library_file(lib_dirs, 'ncursesw'):
- curses_library = 'ncursesw'
elif self.compiler.find_library_file(lib_dirs, 'ncurses'):
curses_library = 'ncurses'
elif self.compiler.find_library_file(lib_dirs, 'curses'):
@@ -1245,6 +1244,30 @@ class PyBuildExt(build_ext):
dbm_order = ['gdbm']
# The standard Unix dbm module:
if host_platform not in ['cygwin']:
+
+ ## Top half based on find_file
+ def find_ndbm_h(dirs):
+ ret = None
+ if sys.platform == 'darwin':
+ sysroot = macosx_sdk_root()
+ for dir in dirs:
+ f = os.path.join(dir, 'ndbm.h')
+ if sys.platform == 'darwin' and is_macosx_sdk_path(dir):
+ f = os.path.join(sysroot, dir[1:], 'ndbm.h')
+ if not os.path.exists(f): continue
+
+ ret = 'True'
+ input = text_file.TextFile(f)
+ while 1:
+ line = input.readline()
+ if not line: break
+ if re.search('This file is part of GDBM', line):
+ ret = None
+ break
+ input.close()
+ break
+ return ret
+
config_args = [arg.strip("'")
for arg in sysconfig.get_config_var("CONFIG_ARGS").split()]
dbm_args = [arg for arg in config_args
@@ -1256,7 +1279,7 @@ class PyBuildExt(build_ext):
dbmext = None
for cand in dbm_order:
if cand == "ndbm":
- if find_file("ndbm.h", inc_dirs, []) is not None:
+ if find_ndbm_h(inc_dirs) is not None:
# Some systems have -lndbm, others have -lgdbm_compat,
# others don't have either
if self.compiler.find_library_file(lib_dirs,
@@ -1388,8 +1411,7 @@ class PyBuildExt(build_ext):
missing.append('_curses')
# If the curses module is enabled, check for the panel module
- if (module_enabled(exts, '_curses') and
- self.compiler.find_library_file(lib_dirs, panel_library)):
+ if (module_enabled(exts, '_curses')):
exts.append( Extension('_curses_panel', ['_curses_panel.c'],
include_dirs=curses_includes,
define_macros=curses_defines,
@@ -1630,6 +1652,8 @@ class PyBuildExt(build_ext):
# Build the _uuid module if possible
uuid_incs = find_file("uuid.h", inc_dirs, ["/usr/include/uuid"])
+ if uuid_incs is None:
+ uuid_incs = find_file("uuid/uuid.h", inc_dirs, [])
if uuid_incs is not None:
if self.compiler.find_library_file(lib_dirs, 'uuid'):
uuid_libs = ['uuid']
@@ -2019,10 +2043,7 @@ class PyBuildExt(build_ext):
depends = ['_decimal/docstrings.h']
else:
srcdir = sysconfig.get_config_var('srcdir')
- include_dirs = [os.path.abspath(os.path.join(srcdir,
- 'Modules',
- '_decimal',
- 'libmpdec'))]
+ include_dirs = ['Modules/_decimal/libmpdec']
libraries = ['m']
sources = [
'_decimal/_decimal.c',
@@ -2358,7 +2379,7 @@ def main():
# If you change the scripts installed here, you also need to
# check the PyBuildScripts command above, and change the links
# created by the bininstall target in Makefile.pre.in
- scripts = ["Tools/scripts/pydoc3", "Tools/scripts/idle3",
+ scripts = ["Tools/scripts/pydoc3",
"Tools/scripts/2to3", "Tools/scripts/pyvenv"]
)