annotate setup.py @ 73323:dad02a080bbc

Improve byte-compilation in packaging to be independent of -O or -B. The code I fixed to comply with PEP 3147 still had one bug: When run under python -O, some paths for pyc files would be pyo, because I called imp.cache_from_source without explicit debug_override argument in some places, and under -O that would return .pyo (this is well explained in the imp docs). Now all code (util.byte_compile, build_py, install_lib) can create .pyo files according to options given by users, without interference from the calling Python’s own optimize mode. On a related topic, I also removed the code that prevented byte compilation under python -B. The rationale is that packaging gives control over the creation of pyc files to the user with its own explicit option, and the behavior should not be changed if the calling Python happens to run with -B for whatever reason. I will argue that this is a bug fix and ask to be allowed to backport this change to distutils. Finally, I moved one nugget of information about the --compile and --optimize options from the source into the doc. It clears up a misunderstanding that I (and maybe other people) had.
author Éric Araujo <merwok@netwok.org>
date Thu, 03 Nov 2011 05:08:28 +0100
parents 35e4b7c4bafa
children 919259054621
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16287
4b72888c9e2f Remove unused import of 'string'
Andrew M. Kuchling <amk@amk.ca>
parents: 16283
diff changeset
1 # Autodetecting setup.py script for building the Python extensions
4b72888c9e2f Remove unused import of 'string'
Andrew M. Kuchling <amk@amk.ca>
parents: 16283
diff changeset
2 #
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
3
34125
1a938f456053 Change code in setup.py for parsing LDFLAGS and CPPFLAGS to use optparse
Brett Cannon <bcannon@gmail.com>
parents: 34124
diff changeset
4 import sys, os, imp, re, optparse
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
5 from glob import glob
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58295
diff changeset
6 import sysconfig
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
7
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
8 from distutils import log
16750
90e90c92198b Patch #103899: Don't compile modules configured in Setup. This seems much
Andrew M. Kuchling <amk@amk.ca>
parents: 16749
diff changeset
9 from distutils import text_file
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
10 from distutils.errors import *
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
11 from distutils.core import Extension, setup
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
12 from distutils.command.build_ext import build_ext
17886
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
13 from distutils.command.install import install
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
14 from distutils.command.install_lib import install_lib
67169
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
15 from distutils.command.build_scripts import build_scripts
62355
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
16 from distutils.spawn import find_executable
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
17
58108
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
18 # Were we compiled --with-pydebug or with #define Py_DEBUG?
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
19 COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount')
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
20
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
21 # This global variable is used to hold the list of modules to be disabled.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
22 disabled_module_list = []
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
23
63961
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
24 # File which contains the directory for shared mods (for sys.path fixup
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
25 # when running from the build dir, see Modules/getpath.c)
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
26 _BUILDDIR_COOKIE = "pybuilddir.txt"
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
27
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
28 def add_dir_to_list(dirlist, dir):
66432
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
29 """Add the directory 'dir' to the list 'dirlist' (after any relative
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
30 directories) if:
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
31
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
32 1) 'dir' is not already in 'dirlist'
66432
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
33 2) 'dir' actually exists, and is a directory.
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
34 """
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
35 if dir is None or not os.path.isdir(dir) or dir in dirlist:
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
36 return
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
37 for i, path in enumerate(dirlist):
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
38 if not os.path.isabs(path):
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
39 dirlist.insert(i + 1, dir)
66516
8737fb17f444 Roumen Petrov's fix for when all paths are absolute. (Issue 10520)
Barry Warsaw <barry@python.org>
parents: 66432
diff changeset
40 return
8737fb17f444 Roumen Petrov's fix for when all paths are absolute. (Issue 10520)
Barry Warsaw <barry@python.org>
parents: 66432
diff changeset
41 dirlist.insert(0, dir)
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
42
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
43 def macosx_sdk_root():
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
44 """
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
45 Return the directory of the current OSX SDK,
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
46 or '/' if no SDK was specified.
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
47 """
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
48 cflags = sysconfig.get_config_var('CFLAGS')
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
49 m = re.search(r'-isysroot\s+(\S+)', cflags)
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
50 if m is None:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
51 sysroot = '/'
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
52 else:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
53 sysroot = m.group(1)
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
54 return sysroot
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
55
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
56 def is_macosx_sdk_path(path):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
57 """
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
58 Returns True if 'path' can be located in an OSX SDK
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
59 """
62543
02044573eeec Merged revisions 82273 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62355
diff changeset
60 return (path.startswith('/usr/') and not path.startswith('/usr/local')) or path.startswith('/System/')
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
61
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
62 def find_file(filename, std_dirs, paths):
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
63 """Searches for the directory where a given file is located,
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
64 and returns a possibly-empty list of additional directories, or None
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
65 if the file couldn't be found at all.
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
66
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
67 'filename' is the name of a file, such as readline.h or libcrypto.a.
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
68 'std_dirs' is the list of standard system directories; if the
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
69 file is found in one of them, no additional directives are needed.
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
70 'paths' is a list of additional locations to check; if the file is
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
71 found in one of them, the resulting list will contain the directory.
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
72 """
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
73 if sys.platform == 'darwin':
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
74 # Honor the MacOSX SDK setting when one was specified.
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
75 # An SDK is a directory with the same structure as a real
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
76 # system, but with only header files and libraries.
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
77 sysroot = macosx_sdk_root()
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
78
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
79 # Check the standard locations
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
80 for dir in std_dirs:
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
81 f = os.path.join(dir, filename)
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
82
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
83 if sys.platform == 'darwin' and is_macosx_sdk_path(dir):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
84 f = os.path.join(sysroot, dir[1:], filename)
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
85
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
86 if os.path.exists(f): return []
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
87
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
88 # Check the additional directories
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
89 for dir in paths:
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
90 f = os.path.join(dir, filename)
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
91
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
92 if sys.platform == 'darwin' and is_macosx_sdk_path(dir):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
93 f = os.path.join(sysroot, dir[1:], filename)
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
94
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
95 if os.path.exists(f):
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
96 return [dir]
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
97
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
98 # Not found anywhere
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
99 return None
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
100
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
101 def find_library_file(compiler, libname, std_dirs, paths):
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
102 result = compiler.find_library_file(std_dirs + paths, libname)
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
103 if result is None:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
104 return None
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
105
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
106 if sys.platform == 'darwin':
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
107 sysroot = macosx_sdk_root()
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
108
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
109 # Check whether the found file is in one of the standard directories
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
110 dirname = os.path.dirname(result)
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
111 for p in std_dirs:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
112 # Ensure path doesn't end with path separator
29002
50841898cc19 p.strip(os.sep) can't have possibly worked. It would have stripped both
Skip Montanaro <skip@pobox.com>
parents: 29001
diff changeset
113 p = p.rstrip(os.sep)
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
114
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
115 if sys.platform == 'darwin' and is_macosx_sdk_path(p):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
116 if os.path.join(sysroot, p[1:]) == dirname:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
117 return [ ]
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
118
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
119 if p == dirname:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
120 return [ ]
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
121
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
122 # Otherwise, it must have been in one of the additional directories,
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
123 # so we have to figure out which one.
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
124 for p in paths:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
125 # Ensure path doesn't end with path separator
29002
50841898cc19 p.strip(os.sep) can't have possibly worked. It would have stripped both
Skip Montanaro <skip@pobox.com>
parents: 29001
diff changeset
126 p = p.rstrip(os.sep)
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
127
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
128 if sys.platform == 'darwin' and is_macosx_sdk_path(p):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
129 if os.path.join(sysroot, p[1:]) == dirname:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
130 return [ p ]
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
131
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
132 if p == dirname:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
133 return [p]
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
134 else:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
135 assert False, "Internal error: Path not found in std_dirs or paths"
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
136
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
137 def module_enabled(extlist, modname):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
138 """Returns whether the module 'modname' is present in the list
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
139 of extensions 'extlist'."""
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
140 extlist = [ext for ext in extlist if ext.name == modname]
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
141 return len(extlist)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
142
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
143 def find_module_file(module, dirlist):
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
144 """Find a module in a set of possible folders. If it is not found
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
145 return the unadorned filename"""
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
146 list = find_file(module, [], dirlist)
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
147 if not list:
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
148 return module
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
149 if len(list) > 1:
27989
e7b26c3f356f Don't use self.announce() in a function that's not a method.
Guido van Rossum <guido@python.org>
parents: 27930
diff changeset
150 log.info("WARNING: multiple copies of %s found"%module)
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
151 return os.path.join(list[0], module)
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
152
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
153 class PyBuildExt(build_ext):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
154
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
155 def __init__(self, dist):
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
156 build_ext.__init__(self, dist)
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
157 self.failed = []
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
158
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
159 def build_extensions(self):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
160
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
161 # Detect which modules should be compiled
64426
00c6957c7719 Workaround PEP 3149 build problems.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64242
diff changeset
162 old_so = self.compiler.shared_lib_extension
00c6957c7719 Workaround PEP 3149 build problems.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64242
diff changeset
163 # Workaround PEP 3149 stuff
00c6957c7719 Workaround PEP 3149 build problems.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64242
diff changeset
164 self.compiler.shared_lib_extension = os.environ.get("SO", ".so")
00c6957c7719 Workaround PEP 3149 build problems.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64242
diff changeset
165 try:
00c6957c7719 Workaround PEP 3149 build problems.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64242
diff changeset
166 missing = self.detect_modules()
00c6957c7719 Workaround PEP 3149 build problems.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64242
diff changeset
167 finally:
00c6957c7719 Workaround PEP 3149 build problems.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64242
diff changeset
168 self.compiler.shared_lib_extension = old_so
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
169
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
170 # Remove modules that are present on the disabled list
44742
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
171 extensions = [ext for ext in self.extensions
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
172 if ext.name not in disabled_module_list]
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
173 # move ctypes to the end, it depends on other modules
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
174 ext_map = dict((ext.name, i) for i, ext in enumerate(extensions))
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
175 if "_ctypes" in ext_map:
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
176 ctypes = extensions.pop(ext_map["_ctypes"])
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
177 extensions.append(ctypes)
14d4104976fc Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
178 self.extensions = extensions
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
179
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
180 # Fix up the autodetected modules, prefixing all the source files
51349
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
181 # with Modules/.
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
182 srcdir = sysconfig.get_config_var('srcdir')
25790
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
183 if not srcdir:
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
184 # Maybe running on Windows but not using CYGWIN?
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
185 raise ValueError("No source directory; cannot proceed.")
51359
e6a14688580e Distutils apparently requires an absolute path so provide one.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 51349
diff changeset
186 srcdir = os.path.abspath(srcdir)
51349
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
187 moddirlist = [os.path.join(srcdir, 'Modules')]
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
188
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
189 # Platform-dependent module source and include directories
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
190 platform = self.get_platform()
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
191
16860
cd4085cee309 Fix for bug #405007: prefix subdir to scripts in order to build in
Andrew M. Kuchling <amk@amk.ca>
parents: 16844
diff changeset
192 # Fix up the paths for scripts, too
cd4085cee309 Fix for bug #405007: prefix subdir to scripts in order to build in
Andrew M. Kuchling <amk@amk.ca>
parents: 16844
diff changeset
193 self.distribution.scripts = [os.path.join(srcdir, filename)
cd4085cee309 Fix for bug #405007: prefix subdir to scripts in order to build in
Andrew M. Kuchling <amk@amk.ca>
parents: 16844
diff changeset
194 for filename in self.distribution.scripts]
cd4085cee309 Fix for bug #405007: prefix subdir to scripts in order to build in
Andrew M. Kuchling <amk@amk.ca>
parents: 16844
diff changeset
195
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
196 # Python header files
51349
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
197 headers = [sysconfig.get_config_h_filename()]
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58295
diff changeset
198 headers += glob(os.path.join(sysconfig.get_path('platinclude'), "*.h"))
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
199
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
200 for ext in self.extensions[:]:
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
201 ext.sources = [ find_module_file(filename, moddirlist)
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
202 for filename in ext.sources ]
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
203 if ext.depends is not None:
51349
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
204 ext.depends = [find_module_file(filename, moddirlist)
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
205 for filename in ext.depends]
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
206 else:
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
207 ext.depends = []
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
208 # re-compile extensions if a header file has been changed
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
209 ext.depends.extend(headers)
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44742
diff changeset
210
16038
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
211 # If a module has already been built statically,
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
212 # don't build it here
16038
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
213 if ext.name in sys.builtin_module_names:
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
214 self.extensions.remove(ext)
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
215
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
216 # Parse Modules/Setup and Modules/Setup.local to figure out which
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
217 # modules are turned on in the file.
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
218 remove_modules = []
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
219 for filename in ('Modules/Setup', 'Modules/Setup.local'):
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
220 input = text_file.TextFile(filename, join_lines=1)
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
221 while 1:
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
222 line = input.readline()
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
223 if not line: break
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
224 line = line.split()
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
225 remove_modules.append(line[0])
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
226 input.close()
36162
1e595b6c924e Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 36156
diff changeset
227
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
228 for ext in self.extensions[:]:
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
229 if ext.name in remove_modules:
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
230 self.extensions.remove(ext)
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
231
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
232 # When you run "make CC=altcc" or something similar, you really want
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
233 # those environment variables passed into the setup.py phase. Here's
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
234 # a small set of useful ones.
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
235 compiler = os.environ.get('CC')
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
236 args = {}
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
237 # unfortunately, distutils doesn't let us provide separate C and C++
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
238 # compilers
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
239 if compiler is not None:
34930
294dabcb379b Make parse_makefile fallback to environment variables if nothing is
Martin v. Löwis <martin@v.loewis.de>
parents: 34911
diff changeset
240 (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
294dabcb379b Make parse_makefile fallback to environment variables if nothing is
Martin v. Löwis <martin@v.loewis.de>
parents: 34911
diff changeset
241 args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
242 self.compiler.set_executables(**args)
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
243
63961
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
244 # Not only do we write the builddir cookie, but we manually install
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
245 # the shared modules directory if it isn't already in sys.path.
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
246 # Otherwise trying to import the extensions after building them
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
247 # will fail.
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
248 with open(_BUILDDIR_COOKIE, "wb") as f:
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
249 f.write(self.build_lib.encode('utf-8', 'surrogateescape'))
64242
aa25b8677cc3 Fix builds with builddir != srcdir, introduced in r83988.
Matthias Klose <doko@ubuntu.com>
parents: 63961
diff changeset
250 abs_build_lib = os.path.join(os.getcwd(), self.build_lib)
63961
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
251 if abs_build_lib not in sys.path:
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
252 sys.path.append(abs_build_lib)
4742e7aea2f5 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
Antoine Pitrou <solipsis@pitrou.net>
parents: 63863
diff changeset
253
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
254 build_ext.build_extensions(self)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
255
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
256 longest = max([len(e.name) for e in self.extensions])
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
257 if self.failed:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
258 longest = max(longest, max([len(name) for name in self.failed]))
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
259
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
260 def print_three_column(lst):
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
261 lst.sort(key=str.lower)
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
262 # guarantee zip() doesn't drop anything
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
263 while len(lst) % 3:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
264 lst.append("")
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
265 for e, f, g in zip(lst[::3], lst[1::3], lst[2::3]):
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
266 print("%-*s %-*s %-*s" % (longest, e, longest, f,
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
267 longest, g))
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
268
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
269 if missing:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
270 print()
50404
d32a669f96da Merged revisions 68113 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 50049
diff changeset
271 print("Python build finished, but the necessary bits to build "
d32a669f96da Merged revisions 68113 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 50049
diff changeset
272 "these modules were not found:")
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
273 print_three_column(missing)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42653
diff changeset
274 print("To find the necessary bits, look in setup.py in"
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42653
diff changeset
275 " detect_modules() for the module's name.")
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42653
diff changeset
276 print()
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
277
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
278 if self.failed:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
279 failed = self.failed[:]
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
280 print()
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
281 print("Failed to build these modules:")
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
282 print_three_column(failed)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42653
diff changeset
283 print()
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
284
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
285 def build_extension(self, ext):
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
286
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
287 if ext.name == '_ctypes':
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
288 if not self.configure_ctypes(ext):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
289 return
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
290
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
291 try:
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
292 build_ext.build_extension(self, ext)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40582
diff changeset
293 except (CCompilerError, DistutilsError) as why:
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
294 self.announce('WARNING: building of extension "%s" failed: %s' %
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
295 (ext.name, sys.exc_info()[1]))
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
296 self.failed.append(ext.name)
17890
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
297 return
20815
57ab65c2f170 The import check in setup.py fails on Mac OS X for Carbon-based modules
Jack Jansen <jack.jansen@cwi.nl>
parents: 20789
diff changeset
298 # Workaround for Mac OS X: The Carbon-based modules cannot be
57ab65c2f170 The import check in setup.py fails on Mac OS X for Carbon-based modules
Jack Jansen <jack.jansen@cwi.nl>
parents: 20789
diff changeset
299 # reliably imported into a command-line Python
57ab65c2f170 The import check in setup.py fails on Mac OS X for Carbon-based modules
Jack Jansen <jack.jansen@cwi.nl>
parents: 20789
diff changeset
300 if 'Carbon' in ext.extra_link_args:
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
301 self.announce(
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
302 'WARNING: skipping import check for Carbon-based "%s"' %
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
303 ext.name)
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
304 return
48485
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
305
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
306 if self.get_platform() == 'darwin' and (
48490
8e9e65383afb sys.maxint -> sys.maxsize
Benjamin Peterson <benjamin@python.org>
parents: 48485
diff changeset
307 sys.maxsize > 2**32 and '-arch' in ext.extra_link_args):
48485
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
308 # Don't bother doing an import check when an extension was
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
309 # build with an explicit '-arch' flag on OSX. That's currently
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
310 # only used to build 32-bit only extensions in a 4-way
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
311 # universal build and loading 32-bit code into a 64-bit
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
312 # process will fail.
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
313 self.announce(
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
314 'WARNING: skipping import check for "%s"' %
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
315 ext.name)
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
316 return
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
317
23513
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
318 # Workaround for Cygwin: Cygwin currently has fork issues when many
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
319 # modules have been imported
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
320 if self.get_platform() == 'cygwin':
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
321 self.announce('WARNING: skipping import check for Cygwin-based "%s"'
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
322 % ext.name)
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
323 return
21788
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
324 ext_filename = os.path.join(
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
325 self.build_lib,
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
326 self.get_ext_filename(self.get_ext_fullname(ext.name)))
48514
79f84bc2b149 Fix bug 3375 - _multiprocessing.so build problems on OS X.
Guido van Rossum <guido@python.org>
parents: 48490
diff changeset
327
79f84bc2b149 Fix bug 3375 - _multiprocessing.so build problems on OS X.
Guido van Rossum <guido@python.org>
parents: 48490
diff changeset
328 # If the build directory didn't exist when setup.py was
79f84bc2b149 Fix bug 3375 - _multiprocessing.so build problems on OS X.
Guido van Rossum <guido@python.org>
parents: 48490
diff changeset
329 # started, sys.path_importer_cache has a negative result
79f84bc2b149 Fix bug 3375 - _multiprocessing.so build problems on OS X.
Guido van Rossum <guido@python.org>
parents: 48490
diff changeset
330 # cached. Clear that cache before trying to import.
79f84bc2b149 Fix bug 3375 - _multiprocessing.so build problems on OS X.
Guido van Rossum <guido@python.org>
parents: 48490
diff changeset
331 sys.path_importer_cache.clear()
79f84bc2b149 Fix bug 3375 - _multiprocessing.so build problems on OS X.
Guido van Rossum <guido@python.org>
parents: 48490
diff changeset
332
17890
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
333 try:
21788
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
334 imp.load_dynamic(ext.name, ext_filename)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40582
diff changeset
335 except ImportError as why:
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
336 self.failed.append(ext.name)
28111
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
337 self.announce('*** WARNING: renaming "%s" since importing it'
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
338 ' failed: %s' % (ext.name, why), level=3)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
339 assert not self.inplace
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
340 basename, tail = os.path.splitext(ext_filename)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
341 newname = basename + "_failed" + tail
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
342 if os.path.exists(newname):
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
343 os.remove(newname)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
344 os.rename(ext_filename, newname)
21959
3957d155f8c5 Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents: 21942
diff changeset
345
28111
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
346 # XXX -- This relies on a Vile HACK in
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
347 # distutils.command.build_ext.build_extension(). The
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
348 # _built_objects attribute is stored there strictly for
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
349 # use here.
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
350 # If there is a failure, _built_objects may not be there,
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
351 # so catch the AttributeError and move on.
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
352 try:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
353 for filename in self._built_objects:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
354 os.remove(filename)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
355 except AttributeError:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
356 self.announce('unable to remove files (ignored)')
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
357 except:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
358 exc_type, why, tb = sys.exc_info()
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
359 self.announce('*** WARNING: importing extension "%s" '
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
360 'failed with %s: %s' % (ext.name, exc_type, why),
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
361 level=3)
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
362 self.failed.append(ext.name)
21277
f702ff390e4d Visious hackery to solve a build-control problem related to our use of
Fred Drake <fdrake@acm.org>
parents: 21274
diff changeset
363
29508
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
364 def get_platform(self):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
365 # Get value of sys.platform
72011
b5ccdf7c032a Issue #12326: refactor usage of sys.platform
Victor Stinner <victor.stinner@haypocalc.com>
parents: 71897
diff changeset
366 if sys.platform.startswith('osf1'):
b5ccdf7c032a Issue #12326: refactor usage of sys.platform
Victor Stinner <victor.stinner@haypocalc.com>
parents: 71897
diff changeset
367 return 'osf1'
29508
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
368 return sys.platform
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
369
69174
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
370 def add_multiarch_paths(self):
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
371 # Debian/Ubuntu multiarch support.
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
372 # https://wiki.ubuntu.com/MultiarchSpec
69185
c8738114b962 Refinement by Stefan Krah (see issue 11715, msg133194) to exit early if the
Barry Warsaw <barry@python.org>
parents: 69174
diff changeset
373 if not find_executable('dpkg-architecture'):
c8738114b962 Refinement by Stefan Krah (see issue 11715, msg133194) to exit early if the
Barry Warsaw <barry@python.org>
parents: 69174
diff changeset
374 return
69174
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
375 tmpfile = os.path.join(self.build_temp, 'multiarch')
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
376 if not os.path.exists(self.build_temp):
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
377 os.makedirs(self.build_temp)
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
378 ret = os.system(
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
379 'dpkg-architecture -qDEB_HOST_MULTIARCH > %s 2> /dev/null' %
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
380 tmpfile)
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
381 try:
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
382 if ret >> 8 == 0:
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
383 with open(tmpfile) as fp:
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
384 multiarch_path_component = fp.readline().strip()
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
385 add_dir_to_list(self.compiler.library_dirs,
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
386 '/usr/lib/' + multiarch_path_component)
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
387 add_dir_to_list(self.compiler.include_dirs,
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
388 '/usr/include/' + multiarch_path_component)
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
389 finally:
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
390 os.unlink(tmpfile)
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
391
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
392 def detect_modules(self):
66432
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
393 # Ensure that /usr/local is always used, but the local build
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
394 # directories (i.e. '.' and 'Include') must be first. See issue
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
395 # 10520.
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
396 add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
397 add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
69174
7582a78f573b Issue 11715: Build extension modules on multiarch Debian and Ubuntu by
Barry Warsaw <barry@python.org>
parents: 68585
diff changeset
398 self.add_multiarch_paths()
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
399
34124
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
400 # Add paths specified in the environment variables LDFLAGS and
34288
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
401 # CPPFLAGS for header and library files.
34186
521bec60eb30 Switch from getting LDFLAGS and CPPFLAGS from the environment to the Makefile.
Brett Cannon <bcannon@gmail.com>
parents: 34158
diff changeset
402 # We must get the values from the Makefile and not the environment
521bec60eb30 Switch from getting LDFLAGS and CPPFLAGS from the environment to the Makefile.
Brett Cannon <bcannon@gmail.com>
parents: 34158
diff changeset
403 # directly since an inconsistently reproducible issue comes up where
521bec60eb30 Switch from getting LDFLAGS and CPPFLAGS from the environment to the Makefile.
Brett Cannon <bcannon@gmail.com>
parents: 34158
diff changeset
404 # the environment variable is not set even though the value were passed
34288
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
405 # into configure and stored in the Makefile (issue found on OS X 10.3).
34124
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
406 for env_var, arg_name, dir_list in (
49458
d2140de76479 merge from trunk
Skip Montanaro <skip@pobox.com>
parents: 49446
diff changeset
407 ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
34124
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
408 ('LDFLAGS', '-L', self.compiler.library_dirs),
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
409 ('CPPFLAGS', '-I', self.compiler.include_dirs)):
34186
521bec60eb30 Switch from getting LDFLAGS and CPPFLAGS from the environment to the Makefile.
Brett Cannon <bcannon@gmail.com>
parents: 34158
diff changeset
410 env_val = sysconfig.get_config_var(env_var)
34124
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
411 if env_val:
34288
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
412 # To prevent optparse from raising an exception about any
49458
d2140de76479 merge from trunk
Skip Montanaro <skip@pobox.com>
parents: 49446
diff changeset
413 # options in env_val that it doesn't know about we strip out
34288
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
414 # all double dashes and any dashes followed by a character
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
415 # that is not for the option we are dealing with.
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
416 #
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
417 # Please note that order of the regex is important! We must
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
418 # strip out double-dashes first so that we don't end up with
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
419 # substituting "--Long" to "-Long" and thus lead to "ong" being
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
420 # used for a library directory.
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42653
diff changeset
421 env_val = re.sub(r'(^|\s+)-(-|(?!%s))' % arg_name[1],
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42653
diff changeset
422 ' ', env_val)
34125
1a938f456053 Change code in setup.py for parsing LDFLAGS and CPPFLAGS to use optparse
Brett Cannon <bcannon@gmail.com>
parents: 34124
diff changeset
423 parser = optparse.OptionParser()
34288
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
424 # Make sure that allowing args interspersed with options is
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
425 # allowed
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
426 parser.allow_interspersed_args = True
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
427 parser.error = lambda msg: None
34125
1a938f456053 Change code in setup.py for parsing LDFLAGS and CPPFLAGS to use optparse
Brett Cannon <bcannon@gmail.com>
parents: 34124
diff changeset
428 parser.add_option(arg_name, dest="dirs", action="append")
1a938f456053 Change code in setup.py for parsing LDFLAGS and CPPFLAGS to use optparse
Brett Cannon <bcannon@gmail.com>
parents: 34124
diff changeset
429 options = parser.parse_args(env_val.split())[0]
34306
f1c35da64d55 Since it is a possibility that LDFLAGS or CPPFLAGS were set with options that
Brett Cannon <bcannon@gmail.com>
parents: 34288
diff changeset
430 if options.dirs:
45134
bdcf40d1b38e Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45044
diff changeset
431 for directory in reversed(options.dirs):
34306
f1c35da64d55 Since it is a possibility that LDFLAGS or CPPFLAGS were set with options that
Brett Cannon <bcannon@gmail.com>
parents: 34288
diff changeset
432 add_dir_to_list(dir_list, directory)
27002
293eda3e69f5 Split OPT make variable into OPT and BASECFLAGS. The latter contains those
Skip Montanaro <skip@pobox.com>
parents: 26989
diff changeset
433
65559
5cf1e6e61c6c Merged revisions 85744 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 65191
diff changeset
434 if os.path.normpath(sys.prefix) != '/usr' \
5cf1e6e61c6c Merged revisions 85744 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 65191
diff changeset
435 and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
5cf1e6e61c6c Merged revisions 85744 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 65191
diff changeset
436 # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
5cf1e6e61c6c Merged revisions 85744 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 65191
diff changeset
437 # (PYTHONFRAMEWORK is set) to avoid # linking problems when
5cf1e6e61c6c Merged revisions 85744 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 65191
diff changeset
438 # building a framework with different architectures than
5cf1e6e61c6c Merged revisions 85744 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 65191
diff changeset
439 # the one that is currently installed (issue #7473)
24477
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
440 add_dir_to_list(self.compiler.library_dirs,
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
441 sysconfig.get_config_var("LIBDIR"))
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
442 add_dir_to_list(self.compiler.include_dirs,
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
443 sysconfig.get_config_var("INCLUDEDIR"))
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
444
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
445 # lib_dirs and inc_dirs are used to search for files;
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
446 # if a file is found in one of those directories, it can
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
447 # be assumed that no additional -I,-L directives are needed.
33986
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
448 lib_dirs = self.compiler.library_dirs + [
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
449 '/lib64', '/usr/lib64',
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
450 '/lib', '/usr/lib',
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
451 ]
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
452 inc_dirs = self.compiler.include_dirs + ['/usr/include']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
453 exts = []
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
454 missing = []
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
455
34911
87719ae9288c Fix building of spwd; was incorrectly checking for the needed HAVE_* values to
Brett Cannon <bcannon@gmail.com>
parents: 34717
diff changeset
456 config_h = sysconfig.get_config_h_filename()
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
457 with open(config_h) as file:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
458 config_h_vars = sysconfig.parse_config_h(file)
34911
87719ae9288c Fix building of spwd; was incorrectly checking for the needed HAVE_* values to
Brett Cannon <bcannon@gmail.com>
parents: 34717
diff changeset
459
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
460 platform = self.get_platform()
51349
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
461 srcdir = sysconfig.get_config_var('srcdir')
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
462
30770
e0841b5cf2fd [Patch #772077 from Tim Rice] Fix for compiling the readline module on UnixWare; fix goofy comment indent. 2.3 bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 30731
diff changeset
463 # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
e0841b5cf2fd [Patch #772077 from Tim Rice] Fix for compiling the readline module on UnixWare; fix goofy comment indent. 2.3 bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 30731
diff changeset
464 if platform in ['osf1', 'unixware7', 'openunix8']:
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
465 lib_dirs += ['/usr/ccs/lib']
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
466
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
467 if platform == 'darwin':
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
468 # This should work on any unixy platform ;-)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
469 # If the user has bothered specifying additional -I and -L flags
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
470 # in OPT and LDFLAGS we might as well use them here.
66432
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
471 #
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
472 # NOTE: using shlex.split would technically be more correct, but
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
473 # also gives a bootstrap problem. Let's hope nobody uses
395ac6e319a8 Put /usr/local paths after the relative paths in library_dirs and
Barry Warsaw <barry@python.org>
parents: 65827
diff changeset
474 # directories with whitespace in the name to store libraries.
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
475 cflags, ldflags = sysconfig.get_config_vars(
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
476 'CFLAGS', 'LDFLAGS')
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
477 for item in cflags.split():
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
478 if item.startswith('-I'):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
479 inc_dirs.append(item[2:])
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
480
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
481 for item in ldflags.split():
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
482 if item.startswith('-L'):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
483 lib_dirs.append(item[2:])
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
484
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
485 # Check for MacOS X, which doesn't need libm.a at all
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
486 math_libs = ['m']
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
487 if platform == 'darwin':
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
488 math_libs = []
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
489
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
490 # XXX Omitted modules: gl, pure, dl, SGI-specific modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
491
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
492 #
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
493 # The following modules are all pretty straightforward, and compile
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
494 # on pretty much any POSIXish platform.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
495 #
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
496
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
497 # array objects
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
498 exts.append( Extension('array', ['arraymodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
499 # complex math library functions
57866
9751ddcc1882 Merged revisions 76978 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 57762
diff changeset
500 exts.append( Extension('cmath', ['cmathmodule.c', '_math.c'],
9751ddcc1882 Merged revisions 76978 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 57762
diff changeset
501 depends=['_math.h'],
16176
2dcbc1dfca9c Fix for MacOS X/Darwin: it doesn't need -lm, ever. (Noted by Steven Majewski)
Andrew M. Kuchling <amk@amk.ca>
parents: 16100
diff changeset
502 libraries=math_libs) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
503 # math library functions, e.g. sin()
57758
b45ca11b9a3e Merged revisions 76861 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 57490
diff changeset
504 exts.append( Extension('math', ['mathmodule.c', '_math.c'],
57762
b1896620c296 Merged revisions 76865 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 57758
diff changeset
505 depends=['_math.h'],
16176
2dcbc1dfca9c Fix for MacOS X/Darwin: it doesn't need -lm, ever. (Noted by Steven Majewski)
Andrew M. Kuchling <amk@amk.ca>
parents: 16100
diff changeset
506 libraries=math_libs) )
73126
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
507
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
508 # time libraries: librt may be needed for clock_gettime()
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
509 time_libs = []
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
510 lib = sysconfig.get_config_var('TIMEMODULE_LIB')
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
511 if lib:
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
512 time_libs.append(lib)
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
513
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
514 # time operations and variables
62364
6d3b05a429b5 Issue #9012: "Separate compilation of time and datetime modules."
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents: 62178
diff changeset
515 exts.append( Extension('time', ['timemodule.c', '_time.c'],
73126
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
516 libraries=time_libs) )
35e4b7c4bafa Close #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73000
diff changeset
517 exts.append( Extension('_datetime', ['_datetimemodule.c', '_time.c']) )
26829
f64c96922708 SF patch 658251: Install a C implementation of the Mersenne Twister as the
Raymond Hettinger <python@rcn.com>
parents: 26724
diff changeset
518 # random number generator implemented in C
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
519 exts.append( Extension("_random", ["_randommodule.c"]) )
31353
ed20259a1ea5 SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents: 31090
diff changeset
520 # bisect
ed20259a1ea5 SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents: 31090
diff changeset
521 exts.append( Extension("_bisect", ["_bisectmodule.c"]) )
30875
2acd28bd4d0f Convert heapq.py to a C implementation.
Raymond Hettinger <python@rcn.com>
parents: 30770
diff changeset
522 # heapq
31931
63b68cb2b442 * Restore the pure python version of heapq.py.
Raymond Hettinger <python@rcn.com>
parents: 31742
diff changeset
523 exts.append( Extension("_heapq", ["_heapqmodule.c"]) )
47645
0ae50aa7d97c Restore _pickle module accelerator module.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47634
diff changeset
524 # C-optimized pickle replacement
0ae50aa7d97c Restore _pickle module accelerator module.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47634
diff changeset
525 exts.append( Extension("_pickle", ["_pickle.c"]) )
41253
f29f1a8b7869 Patch #1680961: remove sys.exitfunc and replace it with a private C API. Also, reimplement atexit in C so it can take advantage of this private API.
Collin Winter <collinw@gmail.com>
parents: 41064
diff changeset
526 # atexit
f29f1a8b7869 Patch #1680961: remove sys.exitfunc and replace it with a private C API. Also, reimplement atexit in C so it can take advantage of this private API.
Collin Winter <collinw@gmail.com>
parents: 41064
diff changeset
527 exts.append( Extension("atexit", ["atexitmodule.c"]) )
46737
9f45979558a9 Merged revisions 62734,62736,62748,62769 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46694
diff changeset
528 # _json speedups
9f45979558a9 Merged revisions 62734,62736,62748,62769 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46694
diff changeset
529 exts.append( Extension("_json", ["_json.c"]) )
16416
7d39d9dcf2d6 Whitespace correction...
Marc-André Lemburg <mal@egenix.com>
parents: 16415
diff changeset
530 # Python C API test module
51520
94d9d525401c Merged revisions 69500 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 51359
diff changeset
531 exts.append( Extension('_testcapi', ['_testcapimodule.c'],
94d9d525401c Merged revisions 69500 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 51359
diff changeset
532 depends=['testcapi_long.h']) )
43527
2b746f28b399 remove hotshot profiler from Py3k
Fred Drake <fdrake@acm.org>
parents: 43480
diff changeset
533 # profiler (_lsprof is for cProfile.py)
36459
3abf33264146 Added the cProfile module.
Armin Rigo <arigo@tunes.org>
parents: 36396
diff changeset
534 exts.append( Extension('_lsprof', ['_lsprof.c', 'rotatingtree.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
535 # static Unicode character database
41818
bfc73d849e28 The unicode builtin is gone now. Fix setup.py so that
Walter Dörwald <walter@livinglogic.de>
parents: 41749
diff changeset
536 exts.append( Extension('unicodedata', ['unicodedata.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
537
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
538 # Modules with some UNIX dependencies -- on by default:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
539 # (If you have a really backward UNIX, select and socket may not be
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
540 # supported...)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
541
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
542 # fcntl(2) and ioctl(2)
64522
c2199175ada8 Merged revisions 84584 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63905
diff changeset
543 libs = []
c2199175ada8 Merged revisions 84584 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63905
diff changeset
544 if (config_h_vars.get('FLOCK_NEEDS_LIBBSD', False)):
c2199175ada8 Merged revisions 84584 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63905
diff changeset
545 # May be necessary on AIX for flock function
c2199175ada8 Merged revisions 84584 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63905
diff changeset
546 libs = ['bsd']
c2199175ada8 Merged revisions 84584 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63905
diff changeset
547 exts.append( Extension('fcntl', ['fcntlmodule.c'], libraries=libs) )
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
548 # pwd(3)
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
549 exts.append( Extension('pwd', ['pwdmodule.c']) )
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
550 # grp(3)
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
551 exts.append( Extension('grp', ['grpmodule.c']) )
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
552 # spwd, shadow passwords
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
553 if (config_h_vars.get('HAVE_GETSPNAM', False) or
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
554 config_h_vars.get('HAVE_GETSPENT', False)):
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
555 exts.append( Extension('spwd', ['spwdmodule.c']) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
556 else:
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
557 missing.append('spwd')
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
558
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
559 # select(2); not on ancient System V
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
560 exts.append( Extension('select', ['selectmodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
561
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
562 # Fred Drake's interface to the Python parser
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
563 exts.append( Extension('parser', ['parsermodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
564
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
565 # Memory-mapped files (also works on Win32).
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
566 exts.append( Extension('mmap', ['mmapmodule.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
567
33370
af65004f622f Remove mpz, rotor, xreadlines modules
Andrew M. Kuchling <amk@amk.ca>
parents: 33294
diff changeset
568 # Lance Ellinghaus's syslog module
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
569 # syslog daemon interface
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
570 exts.append( Extension('syslog', ['syslogmodule.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
571
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
572 #
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
573 # Here ends the simple stuff. From here on, modules need certain
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
574 # libraries, are platform-specific, or present other surprises.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
575 #
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
576
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
577 # Multimedia modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
578 # These don't work for 64-bit platforms!!!
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
579 # These represent audio samples or images as strings:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
580
32763
8ad5a1620092 Move comment that goes along with audioop
Neal Norwitz <nnorwitz@gmail.com>
parents: 32762
diff changeset
581 # Operations on audio samples
32797
ea54fdb86530 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 32765
diff changeset
582 # According to #993173, this one should actually work fine on
32762
76ad814bc67c Patch #993173: Enable audioop on 64-bit platforms.
Martin v. Löwis <martin@v.loewis.de>
parents: 32735
diff changeset
583 # 64-bit platforms.
76ad814bc67c Patch #993173: Enable audioop on 64-bit platforms.
Martin v. Löwis <martin@v.loewis.de>
parents: 32735
diff changeset
584 exts.append( Extension('audioop', ['audioop.c']) )
76ad814bc67c Patch #993173: Enable audioop on 64-bit platforms.
Martin v. Löwis <martin@v.loewis.de>
parents: 32735
diff changeset
585
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
586 # readline
36648
95800875bd12 If the readline library is found try and determine whether it's the broken
Jack Jansen <jack.jansen@cwi.nl>
parents: 36479
diff changeset
587 do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
62355
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
588 readline_termcap_library = ""
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
589 curses_library = ""
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
590 # Determine if readline is already linked against curses or tinfo.
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
591 if do_readline and find_executable('ldd'):
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
592 # Cannot use os.popen here in py3k.
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
593 tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib')
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
594 if not os.path.exists(self.build_temp):
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
595 os.makedirs(self.build_temp)
63052
fa8f38834287 Merged revisions 82927 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 62543
diff changeset
596 ret = os.system("ldd %s > %s" % (do_readline, tmpfile))
fa8f38834287 Merged revisions 82927 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 62543
diff changeset
597 if ret >> 8 == 0:
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
598 with open(tmpfile) as fp:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
599 for ln in fp:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
600 if 'curses' in ln:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
601 readline_termcap_library = re.sub(
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
602 r'.*lib(n?cursesw?)\.so.*', r'\1', ln
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
603 ).rstrip()
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
604 break
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
605 # termcap interface split out from ncurses
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
606 if 'tinfo' in ln:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
607 readline_termcap_library = 'tinfo'
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
608 break
62355
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
609 os.unlink(tmpfile)
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
610 # Issue 7384: If readline is already linked against curses,
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
611 # use the same library for the readline and curses modules.
62178
a360e114866b Issue #7384: If the system readline library is linked against ncurses,
Stefan Krah <stefan@bytereef.org>
parents: 62050
diff changeset
612 if 'curses' in readline_termcap_library:
a360e114866b Issue #7384: If the system readline library is linked against ncurses,
Stefan Krah <stefan@bytereef.org>
parents: 62050
diff changeset
613 curses_library = readline_termcap_library
63136
29a3eda89995 reverted distutils its 3.1 state. All new work is now happening in disutils2, and distutils is now feature-frozen.
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 63051
diff changeset
614 elif self.compiler.find_library_file(lib_dirs, 'ncursesw'):
62355
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
615 curses_library = 'ncursesw'
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
616 elif self.compiler.find_library_file(lib_dirs, 'ncurses'):
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
617 curses_library = 'ncurses'
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
618 elif self.compiler.find_library_file(lib_dirs, 'curses'):
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
619 curses_library = 'curses'
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
620
56135
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
621 if platform == 'darwin':
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
622 os_release = int(os.uname()[2].split('.')[0])
59460
445f801ca2d0 Merged revisions 78784 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59372
diff changeset
623 dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
445f801ca2d0 Merged revisions 78784 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59372
diff changeset
624 if dep_target and dep_target.split('.') < ['10', '5']:
445f801ca2d0 Merged revisions 78784 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59372
diff changeset
625 os_release = 8
56135
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
626 if os_release < 9:
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
627 # MacOSX 10.4 has a broken readline. Don't try to build
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
628 # the readline module unless the user has installed a fixed
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
629 # readline package
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
630 if find_file('readline/rlconf.h', inc_dirs, []) is None:
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
631 do_readline = False
36648
95800875bd12 If the readline library is found try and determine whether it's the broken
Jack Jansen <jack.jansen@cwi.nl>
parents: 36479
diff changeset
632 if do_readline:
56135
1c50dc213312 Merged revisions 74970 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55970
diff changeset
633 if platform == 'darwin' and os_release < 9:
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
634 # In every directory on the search path search for a dynamic
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
635 # library and then a static library, instead of first looking
43239
c6b1123e0e6c fix typo
Fred Drake <fdrake@acm.org>
parents: 43212
diff changeset
636 # for dynamic libraries on the entire path.
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
637 # This way a staticly linked custom readline gets picked up
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
638 # before the (possibly broken) dynamic library in /usr/lib.
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
639 readline_extra_link_args = ('-Wl,-search_paths_first',)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
640 else:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
641 readline_extra_link_args = ()
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
642
16283
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
643 readline_libs = ['readline']
62355
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
644 if readline_termcap_library:
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
645 pass # Issue 7384: Already linked against curses or tinfo.
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
646 elif curses_library:
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
647 readline_libs.append(curses_library)
19319
d370a58fb7fd Link readline module with ncurses in preference to termcap. [Bug ##441580]
Andrew M. Kuchling <amk@amk.ca>
parents: 19269
diff changeset
648 elif self.compiler.find_library_file(lib_dirs +
55128
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
649 ['/usr/lib/termcap'],
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
650 'termcap'):
16283
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
651 readline_libs.append('termcap')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
652 exts.append( Extension('readline', ['readline.c'],
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
653 library_dirs=['/usr/lib/termcap'],
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
654 extra_link_args=readline_extra_link_args,
16283
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
655 libraries=readline_libs) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
656 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
657 missing.append('readline')
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
658
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
659 # crypt module.
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
660
63136
29a3eda89995 reverted distutils its 3.1 state. All new work is now happening in disutils2, and distutils is now feature-frozen.
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 63051
diff changeset
661 if self.compiler.find_library_file(lib_dirs, 'crypt'):
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
662 libs = ['crypt']
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
663 else:
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
664 libs = []
68097
372b2ef0ff37 Issue #10924: Adding salt and Modular Crypt Format to crypt library.
Sean Reifscheider <jafo@tummy.com>
parents: 67169
diff changeset
665 exts.append( Extension('_crypt', ['_cryptmodule.c'], libraries=libs) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
666
28341
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
667 # CSV files
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
668 exts.append( Extension('_csv', ['_csv.c']) )
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
669
59605
768722b2ae0a * Replaces the internals of the subprocess module from fork through exec on
Gregory P. Smith <greg@mad-scientist.com>
parents: 59460
diff changeset
670 # POSIX subprocess module helper.
768722b2ae0a * Replaces the internals of the subprocess module from fork through exec on
Gregory P. Smith <greg@mad-scientist.com>
parents: 59460
diff changeset
671 exts.append( Extension('_posixsubprocess', ['_posixsubprocess.c']) )
768722b2ae0a * Replaces the internals of the subprocess module from fork through exec on
Gregory P. Smith <greg@mad-scientist.com>
parents: 59460
diff changeset
672
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
673 # socket(2)
23811
e3e019bc4e1e Add dependencies on socketmodule.h.
Guido van Rossum <guido@python.org>
parents: 23777
diff changeset
674 exts.append( Extension('_socket', ['socketmodule.c'],
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
675 depends = ['socketmodule.h']) )
21959
3957d155f8c5 Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents: 21942
diff changeset
676 # Detect SSL support for the socket module (via _ssl)
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
677 search_for_ssl_incs_in = [
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
678 '/usr/local/ssl/include',
16038
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
679 '/usr/contrib/ssl/include/'
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
680 ]
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
681 ssl_incs = find_file('openssl/ssl.h', inc_dirs,
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
682 search_for_ssl_incs_in
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
683 )
29043
8e79dc3731bf Only look for krb5.h if ssl.h was found.
Martin v. Löwis <martin@v.loewis.de>
parents: 29013
diff changeset
684 if ssl_incs is not None:
8e79dc3731bf Only look for krb5.h if ssl.h was found.
Martin v. Löwis <martin@v.loewis.de>
parents: 29013
diff changeset
685 krb5_h = find_file('krb5.h', inc_dirs,
8e79dc3731bf Only look for krb5.h if ssl.h was found.
Martin v. Löwis <martin@v.loewis.de>
parents: 29013
diff changeset
686 ['/usr/kerberos/include'])
8e79dc3731bf Only look for krb5.h if ssl.h was found.
Martin v. Löwis <martin@v.loewis.de>
parents: 29013
diff changeset
687 if krb5_h:
8e79dc3731bf Only look for krb5.h if ssl.h was found.
Martin v. Löwis <martin@v.loewis.de>
parents: 29013
diff changeset
688 ssl_incs += krb5_h
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
689 ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
16038
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
690 ['/usr/local/ssl/lib',
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
691 '/usr/contrib/ssl/lib/'
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
692 ] )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
693
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
694 if (ssl_incs is not None and
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
695 ssl_libs is not None):
21959
3957d155f8c5 Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents: 21942
diff changeset
696 exts.append( Extension('_ssl', ['_ssl.c'],
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
697 include_dirs = ssl_incs,
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
698 library_dirs = ssl_libs,
23811
e3e019bc4e1e Add dependencies on socketmodule.h.
Guido van Rossum <guido@python.org>
parents: 23777
diff changeset
699 libraries = ['ssl', 'crypto'],
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
700 depends = ['socketmodule.h']), )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
701 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
702 missing.append('_ssl')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
703
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
704 # find out which version of OpenSSL we have
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
705 openssl_ver = 0
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
706 openssl_ver_re = re.compile(
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
707 '^\s*#\s*define\s+OPENSSL_VERSION_NUMBER\s+(0x[0-9a-fA-F]+)' )
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
708
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
709 # look for the openssl version header on the compiler search path.
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
710 opensslv_h = find_file('openssl/opensslv.h', [],
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
711 inc_dirs + search_for_ssl_incs_in)
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
712 if opensslv_h:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
713 name = os.path.join(opensslv_h[0], 'openssl/opensslv.h')
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
714 if sys.platform == 'darwin' and is_macosx_sdk_path(name):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
715 name = os.path.join(macosx_sdk_root(), name[1:])
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
716 try:
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
717 with open(name, 'r') as incfile:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
718 for line in incfile:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
719 m = openssl_ver_re.match(line)
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
720 if m:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
721 openssl_ver = eval(m.group(1))
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
722 except IOError as msg:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
723 print("IOError while reading opensshv.h:", msg)
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
724 pass
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
725
42653
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
726 #print('openssl_ver = 0x%08x' % openssl_ver)
58108
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
727 min_openssl_ver = 0x00907000
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
728 have_any_openssl = ssl_incs is not None and ssl_libs is not None
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
729 have_usable_openssl = (have_any_openssl and
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
730 openssl_ver >= min_openssl_ver)
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
731
58108
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
732 if have_any_openssl:
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
733 if have_usable_openssl:
42653
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
734 # The _hashlib module wraps optimized implementations
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
735 # of hash functions from the OpenSSL library.
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
736 exts.append( Extension('_hashlib', ['_hashopenssl.c'],
58132
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
737 depends = ['hashlib.h'],
42653
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
738 include_dirs = ssl_incs,
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
739 library_dirs = ssl_libs,
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
740 libraries = ['ssl', 'crypto']) )
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
741 else:
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
742 print("warning: openssl 0x%08x is too old for _hashlib" %
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
743 openssl_ver)
986776456791 Print warning when openssl is too old; it's pretty essential at this point.
Guido van Rossum <guido@python.org>
parents: 42645
diff changeset
744 missing.append('_hashlib')
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
745
58108
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
746 min_sha2_openssl_ver = 0x00908000
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58068
diff changeset
747 if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver:
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
748 # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
58132
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
749 exts.append( Extension('_sha256', ['sha256module.c'],
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
750 depends=['hashlib.h']) )
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
751 exts.append( Extension('_sha512', ['sha512module.c'],
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
752 depends=['hashlib.h']) )
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
753
58110
abbdc31ea790 small logic cleanup, avoid duplicate openssl_ver check.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58108
diff changeset
754 if COMPILED_WITH_PYDEBUG or not have_usable_openssl:
43294
78f1c329c983 Adds stand alone _md5 and _sha1 modules for use by hashlib on systems
Gregory P. Smith <greg@mad-scientist.com>
parents: 43266
diff changeset
755 # no openssl at all, use our own md5 and sha1
58132
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
756 exts.append( Extension('_md5', ['md5module.c'],
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
757 depends=['hashlib.h']) )
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
758 exts.append( Extension('_sha1', ['sha1module.c'],
06c968eb4b40 add missing hashlib.h deps.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58110
diff changeset
759 depends=['hashlib.h']) )
43294
78f1c329c983 Adds stand alone _md5 and _sha1 modules for use by hashlib on systems
Gregory P. Smith <greg@mad-scientist.com>
parents: 43266
diff changeset
760
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
761 # Modules that provide persistent dictionary-like semantics. You will
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
762 # probably want to arrange for at least one of them to be available on
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
763 # your machine, though none are defined by default because of library
47285
afbde360dd1a Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents: 47230
diff changeset
764 # dependencies. The Python module dbm/__init__.py provides an
afbde360dd1a Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents: 47230
diff changeset
765 # implementation independent wrapper for these; dbm/dumb.py provides
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
766 # similar functionality (but slower of course) implemented in Python.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
767
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
768 # Sleepycat^WOracle Berkeley DB interface.
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
769 # http://www.oracle.com/database/berkeley-db/db/index.html
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
770 #
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
771 # This requires the Sleepycat^WOracle DB code. The supported versions
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
772 # are set below. Visit the URL above to download
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
773 # a release. Most open source OSes come with one or more
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
774 # versions of BerkeleyDB already installed.
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
775
66485
5084ce948437 Merged revisions 85645 via svnmerge from
Matthias Klose <doko@ubuntu.com>
parents: 65559
diff changeset
776 max_db_ver = (5, 1)
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
777 min_db_ver = (3, 3)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
778 db_setup_debug = False # verbose debug prints from this script?
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
779
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
780 def allow_db_ver(db_ver):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
781 """Returns a boolean if the given BerkeleyDB version is acceptable.
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
782
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
783 Args:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
784 db_ver: A tuple of the version to verify.
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
785 """
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
786 if not (min_db_ver <= db_ver <= max_db_ver):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
787 return False
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
788 return True
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
789
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
790 def gen_db_minor_ver_nums(major):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
791 if major == 4:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
792 for x in range(max_db_ver[1]+1):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
793 if allow_db_ver((4, x)):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
794 yield x
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
795 elif major == 3:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
796 for x in (3,):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
797 if allow_db_ver((3, x)):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
798 yield x
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
799 else:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
800 raise ValueError("unknown major BerkeleyDB version", major)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
801
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
802 # construct a list of paths to look for the header file in on
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
803 # top of the normal inc_dirs.
49000
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
804 db_inc_paths = [
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
805 '/usr/include/db4',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
806 '/usr/local/include/db4',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
807 '/opt/sfw/include/db4',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
808 '/usr/include/db3',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
809 '/usr/local/include/db3',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
810 '/opt/sfw/include/db3',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
811 # Fink defaults (http://fink.sourceforge.net/)
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
812 '/sw/include/db4',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
813 '/sw/include/db3',
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
814 ]
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
815 # 4.x minor number specific paths
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
816 for x in gen_db_minor_ver_nums(4):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
817 db_inc_paths.append('/usr/include/db4%d' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
818 db_inc_paths.append('/usr/include/db4.%d' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
819 db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
820 db_inc_paths.append('/usr/local/include/db4%d' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
821 db_inc_paths.append('/pkg/db-4.%d/include' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
822 db_inc_paths.append('/opt/db-4.%d/include' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
823 # MacPorts default (http://www.macports.org/)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
824 db_inc_paths.append('/opt/local/include/db4%d' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
825 # 3.x minor number specific paths
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
826 for x in gen_db_minor_ver_nums(3):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
827 db_inc_paths.append('/usr/include/db3%d' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
828 db_inc_paths.append('/usr/local/BerkeleyDB.3.%d/include' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
829 db_inc_paths.append('/usr/local/include/db3%d' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
830 db_inc_paths.append('/pkg/db-3.%d/include' % x)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
831 db_inc_paths.append('/opt/db-3.%d/include' % x)
49000
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
832
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
833 # Add some common subdirectories for Sleepycat DB to the list,
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
834 # based on the standard include directories. This way DB3/4 gets
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
835 # picked up when it is installed in a non-standard prefix and
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
836 # the user has added that prefix into inc_dirs.
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
837 std_variants = []
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
838 for dn in inc_dirs:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
839 std_variants.append(os.path.join(dn, 'db3'))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
840 std_variants.append(os.path.join(dn, 'db4'))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
841 for x in gen_db_minor_ver_nums(4):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
842 std_variants.append(os.path.join(dn, "db4%d"%x))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
843 std_variants.append(os.path.join(dn, "db4.%d"%x))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
844 for x in gen_db_minor_ver_nums(3):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
845 std_variants.append(os.path.join(dn, "db3%d"%x))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
846 std_variants.append(os.path.join(dn, "db3.%d"%x))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
847
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
848 db_inc_paths = std_variants + db_inc_paths
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
849 db_inc_paths = [p for p in db_inc_paths if os.path.exists(p)]
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
850
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
851 db_ver_inc_map = {}
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
852
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
853 if sys.platform == 'darwin':
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
854 sysroot = macosx_sdk_root()
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
855
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
856 class db_found(Exception): pass
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
857 try:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
858 # See whether there is a Sleepycat header in the standard
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
859 # search path.
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
860 for d in inc_dirs + db_inc_paths:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
861 f = os.path.join(d, "db.h")
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
862 if sys.platform == 'darwin' and is_macosx_sdk_path(d):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
863 f = os.path.join(sysroot, d[1:], "db.h")
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
864
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
865 if db_setup_debug: print("db: looking for db.h in", f)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
866 if os.path.exists(f):
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
867 with open(f, 'rb') as file:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
868 f = file.read()
55573
5c8b2238a2f5 Merged revisions 74356-74357 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55065
diff changeset
869 m = re.search(br"#define\WDB_VERSION_MAJOR\W(\d+)", f)
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
870 if m:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
871 db_major = int(m.group(1))
55573
5c8b2238a2f5 Merged revisions 74356-74357 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55065
diff changeset
872 m = re.search(br"#define\WDB_VERSION_MINOR\W(\d+)", f)
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
873 db_minor = int(m.group(1))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
874 db_ver = (db_major, db_minor)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
875
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
876 # Avoid 4.6 prior to 4.6.21 due to a BerkeleyDB bug
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
877 if db_ver == (4, 6):
55573
5c8b2238a2f5 Merged revisions 74356-74357 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55065
diff changeset
878 m = re.search(br"#define\WDB_VERSION_PATCH\W(\d+)", f)
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
879 db_patch = int(m.group(1))
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
880 if db_patch < 21:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
881 print("db.h:", db_ver, "patch", db_patch,
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
882 "being ignored (4.6.x must be >= 4.6.21)")
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
883 continue
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
884
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
885 if ( (db_ver not in db_ver_inc_map) and
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
886 allow_db_ver(db_ver) ):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
887 # save the include directory with the db.h version
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
888 # (first occurrence only)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
889 db_ver_inc_map[db_ver] = d
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
890 if db_setup_debug:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
891 print("db.h: found", db_ver, "in", d)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
892 else:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
893 # we already found a header for this library version
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
894 if db_setup_debug: print("db.h: ignoring", d)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
895 else:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
896 # ignore this header, it didn't contain a version number
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
897 if db_setup_debug:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
898 print("db.h: no version number version in", d)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
899
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
900 db_found_vers = list(db_ver_inc_map.keys())
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
901 db_found_vers.sort()
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
902
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
903 while db_found_vers:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
904 db_ver = db_found_vers.pop()
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
905 db_incdir = db_ver_inc_map[db_ver]
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
906
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
907 # check lib directories parallel to the location of the header
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
908 db_dirs_to_check = [
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
909 db_incdir.replace("include", 'lib64'),
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
910 db_incdir.replace("include", 'lib'),
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
911 ]
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
912
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
913 if sys.platform != 'darwin':
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
914 db_dirs_to_check = list(filter(os.path.isdir, db_dirs_to_check))
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
915
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
916 else:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
917 # Same as other branch, but takes OSX SDK into account
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
918 tmp = []
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
919 for dn in db_dirs_to_check:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
920 if is_macosx_sdk_path(dn):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
921 if os.path.isdir(os.path.join(sysroot, dn[1:])):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
922 tmp.append(dn)
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
923 else:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
924 if os.path.isdir(dn):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
925 tmp.append(dn)
62543
02044573eeec Merged revisions 82273 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62355
diff changeset
926 db_dirs_to_check = tmp
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
927
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
928 db_dirs_to_check = tmp
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
929
68488
0991b40e895d #11515: fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66485
diff changeset
930 # Look for a version specific db-X.Y before an ambiguous dbX
52952
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
931 # XXX should we -ever- look for a dbX name? Do any
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
932 # systems really not name their library by version and
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
933 # symlink to more general names?
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
934 for dblib in (('db-%d.%d' % db_ver),
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
935 ('db%d%d' % db_ver),
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
936 ('db%d' % db_ver[0])):
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
937 dblib_file = self.compiler.find_library_file(
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
938 db_dirs_to_check + lib_dirs, dblib )
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
939 if dblib_file:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
940 dblib_dir = [ os.path.abspath(os.path.dirname(dblib_file)) ]
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
941 raise db_found
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
942 else:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
943 if db_setup_debug: print("db lib: ", dblib, "not found")
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
944
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
945 except db_found:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
946 if db_setup_debug:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
947 print("bsddb using BerkeleyDB lib:", db_ver, dblib)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
948 print("bsddb lib dir:", dblib_dir, " inc dir:", db_incdir)
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
949 db_incs = [db_incdir]
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
950 dblibs = [dblib]
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
951 else:
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
952 if db_setup_debug: print("db: no appropriate library found")
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
953 db_incs = None
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
954 dblibs = []
94832455e37d - Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
Matthias Klose <doko@ubuntu.com>
parents: 52902
diff changeset
955 dblib_dir = None
49000
9957a36fc167 db_incs is needed
Benjamin Peterson <benjamin@python.org>
parents: 48994
diff changeset
956
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
957 # The sqlite interface
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39575
diff changeset
958 sqlite_setup_debug = False # verbose debug prints from this script?
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
959
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
960 # We hunt for #define SQLITE_VERSION "n.n.n"
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
961 # We need to find >= sqlite version 3.0.8
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
962 sqlite_incdir = sqlite_libdir = None
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
963 sqlite_inc_paths = [ '/usr/include',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
964 '/usr/include/sqlite',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
965 '/usr/include/sqlite3',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
966 '/usr/local/include',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
967 '/usr/local/include/sqlite',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
968 '/usr/local/include/sqlite3',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
969 ]
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
970 MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
971 MIN_SQLITE_VERSION = ".".join([str(x)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
972 for x in MIN_SQLITE_VERSION_NUMBER])
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
973
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
974 # Scan the default include directories before the SQLite specific
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
975 # ones. This allows one to override the copy of sqlite on OSX,
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
976 # where /usr/include contains an old version of sqlite.
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
977 if sys.platform == 'darwin':
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
978 sysroot = macosx_sdk_root()
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
979
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
980 for d in inc_dirs + sqlite_inc_paths:
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
981 f = os.path.join(d, "sqlite3.h")
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
982
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
983 if sys.platform == 'darwin' and is_macosx_sdk_path(d):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
984 f = os.path.join(sysroot, d[1:], "sqlite3.h")
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
985
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
986 if os.path.exists(f):
40774
793e0323d4d6 Essential changes for print function changes.
Guido van Rossum <guido@python.org>
parents: 40645
diff changeset
987 if sqlite_setup_debug: print("sqlite: found %s"%f)
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
988 with open(f) as file:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
989 incf = file.read()
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
990 m = re.search(
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
991 r'\s*.*#\s*.*define\s.*SQLITE_VERSION\W*"(.*)"', incf)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
992 if m:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
993 sqlite_version = m.group(1)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
994 sqlite_version_tuple = tuple([int(x)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
995 for x in sqlite_version.split(".")])
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
996 if sqlite_version_tuple >= MIN_SQLITE_VERSION_NUMBER:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
997 # we win!
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39575
diff changeset
998 if sqlite_setup_debug:
40774
793e0323d4d6 Essential changes for print function changes.
Guido van Rossum <guido@python.org>
parents: 40645
diff changeset
999 print("%s/sqlite3.h: version %s"%(d, sqlite_version))
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1000 sqlite_incdir = d
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1001 break
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1002 else:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1003 if sqlite_setup_debug:
40774
793e0323d4d6 Essential changes for print function changes.
Guido van Rossum <guido@python.org>
parents: 40645
diff changeset
1004 print("%s: version %d is too old, need >= %s"%(d,
793e0323d4d6 Essential changes for print function changes.
Guido van Rossum <guido@python.org>
parents: 40645
diff changeset
1005 sqlite_version, MIN_SQLITE_VERSION))
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1006 elif sqlite_setup_debug:
40774
793e0323d4d6 Essential changes for print function changes.
Guido van Rossum <guido@python.org>
parents: 40645
diff changeset
1007 print("sqlite: %s had no SQLITE_VERSION"%(f,))
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1008
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1009 if sqlite_incdir:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1010 sqlite_dirs_to_check = [
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1011 os.path.join(sqlite_incdir, '..', 'lib64'),
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1012 os.path.join(sqlite_incdir, '..', 'lib'),
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1013 os.path.join(sqlite_incdir, '..', '..', 'lib64'),
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1014 os.path.join(sqlite_incdir, '..', '..', 'lib'),
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1015 ]
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1016 sqlite_libfile = self.compiler.find_library_file(
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1017 sqlite_dirs_to_check + lib_dirs, 'sqlite3')
49493
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 49458
diff changeset
1018 if sqlite_libfile:
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 49458
diff changeset
1019 sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))]
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1020
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1021 if sqlite_incdir and sqlite_libdir:
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1022 sqlite_srcs = ['_sqlite/cache.c',
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1023 '_sqlite/connection.c',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1024 '_sqlite/cursor.c',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1025 '_sqlite/microprotocols.c',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1026 '_sqlite/module.c',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1027 '_sqlite/prepare_protocol.c',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1028 '_sqlite/row.c',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1029 '_sqlite/statement.c',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1030 '_sqlite/util.c', ]
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1031
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1032 sqlite_defines = []
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1033 if sys.platform != "win32":
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1034 sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1035 else:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1036 sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1037
65827
5bdc0d6c6939 add --enable-loadable-sqlite-extensions #10268
Benjamin Peterson <benjamin@python.org>
parents: 65822
diff changeset
1038 # Enable support for loadable extensions in the sqlite3 module
5bdc0d6c6939 add --enable-loadable-sqlite-extensions #10268
Benjamin Peterson <benjamin@python.org>
parents: 65822
diff changeset
1039 # if --enable-loadable-sqlite-extensions configure option is used.
5bdc0d6c6939 add --enable-loadable-sqlite-extensions #10268
Benjamin Peterson <benjamin@python.org>
parents: 65822
diff changeset
1040 if '--enable-loadable-sqlite-extensions' not in sysconfig.get_config_var("CONFIG_ARGS"):
5bdc0d6c6939 add --enable-loadable-sqlite-extensions #10268
Benjamin Peterson <benjamin@python.org>
parents: 65822
diff changeset
1041 sqlite_defines.append(("SQLITE_OMIT_LOAD_EXTENSION", "1"))
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1042
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1043 if sys.platform == 'darwin':
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1044 # In every directory on the search path search for a dynamic
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1045 # library and then a static library, instead of first looking
68585
bf94b6a73fc8 #11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 68488
diff changeset
1046 # for dynamic libraries on the entire path.
bf94b6a73fc8 #11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 68488
diff changeset
1047 # This way a statically linked custom sqlite gets picked up
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1048 # before the dynamic library in /usr/lib.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1049 sqlite_extra_link_args = ('-Wl,-search_paths_first',)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1050 else:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1051 sqlite_extra_link_args = ()
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1052
70694
b313fc77fa11 When building sqlite3, the directory where sqlite.h was found was
Brett Cannon <brett@python.org>
parents: 70566
diff changeset
1053 include_dirs = ["Modules/_sqlite"]
b313fc77fa11 When building sqlite3, the directory where sqlite.h was found was
Brett Cannon <brett@python.org>
parents: 70566
diff changeset
1054 # Only include the directory where sqlite was found if it does
b313fc77fa11 When building sqlite3, the directory where sqlite.h was found was
Brett Cannon <brett@python.org>
parents: 70566
diff changeset
1055 # not already exist in set include directories, otherwise you
b313fc77fa11 When building sqlite3, the directory where sqlite.h was found was
Brett Cannon <brett@python.org>
parents: 70566
diff changeset
1056 # can end up with a bad search path order.
b313fc77fa11 When building sqlite3, the directory where sqlite.h was found was
Brett Cannon <brett@python.org>
parents: 70566
diff changeset
1057 if sqlite_incdir not in self.compiler.include_dirs:
b313fc77fa11 When building sqlite3, the directory where sqlite.h was found was
Brett Cannon <brett@python.org>
parents: 70566
diff changeset
1058 include_dirs.append(sqlite_incdir)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1059 exts.append(Extension('_sqlite3', sqlite_srcs,
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1060 define_macros=sqlite_defines,
70694
b313fc77fa11 When building sqlite3, the directory where sqlite.h was found was
Brett Cannon <brett@python.org>
parents: 70566
diff changeset
1061 include_dirs=include_dirs,
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1062 library_dirs=sqlite_libdir,
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1063 runtime_library_dirs=sqlite_libdir,
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1064 extra_link_args=sqlite_extra_link_args,
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1065 libraries=["sqlite3",]))
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1066 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1067 missing.append('_sqlite3')
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
1068
58069
4ffb93389256 Merged revisions 77216 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57999
diff changeset
1069 dbm_order = ['gdbm']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1070 # The standard Unix dbm module:
24143
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
1071 if platform not in ['cygwin']:
53634
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1072 config_args = [arg.strip("'")
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1073 for arg in sysconfig.get_config_var("CONFIG_ARGS").split()]
58069
4ffb93389256 Merged revisions 77216 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57999
diff changeset
1074 dbm_args = [arg for arg in config_args
53634
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1075 if arg.startswith('--with-dbmliborder=')]
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1076 if dbm_args:
58069
4ffb93389256 Merged revisions 77216 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57999
diff changeset
1077 dbm_order = [arg.split('=')[-1] for arg in dbm_args][-1].split(":")
53634
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1078 else:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1079 dbm_order = "ndbm:gdbm:bdb".split(":")
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1080 dbmext = None
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1081 for cand in dbm_order:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1082 if cand == "ndbm":
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1083 if find_file("ndbm.h", inc_dirs, []) is not None:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1084 # Some systems have -lndbm, others don't
63136
29a3eda89995 reverted distutils its 3.1 state. All new work is now happening in disutils2, and distutils is now feature-frozen.
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 63051
diff changeset
1085 if self.compiler.find_library_file(lib_dirs,
55128
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
1086 'ndbm'):
53634
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1087 ndbm_libs = ['ndbm']
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1088 else:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1089 ndbm_libs = []
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1090 print("building dbm using ndbm")
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1091 dbmext = Extension('_dbm', ['_dbmmodule.c'],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1092 define_macros=[
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1093 ('HAVE_NDBM_H',None),
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1094 ],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1095 libraries=ndbm_libs)
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1096 break
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1097
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1098 elif cand == "gdbm":
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1099 if self.compiler.find_library_file(lib_dirs, 'gdbm'):
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1100 gdbm_libs = ['gdbm']
63136
29a3eda89995 reverted distutils its 3.1 state. All new work is now happening in disutils2, and distutils is now feature-frozen.
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 63051
diff changeset
1101 if self.compiler.find_library_file(lib_dirs,
55128
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
1102 'gdbm_compat'):
53634
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1103 gdbm_libs.append('gdbm_compat')
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1104 if find_file("gdbm/ndbm.h", inc_dirs, []) is not None:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1105 print("building dbm using gdbm")
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1106 dbmext = Extension(
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1107 '_dbm', ['_dbmmodule.c'],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1108 define_macros=[
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1109 ('HAVE_GDBM_NDBM_H', None),
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1110 ],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1111 libraries = gdbm_libs)
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1112 break
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1113 if find_file("gdbm-ndbm.h", inc_dirs, []) is not None:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1114 print("building dbm using gdbm")
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1115 dbmext = Extension(
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1116 '_dbm', ['_dbmmodule.c'],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1117 define_macros=[
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1118 ('HAVE_GDBM_DASH_NDBM_H', None),
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1119 ],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1120 libraries = gdbm_libs)
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1121 break
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1122 elif cand == "bdb":
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1123 if db_incs is not None:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1124 print("building dbm using bdb")
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1125 dbmext = Extension('_dbm', ['_dbmmodule.c'],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1126 library_dirs=dblib_dir,
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1127 runtime_library_dirs=dblib_dir,
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1128 include_dirs=db_incs,
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1129 define_macros=[
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1130 ('HAVE_BERKDB_H', None),
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1131 ('DB_DBM_HSEARCH', None),
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1132 ],
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1133 libraries=dblibs)
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1134 break
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1135 if dbmext is not None:
c4a1c4884056 - Issue #4587: Add configure option --with-dbmliborder=db1:db2:... to specify
Matthias Klose <doko@ubuntu.com>
parents: 53440
diff changeset
1136 exts.append(dbmext)
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1137 else:
47285
afbde360dd1a Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents: 47230
diff changeset
1138 missing.append('_dbm')
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1139
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1140 # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm:
58069
4ffb93389256 Merged revisions 77216 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57999
diff changeset
1141 if ('gdbm' in dbm_order and
4ffb93389256 Merged revisions 77216 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57999
diff changeset
1142 self.compiler.find_library_file(lib_dirs, 'gdbm')):
47285
afbde360dd1a Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents: 47230
diff changeset
1143 exts.append( Extension('_gdbm', ['_gdbmmodule.c'],
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1144 libraries = ['gdbm'] ) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1145 else:
47285
afbde360dd1a Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents: 47230
diff changeset
1146 missing.append('_gdbm')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1147
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1148 # Unix-only modules
61259
1f7506f23771 Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60822
diff changeset
1149 if platform != 'win32':
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1150 # Steen Lumholt's termios module
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1151 exts.append( Extension('termios', ['termios.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1152 # Jeremy Hylton's rlimit interface
56726
14b55a4e8725 Remove AtheOS support, as per PEP 11 (which claims that all code was removed in Python 3.0).
Antoine Pitrou <solipsis@pitrou.net>
parents: 56135
diff changeset
1153 exts.append( Extension('resource', ['resource.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1154
16721
4db0fddb6917 Patch #103544: always compile the dl and nis modules on Unix; let's see
Andrew M. Kuchling <amk@amk.ca>
parents: 16471
diff changeset
1155 # Sun yellow pages. Some systems have the functions in libc.
57998
d4ac3a8000c7 Merged revisions 77129,77132 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57491
diff changeset
1156 if (platform not in ['cygwin', 'qnx6'] and
d4ac3a8000c7 Merged revisions 77129,77132 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57491
diff changeset
1157 find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
57999
a7f6a53daa12 compiler_obj -> compiler
Benjamin Peterson <benjamin@python.org>
parents: 57998
diff changeset
1158 if (self.compiler.find_library_file(lib_dirs, 'nsl')):
16804
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1159 libs = ['nsl']
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1160 else:
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1161 libs = []
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1162 exts.append( Extension('nis', ['nismodule.c'],
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1163 libraries = libs) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1164 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1165 missing.append('nis')
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1166 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1167 missing.extend(['nis', 'resource', 'termios'])
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1168
71656
d98b5e0f0862 Fix build error in _curses module when not using libncursesw.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 70731
diff changeset
1169 curses_defines = []
d98b5e0f0862 Fix build error in _curses module when not using libncursesw.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 70731
diff changeset
1170 if curses_library == 'ncursesw':
d98b5e0f0862 Fix build error in _curses module when not using libncursesw.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 70731
diff changeset
1171 curses_defines.append(('HAVE_NCURSESW', '1'))
d98b5e0f0862 Fix build error in _curses module when not using libncursesw.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 70731
diff changeset
1172
31468
de2ed800fa50 a couple other sunos4 support items removed
Skip Montanaro <skip@pobox.com>
parents: 31436
diff changeset
1173 # Curses support, requiring the System V version of curses, often
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1174 # provided by the ncurses library.
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1175 panel_library = 'panel'
62355
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
1176 if curses_library.startswith('ncurses'):
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
1177 if curses_library == 'ncursesw':
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
1178 # Bug 1464056: If _curses.so links with ncursesw,
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
1179 # _curses_panel.so must link with panelw.
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
1180 panel_library = 'panelw'
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
1181 curses_libs = [curses_library]
36479
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
1182 exts.append( Extension('_curses', ['_cursesmodule.c'],
71656
d98b5e0f0862 Fix build error in _curses module when not using libncursesw.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 70731
diff changeset
1183 define_macros=curses_defines,
36479
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
1184 libraries = curses_libs) )
62355
e753562cc023 Issue #7384: If the system readline library is linked against
Stefan Krah <stefan@bytereef.org>
parents: 62054
diff changeset
1185 elif curses_library == 'curses' and platform != 'darwin':
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1186 # OSX has an old Berkeley curses, not good enough for
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1187 # the _curses module.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1188 if (self.compiler.find_library_file(lib_dirs, 'terminfo')):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1189 curses_libs = ['curses', 'terminfo']
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
1190 elif (self.compiler.find_library_file(lib_dirs, 'termcap')):
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
1191 curses_libs = ['curses', 'termcap']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1192 else:
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
1193 curses_libs = ['curses']
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1194
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1195 exts.append( Extension('_curses', ['_cursesmodule.c'],
71656
d98b5e0f0862 Fix build error in _curses module when not using libncursesw.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 70731
diff changeset
1196 define_macros=curses_defines,
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1197 libraries = curses_libs) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1198 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1199 missing.append('_curses')
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1200
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1201 # If the curses module is enabled, check for the panel module
21256
fbf68c59d66c [Bug #480882] Remove now-pointless check for existence for _curses_panel.c;
Andrew M. Kuchling <amk@amk.ca>
parents: 21233
diff changeset
1202 if (module_enabled(exts, '_curses') and
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1203 self.compiler.find_library_file(lib_dirs, panel_library)):
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1204 exts.append( Extension('_curses_panel', ['_curses_panel.c'],
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1205 libraries = [panel_library] + curses_libs) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1206 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1207 missing.append('_curses_panel')
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1208
24790
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1209 # Andrew Kuchling's zlib module. Note that some versions of zlib
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1210 # 1.1.3 have security problems. See CERT Advisory CA-2002-07:
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1211 # http://www.cert.org/advisories/CA-2002-07.html
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1212 #
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1213 # zlib 1.1.4 is fixed, but at least one vendor (RedHat) has decided to
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1214 # patch its zlib 1.1.3 package instead of upgrading to 1.1.4. For
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1215 # now, we still accept 1.1.3, because we think it's difficult to
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1216 # exploit this in Python, and we'd rather make it RedHat's problem
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1217 # than our problem <wink>.
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1218 #
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1219 # You can upgrade zlib to version 1.1.4 yourself by going to
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1220 # http://www.gzip.org/zlib/
17531
c497fa3fe38a Patch by Mark Favas to ensure that the zlib we find is 1.1.3 or
Guido van Rossum <guido@python.org>
parents: 17099
diff changeset
1221 zlib_inc = find_file('zlib.h', [], inc_dirs)
46042
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1222 have_zlib = False
17531
c497fa3fe38a Patch by Mark Favas to ensure that the zlib we find is 1.1.3 or
Guido van Rossum <guido@python.org>
parents: 17099
diff changeset
1223 if zlib_inc is not None:
c497fa3fe38a Patch by Mark Favas to ensure that the zlib we find is 1.1.3 or
Guido van Rossum <guido@python.org>
parents: 17099
diff changeset
1224 zlib_h = zlib_inc[0] + '/zlib.h'
c497fa3fe38a Patch by Mark Favas to ensure that the zlib we find is 1.1.3 or
Guido van Rossum <guido@python.org>
parents: 17099
diff changeset
1225 version = '"0.0.0"'
24790
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1226 version_req = '"1.1.3"'
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1227 with open(zlib_h) as fp:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1228 while 1:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1229 line = fp.readline()
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1230 if not line:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1231 break
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1232 if line.startswith('#define ZLIB_VERSION'):
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1233 version = line.split()[2]
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1234 break
17531
c497fa3fe38a Patch by Mark Favas to ensure that the zlib we find is 1.1.3 or
Guido van Rossum <guido@python.org>
parents: 17099
diff changeset
1235 if version >= version_req:
c497fa3fe38a Patch by Mark Favas to ensure that the zlib we find is 1.1.3 or
Guido van Rossum <guido@python.org>
parents: 17099
diff changeset
1236 if (self.compiler.find_library_file(lib_dirs, 'z')):
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1237 if sys.platform == "darwin":
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1238 zlib_extra_link_args = ('-Wl,-search_paths_first',)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1239 else:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1240 zlib_extra_link_args = ()
17531
c497fa3fe38a Patch by Mark Favas to ensure that the zlib we find is 1.1.3 or
Guido van Rossum <guido@python.org>
parents: 17099
diff changeset
1241 exts.append( Extension('zlib', ['zlibmodule.c'],
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1242 libraries = ['z'],
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1243 extra_link_args = zlib_extra_link_args))
46042
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1244 have_zlib = True
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1245 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1246 missing.append('zlib')
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1247 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1248 missing.append('zlib')
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1249 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1250 missing.append('zlib')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1251
46042
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1252 # Helper module for various ascii-encoders. Uses zlib for an optimized
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1253 # crc32 if we have it. Otherwise binascii uses its own.
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1254 if have_zlib:
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1255 extra_compile_args = ['-DUSE_ZLIB_CRC32']
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1256 libraries = ['z']
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1257 extra_link_args = zlib_extra_link_args
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1258 else:
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1259 extra_compile_args = []
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1260 libraries = []
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1261 extra_link_args = []
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1262 exts.append( Extension('binascii', ['binascii.c'],
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1263 extra_compile_args = extra_compile_args,
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1264 libraries = libraries,
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1265 extra_link_args = extra_link_args) )
4a6b093b319b Merged revisions 61820-61823 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46034
diff changeset
1266
26037
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
1267 # Gustavo Niemeyer's bz2 module.
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
1268 if (self.compiler.find_library_file(lib_dirs, 'bz2')):
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1269 if sys.platform == "darwin":
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1270 bz2_extra_link_args = ('-Wl,-search_paths_first',)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1271 else:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1272 bz2_extra_link_args = ()
69112
2cb07a46f4b5 Issue #5863: Rewrite BZ2File in pure Python, and allow it to accept
Antoine Pitrou <solipsis@pitrou.net>
parents: 68587
diff changeset
1273 exts.append( Extension('_bz2', ['_bz2module.c'],
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1274 libraries = ['bz2'],
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1275 extra_link_args = bz2_extra_link_args) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1276 else:
69112
2cb07a46f4b5 Issue #5863: Rewrite BZ2File in pure Python, and allow it to accept
Antoine Pitrou <solipsis@pitrou.net>
parents: 68587
diff changeset
1277 missing.append('_bz2')
26037
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
1278
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1279 # Interface to the Expat XML parser
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1280 #
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58132
diff changeset
1281 # Expat was written by James Clark and is now maintained by a group of
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58132
diff changeset
1282 # developers on SourceForge; see www.libexpat.org for more information.
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58132
diff changeset
1283 # The pyexpat module was written by Paul Prescod after a prototype by
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58132
diff changeset
1284 # Jack Jansen. The Expat source is included in Modules/expat/. Usage
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58132
diff changeset
1285 # of a system shared libexpat.so is possible with --with-system-expat
65822
Benjamin Peterson <benjamin@python.org>
parents: 65724
diff changeset
1286 # configure option.
23889
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1287 #
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1288 # More information on Expat can be found at www.libexpat.org.
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1289 #
58025
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1290 if '--with-system-expat' in sysconfig.get_config_var("CONFIG_ARGS"):
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1291 expat_inc = []
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1292 define_macros = []
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1293 expat_lib = ['expat']
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1294 expat_sources = []
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1295 else:
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1296 expat_inc = [os.path.join(os.getcwd(), srcdir, 'Modules', 'expat')]
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1297 define_macros = [
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1298 ('HAVE_EXPAT_CONFIG_H', '1'),
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1299 ]
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1300 expat_lib = []
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1301 expat_sources = ['expat/xmlparse.c',
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1302 'expat/xmlrole.c',
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1303 'expat/xmltok.c']
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1304
30731
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1305 exts.append(Extension('pyexpat',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1306 define_macros = define_macros,
58025
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1307 include_dirs = expat_inc,
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1308 libraries = expat_lib,
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1309 sources = ['pyexpat.c'] + expat_sources
30731
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1310 ))
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1311
36026
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1312 # Fredrik Lundh's cElementTree module. Note that this also
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1313 # uses expat (via the CAPI hook in pyexpat).
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1314
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1315 if os.path.isfile(os.path.join(srcdir, 'Modules', '_elementtree.c')):
36026
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1316 define_macros.append(('USE_PYEXPAT_CAPI', None))
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1317 exts.append(Extension('_elementtree',
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1318 define_macros = define_macros,
58025
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1319 include_dirs = expat_inc,
228bba2d1f3f Merged revisions 77169 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57996
diff changeset
1320 libraries = expat_lib,
36026
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1321 sources = ['_elementtree.c'],
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1322 ))
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1323 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1324 missing.append('_elementtree')
36026
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1325
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
1326 # Hye-Shik Chang's CJKCodecs modules.
41818
bfc73d849e28 The unicode builtin is gone now. Fix setup.py so that
Walter Dörwald <walter@livinglogic.de>
parents: 41749
diff changeset
1327 exts.append(Extension('_multibytecodec',
bfc73d849e28 The unicode builtin is gone now. Fix setup.py so that
Walter Dörwald <walter@livinglogic.de>
parents: 41749
diff changeset
1328 ['cjkcodecs/multibytecodec.c']))
bfc73d849e28 The unicode builtin is gone now. Fix setup.py so that
Walter Dörwald <walter@livinglogic.de>
parents: 41749
diff changeset
1329 for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
bfc73d849e28 The unicode builtin is gone now. Fix setup.py so that
Walter Dörwald <walter@livinglogic.de>
parents: 41749
diff changeset
1330 exts.append(Extension('_codecs_%s' % loc,
bfc73d849e28 The unicode builtin is gone now. Fix setup.py so that
Walter Dörwald <walter@livinglogic.de>
parents: 41749
diff changeset
1331 ['cjkcodecs/_codecs_%s.c' % loc]))
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
1332
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1333 # Thomas Heller's _ctypes module
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1334 self.detect_ctypes(inc_dirs, lib_dirs)
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1335
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1336 # Richard Oudkerk's multiprocessing module
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1337 if platform == 'win32': # Windows
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1338 macros = dict()
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1339 libraries = ['ws2_32']
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1340
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1341 elif platform == 'darwin': # Mac OSX
52902
d3887dfe661f Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52561
diff changeset
1342 macros = dict()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1343 libraries = []
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1344
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1345 elif platform == 'cygwin': # Cygwin
52902
d3887dfe661f Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52561
diff changeset
1346 macros = dict()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1347 libraries = []
48412
5f4a8980c1ac Merged revisions 64475,64544-64545,64550,64557-64558,64565,64570,64577,64582-64583,64585,64590,64592-64593,64625,64630,64638,64647,64655-64656,64663-64664 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48379
diff changeset
1348
49642
c089eb64ee57 Merged revisions 67098 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 49493
diff changeset
1349 elif platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8'):
48412
5f4a8980c1ac Merged revisions 64475,64544-64545,64550,64557-64558,64565,64570,64577,64582-64583,64585,64590,64592-64593,64625,64630,64638,64647,64655-64656,64663-64664 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48379
diff changeset
1350 # FreeBSD's P1003.1b semaphore support is very experimental
5f4a8980c1ac Merged revisions 64475,64544-64545,64550,64557-64558,64565,64570,64577,64582-64583,64585,64590,64592-64593,64625,64630,64638,64647,64655-64656,64663-64664 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48379
diff changeset
1351 # and has many known problems. (as of June 2008)
52902
d3887dfe661f Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52561
diff changeset
1352 macros = dict()
48412
5f4a8980c1ac Merged revisions 64475,64544-64545,64550,64557-64558,64565,64570,64577,64582-64583,64585,64590,64592-64593,64625,64630,64638,64647,64655-64656,64663-64664 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48379
diff changeset
1353 libraries = []
5f4a8980c1ac Merged revisions 64475,64544-64545,64550,64557-64558,64565,64570,64577,64582-64583,64585,64590,64592-64593,64625,64630,64638,64647,64655-64656,64663-64664 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48379
diff changeset
1354
49433
8f5a8ea5ba76 Merged revisions 66670,66681,66688,66696-66699 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49035
diff changeset
1355 elif platform.startswith('openbsd'):
52902
d3887dfe661f Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52561
diff changeset
1356 macros = dict()
49433
8f5a8ea5ba76 Merged revisions 66670,66681,66688,66696-66699 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49035
diff changeset
1357 libraries = []
8f5a8ea5ba76 Merged revisions 66670,66681,66688,66696-66699 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49035
diff changeset
1358
52561
8f51dd09f3f2 Merged revisions 70849,70852 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents: 52011
diff changeset
1359 elif platform.startswith('netbsd'):
52902
d3887dfe661f Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52561
diff changeset
1360 macros = dict()
52561
8f51dd09f3f2 Merged revisions 70849,70852 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents: 52011
diff changeset
1361 libraries = []
8f51dd09f3f2 Merged revisions 70849,70852 via svnmerge from
Jesse Noller <jnoller@gmail.com>
parents: 52011
diff changeset
1362
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1363 else: # Linux and other unices
52902
d3887dfe661f Merged revisions 70908,70939,71009,71022,71036 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52561
diff changeset
1364 macros = dict()
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1365 libraries = ['rt']
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1366
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1367 if platform == 'win32':
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1368 multiprocessing_srcs = [ '_multiprocessing/multiprocessing.c',
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1369 '_multiprocessing/semaphore.c',
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1370 '_multiprocessing/win32_functions.c'
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1371 ]
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1372
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1373 else:
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1374 multiprocessing_srcs = [ '_multiprocessing/multiprocessing.c',
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1375 ]
57491
3d77d7c16c90 Merged revisions 76566 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 55971
diff changeset
1376 if (sysconfig.get_config_var('HAVE_SEM_OPEN') and not
3d77d7c16c90 Merged revisions 76566 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 55971
diff changeset
1377 sysconfig.get_config_var('POSIX_SEMAPHORES_NOT_ENABLED')):
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1378 multiprocessing_srcs.append('_multiprocessing/semaphore.c')
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1379
50993
857d66341ff9 merge 68874 to py3kwq!
Jesse Noller <jnoller@gmail.com>
parents: 50404
diff changeset
1380 if sysconfig.get_config_var('WITH_THREAD'):
857d66341ff9 merge 68874 to py3kwq!
Jesse Noller <jnoller@gmail.com>
parents: 50404
diff changeset
1381 exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
857d66341ff9 merge 68874 to py3kwq!
Jesse Noller <jnoller@gmail.com>
parents: 50404
diff changeset
1382 define_macros=list(macros.items()),
857d66341ff9 merge 68874 to py3kwq!
Jesse Noller <jnoller@gmail.com>
parents: 50404
diff changeset
1383 include_dirs=["Modules/_multiprocessing"]))
857d66341ff9 merge 68874 to py3kwq!
Jesse Noller <jnoller@gmail.com>
parents: 50404
diff changeset
1384 else:
857d66341ff9 merge 68874 to py3kwq!
Jesse Noller <jnoller@gmail.com>
parents: 50404
diff changeset
1385 missing.append('_multiprocessing')
47595
5c6cdfcd6eae Merged revisions 64104,64117 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47559
diff changeset
1386 # End multiprocessing
41064
6e1cf4d28af3 Check in Daniel Stutzbach's _fileio.c and test_fileio.py
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1387
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1388 # Platform-specific libraries
73000
70a0c602099e Improve Victor’s commit with cool new 2.5 idiom
Éric Araujo <merwok@netwok.org>
parents: 72011
diff changeset
1389 if platform.startswith(('linux', 'freebsd', 'gnukfreebsd')):
27865
65494469ad3e Re-enable compiling ossaudiodev now that it seems to work again.
Guido van Rossum <guido@python.org>
parents: 27820
diff changeset
1390 exts.append( Extension('ossaudiodev', ['ossaudiodev.c']) )
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1391 else:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1392 missing.append('ossaudiodev')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1393
47376
aea3c5543d43 add the gestalt module back as _gestalt
Benjamin Peterson <benjamin@python.org>
parents: 47285
diff changeset
1394 if sys.platform == 'darwin':
aea3c5543d43 add the gestalt module back as _gestalt
Benjamin Peterson <benjamin@python.org>
parents: 47285
diff changeset
1395 exts.append(
aea3c5543d43 add the gestalt module back as _gestalt
Benjamin Peterson <benjamin@python.org>
parents: 47285
diff changeset
1396 Extension('_gestalt', ['_gestalt.c'],
aea3c5543d43 add the gestalt module back as _gestalt
Benjamin Peterson <benjamin@python.org>
parents: 47285
diff changeset
1397 extra_link_args=['-framework', 'Carbon'])
aea3c5543d43 add the gestalt module back as _gestalt
Benjamin Peterson <benjamin@python.org>
parents: 47285
diff changeset
1398 )
60706
485c3f09a09b Merged revisions 80198 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58069
diff changeset
1399 exts.append(
485c3f09a09b Merged revisions 80198 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58069
diff changeset
1400 Extension('_scproxy', ['_scproxy.c'],
485c3f09a09b Merged revisions 80198 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58069
diff changeset
1401 extra_link_args=[
485c3f09a09b Merged revisions 80198 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58069
diff changeset
1402 '-framework', 'SystemConfiguration',
485c3f09a09b Merged revisions 80198 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58069
diff changeset
1403 '-framework', 'CoreFoundation',
485c3f09a09b Merged revisions 80198 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58069
diff changeset
1404 ]))
47376
aea3c5543d43 add the gestalt module back as _gestalt
Benjamin Peterson <benjamin@python.org>
parents: 47285
diff changeset
1405
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1406 self.extensions.extend(exts)
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1407
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1408 # Call the method for detecting whether _tkinter can be compiled
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1409 self.detect_tkinter(inc_dirs, lib_dirs)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1410
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1411 if '_tkinter' not in [e.name for e in self.extensions]:
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1412 missing.append('_tkinter')
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1413
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1414 return missing
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41464
diff changeset
1415
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1416 def detect_tkinter_darwin(self, inc_dirs, lib_dirs):
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1417 # The _tkinter module, using frameworks. Since frameworks are quite
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1418 # different the UNIX search logic is not sharable.
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1419 from os.path import join, exists
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1420 framework_dirs = [
52011
41e407286610 Merged revisions 70172 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 51991
diff changeset
1421 '/Library/Frameworks',
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1422 '/System/Library/Frameworks/',
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1423 join(os.getenv('HOME'), '/Library/Frameworks')
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1424 ]
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1425
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1426 sysroot = macosx_sdk_root()
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1427
36156
c71ca1cd363b typo, use parens for continued expr
Skip Montanaro <skip@pobox.com>
parents: 36144
diff changeset
1428 # Find the directory that contains the Tcl.framework and Tk.framework
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1429 # bundles.
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1430 # XXX distutils should support -F!
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1431 for F in framework_dirs:
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1432 # both Tcl.framework and Tk.framework should be present
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1433
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1434
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1435 for fw in 'Tcl', 'Tk':
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1436 if is_macosx_sdk_path(F):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1437 if not exists(join(sysroot, F[1:], fw + '.framework')):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1438 break
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1439 else:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1440 if not exists(join(F, fw + '.framework')):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1441 break
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1442 else:
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1443 # ok, F is now directory with both frameworks. Continure
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1444 # building
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1445 break
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1446 else:
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1447 # Tk and Tcl frameworks not found. Normal "unix" tkinter search
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1448 # will now resume.
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1449 return 0
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1450
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1451 # For 8.4a2, we must add -I options that point inside the Tcl and Tk
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1452 # frameworks. In later release we should hopefully be able to pass
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1453 # the -F option to gcc, which specifies a framework lookup path.
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1454 #
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1455 include_dirs = [
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1456 join(F, fw + '.framework', H)
41464
060c79f6d919 Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents: 41253
diff changeset
1457 for fw in ('Tcl', 'Tk')
060c79f6d919 Hide list comp variables and support set comprehensions
Nick Coghlan <ncoghlan@gmail.com>
parents: 41253
diff changeset
1458 for H in ('Headers', 'Versions/Current/PrivateHeaders')
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1459 ]
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1460
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1461 # For 8.4a2, the X11 headers are not included. Rather than include a
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1462 # complicated search, this is a hard-coded path. It could bail out
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1463 # if X11 libs are not found...
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1464 include_dirs.append('/usr/X11R6/include')
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1465 frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1466
48485
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1467 # All existing framework builds of Tcl/Tk don't support 64-bit
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1468 # architectures.
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1469 cflags = sysconfig.get_config_vars('CFLAGS')[0]
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1470 archs = re.findall('-arch\s+(\w+)', cflags)
55971
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1471
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1472 tmpfile = os.path.join(self.build_temp, 'tk.arch')
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1473 if not os.path.exists(self.build_temp):
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1474 os.makedirs(self.build_temp)
48485
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1475
55971
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1476 # Note: cannot use os.popen or subprocess here, that
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1477 # requires extensions that are not available here.
62054
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1478 if is_macosx_sdk_path(F):
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1479 os.system("file %s/Tk.framework/Tk | grep 'for architecture' > %s"%(os.path.join(sysroot, F[1:]), tmpfile))
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1480 else:
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1481 os.system("file %s/Tk.framework/Tk | grep 'for architecture' > %s"%(F, tmpfile))
25b4163ffe3f Merged revisions 81673 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 60706
diff changeset
1482
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1483 with open(tmpfile) as fp:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1484 detected_archs = []
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1485 for ln in fp:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1486 a = ln.split()[-1]
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1487 if a in archs:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1488 detected_archs.append(ln.split()[-1])
55971
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1489 os.unlink(tmpfile)
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1490
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1491 for a in detected_archs:
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1492 frameworks.append('-arch')
4e7f6bc810b3 Merged revisions 74804 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 55573
diff changeset
1493 frameworks.append(a)
48485
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1494
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1495 ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1496 define_macros=[('WITH_APPINIT', 1)],
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1497 include_dirs = include_dirs,
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1498 libraries = [],
48485
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1499 extra_compile_args = frameworks[2:],
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1500 extra_link_args = frameworks,
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1501 )
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1502 self.extensions.append(ext)
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1503 return 1
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1504
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1505
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1506 def detect_tkinter(self, inc_dirs, lib_dirs):
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1507 # The _tkinter module.
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1508
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1509 # Rather than complicate the code below, detecting and building
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1510 # AquaTk is a separate method. Only one Tkinter will be built on
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1511 # Darwin - either AquaTk, if it is found, or X11 based Tk.
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1512 platform = self.get_platform()
36156
c71ca1cd363b typo, use parens for continued expr
Skip Montanaro <skip@pobox.com>
parents: 36144
diff changeset
1513 if (platform == 'darwin' and
c71ca1cd363b typo, use parens for continued expr
Skip Montanaro <skip@pobox.com>
parents: 36144
diff changeset
1514 self.detect_tkinter_darwin(inc_dirs, lib_dirs)):
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1515 return
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1516
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1517 # Assume we haven't found any of the libraries or include files
18819
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1518 # The versions with dots are used on Unix, and the versions without
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1519 # dots on Windows, for detection by cygwin.
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1520 tcllib = tklib = tcl_includes = tk_includes = None
65191
6543fa4b1458 Merged revisions 74473,79974 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64522
diff changeset
1521 for version in ['8.6', '86', '8.5', '85', '8.4', '84', '8.3', '83',
6543fa4b1458 Merged revisions 74473,79974 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64522
diff changeset
1522 '8.2', '82', '8.1', '81', '8.0', '80']:
63136
29a3eda89995 reverted distutils its 3.1 state. All new work is now happening in disutils2, and distutils is now feature-frozen.
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 63051
diff changeset
1523 tklib = self.compiler.find_library_file(lib_dirs,
55128
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
1524 'tk' + version)
63136
29a3eda89995 reverted distutils its 3.1 state. All new work is now happening in disutils2, and distutils is now feature-frozen.
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 63051
diff changeset
1525 tcllib = self.compiler.find_library_file(lib_dirs,
55128
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
1526 'tcl' + version)
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1527 if tklib and tcllib:
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1528 # Exit the loop when we've found the Tcl/Tk libraries
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1529 break
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1530
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1531 # Now check for the header files
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1532 if tklib and tcllib:
31741
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1533 # Check for the include files on Debian and {Free,Open}BSD, where
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1534 # they're put in /usr/include/{tcl,tk}X.Y
31741
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1535 dotversion = version
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1536 if '.' not in dotversion and "bsd" in sys.platform.lower():
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1537 # OpenBSD and FreeBSD use Tcl/Tk library names like libtcl83.a,
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1538 # but the include subdirs are named like .../include/tcl8.3.
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1539 dotversion = dotversion[:-1] + '.' + dotversion[-1]
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1540 tcl_include_sub = []
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1541 tk_include_sub = []
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1542 for dir in inc_dirs:
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1543 tcl_include_sub += [dir + os.sep + "tcl" + dotversion]
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1544 tk_include_sub += [dir + os.sep + "tk" + dotversion]
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1545 tk_include_sub += tcl_include_sub
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1546 tcl_includes = find_file('tcl.h', inc_dirs, tcl_include_sub)
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1547 tk_includes = find_file('tk.h', inc_dirs, tk_include_sub)
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1548
28947
8df897f14fb8 Change 'and' to 'or' in _tkinter test.
Martin v. Löwis <martin@v.loewis.de>
parents: 28940
diff changeset
1549 if (tcllib is None or tklib is None or
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1550 tcl_includes is None or tk_includes is None):
31741
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1551 self.announce("INFO: Can't locate Tcl/Tk libs and/or headers", 2)
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1552 return
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1553
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1554 # OK... everything seems to be present for Tcl/Tk.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1555
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1556 include_dirs = [] ; libs = [] ; defs = [] ; added_lib_dirs = []
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1557 for dir in tcl_includes + tk_includes:
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1558 if dir not in include_dirs:
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1559 include_dirs.append(dir)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1560
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1561 # Check for various platform-specific directories
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
1562 if platform == 'sunos5':
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1563 include_dirs.append('/usr/openwin/include')
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1564 added_lib_dirs.append('/usr/openwin/lib')
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1565 elif os.path.exists('/usr/X11R6/include'):
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1566 include_dirs.append('/usr/X11R6/include')
33986
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
1567 added_lib_dirs.append('/usr/X11R6/lib64')
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1568 added_lib_dirs.append('/usr/X11R6/lib')
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1569 elif os.path.exists('/usr/X11R5/include'):
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1570 include_dirs.append('/usr/X11R5/include')
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1571 added_lib_dirs.append('/usr/X11R5/lib')
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1572 else:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1573 # Assume default location for X11
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1574 include_dirs.append('/usr/X11/include')
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1575 added_lib_dirs.append('/usr/X11/lib')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1576
27695
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1577 # If Cygwin, then verify that X is installed before proceeding
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1578 if platform == 'cygwin':
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1579 x11_inc = find_file('X11/Xlib.h', [], include_dirs)
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1580 if x11_inc is None:
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1581 return
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1582
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1583 # Check for BLT extension
21274
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
1584 if self.compiler.find_library_file(lib_dirs + added_lib_dirs,
55128
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
1585 'BLT8.0'):
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1586 defs.append( ('WITH_BLT', 1) )
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1587 libs.append('BLT8.0')
26626
e41ee2b8e73d Patch #629126: Detect BLT by also looking for libBLT.
Martin v. Löwis <martin@v.loewis.de>
parents: 26616
diff changeset
1588 elif self.compiler.find_library_file(lib_dirs + added_lib_dirs,
55128
c23a8f1cfab8 Merged revisions 73864 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 55075
diff changeset
1589 'BLT'):
26626
e41ee2b8e73d Patch #629126: Detect BLT by also looking for libBLT.
Martin v. Löwis <martin@v.loewis.de>
parents: 26616
diff changeset
1590 defs.append( ('WITH_BLT', 1) )
e41ee2b8e73d Patch #629126: Detect BLT by also looking for libBLT.
Martin v. Löwis <martin@v.loewis.de>
parents: 26616
diff changeset
1591 libs.append('BLT')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1592
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1593 # Add the Tcl/Tk libraries
27694
7c4dda0c145f This patch enables Cygwin Python to build _tkinter against Tcl/Tk 8.4.
Jason Tishler <jason@tishler.net>
parents: 27598
diff changeset
1594 libs.append('tk'+ version)
7c4dda0c145f This patch enables Cygwin Python to build _tkinter against Tcl/Tk 8.4.
Jason Tishler <jason@tishler.net>
parents: 27598
diff changeset
1595 libs.append('tcl'+ version)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1596
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
1597 if platform in ['aix3', 'aix4']:
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1598 libs.append('ld')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1599
18819
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1600 # Finally, link with the X11 libraries (not appropriate on cygwin)
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1601 if platform != "cygwin":
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1602 libs.append('X11')
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1603
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1604 ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1605 define_macros=[('WITH_APPINIT', 1)] + defs,
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1606 include_dirs = include_dirs,
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1607 libraries = libs,
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1608 library_dirs = added_lib_dirs,
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1609 )
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1610 self.extensions.append(ext)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1611
27820
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1612 ## # Uncomment these lines if you want to play with xxmodule.c
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1613 ## ext = Extension('xx', ['xxmodule.c'])
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1614 ## self.extensions.append(ext)
66724
6825b2cd9b81 Silence compile error
Antoine Pitrou <solipsis@pitrou.net>
parents: 66664
diff changeset
1615 if 'd' not in sys.abiflags:
6825b2cd9b81 Silence compile error
Antoine Pitrou <solipsis@pitrou.net>
parents: 66664
diff changeset
1616 ext = Extension('xxlimited', ['xxlimited.c'],
6825b2cd9b81 Silence compile error
Antoine Pitrou <solipsis@pitrou.net>
parents: 66664
diff changeset
1617 define_macros=[('Py_LIMITED_API', 1)])
6825b2cd9b81 Silence compile error
Antoine Pitrou <solipsis@pitrou.net>
parents: 66664
diff changeset
1618 self.extensions.append(ext)
27820
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1619
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1620 # XXX handle these, but how to detect?
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1621 # *** Uncomment and edit for PIL (TkImaging) extension only:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1622 # -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1623 # *** Uncomment and edit for TOGL extension only:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1624 # -DWITH_TOGL togl.c \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1625 # *** Uncomment these for TOGL extension only:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1626 # -lGL -lGLU -lXext -lXmu \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1627
45659
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1628 def configure_ctypes_darwin(self, ext):
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1629 # Darwin (OS X) uses preconfigured files, in
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1630 # the Modules/_ctypes/libffi_osx directory.
51349
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
1631 srcdir = sysconfig.get_config_var('srcdir')
45659
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1632 ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1633 '_ctypes', 'libffi_osx'))
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1634 sources = [os.path.join(ffi_srcdir, p)
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1635 for p in ['ffi.c',
48485
bd4841069c68 Merged revisions 63955 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48412
diff changeset
1636 'x86/darwin64.S',
45659
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1637 'x86/x86-darwin.S',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1638 'x86/x86-ffi_darwin.c',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1639 'x86/x86-ffi64.c',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1640 'powerpc/ppc-darwin.S',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1641 'powerpc/ppc-darwin_closure.S',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1642 'powerpc/ppc-ffi_darwin.c',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1643 'powerpc/ppc64-darwin_closure.S',
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1644 ]]
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1645
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1646 # Add .S (preprocessed assembly) to C compiler source extensions.
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1647 self.compiler.src_extensions.append('.S')
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1648
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1649 include_dirs = [os.path.join(ffi_srcdir, 'include'),
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1650 os.path.join(ffi_srcdir, 'powerpc')]
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1651 ext.include_dirs.extend(include_dirs)
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1652 ext.sources.extend(sources)
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1653 return True
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1654
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1655 def configure_ctypes(self, ext):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1656 if not self.use_system_libffi:
45659
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1657 if sys.platform == 'darwin':
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1658 return self.configure_ctypes_darwin(ext)
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1659
51349
76239798a608 Make setup.py work when building in a directory other than the
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 50993
diff changeset
1660 srcdir = sysconfig.get_config_var('srcdir')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1661 ffi_builddir = os.path.join(self.build_temp, 'libffi')
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1662 ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1663 '_ctypes', 'libffi'))
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1664 ffi_configfile = os.path.join(ffi_builddir, 'fficonfig.py')
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1665
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1666 from distutils.dep_util import newer_group
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1667
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1668 config_sources = [os.path.join(ffi_srcdir, fname)
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40807
diff changeset
1669 for fname in os.listdir(ffi_srcdir)
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40807
diff changeset
1670 if os.path.isfile(os.path.join(ffi_srcdir, fname))]
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1671 if self.force or newer_group(config_sources,
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1672 ffi_configfile):
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1673 from distutils.dir_util import mkpath
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1674 mkpath(ffi_builddir)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1675 config_args = []
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1676
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1677 # Pass empty CFLAGS because we'll just append the resulting
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1678 # CFLAGS to Python's; -g or -O2 is to be avoided.
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1679 cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1680 % (ffi_builddir, ffi_srcdir, " ".join(config_args))
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1681
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1682 res = os.system(cmd)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1683 if res or not os.path.exists(ffi_configfile):
40774
793e0323d4d6 Essential changes for print function changes.
Guido van Rossum <guido@python.org>
parents: 40645
diff changeset
1684 print("Failed to configure _ctypes module")
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1685 return False
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1686
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1687 fficonfig = {}
58295
15b0668f0dc5 Note: I'm merging these changes out of consistency, but they don't seem
Antoine Pitrou <solipsis@pitrou.net>
parents: 58222
diff changeset
1688 with open(ffi_configfile) as f:
15b0668f0dc5 Note: I'm merging these changes out of consistency, but they don't seem
Antoine Pitrou <solipsis@pitrou.net>
parents: 58222
diff changeset
1689 exec(f.read(), globals(), fficonfig)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1690
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1691 # Add .S (preprocessed assembly) to C compiler source extensions.
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1692 self.compiler.src_extensions.append('.S')
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1693
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1694 include_dirs = [os.path.join(ffi_builddir, 'include'),
58295
15b0668f0dc5 Note: I'm merging these changes out of consistency, but they don't seem
Antoine Pitrou <solipsis@pitrou.net>
parents: 58222
diff changeset
1695 ffi_builddir,
15b0668f0dc5 Note: I'm merging these changes out of consistency, but they don't seem
Antoine Pitrou <solipsis@pitrou.net>
parents: 58222
diff changeset
1696 os.path.join(ffi_srcdir, 'src')]
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1697 extra_compile_args = fficonfig['ffi_cflags'].split()
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1698
58295
15b0668f0dc5 Note: I'm merging these changes out of consistency, but they don't seem
Antoine Pitrou <solipsis@pitrou.net>
parents: 58222
diff changeset
1699 ext.sources.extend(os.path.join(ffi_srcdir, f) for f in
15b0668f0dc5 Note: I'm merging these changes out of consistency, but they don't seem
Antoine Pitrou <solipsis@pitrou.net>
parents: 58222
diff changeset
1700 fficonfig['ffi_sources'])
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1701 ext.include_dirs.extend(include_dirs)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1702 ext.extra_compile_args.extend(extra_compile_args)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1703 return True
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1704
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1705 def detect_ctypes(self, inc_dirs, lib_dirs):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1706 self.use_system_libffi = False
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1707 include_dirs = []
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1708 extra_compile_args = []
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1709 extra_link_args = []
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1710 sources = ['_ctypes/_ctypes.c',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1711 '_ctypes/callbacks.c',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1712 '_ctypes/callproc.c',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1713 '_ctypes/stgdict.c',
63832
40d11b8139da Fix issue5504: ctypes does now work with systems where mmap can't be
Thomas Heller <theller@ctypes.org>
parents: 63184
diff changeset
1714 '_ctypes/cfield.c']
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1715 depends = ['_ctypes/ctypes.h']
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1716
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1717 if sys.platform == 'darwin':
64470
7e0d866ca871 Fix for issue9662, patch by Łukasz Langa in issue5504.
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 64426
diff changeset
1718 sources.append('_ctypes/malloc_closure.c')
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1719 sources.append('_ctypes/darwin/dlfcn_simple.c')
45659
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1720 extra_compile_args.append('-DMACOSX')
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1721 include_dirs.append('_ctypes/darwin')
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1722 # XXX Is this still needed?
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1723 ## extra_link_args.extend(['-read_only_relocs', 'warning'])
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1724
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1725 elif sys.platform == 'sunos5':
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1726 # XXX This shouldn't be necessary; it appears that some
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1727 # of the assembler code is non-PIC (i.e. it has relocations
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1728 # when it shouldn't. The proper fix would be to rewrite
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1729 # the assembler code to be PIC.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1730 # This only works with GCC; the Sun compiler likely refuses
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1731 # this option. If you want to compile ctypes with the Sun
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1732 # compiler, please research a proper solution, instead of
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1733 # finding some -z option for the Sun compiler.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1734 extra_link_args.append('-mimpure-text')
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1735
47490
3255f1f160ad Merged revisions 63897-63898 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 47376
diff changeset
1736 elif sys.platform.startswith('hp-ux'):
47230
a218d5cb258b Merged revisions 63395-63396,63511,63522-63523 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 46970
diff changeset
1737 extra_link_args.append('-fPIC')
a218d5cb258b Merged revisions 63395-63396,63511,63522-63523 via svnmerge from
Thomas Heller <theller@ctypes.org>
parents: 46970
diff changeset
1738
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1739 ext = Extension('_ctypes',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1740 include_dirs=include_dirs,
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1741 extra_compile_args=extra_compile_args,
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38673
diff changeset
1742 extra_link_args=extra_link_args,
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1743 libraries=[],
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1744 sources=sources,
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1745 depends=depends)
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1746 ext_test = Extension('_ctypes_test',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1747 sources=['_ctypes/_ctypes_test.c'])
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1748 self.extensions.extend([ext, ext_test])
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1749
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1750 if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1751 return
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1752
45659
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1753 if sys.platform == 'darwin':
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1754 # OS X 10.5 comes with libffi.dylib; the include files are
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1755 # in /usr/include/ffi
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1756 inc_dirs.append('/usr/include/ffi')
dd318c3f6cb7 Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45134
diff changeset
1757
58068
b0dd6c21dcbf Merged revisions 77212-77215 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58025
diff changeset
1758 ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")]
60820
8e4247411754 Merged revisions 80320 via svnmerge from
Matthias Klose <doko@ubuntu.com>
parents: 60705
diff changeset
1759 if not ffi_inc or ffi_inc[0] == '':
58068
b0dd6c21dcbf Merged revisions 77212-77215 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58025
diff changeset
1760 ffi_inc = find_file('ffi.h', [], inc_dirs)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1761 if ffi_inc is not None:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1762 ffi_h = ffi_inc[0] + '/ffi.h'
65724
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1763 with open(ffi_h) as fp:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1764 while 1:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1765 line = fp.readline()
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1766 if not line:
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1767 ffi_inc = None
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1768 break
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1769 if line.startswith('#define LIBFFI_H'):
a0626f9727e0 Make file handing in setup.py more robust by using context managers to properly
Brett Cannon <bcannon@gmail.com>
parents: 65557
diff changeset
1770 break
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1771 ffi_lib = None
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1772 if ffi_inc is not None:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1773 for lib_name in ('ffi_convenience', 'ffi_pic', 'ffi'):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1774 if (self.compiler.find_library_file(lib_dirs, lib_name)):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1775 ffi_lib = lib_name
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1776 break
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1777
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1778 if ffi_inc and ffi_lib:
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1779 ext.include_dirs.extend(ffi_inc)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1780 ext.libraries.append(ffi_lib)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1781 self.use_system_libffi = True
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1782
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36898
diff changeset
1783
17886
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1784 class PyBuildInstall(install):
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1785 # Suppress the warning about installation into the lib_dynload
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1786 # directory, which is not in sys.path when running Python during
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1787 # installation:
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1788 def initialize_options (self):
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1789 install.initialize_options(self)
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1790 self.warn_dir=0
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1791
70731
e3f6c10eb590 Stop creating a Python-X.Y.Z-pyX.Y.egg-info file on install (#10645)
Éric Araujo <merwok@netwok.org>
parents: 70694
diff changeset
1792 # Customize subcommands to not install an egg-info file for Python
e3f6c10eb590 Stop creating a Python-X.Y.Z-pyX.Y.egg-info file on install (#10645)
Éric Araujo <merwok@netwok.org>
parents: 70694
diff changeset
1793 sub_commands = [('install_lib', install.has_lib),
e3f6c10eb590 Stop creating a Python-X.Y.Z-pyX.Y.egg-info file on install (#10645)
Éric Araujo <merwok@netwok.org>
parents: 70694
diff changeset
1794 ('install_headers', install.has_headers),
e3f6c10eb590 Stop creating a Python-X.Y.Z-pyX.Y.egg-info file on install (#10645)
Éric Araujo <merwok@netwok.org>
parents: 70694
diff changeset
1795 ('install_scripts', install.has_scripts),
e3f6c10eb590 Stop creating a Python-X.Y.Z-pyX.Y.egg-info file on install (#10645)
Éric Araujo <merwok@netwok.org>
parents: 70694
diff changeset
1796 ('install_data', install.has_data)]
e3f6c10eb590 Stop creating a Python-X.Y.Z-pyX.Y.egg-info file on install (#10645)
Éric Araujo <merwok@netwok.org>
parents: 70694
diff changeset
1797
e3f6c10eb590 Stop creating a Python-X.Y.Z-pyX.Y.egg-info file on install (#10645)
Éric Araujo <merwok@netwok.org>
parents: 70694
diff changeset
1798
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1799 class PyBuildInstallLib(install_lib):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1800 # Do exactly what install_lib does but make sure correct access modes get
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1801 # set on installed directories and files. All installed files with get
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1802 # mode 644 unless they are a shared library in which case they will get
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1803 # mode 755. All installed directories will get mode 755.
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1804
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1805 so_ext = sysconfig.get_config_var("SO")
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1806
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1807 def install(self):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1808 outfiles = install_lib.install(self)
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
1809 self.set_file_modes(outfiles, 0o644, 0o755)
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
1810 self.set_dir_modes(self.install_dir, 0o755)
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1811 return outfiles
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1812
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1813 def set_file_modes(self, files, defaultMode, sharedLibMode):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1814 if not self.is_chmod_supported(): return
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1815 if not files: return
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1816
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1817 for filename in files:
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1818 if os.path.islink(filename): continue
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1819 mode = defaultMode
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1820 if filename.endswith(self.so_ext): mode = sharedLibMode
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1821 log.info("changing mode of %s to %o", filename, mode)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1822 if not self.dry_run: os.chmod(filename, mode)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1823
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1824 def set_dir_modes(self, dirname, mode):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1825 if not self.is_chmod_supported(): return
55065
56a276396e15 Merged revisions 73788 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 54285
diff changeset
1826 for dirpath, dirnames, fnames in os.walk(dirname):
56a276396e15 Merged revisions 73788 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 54285
diff changeset
1827 if os.path.islink(dirpath):
56a276396e15 Merged revisions 73788 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 54285
diff changeset
1828 continue
56a276396e15 Merged revisions 73788 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 54285
diff changeset
1829 log.info("changing mode of %s to %o", dirpath, mode)
56a276396e15 Merged revisions 73788 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 54285
diff changeset
1830 if not self.dry_run: os.chmod(dirpath, mode)
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1831
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1832 def is_chmod_supported(self):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1833 return hasattr(os, 'chmod')
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1834
67169
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1835 class PyBuildScripts(build_scripts):
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1836 def copy_scripts(self):
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1837 outfiles, updated_files = build_scripts.copy_scripts(self)
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1838 fullversion = '-{0[0]}.{0[1]}'.format(sys.version_info)
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1839 minoronly = '.{0[1]}'.format(sys.version_info)
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1840 newoutfiles = []
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1841 newupdated_files = []
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1842 for filename in outfiles:
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1843 if filename.endswith('2to3'):
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1844 newfilename = filename + fullversion
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1845 else:
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1846 newfilename = filename + minoronly
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1847 log.info('renaming {} to {}'.format(filename, newfilename))
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1848 os.rename(filename, newfilename)
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1849 newoutfiles.append(newfilename)
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1850 if filename in updated_files:
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1851 newupdated_files.append(newfilename)
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1852 return newoutfiles, newupdated_files
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1853
27990
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1854 SUMMARY = """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1855 Python is an interpreted, interactive, object-oriented programming
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1856 language. It is often compared to Tcl, Perl, Scheme or Java.
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1857
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1858 Python combines remarkable power with very clear syntax. It has
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1859 modules, classes, exceptions, very high level dynamic data types, and
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1860 dynamic typing. There are interfaces to many system calls and
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1861 libraries, as well as to various windowing systems (X11, Motif, Tk,
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1862 Mac, MFC). New built-in modules are easily written in C or C++. Python
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1863 is also usable as an extension language for applications that need a
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1864 programmable interface.
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1865
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1866 The Python implementation is portable: it runs on many brands of UNIX,
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1867 on Windows, DOS, OS/2, Mac, Amiga... If your favorite system isn't
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1868 listed here, it may still be supported, if there's a C compiler for
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1869 it. Ask around on comp.lang.python -- or just try compiling Python
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1870 yourself.
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1871 """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1872
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1873 CLASSIFIERS = """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1874 Development Status :: 6 - Mature
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1875 License :: OSI Approved :: Python Software Foundation License
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1876 Natural Language :: English
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1877 Programming Language :: C
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1878 Programming Language :: Python
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1879 Topic :: Software Development
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1880 """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1881
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1882 def main():
17890
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
1883 # turn off warnings when deprecated modules are imported
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
1884 import warnings
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
1885 warnings.filterwarnings("ignore",category=DeprecationWarning)
27990
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1886 setup(# PyPI Metadata (PEP 301)
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1887 name = "Python",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1888 version = sys.version.split()[0],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1889 url = "http://www.python.org/%s" % sys.version[:3],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1890 maintainer = "Guido van Rossum and the Python community",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1891 maintainer_email = "python-dev@python.org",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1892 description = "A high-level object-oriented programming language",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1893 long_description = SUMMARY.strip(),
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1894 license = "PSF license",
42142
a53e48be6df9 Merged revisions 56125-56153 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
1895 classifiers = [x for x in CLASSIFIERS.split("\n") if x],
27990
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1896 platforms = ["Many"],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1897
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1898 # Build info
67169
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1899 cmdclass = {'build_ext': PyBuildExt,
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1900 'build_scripts': PyBuildScripts,
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1901 'install': PyBuildInstall,
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1902 'install_lib': PyBuildInstallLib},
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1903 # The struct module is defined here, because build_ext won't be
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1904 # called unless there's at least one extension module defined.
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1905 ext_modules=[Extension('_struct', ['_struct.c'])],
16844
8156deb0e62d Install the pydoc script
Andrew M. Kuchling <amk@amk.ca>
parents: 16842
diff changeset
1906
67169
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1907 # If you change the scripts installed here, you also need to
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1908 # check the PyBuildScripts command above, and change the links
e0c52c0e8586 #10679: install idle, pydoc, 2to3 scripts with X.Y suffix for make altinstall; create symlinks for make install.
Georg Brandl <georg@python.org>
parents: 66724
diff changeset
1909 # created by the bininstall target in Makefile.pre.in
54285
997ef68bfa15 install 2to3, overwritting any old installations #5756
Benjamin Peterson <benjamin@python.org>
parents: 54280
diff changeset
1910 scripts = ["Tools/scripts/pydoc3", "Tools/scripts/idle3",
70545
b018e154d955 promoted pysetup3 to a top-level script
Tarek Ziade <tarek@ziade.org>
parents: 69980
diff changeset
1911 "Tools/scripts/2to3", "Tools/scripts/pysetup3"]
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1912 )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1913
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1914 # --install-platlib
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1915 if __name__ == '__main__':
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1916 main()