annotate setup.py @ 34306:f1c35da64d55 legacy-trunk

Since it is a possibility that LDFLAGS or CPPFLAGS were set with options that in no way affect library or include directories the code must take that into account and not assume some options were found.
author Brett Cannon <bcannon@gmail.com>
date Sun, 02 Jan 2005 21:54:07 +0000
parents 5dc274e15822
children 9c62e7d690a5
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
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
7
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
8 from distutils import log
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
9 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
10 from distutils import text_file
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
11 from distutils.errors import *
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
12 from distutils.core import Extension, setup
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
13 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
14 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
15 from distutils.command.install_lib import install_lib
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
16
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
17 # 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
18 disabled_module_list = []
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
19
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
20 def add_dir_to_list(dirlist, dir):
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
21 """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
22 1) 'dir' is not already in 'dirlist'
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
23 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
24 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
25 dirlist.insert(0, dir)
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
26
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
27 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
28 """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
29 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
30 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
31
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
32 '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
33 '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
34 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
35 '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
36 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
37 """
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 # 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
40 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
41 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
42 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
43
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
44 # 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
45 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
46 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
47 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
48 return [dir]
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
49
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
50 # Not found anywhere
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
51 return None
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
52
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
53 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
54 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
55 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
56 return None
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
57
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
58 # 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
59 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
60 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
61 # 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
62 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
63 if p == dirname:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
64 return [ ]
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
65
26443
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
66 # 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
67 # 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
68 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
69 # 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
70 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
71 if p == dirname:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
72 return [p]
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
73 else:
c1258b1a36c6 [Patch #641685] setup.py contained code for finding libraries, instead
Andrew M. Kuchling <amk@amk.ca>
parents: 26396
diff changeset
74 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
75
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
76 def module_enabled(extlist, modname):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
77 """Returns whether the module 'modname' is present in the list
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
78 of extensions 'extlist'."""
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
79 extlist = [ext for ext in extlist if ext.name == modname]
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
80 return len(extlist)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
81
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
82 def find_module_file(module, dirlist):
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
83 """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
84 return the unadorned filename"""
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
85 list = find_file(module, [], dirlist)
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
86 if not list:
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
87 return module
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
88 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
89 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
90 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
91
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
92 class PyBuildExt(build_ext):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
93
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
94 def build_extensions(self):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
95
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
96 # Detect which modules should be compiled
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
97 self.detect_modules()
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
98
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
99 # Remove modules that are present on the disabled list
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
100 self.extensions = [ext for ext in self.extensions
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
101 if ext.name not in disabled_module_list]
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
102
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
103 # Fix up the autodetected modules, prefixing all the source files
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
104 # 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
105 (srcdir,) = sysconfig.get_config_vars('srcdir')
25790
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
106 if not srcdir:
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
107 # Maybe running on Windows but not using CYGWIN?
83828583d917 [SF bug 620364]
Guido van Rossum <guido@python.org>
parents: 25415
diff changeset
108 raise ValueError("No source directory; cannot proceed.")
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
109
16225
e56dd2dd9960 Patch from Andrew to properly set module source directory.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents: 16201
diff changeset
110 # 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
111 moddir = os.path.join(os.getcwd(), srcdir, 'Modules')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
112 moddir = os.path.normpath(moddir)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
113 srcdir, tail = os.path.split(moddir)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
114 srcdir = os.path.normpath(srcdir)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
115 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
116
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
117 moddirlist = [moddir]
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
118 incdirlist = ['./Include']
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
119
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
120 # Platform-dependent module source and include directories
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
121 platform = self.get_platform()
33294
67fbbeb1e218 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 33285
diff changeset
122 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
123 sysconfig.get_config_var("CONFIG_ARGS")):
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
124 # 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
125 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
126 moddirlist.append(macmoddir)
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
127 incdirlist.append('./Mac/Include')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
128
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
129 alldirlist = moddirlist + incdirlist
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
130
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
131 # 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
132 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
133 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
134
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
135 for ext in self.extensions[:]:
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
136 ext.sources = [ find_module_file(filename, moddirlist)
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
137 for filename in ext.sources ]
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
138 if ext.depends is not None:
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
139 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
140 for filename in ext.depends]
19007
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
141 ext.include_dirs.append( '.' ) # to get config.h
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
142 for incdir in incdirlist:
cefdcd60a8b2 Replace moddir and incdir by
Jack Jansen <jack.jansen@cwi.nl>
parents: 18845
diff changeset
143 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
144
16038
b6863ba88989 GvR pointed out the correct way to check for statically built modules;
Andrew M. Kuchling <amk@amk.ca>
parents: 16013
diff changeset
145 # 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
146 # 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
147 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
148 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
149
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
150 if platform != 'mac':
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
151 # Parse Modules/Setup to figure out which modules are turned
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
152 # on in the file.
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
153 input = text_file.TextFile('Modules/Setup', join_lines=1)
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
154 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
155 while 1:
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
156 line = input.readline()
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
157 if not line: break
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
158 line = line.split()
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
159 remove_modules.append( line[0] )
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
160 input.close()
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
161
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
162 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
163 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
164 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
165
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
166 # 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
167 # 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
168 # 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
169 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
170 args = {}
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
171 # 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
172 # compilers
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
173 if compiler is not None:
27002
293eda3e69f5 Split OPT make variable into OPT and BASECFLAGS. The latter contains those
Skip Montanaro <skip@pobox.com>
parents: 26989
diff changeset
174 (ccshared,opt,base) = sysconfig.get_config_vars('CCSHARED','OPT','BASECFLAGS')
293eda3e69f5 Split OPT make variable into OPT and BASECFLAGS. The latter contains those
Skip Montanaro <skip@pobox.com>
parents: 26989
diff changeset
175 args['compiler_so'] = compiler + ' ' + opt + ' ' + ccshared + ' ' + base
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
176 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
177
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
178 build_ext.build_extensions(self)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
179
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
180 def build_extension(self, ext):
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
181
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
182 try:
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
183 build_ext.build_extension(self, ext)
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
184 except (CCompilerError, DistutilsError), why:
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
185 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
186 (ext.name, sys.exc_info()[1]))
17890
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
187 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
188 # 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
189 # 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
190 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
191 self.announce(
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
192 '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
193 ext.name)
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
194 return
23513
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
195 # 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
196 # modules have been imported
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
197 if self.get_platform() == 'cygwin':
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
198 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
199 % ext.name)
35f01bf34d60 Patch #491107: Cygwin setup.py import workaround patch
Jason Tishler <jason@tishler.net>
parents: 22805
diff changeset
200 return
21788
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
201 ext_filename = os.path.join(
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
202 self.build_lib,
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
203 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
204 try:
21788
05fabd8f4e7f Fix for
Michael W. Hudson <mwh@python.net>
parents: 21787
diff changeset
205 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
206 except ImportError, why:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
207 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
208 ' 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
209 assert not self.inplace
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
210 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
211 newname = basename + "_failed" + tail
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
212 if os.path.exists(newname):
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
213 os.remove(newname)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
214 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
215
28111
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
216 # 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
217 # 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
218 # _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
219 # use here.
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
220 # 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
221 # 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
222 try:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
223 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
224 os.remove(filename)
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
225 except AttributeError:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
226 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
227 except:
7a2f683395e7 Just pointed out the code was better written with
Neal Norwitz <nnorwitz@gmail.com>
parents: 28109
diff changeset
228 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
229 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
230 '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
231 level=3)
21277
f702ff390e4d Visious hackery to solve a build-control problem related to our use of
Fred Drake <fdrake@acm.org>
parents: 21274
diff changeset
232
29508
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
233 def get_platform(self):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
234 # Get value of sys.platform
29508
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
235 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
236 if sys.platform.startswith(platform):
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
237 return platform
53554688e5a2 Convert some repetitive code into a loop
Neal Norwitz <nnorwitz@gmail.com>
parents: 29471
diff changeset
238 return sys.platform
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
239
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
240 def detect_modules(self):
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
241 # Ensure that /usr/local is always used
21742
9d5adff87f30 Apply a variant of patch
Michael W. Hudson <mwh@python.net>
parents: 21610
diff changeset
242 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
243 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
244
34124
4e38ecd1912e setup.py now uses the library directories specified in LDFLAGS (``-L``
Brett Cannon <bcannon@gmail.com>
parents: 33986
diff changeset
245 # 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
246 # 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
247 # 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
248 # 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
249 # 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
250 # 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
251 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
252 ('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
253 ('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
254 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
255 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
256 # 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
257 # 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
258 # 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
259 # 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
260 #
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
261 # 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
262 # 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
263 # 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
264 # used for a library directory.
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
265 env_val = re.sub(r'(^|\s+)-(-|(?!%s))' % arg_name[1], '', 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
266 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
267 # 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
268 # allowed
5dc274e15822 Strip out double dashes and dashes for options not used during parsing of
Brett Cannon <bcannon@gmail.com>
parents: 34186
diff changeset
269 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
270 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
271 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
272 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
273 if options.dirs:
f1c35da64d55 Since it is a possibility that LDFLAGS or CPPFLAGS were set with options that
Brett Cannon <bcannon@gmail.com>
parents: 34288
diff changeset
274 for directory in options.dirs:
f1c35da64d55 Since it is a possibility that LDFLAGS or CPPFLAGS were set with options that
Brett Cannon <bcannon@gmail.com>
parents: 34288
diff changeset
275 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
276
24477
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
277 if os.path.normpath(sys.prefix) != '/usr':
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
278 add_dir_to_list(self.compiler.library_dirs,
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
279 sysconfig.get_config_var("LIBDIR"))
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
280 add_dir_to_list(self.compiler.include_dirs,
b38754f1cb61 Fix for
Michael W. Hudson <mwh@python.net>
parents: 24143
diff changeset
281 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
282
19343
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
283 try:
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
284 have_unicode = unicode
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
285 except NameError:
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
286 have_unicode = 0
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
287
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
288 # 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
289 # 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
290 # 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
291 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
292 '/lib64', '/usr/lib64',
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
293 '/lib', '/usr/lib',
49b6e966e57f Patch #1050475: Fix various x86_64 build issues
Martin v. Löwis <martin@v.loewis.de>
parents: 33750
diff changeset
294 ]
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
295 inc_dirs = self.compiler.include_dirs + ['/usr/include']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
296 exts = []
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
297
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
298 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
299 (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
300
23777
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
301 # 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
302 if platform == 'atheos':
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
303 lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
304 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
305 inc_dirs += ['/system/include', '/atheos/autolnk/include']
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
306 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
307
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
308 # 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
309 if platform in ['osf1', 'unixware7', 'openunix8']:
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
310 lib_dirs += ['/usr/ccs/lib']
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
311
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
312 # 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
313 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
314 if platform in ['darwin', 'beos', 'mac']:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
315 math_libs = []
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
316
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
317 # XXX Omitted modules: gl, pure, dl, SGI-specific modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
318
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
319 #
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
320 # The following modules are all pretty straightforward, and compile
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
321 # on pretty much any POSIXish platform.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
322 #
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
323
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
324 # Some modules that are normally always on:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
325 exts.append( Extension('regex', ['regexmodule.c', 'regexpr.c']) )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
326
20397
9fe97548d952 Add entry for HotShot.
Fred Drake <fdrake@acm.org>
parents: 20313
diff changeset
327 exts.append( Extension('_hotshot', ['_hotshot.c']) )
16384
c898ceba2261 Add entries for the weakref module to the build control.
Fred Drake <fdrake@acm.org>
parents: 16287
diff changeset
328 exts.append( Extension('_weakref', ['_weakref.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
329
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
330 # array objects
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
331 exts.append( Extension('array', ['arraymodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
332 # 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
333 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
334 libraries=math_libs) )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
335
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
336 # 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
337 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
338 libraries=math_libs) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
339 # fast string operations implemented in C
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
340 exts.append( Extension('strop', ['stropmodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
341 # 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
342 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
343 libraries=math_libs) )
32400
6ce67f7b0430 Add compilation of timemodule.c with datetimemodule.c to get
Brett Cannon <bcannon@gmail.com>
parents: 32244
diff changeset
344 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
345 libraries=math_libs) )
26829
f64c96922708 SF patch 658251: Install a C implementation of the Mersenne Twister as the
Raymond Hettinger <python@rcn.com>
parents: 26724
diff changeset
346 # random number generator implemented in C
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
347 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
348 # 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
349 exts.append( Extension("itertools", ["itertoolsmodule.c"]) )
31436
63fa60f2d61c * Move collections.deque() in from the sandbox
Raymond Hettinger <python@rcn.com>
parents: 31386
diff changeset
350 # high-performance collections
63fa60f2d61c * Move collections.deque() in from the sandbox
Raymond Hettinger <python@rcn.com>
parents: 31386
diff changeset
351 exts.append( Extension("collections", ["collectionsmodule.c"]) )
31353
ed20259a1ea5 SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents: 31090
diff changeset
352 # bisect
ed20259a1ea5 SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents: 31090
diff changeset
353 exts.append( Extension("_bisect", ["_bisectmodule.c"]) )
30875
2acd28bd4d0f Convert heapq.py to a C implementation.
Raymond Hettinger <python@rcn.com>
parents: 30770
diff changeset
354 # heapq
31931
63b68cb2b442 * Restore the pure python version of heapq.py.
Raymond Hettinger <python@rcn.com>
parents: 31742
diff changeset
355 exts.append( Extension("_heapq", ["_heapqmodule.c"]) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
356 # operator.add() and similar goodies
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
357 exts.append( Extension('operator', ['operator.c']) )
16416
7d39d9dcf2d6 Whitespace correction...
Marc-André Lemburg <mal@egenix.com>
parents: 16415
diff changeset
358 # 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
359 exts.append( Extension('_testcapi', ['_testcapimodule.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
360 # static Unicode character database
19343
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
361 if have_unicode:
7257e87e0720 Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents: 19319
diff changeset
362 exts.append( Extension('unicodedata', ['unicodedata.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
363 # 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
364 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
365 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
366 if m is not None:
24810
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
367 locale_libs = ['intl']
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
368 else:
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
369 locale_libs = []
32698
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
370 if platform == 'darwin':
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
371 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
372 else:
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
373 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
374
32698
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
375
24810
7ce82e9d08c7 Patch #588564: _locale library patch
Jason Tishler <jason@tishler.net>
parents: 24790
diff changeset
376 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
377 libraries=locale_libs,
7742f85a3723 _localemodule now needs to be linked with CoreFoundation on darwin.
Jack Jansen <jack.jansen@cwi.nl>
parents: 32416
diff changeset
378 extra_link_args=locale_extra_link_args) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
379
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
380 # Modules with some UNIX dependencies -- on by default:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
381 # (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
382 # supported...)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
383
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
384 # fcntl(2) and ioctl(2)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
385 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
386 if platform not in ['mac']:
c10c09192c12 More fixes for building MacPython extension modules. It now actually succeeds
Jack Jansen <jack.jansen@cwi.nl>
parents: 24008
diff changeset
387 # pwd(3)
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
388 exts.append( Extension('pwd', ['pwdmodule.c']) )
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
389 # grp(3)
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
390 exts.append( Extension('grp', ['grpmodule.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
391 # select(2); not on ancient System V
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
392 exts.append( Extension('select', ['selectmodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
393
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
394 # The md5 module implements the RSA Data Security, Inc. MD5
21274
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
395 # Message-Digest Algorithm, described in RFC 1321. The
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
396 # necessary files md5c.c and md5.h are included here.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
397 exts.append( Extension('md5', ['md5module.c', 'md5c.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
398
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
399 # The sha module implements the SHA checksum algorithm.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
400 # (NIST's Secure Hash Algorithm.)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
401 exts.append( Extension('sha', ['shamodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
402
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
403 # Helper module for various ascii-encoders
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
404 exts.append( Extension('binascii', ['binascii.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
405
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
406 # Fred Drake's interface to the Python parser
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
407 exts.append( Extension('parser', ['parsermodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
408
22805
f1af8ad11000 Removed old Digital Creations copyright/license notices (with
Guido van Rossum <guido@python.org>
parents: 22545
diff changeset
409 # cStringIO and cPickle
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
410 exts.append( Extension('cStringIO', ['cStringIO.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
411 exts.append( Extension('cPickle', ['cPickle.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
412
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
413 # 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
414 if platform not in ['atheos', 'mac']:
23777
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
415 exts.append( Extension('mmap', ['mmapmodule.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
416
33370
af65004f622f Remove mpz, rotor, xreadlines modules
Andrew M. Kuchling <amk@amk.ca>
parents: 33294
diff changeset
417 # 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
418 if platform not in ['mac']:
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
419 # syslog daemon interface
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
420 exts.append( Extension('syslog', ['syslogmodule.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
421
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
422 # George Neville-Neil's timing module:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
423 exts.append( Extension('timing', ['timingmodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
424
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
425 #
15998
f390f43ac4b6 Patch from Barry: gets rid of two unused imports,
Andrew M. Kuchling <amk@amk.ca>
parents: 15996
diff changeset
426 # 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
427 # libraries, are platform-specific, or present other surprises.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
428 #
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
429
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
430 # Multimedia modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
431 # These don't work for 64-bit platforms!!!
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
432 # These represent audio samples or images as strings:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
433
32763
8ad5a1620092 Move comment that goes along with audioop
Neal Norwitz <nnorwitz@gmail.com>
parents: 32762
diff changeset
434 # Operations on audio samples
32797
ea54fdb86530 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 32765
diff changeset
435 # 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
436 # 64-bit platforms.
76ad814bc67c Patch #993173: Enable audioop on 64-bit platforms.
Martin v. Löwis <martin@v.loewis.de>
parents: 32735
diff changeset
437 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
438
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
439 # Disabled on 64-bit platforms
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
440 if sys.maxint != 9223372036854775807L:
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
441 # Operations on images
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
442 exts.append( Extension('imageop', ['imageop.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
443 # Read SGI RGB image files (but coded portably)
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
444 exts.append( Extension('rgbimg', ['rgbimgmodule.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
445
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
446 # readline
16283
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
447 if self.compiler.find_library_file(lib_dirs, 'readline'):
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
448 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
449 if self.compiler.find_library_file(lib_dirs,
d370a58fb7fd Link readline module with ncurses in preference to termcap. [Bug ##441580]
Andrew M. Kuchling <amk@amk.ca>
parents: 19269
diff changeset
450 'ncurses'):
d370a58fb7fd Link readline module with ncurses in preference to termcap. [Bug ##441580]
Andrew M. Kuchling <amk@amk.ca>
parents: 19269
diff changeset
451 readline_libs.append('ncurses')
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
452 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
453 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
454 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
455 ['/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
456 'termcap'):
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
457 readline_libs.append('termcap')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
458 exts.append( Extension('readline', ['readline.c'],
16282
ea4a2f3b266e Fixed setup.py to allow:
Marc-André Lemburg <mal@egenix.com>
parents: 16225
diff changeset
459 library_dirs=['/usr/lib/termcap'],
16283
65c6a2998b1b Be extra careful with linking against libtermcap. This is now only done
Marc-André Lemburg <mal@egenix.com>
parents: 16282
diff changeset
460 libraries=readline_libs) )
24032
c10c09192c12 More fixes for building MacPython extension modules. It now actually succeeds
Jack Jansen <jack.jansen@cwi.nl>
parents: 24008
diff changeset
461 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
462 # crypt module.
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
463
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
464 if self.compiler.find_library_file(lib_dirs, 'crypt'):
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
465 libs = ['crypt']
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
466 else:
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
467 libs = []
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
468 exts.append( Extension('crypt', ['cryptmodule.c'], libraries=libs) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
469
28341
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
470 # CSV files
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
471 exts.append( Extension('_csv', ['_csv.c']) )
797909492c38 build _csv extension module
Skip Montanaro <skip@pobox.com>
parents: 28208
diff changeset
472
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
473 # socket(2)
23811
e3e019bc4e1e Add dependencies on socketmodule.h.
Guido van Rossum <guido@python.org>
parents: 23777
diff changeset
474 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
475 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
476 # Detect SSL support for the socket module (via _ssl)
24520
175cd0e088aa Revert last checkin. Man, that was stupid.
Michael W. Hudson <mwh@python.net>
parents: 24519
diff changeset
477 ssl_incs = find_file('openssl/ssl.h', inc_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
478 ['/usr/local/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
479 '/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
480 ]
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
481 )
29043
8e79dc3731bf Only look for krb5.h if ssl.h was found.
Martin v. Löwis <martin@v.loewis.de>
parents: 29013
diff changeset
482 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
483 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
484 ['/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
485 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
486 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
487 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
488 ['/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
489 '/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
490 ] )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
491
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
492 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
493 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
494 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
495 include_dirs = ssl_incs,
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
496 library_dirs = ssl_libs,
23811
e3e019bc4e1e Add dependencies on socketmodule.h.
Guido van Rossum <guido@python.org>
parents: 23777
diff changeset
497 libraries = ['ssl', 'crypto'],
23825
9f0009ca97b9 Munge depends files to have absolute paths.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23816
diff changeset
498 depends = ['socketmodule.h']), )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
499
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
500 # Modules that provide persistent dictionary-like semantics. You will
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
501 # 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
502 # 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
503 # dependencies. The Python module anydbm.py provides an
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
504 # implementation independent wrapper for these; dumbdbm.py provides
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
505 # similar functionality (but slower of course) implemented in Python.
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
506
26874
26df6013b303 Search for and use BerkeleyDB 4.1 if it's available. Python's
Barry Warsaw <barry@python.org>
parents: 26829
diff changeset
507 # Sleepycat Berkeley DB interface. http://www.sleepycat.com
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
508 #
26874
26df6013b303 Search for and use BerkeleyDB 4.1 if it's available. Python's
Barry Warsaw <barry@python.org>
parents: 26829
diff changeset
509 # This requires the Sleepycat DB code. The earliest supported version
34156
258560adc43b the bsddb module now also works with BerkeleyDB 4.3.
Gregory P. Smith <greg@mad-scientist.com>
parents: 34125
diff changeset
510 # of that library is 3.2, the latest supported version is 4.3. A list
26874
26df6013b303 Search for and use BerkeleyDB 4.1 if it's available. Python's
Barry Warsaw <barry@python.org>
parents: 26829
diff changeset
511 # of available releases can be found at
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
512 #
26548
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
513 # http://www.sleepycat.com/update/index.html
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
514
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
515 max_db_ver = (4, 3)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
516 min_db_ver = (3, 2)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
517 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
518
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
519 # 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
520 # 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
521 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
522 '/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
523 '/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
524 '/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
525 '/sw/include/db4',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
526 '/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
527 '/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
528 '/opt/sfw/include/db3',
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
529 '/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
530 ]
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
531 # 4.x minor number specific paths
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
532 for x in (0,1,2,3):
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
533 db_inc_paths.append('/usr/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
534 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
535 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
536 db_inc_paths.append('/pkg/db-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
537 # 3.x minor number specific paths
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
538 for x in (2,3):
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
539 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
540 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
541 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
542 db_inc_paths.append('/pkg/db-3.%d/include' % x)
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
543
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
544 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
545
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
546 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
547 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
548 # 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
549 # 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
550 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
551 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
552 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
553 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
554 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
555 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
556 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
557 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
558 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
559 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
560 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
561
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
562 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
563 (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
564 # save the include directory with the db.h version
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
565 # (first occurrance only)
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
566 db_ver_inc_map[db_ver] = d
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
567 print "db.h: found", db_ver, "in", d
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
568 else:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
569 # 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
570 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
571 else:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
572 # ignore this header, it didn't contain a version number
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
573 if db_setup_debug: print "db.h: unsupported version", db_ver, "in", d
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
574
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
575 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
576 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
577
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
578 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
579 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
580 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
581
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
582 # 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
583 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
584 os.path.join(db_incdir, '..', 'lib64'),
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
585 os.path.join(db_incdir, '..', 'lib'),
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
586 os.path.join(db_incdir, '..', '..', 'lib64'),
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
587 os.path.join(db_incdir, '..', '..', 'lib'),
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
588 ]
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
589 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
590
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
591 # 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
592 # 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
593 # 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
594 # symlink to more general names?
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
595 for dblib in (('db-%d.%d' % db_ver), ('db%d' % db_ver[0])):
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
596 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
597 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
598 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
599 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
600 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
601 else:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
602 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
603
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
604 except db_found:
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
605 print "db lib: using", db_ver, dblib
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
606 if db_setup_debug: print "db: lib dir", dblib_dir, "inc dir", db_incdir
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
607 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
608 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
609 # 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
610 # 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
611 # 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
612 # 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
613 # 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
614 # 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
615 exts.append(Extension('_bsddb', ['_bsddb.c'],
26548
67912d83799f Search in standard library and include dirs for Sleepycat stuff.
Martin v. Löwis <martin@v.loewis.de>
parents: 26443
diff changeset
616 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
617 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
618 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
619 libraries=dblibs))
23867
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
620 else:
34158
3626db433104 rewrote the bsddb module BerkeleyDB library and include file locating
Gregory P. Smith <greg@mad-scientist.com>
parents: 34156
diff changeset
621 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
622 db_incs = None
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
623 dblibs = []
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
624 dblib_dir = None
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
625
29001
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
626
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
627 # 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
628 # 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
629 # 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
630 # 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
631 # 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
632 # symbols into libc and place the include file in /usr/include.
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
633 f = "/usr/include/db.h"
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
634 if os.path.exists(f):
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
635 data = open(f).read()
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
636 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
637 if m is not None:
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
638 # 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
639 ### 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
640 ### 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
641 ### seemed to be muffing the search somehow
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
642 libraries = platform == "osf1" and ['db'] or None
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
643 if libraries is not None:
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
644 exts.append(Extension('bsddb185', ['bsddbmodule.c'],
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
645 libraries=libraries))
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
646 else:
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
647 exts.append(Extension('bsddb185', ['bsddbmodule.c']))
6c40b73c7045 build bsddb185 module in certain restricted circumstances
Skip Montanaro <skip@pobox.com>
parents: 28947
diff changeset
648
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
649 # 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
650 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
651 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
652 # 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
653 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
654 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
655 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
656 ndbm_libs = []
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
657 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
658 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
659 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
660 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
661 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
662 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
663 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
664 libraries = ['gdbm'] ) )
45d676933882 This introduces stricter library/header file checking for the Berkeley DB
Skip Montanaro <skip@pobox.com>
parents: 23825
diff changeset
665 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
666 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
667 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
668 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
669 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
670 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
671 ('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
672 libraries=dblibs))
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
673
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
674 # 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
675 if (self.compiler.find_library_file(lib_dirs, 'gdbm')):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
676 exts.append( Extension('gdbm', ['gdbmmodule.c'],
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
677 libraries = ['gdbm'] ) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
678
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
679 # Unix-only modules
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
680 if platform not in ['mac', 'win32']:
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
681 # Steen Lumholt's termios module
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
682 exts.append( Extension('termios', ['termios.c']) )
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
683 # Jeremy Hylton's rlimit interface
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
684 if platform not in ['atheos']:
23777
bec1b942e0bc Patch #488073: AtheOS port.
Martin v. Löwis <martin@v.loewis.de>
parents: 23659
diff changeset
685 exts.append( Extension('resource', ['resource.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
686
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
687 # 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
688 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
689 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
690 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
691 else:
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
692 libs = []
8156879fe60d Patch #404680: disables the nis module and enables the dl module when
Andrew M. Kuchling <amk@amk.ca>
parents: 16750
diff changeset
693 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
694 libraries = libs) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
695
31468
de2ed800fa50 a couple other sunos4 support items removed
Skip Montanaro <skip@pobox.com>
parents: 31436
diff changeset
696 # 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
697 # provided by the ncurses library.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
698 if (self.compiler.find_library_file(lib_dirs, 'ncurses')):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
699 curses_libs = ['ncurses']
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
700 exts.append( Extension('_curses', ['_cursesmodule.c'],
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
701 libraries = curses_libs) )
21274
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
702 elif (self.compiler.find_library_file(lib_dirs, 'curses')
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
703 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
704 # 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
705 # the _curses module.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
706 if (self.compiler.find_library_file(lib_dirs, 'terminfo')):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
707 curses_libs = ['curses', 'terminfo']
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
708 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
709 curses_libs = ['curses', 'termcap']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
710 else:
28473
0f558eede6c5 SF patch #712367, get build working on AIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28356
diff changeset
711 curses_libs = ['curses']
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
712
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
713 exts.append( Extension('_curses', ['_cursesmodule.c'],
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
714 libraries = curses_libs) )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
715
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
716 # 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
717 if (module_enabled(exts, '_curses') and
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
718 self.compiler.find_library_file(lib_dirs, 'panel')):
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
719 exts.append( Extension('_curses_panel', ['_curses_panel.c'],
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
720 libraries = ['panel'] + curses_libs) )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
721
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
722
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
723 # 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
724 # 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
725 # 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
726 #
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
727 # 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
728 # 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
729 # 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
730 # 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
731 # 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
732 #
825948c21f0d Regress Guido's change of 2002/08/06 to check for the zlib version
Barry Warsaw <barry@python.org>
parents: 24605
diff changeset
733 # 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
734 # 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
735 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
736 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
737 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
738 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
739 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
740 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
741 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
742 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
743 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
744 break
24605
fd4575b56a4d Update the URL for getting zlib, and update the minimal required
Guido van Rossum <guido@python.org>
parents: 24579
diff changeset
745 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
746 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
747 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
748 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
749 if (self.compiler.find_library_file(lib_dirs, 'z')):
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
750 exts.append( Extension('zlib', ['zlibmodule.c'],
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
751 libraries = ['z']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
752
26037
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
753 # Gustavo Niemeyer's bz2 module.
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
754 if (self.compiler.find_library_file(lib_dirs, 'bz2')):
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
755 exts.append( Extension('bz2', ['bz2module.c'],
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
756 libraries = ['bz2']) )
521e89c4ff44 Patch implementing bz2 module.
Gustavo Niemeyer <gustavo@niemeyer.net>
parents: 25790
diff changeset
757
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
758 # Interface to the Expat XML parser
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
759 #
23889
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
760 # 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
761 # 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
762 # 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
763 # 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
764 # 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
765 # shared libexpat.so/expat.dll is not advised.
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
766 #
41ab532d4f60 Update description of the Expat library.
Fred Drake <fdrake@acm.org>
parents: 23867
diff changeset
767 # 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
768 #
21932
ab68ad43d514 Use included Expat library. Drop support for older expat versions.
Martin v. Löwis <martin@v.loewis.de>
parents: 21788
diff changeset
769 if sys.byteorder == "little":
27384
d363f83c2846 Incorporate Expat 1.95.6.
Martin v. Löwis <martin@v.loewis.de>
parents: 27331
diff changeset
770 xmlbo = "1234"
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
771 else:
27384
d363f83c2846 Incorporate Expat 1.95.6.
Martin v. Löwis <martin@v.loewis.de>
parents: 27331
diff changeset
772 xmlbo = "4321"
21942
9d44e752d617 Compute expat -I directives from srcdir. Fixes #517214.
Martin v. Löwis <martin@v.loewis.de>
parents: 21939
diff changeset
773 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
774 define_macros = [
21932
ab68ad43d514 Use included Expat library. Drop support for older expat versions.
Martin v. Löwis <martin@v.loewis.de>
parents: 21788
diff changeset
775 ('XML_NS', '1'),
ab68ad43d514 Use included Expat library. Drop support for older expat versions.
Martin v. Löwis <martin@v.loewis.de>
parents: 21788
diff changeset
776 ('XML_DTD', '1'),
27384
d363f83c2846 Incorporate Expat 1.95.6.
Martin v. Löwis <martin@v.loewis.de>
parents: 27331
diff changeset
777 ('BYTEORDER', xmlbo),
21932
ab68ad43d514 Use included Expat library. Drop support for older expat versions.
Martin v. Löwis <martin@v.loewis.de>
parents: 21788
diff changeset
778 ('XML_CONTEXT_BYTES','1024'),
30731
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
779 ]
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
780 config_h = sysconfig.get_config_h_filename()
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
781 config_h_vars = sysconfig.parse_config_h(open(config_h))
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
782 for feature_macro in ['HAVE_MEMMOVE', 'HAVE_BCOPY']:
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
783 if config_h_vars.has_key(feature_macro):
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
784 define_macros.append((feature_macro, '1'))
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
785 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
786 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
787 include_dirs = [expatinc],
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
788 sources = ['pyexpat.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
789 'expat/xmlparse.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
790 'expat/xmlrole.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
791 'expat/xmltok.c',
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
792 ],
f0da0cad5cd5 Provide a bit more information to the compiler when building Expat.
Fred Drake <fdrake@acm.org>
parents: 30485
diff changeset
793 ))
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
794
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
795 # Hye-Shik Chang's CJKCodecs modules.
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
796 exts.append(Extension('_multibytecodec',
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
797 ['cjkcodecs/multibytecodec.c']))
32727
69dadc2ca14d Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32698
diff changeset
798 for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
69dadc2ca14d Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32698
diff changeset
799 exts.append(Extension('_codecs_' + loc,
69dadc2ca14d Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32698
diff changeset
800 ['cjkcodecs/_codecs_%s.c' % loc]))
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31353
diff changeset
801
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
802 # 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
803 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
804 # 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
805 dl_inc = find_file('dlfcn.h', [], inc_dirs)
27930
850c0da101b6 Don't try to build dl on darwin. It doesn't build out of the box, and it
Jack Jansen <jack.jansen@cwi.nl>
parents: 27865
diff changeset
806 if (dl_inc is not None) and (platform not in ['atheos', 'darwin']):
25232
aac1ee966f56 Only build the 'dl' extension when sys.maxint equals 2**31-1.
Guido van Rossum <guido@python.org>
parents: 25075
diff changeset
807 exts.append( Extension('dl', ['dlmodule.c']) )
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
808
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
809 # Platform-specific libraries
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
810 if platform == 'linux2':
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
811 # Linux-specific modules
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
812 exts.append( Extension('linuxaudiodev', ['linuxaudiodev.c']) )
27149
5ed820670af3 Add reminder that ossaudiodev can/should also be built on FreeBSD.
Greg Ward <gward@python.net>
parents: 27148
diff changeset
813
33180
aad118643598 Add support for FreeBSD 6.
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32797
diff changeset
814 if platform in ('linux2', 'freebsd4', 'freebsd5', 'freebsd6'):
27865
65494469ad3e Re-enable compiling ossaudiodev now that it seems to work again.
Guido van Rossum <guido@python.org>
parents: 27820
diff changeset
815 exts.append( Extension('ossaudiodev', ['ossaudiodev.c']) )
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
816
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
817 if platform == 'sunos5':
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
818 # SunOS specific modules
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
819 exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) )
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
820
33294
67fbbeb1e218 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 33285
diff changeset
821 if platform == 'darwin' 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
822 sysconfig.get_config_var("CONFIG_ARGS")):
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
823 # Mac OS X specific modules.
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
824 exts.append( Extension('_CF', ['cf/_CFmodule.c', 'cf/pycfbridge.c'],
22159
71902e1cfbef Apply Jack's patch attached to
Michael W. Hudson <mwh@python.net>
parents: 22104
diff changeset
825 extra_link_args=['-framework', 'CoreFoundation']) )
24143
e9e6111beec1 The readme file said that OSX Carbon modules were only built for
Jack Jansen <jack.jansen@cwi.nl>
parents: 24032
diff changeset
826
29253
b4c92e9803a6 Somehow ColorPicker has never been included or tested under darwin, but it works just fine.
Just van Rossum <just@letterror.com>
parents: 29043
diff changeset
827 exts.append( Extension('ColorPicker', ['ColorPickermodule.c'],
b4c92e9803a6 Somehow ColorPicker has never been included or tested under darwin, but it works just fine.
Just van Rossum <just@letterror.com>
parents: 29043
diff changeset
828 extra_link_args=['-framework', 'Carbon']) )
28940
fa057824c9b4 build the new autoGIL module on OSX
Just van Rossum <just@letterror.com>
parents: 28661
diff changeset
829 exts.append( Extension('autoGIL', ['autoGIL.c'],
fa057824c9b4 build the new autoGIL module on OSX
Just van Rossum <just@letterror.com>
parents: 28661
diff changeset
830 extra_link_args=['-framework', 'CoreFoundation']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
831 exts.append( Extension('gestalt', ['gestaltmodule.c'],
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
832 extra_link_args=['-framework', 'Carbon']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
833 exts.append( Extension('MacOS', ['macosmodule.c'],
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
834 extra_link_args=['-framework', 'Carbon']) )
28208
439101d4705b Build the OSATerminology module on MacOSX.
Jack Jansen <jack.jansen@cwi.nl>
parents: 28137
diff changeset
835 exts.append( Extension('OSATerminology', ['OSATerminology.c'],
439101d4705b Build the OSATerminology module on MacOSX.
Jack Jansen <jack.jansen@cwi.nl>
parents: 28137
diff changeset
836 extra_link_args=['-framework', 'Carbon']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
837 exts.append( Extension('icglue', ['icgluemodule.c'],
25075
31a774a6f604 Revived the Carbon.Help module, but implementing the MacHelp API in stead
Jack Jansen <jack.jansen@cwi.nl>
parents: 24841
diff changeset
838 extra_link_args=['-framework', 'Carbon']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
839 exts.append( Extension('_Res', ['res/_Resmodule.c'],
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
840 extra_link_args=['-framework', 'Carbon']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
841 exts.append( Extension('_Snd', ['snd/_Sndmodule.c'],
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
842 extra_link_args=['-framework', 'Carbon']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
843 exts.append( Extension('Nav', ['Nav.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
844 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
845 exts.append( Extension('_AE', ['ae/_AEmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
846 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
847 exts.append( Extension('_AH', ['ah/_AHmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
848 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
849 exts.append( Extension('_App', ['app/_Appmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
850 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
851 exts.append( Extension('_CarbonEvt', ['carbonevt/_CarbonEvtmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
852 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
853 exts.append( Extension('_CG', ['cg/_CGmodule.c'],
28137
789b24d65d42 _CG module only needs the ApplicationServices framework, not Carbon.
Jack Jansen <jack.jansen@cwi.nl>
parents: 28111
diff changeset
854 extra_link_args=['-framework', 'ApplicationServices']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
855 exts.append( Extension('_Cm', ['cm/_Cmmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
856 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
857 exts.append( Extension('_Ctl', ['ctl/_Ctlmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
858 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
859 exts.append( Extension('_Dlg', ['dlg/_Dlgmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
860 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
861 exts.append( Extension('_Drag', ['drag/_Dragmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
862 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
863 exts.append( Extension('_Evt', ['evt/_Evtmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
864 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
865 exts.append( Extension('_File', ['file/_Filemodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
866 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
867 exts.append( Extension('_Folder', ['folder/_Foldermodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
868 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
869 exts.append( Extension('_Fm', ['fm/_Fmmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
870 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
871 exts.append( Extension('_Help', ['help/_Helpmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
872 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
873 exts.append( Extension('_Icn', ['icn/_Icnmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
874 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
875 exts.append( Extension('_IBCarbon', ['ibcarbon/_IBCarbon.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
876 extra_link_args=['-framework', 'Carbon']) )
31075
5b515cc90b5a An interface to the LaunchServices API.
Jack Jansen <jack.jansen@cwi.nl>
parents: 30912
diff changeset
877 exts.append( Extension('_Launch', ['launch/_Launchmodule.c'],
5b515cc90b5a An interface to the LaunchServices API.
Jack Jansen <jack.jansen@cwi.nl>
parents: 30912
diff changeset
878 extra_link_args=['-framework', 'ApplicationServices']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
879 exts.append( Extension('_List', ['list/_Listmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
880 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
881 exts.append( Extension('_Menu', ['menu/_Menumodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
882 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
883 exts.append( Extension('_Mlte', ['mlte/_Mltemodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
884 extra_link_args=['-framework', 'Carbon']) )
31090
0a7f1a53c773 Adding an interface to the high-level Open Scripting Architecture,
Jack Jansen <jack.jansen@cwi.nl>
parents: 31075
diff changeset
885 exts.append( Extension('_OSA', ['osa/_OSAmodule.c'],
0a7f1a53c773 Adding an interface to the high-level Open Scripting Architecture,
Jack Jansen <jack.jansen@cwi.nl>
parents: 31075
diff changeset
886 extra_link_args=['-framework', 'Carbon']) )
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
887 exts.append( Extension('_Qd', ['qd/_Qdmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
888 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
889 exts.append( Extension('_Qdoffs', ['qdoffs/_Qdoffsmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
890 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
891 exts.append( Extension('_Qt', ['qt/_Qtmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
892 extra_link_args=['-framework', 'QuickTime',
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
893 '-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
894 exts.append( Extension('_Scrap', ['scrap/_Scrapmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
895 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
896 exts.append( Extension('_TE', ['te/_TEmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
897 extra_link_args=['-framework', 'Carbon']) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
898 # As there is no standardized place (yet) to put
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
899 # user-installed Mac libraries on OSX, we search for "waste"
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
900 # in parent directories of the Python source tree. You
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
901 # should put a symlink to your Waste installation in the
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
902 # same folder as your python source tree. Or modify the
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
903 # next few lines:-)
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
904 waste_incs = find_file("WASTE.h", [],
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
905 ['../'*n + 'waste/C_C++ Headers' for n in (0,1,2,3,4)])
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
906 waste_libs = find_library_file(self.compiler, "WASTE", [],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
907 ["../"*n + "waste/Static Libraries" for n in (0,1,2,3,4)])
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
908 if waste_incs != None and waste_libs != None:
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
909 (srcdir,) = sysconfig.get_config_vars('srcdir')
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
910 exts.append( Extension('waste',
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
911 ['waste/wastemodule.c'] + [
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
912 os.path.join(srcdir, d) for d in
26396
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
913 'Mac/Wastemods/WEObjectHandlers.c',
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
914 'Mac/Wastemods/WETabHooks.c',
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
915 'Mac/Wastemods/WETabs.c'
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
916 ],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
917 include_dirs = waste_incs + [os.path.join(srcdir, 'Mac/Wastemods')],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
918 library_dirs = waste_libs,
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
919 libraries = ['WASTE'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
920 extra_link_args = ['-framework', 'Carbon'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
921 ) )
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
922 exts.append( Extension('_Win', ['win/_Winmodule.c'],
e3fae7b6c207 Don't disable building Mac-specific modules for a non-framework build:
Just van Rossum <just@letterror.com>
parents: 26351
diff changeset
923 extra_link_args=['-framework', 'Carbon']) )
21787
3ef7bed007f6 Sjoerd Mullender pointed out that setup.py contained some tabs,
Michael W. Hudson <mwh@python.net>
parents: 21775
diff changeset
924
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
925 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
926
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
927 # 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
928 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
929
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
930 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
931 # 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
932 # 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
933 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
934 framework_dirs = [
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
935 '/System/Library/Frameworks/',
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
936 '/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
937 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
938 ]
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
939
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
940 # Find the directory that contains the Tcl.framwork and Tk.framework
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
941 # bundles.
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
942 # 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
943 for F in framework_dirs:
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
944 # 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
945 for fw in 'Tcl', 'Tk':
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
946 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
947 break
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
948 else:
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
949 # 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
950 # building
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
951 break
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
952 else:
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
953 # 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
954 # 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
955 return 0
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
956
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
957 # 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
958 # 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
959 # 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
960 #
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
961 include_dirs = [
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
962 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
963 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
964 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
965 ]
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
966
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
967 # 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
968 # 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
969 # 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
970 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
971 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
972
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
973 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
974 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
975 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
976 libraries = [],
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
977 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
978 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
979 )
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
980 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
981 return 1
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
982
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
983
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
984 def detect_tkinter(self, inc_dirs, lib_dirs):
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
985 # 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
986
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
987 # 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
988 # 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
989 # 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
990 platform = self.get_platform()
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
991 if platform == 'darwin' and \
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
992 self.detect_tkinter_darwin(inc_dirs, lib_dirs):
27507
d9d57f5f98cd Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27396
diff changeset
993 return
23957
03bba7282852 Patch #557719 by Tony Lownds, slightly massaged by me: streamline the
Jack Jansen <jack.jansen@cwi.nl>
parents: 23889
diff changeset
994
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
995 # 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
996 # 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
997 # 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
998 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
999 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
1000 '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
1001 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
1002 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
1003 if tklib and tcllib:
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1004 # 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
1005 break
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1006
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1007 # 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
1008 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
1009 # 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
1010 # 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
1011 dotversion = version
4eb458c3941d [Patch #850977] Detect Tcl/Tk libraries on FreeBSD/OpenBSD. Bugfix candidate
Andrew M. Kuchling <amk@amk.ca>
parents: 31468
diff changeset
1012 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
1013 # 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
1014 # 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
1015 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
1016 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
1017 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
1018 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
1019 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
1020 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
1021 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
1022 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
1023 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
1024
28947
8df897f14fb8 Change 'and' to 'or' in _tkinter test.
Martin v. Löwis <martin@v.loewis.de>
parents: 28940
diff changeset
1025 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
1026 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
1027 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
1028 return
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1029
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1030 # OK... everything seems to be present for Tcl/Tk.
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1031
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1032 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
1033 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
1034 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
1035 include_dirs.append(dir)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1036
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1037 # 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
1038 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
1039 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
1040 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
1041 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
1042 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
1043 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
1044 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
1045 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
1046 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
1047 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
1048 else:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1049 # 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
1050 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
1051 added_lib_dirs.append('/usr/X11/lib')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1052
27695
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1053 # 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
1054 if platform == 'cygwin':
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1055 x11_inc = find_file('X11/Xlib.h', [], include_dirs)
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1056 if x11_inc is None:
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1057 return
1a300f475332 This patch reverts the following:
Jason Tishler <jason@tishler.net>
parents: 27694
diff changeset
1058
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1059 # Check for BLT extension
21274
cfbe38a03e8c Wrap some long lines.
Fred Drake <fdrake@acm.org>
parents: 21256
diff changeset
1060 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
1061 'BLT8.0'):
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1062 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
1063 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
1064 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
1065 'BLT'):
e41ee2b8e73d Patch #629126: Detect BLT by also looking for libBLT.
Martin v. Löwis <martin@v.loewis.de>
parents: 26616
diff changeset
1066 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
1067 libs.append('BLT')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1068
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1069 # 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
1070 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
1071 libs.append('tcl'+ version)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1072
16192
4fe69a9f8b30 Modified version of part of patch #102409 for Cygwin:
Andrew M. Kuchling <amk@amk.ca>
parents: 16176
diff changeset
1073 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
1074 libs.append('ld')
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1075
18819
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1076 # 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
1077 if platform != "cygwin":
dc9baf80c45a Patch #443669: Permit _tkinter to build on cygwin32.
Martin v. Löwis <martin@v.loewis.de>
parents: 18601
diff changeset
1078 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
1079
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1080 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
1081 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
1082 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
1083 libraries = libs,
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1084 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
1085 )
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1086 self.extensions.append(ext)
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1087
27820
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1088 ## # 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
1089 ## ext = Extension('xx', ['xxmodule.c'])
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1090 ## self.extensions.append(ext)
fbc45beaf034 Add compilation instructions for xxmodule.c.
Guido van Rossum <guido@python.org>
parents: 27695
diff changeset
1091
15996
c503fa9b265e Sizable reorganization of how header and library files are found
Andrew M. Kuchling <amk@amk.ca>
parents: 15970
diff changeset
1092 # XXX handle these, but how to detect?
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1093 # *** 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
1094 # -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1095 # *** 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
1096 # -DWITH_TOGL togl.c \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1097 # *** Uncomment these for TOGL extension only:
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1098 # -lGL -lGLU -lXext -lXmu \
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1099
17886
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1100 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
1101 # 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
1102 # 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
1103 # installation:
0af824c88203 Fix bug #232619: fix misleading warning on installing to lib-dynload
Andrew M. Kuchling <amk@amk.ca>
parents: 17531
diff changeset
1104 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
1105 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
1106 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
1107
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1108 class PyBuildInstallLib(install_lib):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1109 # 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
1110 # 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
1111 # 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
1112 # 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
1113
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1114 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
1115
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1116 def install(self):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1117 outfiles = install_lib.install(self)
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1118 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
1119 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
1120 return outfiles
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1121
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1122 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
1123 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
1124 if not files: return
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1125
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1126 for filename in files:
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1127 if os.path.islink(filename): continue
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1128 mode = defaultMode
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1129 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
1130 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
1131 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
1132
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1133 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
1134 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
1135 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
1136
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1137 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
1138 if os.path.islink(dirname): return
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1139 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
1140 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
1141
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1142 def is_chmod_supported(self):
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1143 return hasattr(os, 'chmod')
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1144
27990
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1145 SUMMARY = """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1146 Python is an interpreted, interactive, object-oriented programming
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1147 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
1148
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1149 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
1150 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
1151 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
1152 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
1153 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
1154 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
1155 programmable interface.
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1156
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1157 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
1158 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
1159 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
1160 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
1161 yourself.
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1162 """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1163
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1164 CLASSIFIERS = """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1165 Development Status :: 3 - Alpha
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1166 Development Status :: 6 - Mature
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1167 License :: OSI Approved :: Python Software Foundation License
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1168 Natural Language :: English
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1169 Programming Language :: C
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1170 Programming Language :: Python
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1171 Topic :: Software Development
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1172 """
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1173
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1174 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
1175 # 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
1176 import warnings
a1ddc4080cc5 Patch #411055 from MvL: import each extension after building it, and
Andrew M. Kuchling <amk@amk.ca>
parents: 17889
diff changeset
1177 warnings.filterwarnings("ignore",category=DeprecationWarning)
27990
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1178 setup(# PyPI Metadata (PEP 301)
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1179 name = "Python",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1180 version = sys.version.split()[0],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1181 url = "http://www.python.org/%s" % sys.version[:3],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1182 maintainer = "Guido van Rossum and the Python community",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1183 maintainer_email = "python-dev@python.org",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1184 description = "A high-level object-oriented programming language",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1185 long_description = SUMMARY.strip(),
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1186 license = "PSF license",
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1187 classifiers = filter(None, CLASSIFIERS.split("\n")),
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1188 platforms = ["Many"],
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1189
0b3db0edb151 Add PEP 301 metadata.
Guido van Rossum <guido@python.org>
parents: 27989
diff changeset
1190 # Build info
26687
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1191 cmdclass = {'build_ext':PyBuildExt, 'install':PyBuildInstall,
6b390548c698 This is J. Lewis Muir's patch:
Michael W. Hudson <mwh@python.net>
parents: 26674
diff changeset
1192 'install_lib':PyBuildInstallLib},
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1193 # 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
1194 # called unless there's at least one extension module defined.
16844
8156deb0e62d Install the pydoc script
Andrew M. Kuchling <amk@amk.ca>
parents: 16842
diff changeset
1195 ext_modules=[Extension('struct', ['structmodule.c'])],
8156deb0e62d Install the pydoc script
Andrew M. Kuchling <amk@amk.ca>
parents: 16842
diff changeset
1196
8156deb0e62d Install the pydoc script
Andrew M. Kuchling <amk@amk.ca>
parents: 16842
diff changeset
1197 # Scripts to install
32416
950cf69c69b6 Install Barry's smtpd.py daemon.
Skip Montanaro <skip@pobox.com>
parents: 32400
diff changeset
1198 scripts = ['Tools/scripts/pydoc', 'Tools/scripts/idle',
950cf69c69b6 Install Barry's smtpd.py daemon.
Skip Montanaro <skip@pobox.com>
parents: 32400
diff changeset
1199 'Lib/smtpd.py']
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1200 )
16201
38678cb0b3cd the ucnhash module is no longer used
Fredrik Lundh <fredrik@pythonware.com>
parents: 16192
diff changeset
1201
15940
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1202 # --install-platlib
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1203 if __name__ == '__main__':
ea464eda6158 [Patch #102588/PEP 229]:
Andrew M. Kuchling <amk@amk.ca>
parents:
diff changeset
1204 main()