Skip to content

Commit 21b91ee

Browse files
author
neil.schemenauer
committed
Make setup.py work when building in a directory other than the
source directory. Mainly use 'srcdir' rather than os.getcwd() or '.'. git-svn-id: http://svn.python.org/projects/python/trunk@69305 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent f7dac87 commit 21b91ee

1 file changed

Lines changed: 8 additions & 24 deletions

File tree

setup.py

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -118,52 +118,36 @@ def build_extensions(self):
118118
if not srcdir:
119119
# Maybe running on Windows but not using CYGWIN?
120120
raise ValueError("No source directory; cannot proceed.")
121-
122-
# Figure out the location of the source code for extension modules
123-
# (This logic is copied in distutils.test.test_sysconfig,
124-
# so building in a separate directory does not break test_distutils.)
125-
moddir = os.path.join(os.getcwd(), srcdir, 'Modules')
126-
moddir = os.path.normpath(moddir)
127-
srcdir, tail = os.path.split(moddir)
128121
srcdir = os.path.normpath(srcdir)
129-
moddir = os.path.normpath(moddir)
130-
131-
moddirlist = [moddir]
132-
incdirlist = ['./Include']
122+
moddirlist = [os.path.join(srcdir, 'Modules')]
133123

134124
# Platform-dependent module source and include directories
135125
platform = self.get_platform()
136126
if platform in ('darwin', 'mac') and ("--disable-toolbox-glue" not in
137127
sysconfig.get_config_var("CONFIG_ARGS")):
138128
# Mac OS X also includes some mac-specific modules
139-
macmoddir = os.path.join(os.getcwd(), srcdir, 'Mac/Modules')
129+
macmoddir = os.path.join(srcdir, 'Mac/Modules')
140130
moddirlist.append(macmoddir)
141131
incdirlist.append('./Mac/Include')
142132

143-
alldirlist = moddirlist + incdirlist
144-
145133
# Fix up the paths for scripts, too
146134
self.distribution.scripts = [os.path.join(srcdir, filename)
147135
for filename in self.distribution.scripts]
148136

149137
# Python header files
150-
headers = glob("Include/*.h") + ["pyconfig.h"]
151-
138+
headers = [sysconfig.get_config_h_filename()]
139+
headers += glob(os.path.join(sysconfig.get_python_inc(), "*.h"))
152140
for ext in self.extensions[:]:
153141
ext.sources = [ find_module_file(filename, moddirlist)
154142
for filename in ext.sources ]
155143
if ext.depends is not None:
156-
ext.depends = [find_module_file(filename, alldirlist)
144+
ext.depends = [find_module_file(filename, moddirlist)
157145
for filename in ext.depends]
158146
else:
159147
ext.depends = []
160148
# re-compile extensions if a header file has been changed
161149
ext.depends.extend(headers)
162150

163-
ext.include_dirs.append( '.' ) # to get config.h
164-
for incdir in incdirlist:
165-
ext.include_dirs.append( os.path.join(srcdir, incdir) )
166-
167151
# If a module has already been built statically,
168152
# don't build it here
169153
if ext.name in sys.builtin_module_names:
@@ -374,7 +358,7 @@ def detect_modules(self):
374358
config_h_vars = sysconfig.parse_config_h(open(config_h))
375359

376360
platform = self.get_platform()
377-
(srcdir,) = sysconfig.get_config_vars('srcdir')
361+
srcdir = sysconfig.get_config_var('srcdir')
378362

379363
# Check for AtheOS which has libraries in non-standard locations
380364
if platform == 'atheos':
@@ -1640,7 +1624,7 @@ def detect_tkinter(self, inc_dirs, lib_dirs):
16401624
def configure_ctypes_darwin(self, ext):
16411625
# Darwin (OS X) uses preconfigured files, in
16421626
# the Modules/_ctypes/libffi_osx directory.
1643-
(srcdir,) = sysconfig.get_config_vars('srcdir')
1627+
srcdir = sysconfig.get_config_var('srcdir')
16441628
ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
16451629
'_ctypes', 'libffi_osx'))
16461630
sources = [os.path.join(ffi_srcdir, p)
@@ -1669,7 +1653,7 @@ def configure_ctypes(self, ext):
16691653
if sys.platform == 'darwin':
16701654
return self.configure_ctypes_darwin(ext)
16711655

1672-
(srcdir,) = sysconfig.get_config_vars('srcdir')
1656+
srcdir = sysconfig.get_config_var('srcdir')
16731657
ffi_builddir = os.path.join(self.build_temp, 'libffi')
16741658
ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
16751659
'_ctypes', 'libffi'))

0 commit comments

Comments
 (0)