From 46874ad367c2f3fdd47b2c8cb4b405bbcb2ed14a Mon Sep 17 00:00:00 2001 From: Richard Oudkerk Date: Fri, 27 Jul 2012 12:06:55 +0100 Subject: Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path. --- Lib/distutils/sysconfig.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Lib/distutils/sysconfig.py') diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 910e1047ab..317640ca89 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -533,6 +533,23 @@ def get_config_vars(*args): _config_vars['prefix'] = PREFIX _config_vars['exec_prefix'] = EXEC_PREFIX + # Always convert srcdir to an absolute path + srcdir = _config_vars.get('srcdir', project_base) + if os.name == 'posix': + if python_build: + # If srcdir is a relative path (typically '.' or '..') + # then it should be interpreted relative to the directory + # containing Makefile. + base = os.path.dirname(get_makefile_filename()) + srcdir = os.path.join(base, srcdir) + else: + # srcdir is not meaningful since the installation is + # spread about the filesystem. We choose the + # directory containing the Makefile since we know it + # exists. + srcdir = os.path.dirname(get_makefile_filename()) + _config_vars['srcdir'] = os.path.abspath(os.path.normpath(srcdir)) + # Convert srcdir into an absolute path if it appears necessary. # Normally it is relative to the build directory. However, during # testing, for example, we might be running a non-installed python -- cgit v1.2.1