summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/sysconfig.py
diff options
context:
space:
mode:
authorGreg Ward <gward@python.net>2000-04-19 02:22:07 (GMT)
committerGreg Ward <gward@python.net>2000-04-19 02:22:07 (GMT)
commitb1e4a6e10186873f61fdd57340b67f420ba4901d (patch)
tree8726cc59ab18c9fb4cf1520e03f56b575054e142 /Lib/distutils/sysconfig.py
parent434ef8fe942908c1c78a44271694f504eec4bc78 (diff)
downloadcpython-b1e4a6e10186873f61fdd57340b67f420ba4901d.zip
cpython-b1e4a6e10186873f61fdd57340b67f420ba4901d.tar.gz
cpython-b1e4a6e10186873f61fdd57340b67f420ba4901d.tar.bz2
Added kludge to deal with the "./ld_so_aix" problem: force all strings
in the Makefile that start with "./" to be absolute paths (with the implied root being the directory where the Makefile itself was found).
Diffstat (limited to 'Lib/distutils/sysconfig.py')
-rw-r--r--Lib/distutils/sysconfig.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index c6341c1..5cc71dc 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -205,6 +205,21 @@ def parse_makefile(fp, g=None):
# bogus variable reference; just drop it since we can't deal
del notdone[name]
+ # "Fix" all pathnames in the Makefile that are explicitly relative,
+ # ie. that start with "./". This is a kludge to fix the "./ld_so_aix"
+ # problem, the nature of which is that Python's installed Makefile
+ # refers to "./ld_so_aix", but when we are building extensions we are
+ # far from the directory where Python's Makefile (and ld_so_aix, for
+ # that matter) is installed. Unfortunately, there are several other
+ # relative pathnames in the Makefile, and this fix doesn't fix them,
+ # because the layout of Python's source tree -- which is what the
+ # Makefile refers to -- is not fully preserved in the Python
+ # installation. Grumble.
+ from os.path import normpath, join, dirname
+ for (name, value) in done.items():
+ if value[0:2] == "./":
+ done[name] = normpath(join(dirname(fp.name), value))
+
# save the results in the global dictionary
g.update(done)
return g