Richard Oudkerk <[email protected]> added the comment:
> Beyond that, I don't understand why the patch behavior depends on
> whether the srcdir is an absolute path or not.
The os.path.isabs() test is actually redundant since os.path.join(base, srcdir)
== srcdir if srcdir is an absolute path. I only added that test to be explicit
about what happens if the original value is an absolute path.
> I often use absolute paths to configure a build. If not in a build
> directory, 'srcdir' should always return either the proposed value
> based on what get_makefile_filename() returns or it should return
> None.
Removing the isabs() test would not change the calculated value as I indicated
above.
Using None would be the sanest option, but I don't know if any current code
depends on the value being a string.
> One other point: distutils still has its own copy of sysconfig.
> Strong consideration should be given to making a similar change there.
For a source build, distutils.sysconfig.get_config_var('srcdir') gives the
right answer as an absolute path, *except* when the current working directory
contains sys.executable. I think it should always return an absolute path.
The fact that currently it does not probably explains the "mysteriously"
comment below from distutils/test/support.py:
def _get_xxmodule_path():
srcdir = sysconfig.get_config_var('srcdir')
candidates = [
# use installed copy if available
os.path.join(os.path.dirname(__file__), 'xxmodule.c'),
# otherwise try using copy from build directory
os.path.join(srcdir, 'Modules', 'xxmodule.c'),
# srcdir mysteriously can be $srcdir/Lib/distutils/tests when
# this file is run from its parent directory, so walk up the
# tree to find the real srcdir
os.path.join(srcdir, '..', '..', '..', 'Modules', 'xxmodule.c'),
]
for path in candidates:
if os.path.exists(path):
return path
BTW, I was wrong in my earlier message when I claimed that srcdir ==
get_path('stdlib') for an installed python. That is only true if the relative
srcdir is '..'. The attached patch removes that check from the unit tests.
----------
Added file: http://bugs.python.org/file26422/sysconf.patch
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue15364>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com