annotate setup.py @ 46004:04c2148564e4 legacy-trunk

Test decimal.rst doctests as far as possible with sphinx doctest.
author Georg Brandl <georg@python.org>
date Sat, 22 Mar 2008 11:47:10 +0000
parents d387b01dbc1c
children 7da5b68971a5
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
16287
4b72888c9e2f Remove unused import of 'string'
Andrew M. Kuchling <amk@amk.ca>
parents: 16283
diff changeset
4 __version__ = "$Revision$"
4b72888c9e2f Remove unused import of 'string'
Andrew M. Kuchling <amk@amk.ca>
parents: 16283
diff changeset
5
34125
1a938f456053 Change code in setup.py for parsing LDFLAGS and CPPFLAGS to use optparse
Brett Cannon <bcannon@gmail.com>
parents: 34124
diff changeset
6 import sys, os, imp, re, optparse
44948
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
7 from glob import glob
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
8
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
9 from distutils import log
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
10 from distutils import sysconfig
16750
90e90c92198b Patch #103899: Don't compile modules configured in Setup. This seems much
Andrew M. Kuchling <amk@amk.ca>
parents: 16749
diff changeset
11 from distutils import text_file
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
12 from distutils.errors import *
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
13 from distutils.core import Extension, setup
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
14 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
15 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
16 from distutils.command.install_lib import install_lib
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
17
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
18 # 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
19 disabled_module_list = []
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
20
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
21 def add_dir_to_list(dirlist, dir):
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
22 """Add the directory 'dir' to the list 'dirlist' (at the front) if
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
23 1) 'dir' is not already in 'dirlist'
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
24 2) 'dir' actually exists, and is a directory."""
24008
44f7fc307673 Fixed a few showstoppers in the process of making MacPython use setup.py to build it's exension modules (in stead of relying on a private mechanism). It definitely doesn't work yet, but it looks promising.
Jack Jansen <jack.jansen@cwi.nl>
parents: 23970
diff changeset
25 if dir is not None and os.path.isdir(dir) and dir not in dirlist:
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
26 dirlist.insert(0, dir)
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
27
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
28 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
29 """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
30 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
31 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
32
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
33 '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
34 '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
35 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
36 '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
37 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
38 """
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
39
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
40 # 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
41 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
42 f = os.path.join(dir, filename)
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
43 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
44
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
45 # 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
46 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
47 f = os.path.join(dir, filename)
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
48 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
49 return [dir]
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
50
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
51 # Not found anywhere
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
52 return None
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
53
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
54 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
55 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
56 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
57 return None
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
58
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
59 # 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
60 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
61 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
62 # 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
63 p = p.rstrip(os.sep)
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
64 if p == dirname:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
65 return [ ]
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
66
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
67 # 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
68 # 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
69 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
70 # 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
71 p = p.rstrip(os.sep)
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
72 if p == dirname:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
73 return [p]
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
74 else:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
75 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
76
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
77 def module_enabled(extlist, modname):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
78 """Returns whether the module 'modname' is present in the list
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
79 of extensions 'extlist'."""
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
80 extlist = [ext for ext in extlist if ext.name == modname]
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
81 return len(extlist)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
82
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
83 def find_module_file(module, dirlist):
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
84 """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
85 return the unadorned filename"""
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
86 list = find_file(module, [], dirlist)
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
87 if not list:
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
88 return module
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
89 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
90 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
91 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
92
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
93 class PyBuildExt(build_ext):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
94
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
95 def __init__(self, dist):
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
96 build_ext.__init__(self, dist)
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
97 self.failed = []
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
98
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
99 def build_extensions(self):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
100
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
101 # Detect which modules should be compiled
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
102 missing = self.detect_modules()
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
103
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
104 # Remove modules that are present on the disabled list
44741
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
105 extensions = [ext for ext in self.extensions
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
106 if ext.name not in disabled_module_list]
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
107 # move ctypes to the end, it depends on other modules
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
108 ext_map = dict((ext.name, i) for i, ext in enumerate(extensions))
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
109 if "_ctypes" in ext_map:
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
110 ctypes = extensions.pop(ext_map["_ctypes"])
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
111 extensions.append(ctypes)
bbf484581043 Build _ctypes after the other extensions. Its build process depends
Christian Heimes <christian@cheimes.de>
parents: 43703
diff changeset
112 self.extensions = extensions
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
113
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
114 # Fix up the autodetected modules, prefixing all the source files
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
115 # with Modules/ and adding Python's include directory to the path.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
116 (srcdir,) = sysconfig.get_config_vars('srcdir')
25790
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
117 if not srcdir:
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
118 # Maybe running on Windows but not using CYGWIN?
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
119 raise ValueError("No source directory; cannot proceed.")
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
120
16225
e56dd2dd9960 Patch from Andrew to properly set module source directory.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 16201
diff changeset
121 # Figure out the location of the source code for extension modules
e56dd2dd9960 Patch from Andrew to properly set module source directory.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 16201
diff changeset
122 moddir = os.path.join(os.getcwd(), srcdir, 'Modules')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
123 moddir = os.path.normpath(moddir)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
124 srcdir, tail = os.path.split(moddir)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
125 srcdir = os.path.normpath(srcdir)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
126 moddir = os.path.normpath(moddir)
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
127
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
128 moddirlist = [moddir]
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
129 incdirlist = ['./Include']
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
130
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
131 # Platform-dependent module source and include directories
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
132 platform = self.get_platform()
33294
67fbbeb1e218 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 33285
diff changeset
133 if platform in ('darwin', 'mac') and ("--disable-toolbox-glue" not in
33285
ee703a094dfb When building with --disable-toolbox-glue under Darwin, skip building any
Brett Cannon <bcannon@gmail.com>
parents: 33180
diff changeset
134 sysconfig.get_config_var("CONFIG_ARGS")):
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
135 # Mac OS X also includes some mac-specific modules
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
136 macmoddir = os.path.join(os.getcwd(), srcdir, 'Mac/Modules')
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
137 moddirlist.append(macmoddir)
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
138 incdirlist.append('./Mac/Include')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
139
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
140 alldirlist = moddirlist + incdirlist
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
141
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
142 # 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
143 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
144 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
145
44948
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
146 # Python header files
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
147 headers = glob("Include/*.h") + ["pyconfig.h"]
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
148
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
149 for ext in self.extensions[:]:
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
150 ext.sources = [ find_module_file(filename, moddirlist)
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
151 for filename in ext.sources ]
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
152 if ext.depends is not None:
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
153 ext.depends = [find_module_file(filename, alldirlist)
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
154 for filename in ext.depends]
44948
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
155 else:
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
156 ext.depends = []
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
157 # re-compile extensions if a header file has been changed
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
158 ext.depends.extend(headers)
1be93dd179df Added the Python core headers Include/*.h and pyconfig.h as dependencies for the extensions in Modules/
Christian Heimes <christian@cheimes.de>
parents: 44945
diff changeset
159
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
160 ext.include_dirs.append( '.' ) # to get config.h
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
161 for incdir in incdirlist:
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
162 ext.include_dirs.append( os.path.join(srcdir, incdir) )
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
163
16038
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
164 # 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
165 # 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
166 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
167 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
168
24008
44f7fc307673 Fixed a few showstoppers in the process of making MacPython use setup.py to build it's exension modules (in stead of relying on a private mechanism). It definitely doesn't work yet, but it looks promising.
Jack Jansen <jack.jansen@cwi.nl>
parents: 23970
diff changeset
169 if platform != 'mac':
36144
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
170 # Parse Modules/Setup and Modules/Setup.local to figure out which
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
171 # modules are turned on in the file.
24008
44f7fc307673 Fixed a few showstoppers in the process of making MacPython use setup.py to build it's exension modules (in stead of relying on a private mechanism). It definitely doesn't work yet, but it looks promising.
Jack Jansen <jack.jansen@cwi.nl>
parents: 23970
diff changeset
172 remove_modules = []
36144
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
173 for filename in ('Modules/Setup', 'Modules/Setup.local'):
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
174 input = text_file.TextFile(filename, join_lines=1)
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
175 while 1:
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
176 line = input.readline()
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
177 if not line: break
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
178 line = line.split()
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
179 remove_modules.append(line[0])
82a52a464aa2 Bug #999767: make setup.py obey Setup.local wrt shared modules
Georg Brandl <georg@python.org>
parents: 36026
diff changeset
180 input.close()
36162
1e595b6c924e Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 36156
diff changeset
181
24008
44f7fc307673 Fixed a few showstoppers in the process of making MacPython use setup.py to build it's exension modules (in stead of relying on a private mechanism). It definitely doesn't work yet, but it looks promising.
Jack Jansen <jack.jansen@cwi.nl>
parents: 23970
diff changeset
182 for ext in self.extensions[:]:
44f7fc307673 Fixed a few showstoppers in the process of making MacPython use setup.py to build it's exension modules (in stead of relying on a private mechanism). It definitely doesn't work yet, but it looks promising.
Jack Jansen <jack.jansen@cwi.nl>
parents: 23970
diff changeset
183 if ext.name in remove_modules:
44f7fc307673 Fixed a few showstoppers in the process of making MacPython use setup.py to build it's exension modules (in stead of relying on a private mechanism). It definitely doesn't work yet, but it looks promising.
Jack Jansen <jack.jansen@cwi.nl>
parents: 23970
diff changeset
184 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
185
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
186 # 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
187 # 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
188 # 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
189 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
190 args = {}
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
191 # 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
192 # compilers
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
193 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
194 (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
195 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
196 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
197
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
198 build_ext.build_extensions(self)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
199
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
200 longest = max([len(e.name) for e in self.extensions])
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
201 if self.failed:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
202 longest = max(longest, max([len(name) for name in self.failed]))
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
203
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
204 def print_three_column(lst):
41028
d4577215539d Fix cmp vs. key argument for list.sort.
Georg Brandl <georg@python.org>
parents: 41025
diff changeset
205 lst.sort(key=str.lower)
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
206 # guarantee zip() doesn't drop anything
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
207 while len(lst) % 3:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
208 lst.append("")
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
209 for e, f, g in zip(lst[::3], lst[1::3], lst[2::3]):
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
210 print "%-*s %-*s %-*s" % (longest, e, longest, f,
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
211 longest, g)
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
212
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
213 if missing:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
214 print
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
215 print "Failed to find the necessary bits to build these modules:"
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
216 print_three_column(missing)
42717
199504fb91c5 When setup.py fails to find the necessary bits to build some modules, have it
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 41784
diff changeset
217 print ("To find the necessary bits, look in setup.py in"
199504fb91c5 When setup.py fails to find the necessary bits to build some modules, have it
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 41784
diff changeset
218 " detect_modules() for the module's name.")
199504fb91c5 When setup.py fails to find the necessary bits to build some modules, have it
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 41784
diff changeset
219 print
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
220
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
221 if self.failed:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
222 failed = self.failed[:]
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
223 print
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
224 print "Failed to build these modules:"
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
225 print_three_column(failed)
42717
199504fb91c5 When setup.py fails to find the necessary bits to build some modules, have it
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 41784
diff changeset
226 print
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
227
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
228 def build_extension(self, ext):
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
229
37536
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
230 if ext.name == '_ctypes':
37537
5bc2b4e3ffc1 Don't try to build ctypes when configuration of libffi fails.
Thomas Heller <theller@ctypes.org>
parents: 37536
diff changeset
231 if not self.configure_ctypes(ext):
5bc2b4e3ffc1 Don't try to build ctypes when configuration of libffi fails.
Thomas Heller <theller@ctypes.org>
parents: 37536
diff changeset
232 return
37536
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
233
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
234 try:
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
235 build_ext.build_extension(self, ext)
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
236 except (CCompilerError, DistutilsError), why:
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
237 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
238 (ext.name, sys.exc_info()[1]))
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
239 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
240 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
241 # 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
242 # 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
243 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
244 self.announce(
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
245 '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
246 ext.name)
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
247 return
23513
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
248 # 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
249 # modules have been imported
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
250 if self.get_platform() == 'cygwin':
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
251 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
252 % ext.name)
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
253 return
21788
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
254 ext_filename = os.path.join(
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
255 self.build_lib,
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
256 self.get_ext_filename(self.get_ext_fullname(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
257 try:
21788
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
258 imp.load_dynamic(ext.name, ext_filename)
28111
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
259 except ImportError, why:
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
260 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
261 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
262 ' 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
263 assert not self.inplace
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
264 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
265 newname = basename + "_failed" + tail
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
266 if os.path.exists(newname):
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
267 os.remove(newname)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
268 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
269
28111
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
270 # 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
271 # 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
272 # _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
273 # use here.
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
274 # 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
275 # 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
276 try:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
277 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
278 os.remove(filename)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
279 except AttributeError:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
280 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
281 except:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
282 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
283 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
284 '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
285 level=3)
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
286 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
287
29508
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
288 def get_platform(self):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
289 # Get value of sys.platform
29508
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
290 for platform in ['cygwin', 'beos', 'darwin', 'atheos', 'osf1']:
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
291 if sys.platform.startswith(platform):
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
292 return platform
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
293 return sys.platform
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
294
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
295 def detect_modules(self):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
296 # Ensure that /usr/local is always used
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
297 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
298 add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
299
34124
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
300 # 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
301 # 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
302 # 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
303 # 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
304 # 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
305 # 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
306 for env_var, arg_name, dir_list in (
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
307 ('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
308 ('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
309 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
310 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
311 # To prevent optparse from raising an exception about any
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
312 # options in env_val that is doesn't know about we strip out
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
313 # 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
314 # 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
315 #
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
316 # 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
317 # 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
318 # 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
319 # used for a library directory.
42772
8901a7ce6c07 Bug #1765375: fix stripping of unwanted LDFLAGS.
Georg Brandl <georg@python.org>
parents: 42717
diff changeset
320 env_val = re.sub(r'(^|\s+)-(-|(?!%s))' % arg_name[1],
8901a7ce6c07 Bug #1765375: fix stripping of unwanted LDFLAGS.
Georg Brandl <georg@python.org>
parents: 42717
diff changeset
321 ' ', 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
322 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
323 # 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
324 # allowed
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
325 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
326 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
327 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
328 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
329 if options.dirs:
45119
59d89d61c3a0 Directories from CPPFLAGS and LDFLAGS were being added in the reverse order for
Brett Cannon <bcannon@gmail.com>
parents: 45040
diff changeset
330 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
331 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
332
24477
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
333 if os.path.normpath(sys.prefix) != '/usr':
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
334 add_dir_to_list(self.compiler.library_dirs,
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
335 sysconfig.get_config_var("LIBDIR"))
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
336 add_dir_to_list(self.compiler.include_dirs,
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
337 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
338
19343
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
339 try:
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
340 have_unicode = unicode
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
341 except NameError:
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
342 have_unicode = 0
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
343
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
344 # 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
345 # 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
346 # 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
347 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
348 '/lib64', '/usr/lib64',
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
349 '/lib', '/usr/lib',
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
350 ]
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
351 inc_dirs = self.compiler.include_dirs + ['/usr/include']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
352 exts = []
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
353 missing = []
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
354
34911
87719ae9288c Fix building of spwd; was incorrectly checking for the needed HAVE_* values to
Brett Cannon <bcannon@gmail.com>
parents: 34717
diff changeset
355 config_h = sysconfig.get_config_h_filename()
87719ae9288c Fix building of spwd; was incorrectly checking for the needed HAVE_* values to
Brett Cannon <bcannon@gmail.com>
parents: 34717
diff changeset
356 config_h_vars = sysconfig.parse_config_h(open(config_h))
87719ae9288c Fix building of spwd; was incorrectly checking for the needed HAVE_* values to
Brett Cannon <bcannon@gmail.com>
parents: 34717
diff changeset
357
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
358 platform = self.get_platform()
21942
9d44e752d617 Compute expat -I directives from srcdir. Fixes #517214.
Martin v. Löwis <martin@v.loewis.de>
parents: 21939
diff changeset
359 (srcdir,) = sysconfig.get_config_vars('srcdir')
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
360
23777
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
361 # Check for AtheOS which has libraries in non-standard locations
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
362 if platform == 'atheos':
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
363 lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
364 lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
365 inc_dirs += ['/system/include', '/atheos/autolnk/include']
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
366 inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
367
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
368 # 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
369 if platform in ['osf1', 'unixware7', 'openunix8']:
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
370 lib_dirs += ['/usr/ccs/lib']
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
371
38348
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
372 if platform == 'darwin':
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
373 # This should work on any unixy platform ;-)
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
374 # If the user has bothered specifying additional -I and -L flags
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
375 # in OPT and LDFLAGS we might as well use them here.
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
376 # NOTE: using shlex.split would technically be more correct, but
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
377 # also gives a bootstrap problem. Let's hope nobody uses directories
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
378 # with whitespace in the name to store libraries.
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
379 cflags, ldflags = sysconfig.get_config_vars(
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
380 'CFLAGS', 'LDFLAGS')
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
381 for item in cflags.split():
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
382 if item.startswith('-I'):
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
383 inc_dirs.append(item[2:])
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
384
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
385 for item in ldflags.split():
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
386 if item.startswith('-L'):
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
387 lib_dirs.append(item[2:])
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
388
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
389 # 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
390 math_libs = ['m']
24008
44f7fc307673 Fixed a few showstoppers in the process of making MacPython use setup.py to build it's exension modules (in stead of relying on a private mechanism). It definitely doesn't work yet, but it looks promising.
Jack Jansen <jack.jansen@cwi.nl>
parents: 23970
diff changeset
391 if platform in ['darwin', 'beos', 'mac']:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
392 math_libs = []
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
393
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
394 # XXX Omitted modules: gl, pure, dl, SGI-specific modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
395
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
396 #
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
397 # The following modules are all pretty straightforward, and compile
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
398 # on pretty much any POSIXish platform.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
399 #
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
400
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
401 # Some modules that are normally always on:
16384
c898ceba2261 Add entries for the weakref module to the build control.
Fred Drake <fdrake@acm.org>
parents: 16287
diff changeset
402 exts.append( Extension('_weakref', ['_weakref.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
403
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
404 # array objects
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
405 exts.append( Extension('array', ['arraymodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
406 # complex math library functions
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
407 exts.append( Extension('cmath', ['cmathmodule.c'],
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
408 libraries=math_libs) )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
409
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
410 # math library functions, e.g. sin()
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
411 exts.append( Extension('math', ['mathmodule.c'],
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
412 libraries=math_libs) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
413 # fast string operations implemented in C
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
414 exts.append( Extension('strop', ['stropmodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
415 # time operations and variables
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
416 exts.append( Extension('time', ['timemodule.c'],
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
417 libraries=math_libs) )
32400
6ce67f7b0430 Add compilation of timemodule.c with datetimemodule.c to get
Brett Cannon <bcannon@gmail.com>
parents: 32244
diff changeset
418 exts.append( Extension('datetime', ['datetimemodule.c', 'timemodule.c'],
26674
c7ec8ad0234f Build the datetime module for *n*x.
Guido van Rossum <guido@python.org>
parents: 26626
diff changeset
419 libraries=math_libs) )
45439
8eb598331231 Added future_builtins, which contains PEP 3127 compatible versions of hex() and oct().
Eric Smith <eric@trueblade.com>
parents: 45128
diff changeset
420 # code that will be builtins in the future, but conflict with the
8eb598331231 Added future_builtins, which contains PEP 3127 compatible versions of hex() and oct().
Eric Smith <eric@trueblade.com>
parents: 45128
diff changeset
421 # current builtins
8eb598331231 Added future_builtins, which contains PEP 3127 compatible versions of hex() and oct().
Eric Smith <eric@trueblade.com>
parents: 45128
diff changeset
422 exts.append( Extension('future_builtins', ['future_builtins.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
423 # random number generator implemented in C
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
424 exts.append( Extension("_random", ["_randommodule.c"]) )
27570
ba57c3daf6e9 Move itertools module from the sandbox and into production.
Raymond Hettinger <python@rcn.com>
parents: 27507
diff changeset
425 # fast iterator tools implemented in C
ba57c3daf6e9 Move itertools module from the sandbox and into production.
Raymond Hettinger <python@rcn.com>
parents: 27507
diff changeset
426 exts.append( Extension("itertools", ["itertoolsmodule.c"]) )
31436
63fa60f2d61c * Move collections.deque() in from the sandbox
Raymond Hettinger <python@rcn.com>
parents: 31386
diff changeset
427 # high-performance collections
40989
4087c0ec733b Prepare collections module for pure python code entries.
Raymond Hettinger <python@rcn.com>
parents: 40844
diff changeset
428 exts.append( Extension("_collections", ["_collectionsmodule.c"]) )
31353
ed20259a1ea5 SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents: 31090
diff changeset
429 # bisect
ed20259a1ea5 SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents: 31090
diff changeset
430 exts.append( Extension("_bisect", ["_bisectmodule.c"]) )
30875
2acd28bd4d0f Convert heapq.py to a C implementation.
Raymond Hettinger <python@rcn.com>
parents: 30770
diff changeset
431 # heapq
31931
63b68cb2b442 * Restore the pure python version of heapq.py.
Raymond Hettinger <python@rcn.com>
parents: 31742
diff changeset
432 exts.append( Extension("_heapq", ["_heapqmodule.c"]) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
433 # operator.add() and similar goodies
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
434 exts.append( Extension('operator', ['operator.c']) )
44945
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44741
diff changeset
435 # Python 3.0 _fileio module
bbc719a8b58b Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
Christian Heimes <christian@cheimes.de>
parents: 44741
diff changeset
436 exts.append( Extension("_fileio", ["_fileio.c"]) )
38477
aa065f820252 Apply modified version of Collin Winter's patch #1478788
Nick Coghlan <ncoghlan@gmail.com>
parents: 38348
diff changeset
437 # _functools
aa065f820252 Apply modified version of Collin Winter's patch #1478788
Nick Coghlan <ncoghlan@gmail.com>
parents: 38348
diff changeset
438 exts.append( Extension("_functools", ["_functoolsmodule.c"]) )
16416
7d39d9dcf2d6 Whitespace correction...
Marc-André Lemburg <mal@egenix.com>
parents: 16415
diff changeset
439 # Python C API test module
16447
ac52d3727867 Renamed _testXXX to _testcapiXXX. Jack is my hero -- good call!
Tim Peters <tim.peters@gmail.com>
parents: 16422
diff changeset
440 exts.append( Extension('_testcapi', ['_testcapimodule.c']) )
36459
3abf33264146 Added the cProfile module.
Armin Rigo <arigo@tunes.org>
parents: 36396
diff changeset
441 # profilers (_lsprof is for cProfile.py)
3abf33264146 Added the cProfile module.
Armin Rigo <arigo@tunes.org>
parents: 36396
diff changeset
442 exts.append( Extension('_hotshot', ['_hotshot.c']) )
3abf33264146 Added the cProfile module.
Armin Rigo <arigo@tunes.org>
parents: 36396
diff changeset
443 exts.append( Extension('_lsprof', ['_lsprof.c', 'rotatingtree.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
444 # static Unicode character database
19343
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
445 if have_unicode:
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
446 exts.append( Extension('unicodedata', ['unicodedata.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
447 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
448 missing.append('unicodedata')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
449 # access to ISO C locale support
29471
4f076fc0195a Patch #752671: NetBSD needs to link libintl to _locale.so.
Martin v. Löwis <martin@v.loewis.de>
parents: 29438
diff changeset
450 data = open('pyconfig.h').read()
4f076fc0195a Patch #752671: NetBSD needs to link libintl to _locale.so.
Martin v. Löwis <martin@v.loewis.de>
parents: 29438
diff changeset
451 m = re.search(r"#s*define\s+WITH_LIBINTL\s+1\s*", data)
4f076fc0195a Patch #752671: NetBSD needs to link libintl to _locale.so.
Martin v. Löwis <martin@v.loewis.de>
parents: 29438
diff changeset
452 if m is not None:
24810
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
453 locale_libs = ['intl']
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
454 else:
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
455 locale_libs = []
32698
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
456 if platform == 'darwin':
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
457 locale_extra_link_args = ['-framework', 'CoreFoundation']
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
458 else:
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
459 locale_extra_link_args = []
32735
2bc66f1df7cc Whitespace normalization. Ran reindent.py over the entire source tree.
Tim Peters <tim.peters@gmail.com>
parents: 32727
diff changeset
460
32698
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
461
24810
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
462 exts.append( Extension('_locale', ['_localemodule.c'],
32698
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
463 libraries=locale_libs,
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
464 extra_link_args=locale_extra_link_args) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
465
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
466 # Modules with some UNIX dependencies -- on by default:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
467 # (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
468 # supported...)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
469
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
470 # fcntl(2) and ioctl(2)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
471 exts.append( Extension('fcntl', ['fcntlmodule.c']) )
24032
c10c09192c12 More fixes for building MacPython extension modules. It now actually succeeds
Jack Jansen <jack.jansen@cwi.nl>
parents: 24008
diff changeset
472 if platform not in ['mac']:
34592
fa52f1ffc161 spwdmodule.c should only be built when either HAVE_GETSPNAM or HAVE_GETSPENT is
Brett Cannon <bcannon@gmail.com>
parents: 34481
diff changeset
473 # pwd(3)
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
474 exts.append( Extension('pwd', ['pwdmodule.c']) )
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
475 # grp(3)
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
476 exts.append( Extension('grp', ['grpmodule.c']) )
34481
9c62e7d690a5 Patch #579435: Shadow Password Support Module
Martin v. Löwis <martin@v.loewis.de>
parents: 34306
diff changeset
477 # spwd, shadow passwords
34911
87719ae9288c Fix building of spwd; was incorrectly checking for the needed HAVE_* values to
Brett Cannon <bcannon@gmail.com>
parents: 34717
diff changeset
478 if (config_h_vars.get('HAVE_GETSPNAM', False) or
87719ae9288c Fix building of spwd; was incorrectly checking for the needed HAVE_* values to
Brett Cannon <bcannon@gmail.com>
parents: 34717
diff changeset
479 config_h_vars.get('HAVE_GETSPENT', False)):
34592
fa52f1ffc161 spwdmodule.c should only be built when either HAVE_GETSPNAM or HAVE_GETSPENT is
Brett Cannon <bcannon@gmail.com>
parents: 34481
diff changeset
480 exts.append( Extension('spwd', ['spwdmodule.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
481 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
482 missing.append('spwd')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
483 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
484 missing.extend(['pwd', 'grp', 'spwd'])
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
485
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
486 # select(2); not on ancient System V
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
487 exts.append( Extension('select', ['selectmodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
488
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
489 # Helper module for various ascii-encoders
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
490 exts.append( Extension('binascii', ['binascii.c']) )
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 # Fred Drake's interface to the Python parser
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
493 exts.append( Extension('parser', ['parsermodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
494
22805
f1af8ad11000 Removed old Digital Creations copyright/license notices (with
Guido van Rossum <guido@python.org>
parents: 22545
diff changeset
495 # cStringIO and cPickle
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
496 exts.append( Extension('cStringIO', ['cStringIO.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
497 exts.append( Extension('cPickle', ['cPickle.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
498
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
499 # Memory-mapped files (also works on Win32).
24032
c10c09192c12 More fixes for building MacPython extension modules. It now actually succeeds
Jack Jansen <jack.jansen@cwi.nl>
parents: 24008
diff changeset
500 if platform not in ['atheos', 'mac']:
23777
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
501 exts.append( Extension('mmap', ['mmapmodule.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
502 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
503 missing.append('mmap')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
504
33370
af65004f622f Remove mpz, rotor, xreadlines modules
Andrew M. Kuchling <amk@amk.ca>
parents: 33294
diff changeset
505 # Lance Ellinghaus's syslog module
24032
c10c09192c12 More fixes for building MacPython extension modules. It now actually succeeds
Jack Jansen <jack.jansen@cwi.nl>
parents: 24008
diff changeset
506 if platform not in ['mac']:
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
507 # syslog daemon interface
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
508 exts.append( Extension('syslog', ['syslogmodule.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
509 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
510 missing.append('syslog')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
511
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
512 # George Neville-Neil's timing module:
36817
bc0797b06a99 Stop building timing module, it's old and deprecated
Neal Norwitz <nnorwitz@gmail.com>
parents: 36668
diff changeset
513 # Deprecated in PEP 4 http://www.python.org/peps/pep-0004.html
bc0797b06a99 Stop building timing module, it's old and deprecated
Neal Norwitz <nnorwitz@gmail.com>
parents: 36668
diff changeset
514 # http://mail.python.org/pipermail/python-dev/2006-January/060023.html
bc0797b06a99 Stop building timing module, it's old and deprecated
Neal Norwitz <nnorwitz@gmail.com>
parents: 36668
diff changeset
515 #exts.append( Extension('timing', ['timingmodule.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
516
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
517 #
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
518 # 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
519 # libraries, are platform-specific, or present other surprises.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
520 #
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
521
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
522 # Multimedia modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
523 # These don't work for 64-bit platforms!!!
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
524 # These represent audio samples or images as strings:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
525
32763
8ad5a1620092 Move comment that goes along with audioop
Neal Norwitz <nnorwitz@gmail.com>
parents: 32762
diff changeset
526 # Operations on audio samples
32797
ea54fdb86530 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 32765
diff changeset
527 # 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
528 # 64-bit platforms.
76ad814bc67c Patch #993173: Enable audioop on 64-bit platforms.
Martin v. Löwis <martin@v.loewis.de>
parents: 32735
diff changeset
529 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
530
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
531 # Disabled on 64-bit platforms
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
532 if sys.maxint != 9223372036854775807L:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
533 # Operations on images
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
534 exts.append( Extension('imageop', ['imageop.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
535 else:
41784
b7fb942b403e Remove the rgbimg module. It has been deprecated since Python 2.5.
Brett Cannon <bcannon@gmail.com>
parents: 41028
diff changeset
536 missing.extend(['imageop'])
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 # 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
539 do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
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
540 if platform == 'darwin':
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
541 # MacOSX 10.4 has a broken readline. Don't try to build
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
542 # the readline module unless the user has installed a fixed
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
543 # readline package
36668
8410f06ad36e Check for a not-found rlconf.h by testing for None.
Martin v. Löwis <martin@v.loewis.de>
parents: 36648
diff changeset
544 if find_file('readline/rlconf.h', inc_dirs, []) is None:
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
545 do_readline = False
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
546 if do_readline:
38348
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
547 if sys.platform == 'darwin':
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
548 # In every directory on the search path search for a dynamic
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
549 # library and then a static library, instead of first looking
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
550 # for dynamic libraries on the entiry path.
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
551 # This way a staticly linked custom readline gets picked up
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
552 # before the (broken) dynamic library in /usr/lib.
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
553 readline_extra_link_args = ('-Wl,-search_paths_first',)
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
554 else:
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
555 readline_extra_link_args = ()
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
556
16283
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
557 readline_libs = ['readline']
19319
d370a58fb7fd Link readline module with ncurses in preference to termcap. [Bug ##441580]
Andrew M. Kuchling <amk@amk.ca>
parents: 19269
diff changeset
558 if self.compiler.find_library_file(lib_dirs,
36479
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
559 'ncursesw'):
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
560 readline_libs.append('ncursesw')
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
561 elif self.compiler.find_library_file(lib_dirs,
19319
d370a58fb7fd Link readline module with ncurses in preference to termcap. [Bug ##441580]
Andrew M. Kuchling <amk@amk.ca>
parents: 19269
diff changeset
562 'ncurses'):
d370a58fb7fd Link readline module with ncurses in preference to termcap. [Bug ##441580]
Andrew M. Kuchling <amk@amk.ca>
parents: 19269
diff changeset
563 readline_libs.append('ncurses')
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
564 elif self.compiler.find_library_file(lib_dirs, 'curses'):
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
565 readline_libs.append('curses')
19319
d370a58fb7fd Link readline module with ncurses in preference to termcap. [Bug ##441580]
Andrew M. Kuchling <amk@amk.ca>
parents: 19269
diff changeset
566 elif self.compiler.find_library_file(lib_dirs +
16283
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
567 ['/usr/lib/termcap'],
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
568 'termcap'):
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
569 readline_libs.append('termcap')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
570 exts.append( Extension('readline', ['readline.c'],
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
571 library_dirs=['/usr/lib/termcap'],
38348
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
572 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
573 libraries=readline_libs) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
574 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
575 missing.append('readline')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
576
24032
c10c09192c12 More fixes for building MacPython extension modules. It now actually succeeds
Jack Jansen <jack.jansen@cwi.nl>
parents: 24008
diff changeset
577 if platform not in ['mac']:
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
578 # crypt module.
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
579
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
580 if self.compiler.find_library_file(lib_dirs, 'crypt'):
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
581 libs = ['crypt']
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
582 else:
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
583 libs = []
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
584 exts.append( Extension('crypt', ['cryptmodule.c'], libraries=libs) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
585 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
586 missing.append('crypt')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
587
28341
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
588 # CSV files
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
589 exts.append( Extension('_csv', ['_csv.c']) )
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
590
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
591 # socket(2)
23811
e3e019bc4e1e Add dependencies on socketmodule.h.
Guido van Rossum <guido@python.org>
parents: 23777
diff changeset
592 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
593 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
594 # 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
595 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
596 '/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
597 '/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
598 ]
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
599 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
600 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
601 )
29043
8e79dc3731bf Only look for krb5.h if ssl.h was found.
Martin v. Löwis <martin@v.loewis.de>
parents: 29013
diff changeset
602 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
603 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
604 ['/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
605 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
606 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
607 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
608 ['/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
609 '/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
610 ] )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
611
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
612 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
613 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
614 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
615 include_dirs = ssl_incs,
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
616 library_dirs = ssl_libs,
23811
e3e019bc4e1e Add dependencies on socketmodule.h.
Guido van Rossum <guido@python.org>
parents: 23777
diff changeset
617 libraries = ['ssl', 'crypto'],
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
618 depends = ['socketmodule.h']), )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
619 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
620 missing.append('_ssl')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
621
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
622 # 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
623 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
624 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
625 '^\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
626 for ssl_inc_dir in inc_dirs + 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
627 name = os.path.join(ssl_inc_dir, 'openssl', 'opensslv.h')
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
628 if os.path.isfile(name):
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
629 try:
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
630 incfile = open(name, 'r')
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
631 for line in incfile:
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
632 m = openssl_ver_re.match(line)
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
633 if m:
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
634 openssl_ver = eval(m.group(1))
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
635 break
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
636 except IOError:
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
637 pass
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
638
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
639 # first version found is what we'll use (as the compiler should)
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
640 if openssl_ver:
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
641 break
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
642
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
643 #print 'openssl_ver = 0x%08x' % openssl_ver
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
644
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
645 if (ssl_incs is not None and
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
646 ssl_libs is not None and
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
647 openssl_ver >= 0x00907000):
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
648 # The _hashlib module wraps optimized implementations
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
649 # of hash functions from the OpenSSL library.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
650 exts.append( Extension('_hashlib', ['_hashopenssl.c'],
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
651 include_dirs = ssl_incs,
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
652 library_dirs = ssl_libs,
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
653 libraries = ['ssl', 'crypto']) )
42841
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
654 # these aren't strictly missing since they are unneeded.
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
655 #missing.extend(['_sha', '_md5'])
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
656 else:
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
657 # The _sha module implements the SHA1 hash algorithm.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
658 exts.append( Extension('_sha', ['shamodule.c']) )
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
659 # The _md5 module implements the RSA Data Security, Inc. MD5
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
660 # Message-Digest Algorithm, described in RFC 1321. The
37436
115428bb1d3f - Patch #360466: Replace the MD5 implementation from RSA Data Security Inc
Matthias Klose <doko@ubuntu.com>
parents: 37413
diff changeset
661 # necessary files md5.c and md5.h are included here.
38617
f00518bb5b43 add depends = ['md5.h'] to the _md5 module extension for correctness sake.
Gregory P. Smith <greg@mad-scientist.com>
parents: 38582
diff changeset
662 exts.append( Extension('_md5',
f00518bb5b43 add depends = ['md5.h'] to the _md5 module extension for correctness sake.
Gregory P. Smith <greg@mad-scientist.com>
parents: 38582
diff changeset
663 sources = ['md5module.c', 'md5.c'],
f00518bb5b43 add depends = ['md5.h'] to the _md5 module extension for correctness sake.
Gregory P. Smith <greg@mad-scientist.com>
parents: 38582
diff changeset
664 depends = ['md5.h']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
665 missing.append('_hashlib')
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
666
35396
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
667 if (openssl_ver < 0x00908000):
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
668 # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
669 exts.append( Extension('_sha256', ['sha256module.c']) )
12a9bb24b6d9 Add a check for the OpenSSL version number to conditionally compile
Gregory P. Smith <greg@mad-scientist.com>
parents: 35375
diff changeset
670 exts.append( Extension('_sha512', ['sha512module.c']) )
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents: 35238
diff changeset
671
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
672 # Modules that provide persistent dictionary-like semantics. You will
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
673 # 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
674 # your machine, though none are defined by default because of library
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
675 # dependencies. The Python module anydbm.py provides an
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
676 # implementation independent wrapper for these; dumbdbm.py provides
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
677 # similar functionality (but slower of course) implemented in Python.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
678
43477
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
679 # Sleepycat^WOracle Berkeley DB interface.
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
680 # http://www.oracle.com/database/berkeley-db/db/index.html
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
681 #
42841
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
682 # This requires the Sleepycat^WOracle DB code. The supported versions
43510
fa93dd4e34bc remove another sleepycat reference
Gregory P. Smith <greg@mad-scientist.com>
parents: 43504
diff changeset
683 # are set below. Visit the URL above to download
37691
eac83feeb11f raise the minimum supported BerkeleyDB version to 3.3 and add notes to
Gregory P. Smith <greg@mad-scientist.com>
parents: 37605
diff changeset
684 # a release. Most open source OSes come with one or more
eac83feeb11f raise the minimum supported BerkeleyDB version to 3.3 and add notes to
Gregory P. Smith <greg@mad-scientist.com>
parents: 37605
diff changeset
685 # versions of BerkeleyDB already installed.
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
686
45040
bd246f33687f Disable use of BerkeleyDB 4.6.x to see what the odd platform buildbots
Gregory P. Smith <greg@mad-scientist.com>
parents: 44948
diff changeset
687 max_db_ver = (4, 5) # XXX(gregory.p.smith): 4.6 "works" but seems to
bd246f33687f Disable use of BerkeleyDB 4.6.x to see what the odd platform buildbots
Gregory P. Smith <greg@mad-scientist.com>
parents: 44948
diff changeset
688 # have issues on many platforms. I've temporarily
bd246f33687f Disable use of BerkeleyDB 4.6.x to see what the odd platform buildbots
Gregory P. Smith <greg@mad-scientist.com>
parents: 44948
diff changeset
689 # disabled 4.6 to see what the odd platform
bd246f33687f Disable use of BerkeleyDB 4.6.x to see what the odd platform buildbots
Gregory P. Smith <greg@mad-scientist.com>
parents: 44948
diff changeset
690 # buildbots say.
37691
eac83feeb11f raise the minimum supported BerkeleyDB version to 3.3 and add notes to
Gregory P. Smith <greg@mad-scientist.com>
parents: 37605
diff changeset
691 min_db_ver = (3, 3)
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
692 db_setup_debug = False # verbose debug prints from this script?
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
693
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
694 # construct a list of paths to look for the header file in on
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
695 # top of the normal inc_dirs.
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
696 db_inc_paths = [
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
697 '/usr/include/db4',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
698 '/usr/local/include/db4',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
699 '/opt/sfw/include/db4',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
700 '/usr/include/db3',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
701 '/usr/local/include/db3',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
702 '/opt/sfw/include/db3',
41003
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
703 # Fink defaults (http://fink.sourceforge.net/)
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
704 '/sw/include/db4',
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
705 '/sw/include/db3',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
706 ]
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
707 # 4.x minor number specific paths
43319
ced24ccc49dd Don't allow BerkeleyDB 4.6.x as the current 4.6.19 release is prone
Gregory P. Smith <greg@mad-scientist.com>
parents: 43270
diff changeset
708 for x in range(max_db_ver[1]+1):
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
709 db_inc_paths.append('/usr/include/db4%d' % x)
35737
5390ddc77eb8 Find bsd db v4 on gentoo (2005 i think)
Neal Norwitz <nnorwitz@gmail.com>
parents: 35396
diff changeset
710 db_inc_paths.append('/usr/include/db4.%d' % x)
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
711 db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
712 db_inc_paths.append('/usr/local/include/db4%d' % x)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
713 db_inc_paths.append('/pkg/db-4.%d/include' % x)
36396
0372e25e430e Support for BerkeleyDB 4.4 (tested against 4.4.20 as well as all the
Gregory P. Smith <greg@mad-scientist.com>
parents: 36162
diff changeset
714 db_inc_paths.append('/opt/db-4.%d/include' % x)
41003
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
715 # MacPorts default (http://www.macports.org/)
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
716 db_inc_paths.append('/opt/local/include/db4%d' % x)
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
717 # 3.x minor number specific paths
40544
f9b27820798b Support linking of the bsddb module against BerkeleyDB 4.5.x
Gregory P. Smith <greg@mad-scientist.com>
parents: 40207
diff changeset
718 for x in (3,):
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
719 db_inc_paths.append('/usr/include/db3%d' % x)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
720 db_inc_paths.append('/usr/local/BerkeleyDB.3.%d/include' % x)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
721 db_inc_paths.append('/usr/local/include/db3%d' % x)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
722 db_inc_paths.append('/pkg/db-3.%d/include' % x)
36396
0372e25e430e Support for BerkeleyDB 4.4 (tested against 4.4.20 as well as all the
Gregory P. Smith <greg@mad-scientist.com>
parents: 36162
diff changeset
723 db_inc_paths.append('/opt/db-3.%d/include' % x)
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
724
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
725 # Add some common subdirectories for Sleepycat DB to the list,
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
726 # based on the standard include directories. This way DB3/4 gets
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
727 # picked up when it is installed in a non-standard prefix and
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
728 # the user has added that prefix into inc_dirs.
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
729 std_variants = []
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
730 for dn in inc_dirs:
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
731 std_variants.append(os.path.join(dn, 'db3'))
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
732 std_variants.append(os.path.join(dn, 'db4'))
45128
403a7ee5a53e remove a repeated occurance of a hardcoded berkeleydb library version number
Gregory P. Smith <greg@mad-scientist.com>
parents: 45119
diff changeset
733 for x in range(max_db_ver[1]+1):
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
734 std_variants.append(os.path.join(dn, "db4%d"%x))
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
735 std_variants.append(os.path.join(dn, "db4.%d"%x))
45128
403a7ee5a53e remove a repeated occurance of a hardcoded berkeleydb library version number
Gregory P. Smith <greg@mad-scientist.com>
parents: 45119
diff changeset
736 for x in (3,):
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
737 std_variants.append(os.path.join(dn, "db3%d"%x))
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
738 std_variants.append(os.path.join(dn, "db3.%d"%x))
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
739
38967
a21e420a597c Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 38946
diff changeset
740 db_inc_paths = std_variants + db_inc_paths
41003
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
741 db_inc_paths = [p for p in db_inc_paths if os.path.exists(p)]
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
742
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
743 db_ver_inc_map = {}
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
744
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
745 class db_found(Exception): pass
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
746 try:
26548
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
747 # See whether there is a Sleepycat header in the standard
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
748 # search path.
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
749 for d in inc_dirs + db_inc_paths:
26548
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
750 f = os.path.join(d, "db.h")
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
751 if db_setup_debug: print "db: looking for db.h in", f
26548
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
752 if os.path.exists(f):
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
753 f = open(f).read()
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
754 m = re.search(r"#define\WDB_VERSION_MAJOR\W(\d+)", f)
26548
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
755 if m:
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
756 db_major = int(m.group(1))
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
757 m = re.search(r"#define\WDB_VERSION_MINOR\W(\d+)", f)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
758 db_minor = int(m.group(1))
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
759 db_ver = (db_major, db_minor)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
760
43477
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
761 # Avoid 4.6 prior to 4.6.21 due to a BerkeleyDB bug
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
762 if db_ver == (4, 6):
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
763 m = re.search(r"#define\WDB_VERSION_PATCH\W(\d+)", f)
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
764 db_patch = int(m.group(1))
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
765 if db_patch < 21:
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
766 print "db.h:", db_ver, "patch", db_patch,
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
767 print "being ignored (4.6.x must be >= 4.6.21)"
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
768 continue
f7353595b7fa Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
Gregory P. Smith <greg@mad-scientist.com>
parents: 43319
diff changeset
769
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
770 if ( (not db_ver_inc_map.has_key(db_ver)) and
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
771 (db_ver <= max_db_ver and db_ver >= min_db_ver) ):
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
772 # save the include directory with the db.h version
41003
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
773 # (first occurrence only)
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
774 db_ver_inc_map[db_ver] = d
40207
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
775 if db_setup_debug:
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
776 print "db.h: found", db_ver, "in", d
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
777 else:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
778 # we already found a header for this library version
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
779 if db_setup_debug: print "db.h: ignoring", d
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
780 else:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
781 # ignore this header, it didn't contain a version number
41003
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
782 if db_setup_debug:
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
783 print "db.h: no version number version in", d
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
784
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
785 db_found_vers = db_ver_inc_map.keys()
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
786 db_found_vers.sort()
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
787
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
788 while db_found_vers:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
789 db_ver = db_found_vers.pop()
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
790 db_incdir = db_ver_inc_map[db_ver]
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
791
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
792 # check lib directories parallel to the location of the header
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
793 db_dirs_to_check = [
41003
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
794 db_incdir.replace("include", 'lib64'),
fe9a9d39a351 Teach setup.py how to find Berkeley DB on Macs using MacPorts.
Skip Montanaro <skip@pobox.com>
parents: 40989
diff changeset
795 db_incdir.replace("include", 'lib'),
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
796 ]
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
797 db_dirs_to_check = filter(os.path.isdir, db_dirs_to_check)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
798
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
799 # Look for a version specific db-X.Y before an ambiguoius dbX
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
800 # XXX should we -ever- look for a dbX name? Do any
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
801 # systems really not name their library by version and
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
802 # symlink to more general names?
34717
516f15521598 add support for another DB library naming convention (FreeBSD ports)
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 34706
diff changeset
803 for dblib in (('db-%d.%d' % db_ver),
516f15521598 add support for another DB library naming convention (FreeBSD ports)
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 34706
diff changeset
804 ('db%d%d' % db_ver),
516f15521598 add support for another DB library naming convention (FreeBSD ports)
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 34706
diff changeset
805 ('db%d' % db_ver[0])):
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
806 dblib_file = self.compiler.find_library_file(
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
807 db_dirs_to_check + lib_dirs, dblib )
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
808 if dblib_file:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
809 dblib_dir = [ os.path.abspath(os.path.dirname(dblib_file)) ]
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
810 raise db_found
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
811 else:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
812 if db_setup_debug: print "db lib: ", dblib, "not found"
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
813
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
814 except db_found:
40207
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
815 if db_setup_debug:
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
816 print "db lib: using", db_ver, dblib
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
817 print "db: lib dir", dblib_dir, "inc dir", db_incdir
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
818 db_incs = [db_incdir]
24143
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
819 dblibs = [dblib]
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
820 # We add the runtime_library_dirs argument because the
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
821 # BerkeleyDB lib we're linking against often isn't in the
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
822 # system dynamic library search path. This is usually
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
823 # correct and most trouble free, but may cause problems in
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
824 # some unusual system configurations (e.g. the directory
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
825 # is on an NFS server that goes away).
26280
875140d30e17 Import PyBSDDB 3.4.0. Rename historical wrapper to bsddb185.
Martin v. Löwis <martin@v.loewis.de>
parents: 26137
diff changeset
826 exts.append(Extension('_bsddb', ['_bsddb.c'],
43504
33021e403f3c Splits Modules/_bsddb.c up into bsddb.h and _bsddb.c and adds a C API
Gregory P. Smith <greg@mad-scientist.com>
parents: 43477
diff changeset
827 depends = ['bsddb.h'],
26548
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
828 library_dirs=dblib_dir,
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
829 runtime_library_dirs=dblib_dir,
26280
875140d30e17 Import PyBSDDB 3.4.0. Rename historical wrapper to bsddb185.
Martin v. Löwis <martin@v.loewis.de>
parents: 26137
diff changeset
830 include_dirs=db_incs,
875140d30e17 Import PyBSDDB 3.4.0. Rename historical wrapper to bsddb185.
Martin v. Löwis <martin@v.loewis.de>
parents: 26137
diff changeset
831 libraries=dblibs))
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
832 else:
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
833 if db_setup_debug: print "db: no appropriate library found"
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
834 db_incs = None
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
835 dblibs = []
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
836 dblib_dir = None
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
837 missing.append('_bsddb')
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
838
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
839 # The sqlite interface
40207
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
840 sqlite_setup_debug = False # verbose debug prints from this script?
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
841
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
842 # We hunt for #define SQLITE_VERSION "n.n.n"
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
843 # We need to find >= sqlite version 3.0.8
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
844 sqlite_incdir = sqlite_libdir = None
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
845 sqlite_inc_paths = [ '/usr/include',
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
846 '/usr/include/sqlite',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
847 '/usr/include/sqlite3',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
848 '/usr/local/include',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
849 '/usr/local/include/sqlite',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
850 '/usr/local/include/sqlite3',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
851 ]
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
852 MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
853 MIN_SQLITE_VERSION = ".".join([str(x)
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
854 for x in MIN_SQLITE_VERSION_NUMBER])
38348
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
855
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
856 # Scan the default include directories before the SQLite specific
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
857 # ones. This allows one to override the copy of sqlite on OSX,
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
858 # where /usr/include contains an old version of sqlite.
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
859 for d in inc_dirs + sqlite_inc_paths:
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
860 f = os.path.join(d, "sqlite3.h")
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
861 if os.path.exists(f):
37381
91e9fb5cfe14 backport r243 from the pysqlite2 svn repository - lowers the required version
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37362
diff changeset
862 if sqlite_setup_debug: print "sqlite: found %s"%f
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
863 incf = open(f).read()
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
864 m = re.search(
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
865 r'\s*.*#\s*.*define\s.*SQLITE_VERSION\W*"(.*)"', incf)
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
866 if m:
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
867 sqlite_version = m.group(1)
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
868 sqlite_version_tuple = tuple([int(x)
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
869 for x in sqlite_version.split(".")])
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
870 if sqlite_version_tuple >= MIN_SQLITE_VERSION_NUMBER:
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
871 # we win!
40207
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
872 if sqlite_setup_debug:
98e900499043 Check db_setup_debug for a few print statements; change sqlite_setup_debug to False
Andrew M. Kuchling <amk@amk.ca>
parents: 39422
diff changeset
873 print "%s/sqlite3.h: version %s"%(d, sqlite_version)
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
874 sqlite_incdir = d
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
875 break
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
876 else:
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
877 if sqlite_setup_debug:
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
878 print "%s: version %d is too old, need >= %s"%(d,
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
879 sqlite_version, MIN_SQLITE_VERSION)
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
880 elif sqlite_setup_debug:
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
881 print "sqlite: %s had no SQLITE_VERSION"%(f,)
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
882
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
883 if sqlite_incdir:
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
884 sqlite_dirs_to_check = [
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
885 os.path.join(sqlite_incdir, '..', 'lib64'),
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
886 os.path.join(sqlite_incdir, '..', 'lib'),
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
887 os.path.join(sqlite_incdir, '..', '..', 'lib64'),
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
888 os.path.join(sqlite_incdir, '..', '..', 'lib'),
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
889 ]
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
890 sqlite_libfile = self.compiler.find_library_file(
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
891 sqlite_dirs_to_check + lib_dirs, 'sqlite3')
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
892 sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))]
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
893
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
894 if sqlite_incdir and sqlite_libdir:
37938
7da4af95ebad Updated the sqlite3 module to the external pysqlite 2.2.2 version.
Gerhard Häring <gh@ghaering.de>
parents: 37691
diff changeset
895 sqlite_srcs = ['_sqlite/cache.c',
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
896 '_sqlite/connection.c',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
897 '_sqlite/cursor.c',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
898 '_sqlite/microprotocols.c',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
899 '_sqlite/module.c',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
900 '_sqlite/prepare_protocol.c',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
901 '_sqlite/row.c',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
902 '_sqlite/statement.c',
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
903 '_sqlite/util.c', ]
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
904
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
905 sqlite_defines = []
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
906 if sys.platform != "win32":
37495
d3969aeba777 upgrade to final version of pysqlite 2.2.0
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37492
diff changeset
907 sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
908 else:
37495
d3969aeba777 upgrade to final version of pysqlite 2.2.0
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37492
diff changeset
909 sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
d3969aeba777 upgrade to final version of pysqlite 2.2.0
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37492
diff changeset
910
38348
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
911
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
912 if sys.platform == 'darwin':
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
913 # In every directory on the search path search for a dynamic
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
914 # library and then a static library, instead of first looking
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
915 # for dynamic libraries on the entiry path.
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
916 # This way a staticly linked custom sqlite gets picked up
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
917 # before the dynamic library in /usr/lib.
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
918 sqlite_extra_link_args = ('-Wl,-search_paths_first',)
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
919 else:
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
920 sqlite_extra_link_args = ()
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
921
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
922 exts.append(Extension('_sqlite3', sqlite_srcs,
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
923 define_macros=sqlite_defines,
37406
85b26f4fa2a5 cleaned up setup.py code for sqlite3, based on patch from Gerhard Haering.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37381
diff changeset
924 include_dirs=["Modules/_sqlite",
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
925 sqlite_incdir],
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
926 library_dirs=sqlite_libdir,
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
927 runtime_library_dirs=sqlite_libdir,
38348
8d28e63e8f21 - Search the sqlite specific search directories
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38262
diff changeset
928 extra_link_args=sqlite_extra_link_args,
37362
e546274d6503 merged the sqlite-integration branch.
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37313
diff changeset
929 libraries=["sqlite3",]))
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
930 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
931 missing.append('_sqlite3')
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
932
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
933 # Look for Berkeley db 1.85. Note that it is built as a different
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
934 # module name so it can be included even when later versions are
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
935 # available. A very restrictive search is performed to avoid
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
936 # accidentally building this module with a later version of the
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
937 # underlying db library. May BSD-ish Unixes incorporate db 1.85
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
938 # symbols into libc and place the include file in /usr/include.
42841
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
939 #
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
940 # If the better bsddb library can be built (db_incs is defined)
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
941 # we do not build this one. Otherwise this build will pick up
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
942 # the more recent berkeleydb's db.h file first in the include path
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
943 # when attempting to compile and it will fail.
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
944 f = "/usr/include/db.h"
42841
673cbc85d8c4 keep setup.py from listing unneeded hash modules (_md5, _sha*) as
Gregory P. Smith <greg@mad-scientist.com>
parents: 42772
diff changeset
945 if os.path.exists(f) and not db_incs:
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
946 data = open(f).read()
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
947 m = re.search(r"#s*define\s+HASHVERSION\s+2\s*", data)
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
948 if m is not None:
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
949 # bingo - old version used hash file format version 2
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
950 ### XXX this should be fixed to not be platform-dependent
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
951 ### but I don't have direct access to an osf1 platform and
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
952 ### seemed to be muffing the search somehow
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
953 libraries = platform == "osf1" and ['db'] or None
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
954 if libraries is not None:
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
955 exts.append(Extension('bsddb185', ['bsddbmodule.c'],
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
956 libraries=libraries))
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
957 else:
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
958 exts.append(Extension('bsddb185', ['bsddbmodule.c']))
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
959 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
960 missing.append('bsddb185')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
961 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
962 missing.append('bsddb185')
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
963
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
964 # 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
965 if platform not in ['cygwin']:
26570
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
966 if find_file("ndbm.h", inc_dirs, []) is not None:
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
967 # Some systems have -lndbm, others don't
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
968 if self.compiler.find_library_file(lib_dirs, 'ndbm'):
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
969 ndbm_libs = ['ndbm']
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
970 else:
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
971 ndbm_libs = []
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
972 exts.append( Extension('dbm', ['dbmmodule.c'],
24143
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
973 define_macros=[('HAVE_NDBM_H',None)],
26570
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
974 libraries = ndbm_libs ) )
24143
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
975 elif (self.compiler.find_library_file(lib_dirs, 'gdbm')
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
976 and find_file("gdbm/ndbm.h", inc_dirs, []) is not None):
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
977 exts.append( Extension('dbm', ['dbmmodule.c'],
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
978 define_macros=[('HAVE_GDBM_NDBM_H',None)],
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
979 libraries = ['gdbm'] ) )
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
980 elif db_incs is not None:
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
981 exts.append( Extension('dbm', ['dbmmodule.c'],
26570
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
982 library_dirs=dblib_dir,
2aba1ac4744c Correct db3 /opt/sfw library path. Link ndbm with libc only if ndbm.h
Martin v. Löwis <martin@v.loewis.de>
parents: 26548
diff changeset
983 runtime_library_dirs=dblib_dir,
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
984 include_dirs=db_incs,
24143
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
985 define_macros=[('HAVE_BERKDB_H',None),
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
986 ('DB_DBM_HSEARCH',None)],
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
987 libraries=dblibs))
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
988 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
989 missing.append('dbm')
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
990
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
991 # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
992 if (self.compiler.find_library_file(lib_dirs, 'gdbm')):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
993 exts.append( Extension('gdbm', ['gdbmmodule.c'],
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
994 libraries = ['gdbm'] ) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
995 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
996 missing.append('gdbm')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
997
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
998 # Unix-only modules
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
999 if platform not in ['mac', 'win32']:
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1000 # Steen Lumholt's termios module
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1001 exts.append( Extension('termios', ['termios.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1002 # Jeremy Hylton's rlimit interface
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1003 if platform not in ['atheos']:
23777
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
1004 exts.append( Extension('resource', ['resource.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1005 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1006 missing.append('resource')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1007
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
1008 # Sun yellow pages. Some systems have the functions in libc.
23777
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
1009 if platform not in ['cygwin', 'atheos']:
16804
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1010 if (self.compiler.find_library_file(lib_dirs, 'nsl')):
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1011 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
1012 else:
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1013 libs = []
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
1014 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
1015 libraries = libs) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1016 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1017 missing.append('nis')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1018 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1019 missing.extend(['nis', 'resource', 'termios'])
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1020
31468
de2ed800fa50 a couple other sunos4 support items removed
Skip Montanaro <skip@pobox.com>
parents: 31436
diff changeset
1021 # 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
1022 # provided by the ncurses library.
39390
b7eab1c18e9d [Patch #1464056] Ensure that we use the panelw library when linking with ncursesw.
Andrew M. Kuchling <amk@amk.ca>
parents: 39374
diff changeset
1023 panel_library = 'panel'
36479
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
1024 if (self.compiler.find_library_file(lib_dirs, 'ncursesw')):
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
1025 curses_libs = ['ncursesw']
39390
b7eab1c18e9d [Patch #1464056] Ensure that we use the panelw library when linking with ncursesw.
Andrew M. Kuchling <amk@amk.ca>
parents: 39374
diff changeset
1026 # Bug 1464056: If _curses.so links with ncursesw,
b7eab1c18e9d [Patch #1464056] Ensure that we use the panelw library when linking with ncursesw.
Andrew M. Kuchling <amk@amk.ca>
parents: 39374
diff changeset
1027 # _curses_panel.so must link with panelw.
b7eab1c18e9d [Patch #1464056] Ensure that we use the panelw library when linking with ncursesw.
Andrew M. Kuchling <amk@amk.ca>
parents: 39374
diff changeset
1028 panel_library = 'panelw'
36479
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
1029 exts.append( Extension('_curses', ['_cursesmodule.c'],
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
1030 libraries = curses_libs) )
d496c0764ad6 Patch #428494: Prefer linking against ncursesw over ncurses library
Martin v. Löwis <martin@v.loewis.de>
parents: 36459
diff changeset
1031 elif (self.compiler.find_library_file(lib_dirs, 'ncurses')):
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1032 curses_libs = ['ncurses']
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1033 exts.append( Extension('_curses', ['_cursesmodule.c'],
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1034 libraries = curses_libs) )
21274
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
1035 elif (self.compiler.find_library_file(lib_dirs, 'curses')
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
1036 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
1037 # 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
1038 # the _curses module.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1039 if (self.compiler.find_library_file(lib_dirs, 'terminfo')):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1040 curses_libs = ['curses', 'terminfo']
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
1041 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
1042 curses_libs = ['curses', 'termcap']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1043 else:
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
1044 curses_libs = ['curses']
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1045
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1046 exts.append( Extension('_curses', ['_cursesmodule.c'],
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1047 libraries = curses_libs) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1048 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1049 missing.append('_curses')
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1050
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1051 # 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
1052 if (module_enabled(exts, '_curses') and
39390
b7eab1c18e9d [Patch #1464056] Ensure that we use the panelw library when linking with ncursesw.
Andrew M. Kuchling <amk@amk.ca>
parents: 39374
diff changeset
1053 self.compiler.find_library_file(lib_dirs, panel_library)):
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1054 exts.append( Extension('_curses_panel', ['_curses_panel.c'],
39390
b7eab1c18e9d [Patch #1464056] Ensure that we use the panelw library when linking with ncursesw.
Andrew M. Kuchling <amk@amk.ca>
parents: 39374
diff changeset
1055 libraries = [panel_library] + curses_libs) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1056 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1057 missing.append('_curses_panel')
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1058
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
1059 # 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
1060 # 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
1061 # 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
1062 #
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1063 # 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
1064 # 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
1065 # 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
1066 # 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
1067 # 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
1068 #
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
1069 # 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
1070 # 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
1071 zlib_inc = find_file('zlib.h', [], inc_dirs)
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
1072 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
1073 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
1074 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
1075 version_req = '"1.1.3"'
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
1076 fp = open(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
1077 while 1:
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
1078 line = fp.readline()
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
1079 if not line:
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
1080 break
24605
fd4575b56a4d Update the URL for getting zlib, and update the minimal required
Guido van Rossum <guido@python.org>
parents: 24579
diff changeset
1081 if line.startswith('#define ZLIB_VERSION'):
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
1082 version = line.split()[2]
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
1083 break
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
1084 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
1085 if (self.compiler.find_library_file(lib_dirs, 'z')):
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1086 if sys.platform == "darwin":
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1087 zlib_extra_link_args = ('-Wl,-search_paths_first',)
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1088 else:
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1089 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
1090 exts.append( Extension('zlib', ['zlibmodule.c'],
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1091 libraries = ['z'],
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1092 extra_link_args = zlib_extra_link_args))
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1093 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1094 missing.append('zlib')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1095 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1096 missing.append('zlib')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1097 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1098 missing.append('zlib')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1099
26037
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
1100 # Gustavo Niemeyer's bz2 module.
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
1101 if (self.compiler.find_library_file(lib_dirs, 'bz2')):
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1102 if sys.platform == "darwin":
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1103 bz2_extra_link_args = ('-Wl,-search_paths_first',)
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1104 else:
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1105 bz2_extra_link_args = ()
26037
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
1106 exts.append( Extension('bz2', ['bz2module.c'],
38946
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1107 libraries = ['bz2'],
7c8990cccf9b Use staticly build copies of zlib and bzip2 to build the OSX installer, that
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38617
diff changeset
1108 extra_link_args = bz2_extra_link_args) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1109 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1110 missing.append('bz2')
26037
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
1111
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1112 # Interface to the Expat XML parser
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1113 #
23889
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1114 # Expat was written by James Clark and is now maintained by a
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1115 # group of developers on SourceForge; see www.libexpat.org for
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1116 # more information. The pyexpat module was written by Paul
30425
d864f3168cac Remove possibly-misleading Expat version
Andrew M. Kuchling <amk@amk.ca>
parents: 29795
diff changeset
1117 # Prescod after a prototype by Jack Jansen. The Expat source
d864f3168cac Remove possibly-misleading Expat version
Andrew M. Kuchling <amk@amk.ca>
parents: 29795
diff changeset
1118 # is included in Modules/expat/. Usage of a system
23889
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1119 # shared libexpat.so/expat.dll is not advised.
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1120 #
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
1121 # 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
1122 #
21942
9d44e752d617 Compute expat -I directives from srcdir. Fixes #517214.
Martin v. Löwis <martin@v.loewis.de>
parents: 21939
diff changeset
1123 expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat')
30731
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1124 define_macros = [
38040
36c7a4422e30 Patch 1471883: --enable-universalsdk on Mac OS X
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38013
diff changeset
1125 ('HAVE_EXPAT_CONFIG_H', '1'),
36c7a4422e30 Patch 1471883: --enable-universalsdk on Mac OS X
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38013
diff changeset
1126 ]
36c7a4422e30 Patch 1471883: --enable-universalsdk on Mac OS X
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 38013
diff changeset
1127
30731
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1128 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
1129 define_macros = define_macros,
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1130 include_dirs = [expatinc],
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1131 sources = ['pyexpat.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1132 'expat/xmlparse.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1133 'expat/xmlrole.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1134 'expat/xmltok.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1135 ],
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
1136 ))
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1137
36026
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1138 # 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
1139 # 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
1140
37234
34f20ab44cef Find a source file in srcdir to allow to build outside of srcdir.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 37021
diff changeset
1141 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
1142 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
1143 exts.append(Extension('_elementtree',
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1144 define_macros = define_macros,
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1145 include_dirs = [expatinc],
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1146 sources = ['_elementtree.c'],
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1147 ))
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1148 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1149 missing.append('_elementtree')
36026
e01d8524b6f6 added cElementTree/_elementtree build stuff and wrapper module
Fredrik Lundh <fredrik@pythonware.com>
parents: 35737
diff changeset
1150
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
1151 # Hye-Shik Chang's CJKCodecs modules.
34706
d687a8a09a72 Build with --disable-unicode again. Fixes #1158607.
Martin v. Löwis <martin@v.loewis.de>
parents: 34636
diff changeset
1152 if have_unicode:
d687a8a09a72 Build with --disable-unicode again. Fixes #1158607.
Martin v. Löwis <martin@v.loewis.de>
parents: 34636
diff changeset
1153 exts.append(Extension('_multibytecodec',
d687a8a09a72 Build with --disable-unicode again. Fixes #1158607.
Martin v. Löwis <martin@v.loewis.de>
parents: 34636
diff changeset
1154 ['cjkcodecs/multibytecodec.c']))
d687a8a09a72 Build with --disable-unicode again. Fixes #1158607.
Martin v. Löwis <martin@v.loewis.de>
parents: 34636
diff changeset
1155 for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1156 exts.append(Extension('_codecs_%s' % loc,
34706
d687a8a09a72 Build with --disable-unicode again. Fixes #1158607.
Martin v. Löwis <martin@v.loewis.de>
parents: 34636
diff changeset
1157 ['cjkcodecs/_codecs_%s.c' % loc]))
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1158 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1159 missing.append('_multibytecodec')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1160 for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1161 missing.append('_codecs_%s' % loc)
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
1162
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1163 # Dynamic loading module
25232
aac1ee966f56 Only build the 'dl' extension when sys.maxint equals 2**31-1.
Guido van Rossum <guido@python.org>
parents: 25075
diff changeset
1164 if sys.maxint == 0x7fffffff:
aac1ee966f56 Only build the 'dl' extension when sys.maxint equals 2**31-1.
Guido van Rossum <guido@python.org>
parents: 25075
diff changeset
1165 # This requires sizeof(int) == sizeof(long) == sizeof(char*)
aac1ee966f56 Only build the 'dl' extension when sys.maxint equals 2**31-1.
Guido van Rossum <guido@python.org>
parents: 25075
diff changeset
1166 dl_inc = find_file('dlfcn.h', [], inc_dirs)
37553
3959810bc549 Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c)
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37537
diff changeset
1167 if (dl_inc is not None) and (platform not in ['atheos']):
25232
aac1ee966f56 Only build the 'dl' extension when sys.maxint equals 2**31-1.
Guido van Rossum <guido@python.org>
parents: 25075
diff changeset
1168 exts.append( Extension('dl', ['dlmodule.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1169 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1170 missing.append('dl')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1171 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1172 missing.append('dl')
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1173
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1174 # Thomas Heller's _ctypes module
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1175 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
1176
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1177 # Platform-specific libraries
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
1178 if platform == 'linux2':
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1179 # Linux-specific modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1180 exts.append( Extension('linuxaudiodev', ['linuxaudiodev.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1181 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1182 missing.append('linuxaudiodev')
27149
5ed820670af3 Add reminder that ossaudiodev can/should also be built on FreeBSD.
Greg Ward <gward@python.net>
parents: 27148
diff changeset
1183
35238
526faaab00eb Add support for FreeBSD 7.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34930
diff changeset
1184 if platform in ('linux2', 'freebsd4', 'freebsd5', 'freebsd6',
43703
365913d7af7d Enable platform-specific tweaks for FreeBSD 8 (exactly same to FreeBSD 7's yet)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 43510
diff changeset
1185 'freebsd7', 'freebsd8'):
27865
65494469ad3e Re-enable compiling ossaudiodev now that it seems to work again.
Guido van Rossum <guido@python.org>
parents: 27820
diff changeset
1186 exts.append( Extension('ossaudiodev', ['ossaudiodev.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1187 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1188 missing.append('ossaudiodev')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1189
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
1190 if platform == 'sunos5':
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1191 # SunOS specific modules
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1192 exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) )
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1193 else:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1194 missing.append('sunaudiodev')
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1195
33294
67fbbeb1e218 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 33285
diff changeset
1196 if platform == 'darwin' and ("--disable-toolbox-glue" not in
37313
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1197 sysconfig.get_config_var("CONFIG_ARGS")):
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1198
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1199 if os.uname()[2] > '8.':
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1200 # We're on Mac OS X 10.4 or later, the compiler should
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1201 # support '-Wno-deprecated-declarations'. This will
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1202 # surpress deprecation warnings for the Carbon extensions,
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1203 # these extensions wrap the Carbon APIs and even those
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1204 # parts that are deprecated.
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1205 carbon_extra_compile_args = ['-Wno-deprecated-declarations']
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1206 else:
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1207 carbon_extra_compile_args = []
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1208
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
1209 # Mac OS X specific modules.
37413
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1210 def macSrcExists(name1, name2=''):
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1211 if not name1:
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1212 return None
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1213 names = (name1,)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1214 if name2:
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1215 names = (name1, name2)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1216 path = os.path.join(srcdir, 'Mac', 'Modules', *names)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1217 return os.path.exists(path)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1218
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1219 def addMacExtension(name, kwds, extra_srcs=[]):
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1220 dirname = ''
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1221 if name[0] == '_':
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1222 dirname = name[1:].lower()
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1223 cname = name + '.c'
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1224 cmodulename = name + 'module.c'
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1225 # Check for NNN.c, NNNmodule.c, _nnn/NNN.c, _nnn/NNNmodule.c
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1226 if macSrcExists(cname):
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1227 srcs = [cname]
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1228 elif macSrcExists(cmodulename):
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1229 srcs = [cmodulename]
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1230 elif macSrcExists(dirname, cname):
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1231 # XXX(nnorwitz): If all the names ended with module, we
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1232 # wouldn't need this condition. ibcarbon is the only one.
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1233 srcs = [os.path.join(dirname, cname)]
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1234 elif macSrcExists(dirname, cmodulename):
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1235 srcs = [os.path.join(dirname, cmodulename)]
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1236 else:
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1237 raise RuntimeError("%s not found" % name)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1238
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1239 # Here's the whole point: add the extension with sources
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1240 exts.append(Extension(name, srcs + extra_srcs, **kwds))
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1241
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1242 # Core Foundation
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1243 core_kwds = {'extra_compile_args': carbon_extra_compile_args,
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1244 'extra_link_args': ['-framework', 'CoreFoundation'],
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1245 }
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1246 addMacExtension('_CF', core_kwds, ['cf/pycfbridge.c'])
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1247 addMacExtension('autoGIL', core_kwds)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1248
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1249 # Carbon
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1250 carbon_kwds = {'extra_compile_args': carbon_extra_compile_args,
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1251 'extra_link_args': ['-framework', 'Carbon'],
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1252 }
37492
09990661226d whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37458
diff changeset
1253 CARBON_EXTS = ['ColorPicker', 'gestalt', 'MacOS', 'Nav',
09990661226d whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37458
diff changeset
1254 'OSATerminology', 'icglue',
37413
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1255 # All these are in subdirs
37492
09990661226d whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37458
diff changeset
1256 '_AE', '_AH', '_App', '_CarbonEvt', '_Cm', '_Ctl',
37413
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1257 '_Dlg', '_Drag', '_Evt', '_File', '_Folder', '_Fm',
37492
09990661226d whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37458
diff changeset
1258 '_Help', '_Icn', '_IBCarbon', '_List',
09990661226d whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37458
diff changeset
1259 '_Menu', '_Mlte', '_OSA', '_Res', '_Qd', '_Qdoffs',
37413
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1260 '_Scrap', '_Snd', '_TE', '_Win',
37492
09990661226d whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37458
diff changeset
1261 ]
37413
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1262 for name in CARBON_EXTS:
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1263 addMacExtension(name, carbon_kwds)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1264
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1265 # Application Services & QuickTime
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1266 app_kwds = {'extra_compile_args': carbon_extra_compile_args,
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1267 'extra_link_args': ['-framework','ApplicationServices'],
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1268 }
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1269 addMacExtension('_Launch', app_kwds)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1270 addMacExtension('_CG', app_kwds)
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1271
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
1272 exts.append( Extension('_Qt', ['qt/_Qtmodule.c'],
37313
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1273 extra_compile_args=carbon_extra_compile_args,
228e25c93a97 Add '-Wno-deprecated-warnings' to the compile flags for the Carbon extensions
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 37234
diff changeset
1274 extra_link_args=['-framework', 'QuickTime',
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
1275 '-framework', 'Carbon']) )
37413
7826049acb4b Remove some duplicated code for handling Mac modules. No functional change (intended). Also stoped setting srcdir twice.
Neal Norwitz <nnorwitz@gmail.com>
parents: 37406
diff changeset
1276
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1277
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1278 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
1279
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1280 # 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
1281 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
1282
41025
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1283 if '_tkinter' not in [e.name for e in self.extensions]:
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1284 missing.append('_tkinter')
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1285
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1286 return missing
06992e6b205a patch 1673619 - identify extension modules which cannot be built
Skip Montanaro <skip@pobox.com>
parents: 41003
diff changeset
1287
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1288 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
1289 # 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
1290 # 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
1291 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
1292 framework_dirs = [
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1293 '/System/Library/Frameworks/',
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1294 '/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
1295 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
1296 ]
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1297
36156
c71ca1cd363b typo, use parens for continued expr
Skip Montanaro <skip@pobox.com>
parents: 36144
diff changeset
1298 # 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
1299 # bundles.
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1300 # 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
1301 for F in framework_dirs:
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1302 # both Tcl.framework and Tk.framework should be present
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1303 for fw in 'Tcl', 'Tk':
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1304 if not exists(join(F, fw + '.framework')):
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1305 break
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1306 else:
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1307 # 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
1308 # building
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1309 break
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1310 else:
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1311 # 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
1312 # 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
1313 return 0
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1314
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1315 # 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
1316 # 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
1317 # 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
1318 #
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1319 include_dirs = [
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1320 join(F, fw + '.framework', H)
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1321 for fw in 'Tcl', 'Tk'
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1322 for H in 'Headers', 'Versions/Current/PrivateHeaders'
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1323 ]
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1324
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1325 # 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
1326 # 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
1327 # 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
1328 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
1329 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
1330
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1331 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
1332 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
1333 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
1334 libraries = [],
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1335 extra_compile_args = frameworks,
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1336 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
1337 )
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1338 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
1339 return 1
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1340
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1341
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1342 def detect_tkinter(self, inc_dirs, lib_dirs):
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1343 # 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
1344
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1345 # 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
1346 # 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
1347 # 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
1348 platform = self.get_platform()
36156
c71ca1cd363b typo, use parens for continued expr
Skip Montanaro <skip@pobox.com>
parents: 36144
diff changeset
1349 if (platform == 'darwin' and
c71ca1cd363b typo, use parens for continued expr
Skip Montanaro <skip@pobox.com>
parents: 36144
diff changeset
1350 self.detect_tkinter_darwin(inc_dirs, lib_dirs)):
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
1351 return
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
1352
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1353 # 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
1354 # 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
1355 # 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
1356 tcllib = tklib = tcl_includes = tk_includes = None
31742
c061f25f74e0 [Patch #905863] Support the CVS version of Tcl/Tk, which has the version number 8.5
Andrew M. Kuchling <amk@amk.ca>
parents: 31741
diff changeset
1357 for version in ['8.5', '85', '8.4', '84', '8.3', '83', '8.2',
18819
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1358 '82', '8.1', '81', '8.0', '80']:
27694
7c4dda0c145f This patch enables Cygwin Python to build _tkinter against Tcl/Tk 8.4.
Jason Tishler <jason@tishler.net>
parents: 27598
diff changeset
1359 tklib = self.compiler.find_library_file(lib_dirs, '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
1360 tcllib = self.compiler.find_library_file(lib_dirs, 'tcl' + version)
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
1361 if tklib and tcllib:
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1362 # 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
1363 break
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1364
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1365 # 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
1366 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
1367 # 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
1368 # 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
1369 dotversion = version
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1370 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
1371 # 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
1372 # 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
1373 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
1374 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
1375 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
1376 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
1377 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
1378 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
1379 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
1380 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
1381 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
1382
28947
8df897f14fb8 Change 'and' to 'or' in _tkinter test.
Martin v. Löwis <martin@v.loewis.de>
parents: 28940
diff changeset
1383 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
1384 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
1385 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
1386 return
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1387
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1388 # OK... everything seems to be present for Tcl/Tk.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1389
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1390 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
1391 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
1392 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
1393 include_dirs.append(dir)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1394
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1395 # 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
1396 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
1397 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
1398 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
1399 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
1400 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
1401 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
1402 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
1403 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
1404 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
1405 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
1406 else:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1407 # 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
1408 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
1409 added_lib_dirs.append('/usr/X11/lib')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1410
27695
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1411 # 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
1412 if platform == 'cygwin':
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1413 x11_inc = find_file('X11/Xlib.h', [], include_dirs)
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1414 if x11_inc is None:
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1415 return
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1416
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1417 # Check for BLT extension
21274
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
1418 if self.compiler.find_library_file(lib_dirs + added_lib_dirs,
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
1419 'BLT8.0'):
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1420 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
1421 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
1422 elif self.compiler.find_library_file(lib_dirs + added_lib_dirs,
e41ee2b8e73d Patch #629126: Detect BLT by also looking for libBLT.
Martin v. Löwis <martin@v.loewis.de>
parents: 26616
diff changeset
1423 'BLT'):
e41ee2b8e73d Patch #629126: Detect BLT by also looking for libBLT.
Martin v. Löwis <martin@v.loewis.de>
parents: 26616
diff changeset
1424 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
1425 libs.append('BLT')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1426
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1427 # 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
1428 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
1429 libs.append('tcl'+ version)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1430
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
1431 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
1432 libs.append('ld')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1433
18819
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1434 # 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
1435 if platform != "cygwin":
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1436 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
1437
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1438 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
1439 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
1440 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
1441 libraries = libs,
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1442 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
1443 )
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1444 self.extensions.append(ext)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1445
27820
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1446 ## # 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
1447 ## ext = Extension('xx', ['xxmodule.c'])
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1448 ## self.extensions.append(ext)
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1449
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1450 # XXX handle these, but how to detect?
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1451 # *** 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
1452 # -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1453 # *** 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
1454 # -DWITH_TOGL togl.c \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1455 # *** Uncomment these for TOGL extension only:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1456 # -lGL -lGLU -lXext -lXmu \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1457
45655
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1458 def configure_ctypes_darwin(self, ext):
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1459 # Darwin (OS X) uses preconfigured files, in
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1460 # the Modules/_ctypes/libffi_osx directory.
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1461 (srcdir,) = sysconfig.get_config_vars('srcdir')
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1462 ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1463 '_ctypes', 'libffi_osx'))
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1464 sources = [os.path.join(ffi_srcdir, p)
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1465 for p in ['ffi.c',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1466 'x86/x86-darwin.S',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1467 'x86/x86-ffi_darwin.c',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1468 'x86/x86-ffi64.c',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1469 'powerpc/ppc-darwin.S',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1470 'powerpc/ppc-darwin_closure.S',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1471 'powerpc/ppc-ffi_darwin.c',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1472 'powerpc/ppc64-darwin_closure.S',
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1473 ]]
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1474
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1475 # Add .S (preprocessed assembly) to C compiler source extensions.
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1476 self.compiler.src_extensions.append('.S')
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1477
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1478 include_dirs = [os.path.join(ffi_srcdir, 'include'),
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1479 os.path.join(ffi_srcdir, 'powerpc')]
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1480 ext.include_dirs.extend(include_dirs)
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1481 ext.sources.extend(sources)
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1482 return True
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1483
37536
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
1484 def configure_ctypes(self, ext):
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1485 if not self.use_system_libffi:
45655
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1486 if sys.platform == 'darwin':
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1487 return self.configure_ctypes_darwin(ext)
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1488
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1489 (srcdir,) = sysconfig.get_config_vars('srcdir')
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1490 ffi_builddir = os.path.join(self.build_temp, 'libffi')
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1491 ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1492 '_ctypes', 'libffi'))
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1493 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
1494
38013
4da0f7621325 Rerun the libffi configuration if any of the files used for that
Thomas Heller <theller@ctypes.org>
parents: 37938
diff changeset
1495 from distutils.dep_util import newer_group
4da0f7621325 Rerun the libffi configuration if any of the files used for that
Thomas Heller <theller@ctypes.org>
parents: 37938
diff changeset
1496
4da0f7621325 Rerun the libffi configuration if any of the files used for that
Thomas Heller <theller@ctypes.org>
parents: 37938
diff changeset
1497 config_sources = [os.path.join(ffi_srcdir, fname)
40844
a6546c27369a Ignore directory time stamps when considering
Martin v. Löwis <martin@v.loewis.de>
parents: 40544
diff changeset
1498 for fname in os.listdir(ffi_srcdir)
a6546c27369a Ignore directory time stamps when considering
Martin v. Löwis <martin@v.loewis.de>
parents: 40544
diff changeset
1499 if os.path.isfile(os.path.join(ffi_srcdir, fname))]
38013
4da0f7621325 Rerun the libffi configuration if any of the files used for that
Thomas Heller <theller@ctypes.org>
parents: 37938
diff changeset
1500 if self.force or newer_group(config_sources,
4da0f7621325 Rerun the libffi configuration if any of the files used for that
Thomas Heller <theller@ctypes.org>
parents: 37938
diff changeset
1501 ffi_configfile):
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1502 from distutils.dir_util import mkpath
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1503 mkpath(ffi_builddir)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1504 config_args = []
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1505
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1506 # Pass empty CFLAGS because we'll just append the resulting
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1507 # CFLAGS to Python's; -g or -O2 is to be avoided.
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1508 cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1509 % (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
1510
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1511 res = os.system(cmd)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1512 if res or not os.path.exists(ffi_configfile):
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1513 print "Failed to configure _ctypes module"
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1514 return False
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1515
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1516 fficonfig = {}
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1517 execfile(ffi_configfile, globals(), fficonfig)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1518 ffi_srcdir = os.path.join(fficonfig['ffi_srcdir'], 'src')
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1519
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1520 # Add .S (preprocessed assembly) to C compiler source extensions.
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1521 self.compiler.src_extensions.append('.S')
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1522
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1523 include_dirs = [os.path.join(ffi_builddir, 'include'),
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1524 ffi_builddir, ffi_srcdir]
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1525 extra_compile_args = fficonfig['ffi_cflags'].split()
37536
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
1526
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1527 ext.sources.extend(fficonfig['ffi_sources'])
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1528 ext.include_dirs.extend(include_dirs)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1529 ext.extra_compile_args.extend(extra_compile_args)
37537
5bc2b4e3ffc1 Don't try to build ctypes when configuration of libffi fails.
Thomas Heller <theller@ctypes.org>
parents: 37536
diff changeset
1530 return True
37536
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
1531
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1532 def detect_ctypes(self, inc_dirs, lib_dirs):
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1533 self.use_system_libffi = False
37536
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
1534 include_dirs = []
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
1535 extra_compile_args = []
39374
465a078d2ca6 Fix #1530448 - fix ctypes build failure on solaris 10.
Thomas Heller <theller@ctypes.org>
parents: 38967
diff changeset
1536 extra_link_args = []
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1537 sources = ['_ctypes/_ctypes.c',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1538 '_ctypes/callbacks.c',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1539 '_ctypes/callproc.c',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1540 '_ctypes/stgdict.c',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1541 '_ctypes/cfield.c',
37536
9bed30df7a4a Configure Modules/_ctypes/libffi just before building the _ctypes extension.
Thomas Heller <theller@ctypes.org>
parents: 37495
diff changeset
1542 '_ctypes/malloc_closure.c']
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1543 depends = ['_ctypes/ctypes.h']
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1544
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1545 if sys.platform == 'darwin':
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1546 sources.append('_ctypes/darwin/dlfcn_simple.c')
45655
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1547 extra_compile_args.append('-DMACOSX')
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1548 include_dirs.append('_ctypes/darwin')
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1549 # XXX Is this still needed?
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1550 ## 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
1551
39374
465a078d2ca6 Fix #1530448 - fix ctypes build failure on solaris 10.
Thomas Heller <theller@ctypes.org>
parents: 38967
diff changeset
1552 elif sys.platform == 'sunos5':
39422
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1553 # XXX This shouldn't be necessary; it appears that some
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1554 # of the assembler code is non-PIC (i.e. it has relocations
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1555 # when it shouldn't. The proper fix would be to rewrite
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1556 # the assembler code to be PIC.
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1557 # This only works with GCC; the Sun compiler likely refuses
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1558 # this option. If you want to compile ctypes with the Sun
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1559 # compiler, please research a proper solution, instead of
ddea4d37c83c Add some commentary on -mimpure-text.
Martin v. Löwis <martin@v.loewis.de>
parents: 39390
diff changeset
1560 # finding some -z option for the Sun compiler.
39374
465a078d2ca6 Fix #1530448 - fix ctypes build failure on solaris 10.
Thomas Heller <theller@ctypes.org>
parents: 38967
diff changeset
1561 extra_link_args.append('-mimpure-text')
465a078d2ca6 Fix #1530448 - fix ctypes build failure on solaris 10.
Thomas Heller <theller@ctypes.org>
parents: 38967
diff changeset
1562
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1563 ext = Extension('_ctypes',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1564 include_dirs=include_dirs,
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1565 extra_compile_args=extra_compile_args,
39374
465a078d2ca6 Fix #1530448 - fix ctypes build failure on solaris 10.
Thomas Heller <theller@ctypes.org>
parents: 38967
diff changeset
1566 extra_link_args=extra_link_args,
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1567 libraries=[],
36898
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1568 sources=sources,
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1569 depends=depends)
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1570 ext_test = Extension('_ctypes_test',
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1571 sources=['_ctypes/_ctypes_test.c'])
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1572 self.extensions.extend([ext, ext_test])
27905ebaddab Changes to build the _ctypes extension module.
Thomas Heller <theller@ctypes.org>
parents: 36817
diff changeset
1573
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1574 if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1575 return
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1576
45655
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1577 if sys.platform == 'darwin':
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1578 # OS X 10.5 comes with libffi.dylib; the include files are
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1579 # in /usr/include/ffi
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1580 inc_dirs.append('/usr/include/ffi')
d387b01dbc1c Merged changes from libffi3-branch.
Thomas Heller <theller@ctypes.org>
parents: 45439
diff changeset
1581
37605
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1582 ffi_inc = find_file('ffi.h', [], inc_dirs)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1583 if ffi_inc is not None:
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1584 ffi_h = ffi_inc[0] + '/ffi.h'
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1585 fp = open(ffi_h)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1586 while 1:
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1587 line = fp.readline()
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1588 if not line:
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1589 ffi_inc = None
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1590 break
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1591 if line.startswith('#define LIBFFI_H'):
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1592 break
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1593 ffi_lib = None
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1594 if ffi_inc is not None:
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1595 for lib_name in ('ffi_convenience', 'ffi_pic', 'ffi'):
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1596 if (self.compiler.find_library_file(lib_dirs, lib_name)):
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1597 ffi_lib = lib_name
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1598 break
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1599
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1600 if ffi_inc and ffi_lib:
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1601 ext.include_dirs.extend(ffi_inc)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1602 ext.libraries.append(ffi_lib)
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1603 self.use_system_libffi = True
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1604
e070c316eb45 Patch #1464444: Add --with-system-ffi.
Martin v. Löwis <martin@v.loewis.de>
parents: 37553
diff changeset
1605
17886
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1606 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
1607 # 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
1608 # 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
1609 # installation:
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1610 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
1611 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
1612 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
1613
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1614 class PyBuildInstallLib(install_lib):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1615 # 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
1616 # 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
1617 # 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
1618 # 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
1619
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1620 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
1621
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1622 def install(self):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1623 outfiles = install_lib.install(self)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1624 self.set_file_modes(outfiles, 0644, 0755)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1625 self.set_dir_modes(self.install_dir, 0755)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1626 return outfiles
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1627
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1628 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
1629 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
1630 if not files: return
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1631
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1632 for filename in files:
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1633 if os.path.islink(filename): continue
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1634 mode = defaultMode
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1635 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
1636 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
1637 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
1638
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1639 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
1640 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
1641 os.path.walk(dirname, self.set_dir_modes_visitor, mode)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1642
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1643 def set_dir_modes_visitor(self, mode, dirname, names):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1644 if os.path.islink(dirname): return
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1645 log.info("changing mode of %s to %o", dirname, mode)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1646 if not self.dry_run: os.chmod(dirname, mode)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1647
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1648 def is_chmod_supported(self):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1649 return hasattr(os, 'chmod')
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1650
27990
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1651 SUMMARY = """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1652 Python is an interpreted, interactive, object-oriented programming
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1653 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
1654
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1655 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
1656 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
1657 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
1658 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
1659 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
1660 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
1661 programmable interface.
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1662
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1663 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
1664 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
1665 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
1666 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
1667 yourself.
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1668 """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1669
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1670 CLASSIFIERS = """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1671 Development Status :: 3 - Alpha
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1672 Development Status :: 6 - Mature
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1673 License :: OSI Approved :: Python Software Foundation License
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1674 Natural Language :: English
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1675 Programming Language :: C
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1676 Programming Language :: Python
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1677 Topic :: Software Development
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1678 """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1679
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1680 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
1681 # 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
1682 import warnings
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
1683 warnings.filterwarnings("ignore",category=DeprecationWarning)
27990
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1684 setup(# PyPI Metadata (PEP 301)
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1685 name = "Python",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1686 version = sys.version.split()[0],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1687 url = "http://www.python.org/%s" % sys.version[:3],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1688 maintainer = "Guido van Rossum and the Python community",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1689 maintainer_email = "python-dev@python.org",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1690 description = "A high-level object-oriented programming language",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1691 long_description = SUMMARY.strip(),
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1692 license = "PSF license",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1693 classifiers = filter(None, CLASSIFIERS.split("\n")),
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1694 platforms = ["Many"],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1695
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1696 # Build info
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1697 cmdclass = {'build_ext':PyBuildExt, 'install':PyBuildInstall,
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1698 'install_lib':PyBuildInstallLib},
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1699 # 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
1700 # called unless there's at least one extension module defined.
38262
6b79fffbbe1f patch #1493701: performance enhancements for struct module
Bob Ippolito <bob@redivi.com>
parents: 38261
diff changeset
1701 ext_modules=[Extension('_struct', ['_struct.c'])],
16844
8156deb0e62d Install the pydoc script
Andrew M. Kuchling <amk@amk.ca>
parents: 16842
diff changeset
1702
8156deb0e62d Install the pydoc script
Andrew M. Kuchling <amk@amk.ca>
parents: 16842
diff changeset
1703 # Scripts to install
32416
950cf69c69b6 Install Barry's smtpd.py daemon.
Skip Montanaro <skip@pobox.com>
parents: 32400
diff changeset
1704 scripts = ['Tools/scripts/pydoc', 'Tools/scripts/idle',
950cf69c69b6 Install Barry's smtpd.py daemon.
Skip Montanaro <skip@pobox.com>
parents: 32400
diff changeset
1705 'Lib/smtpd.py']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1706 )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1707
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1708 # --install-platlib
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1709 if __name__ == '__main__':
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1710 main()