Hi All,
On 06/01/12 10:25, Terry Reedy wrote:
On 1/5/2012 3:01 PM, Paul Smedley wrote:
File "./setup.py", line 1154, in detect_modules
for arg in sysconfig.get_config_var("__CONFIG_ARGS").split()]
AttributeError: 'NoneType' object has no attribute 'split'
make: *** [sharedmods] Error 1
File "./setup.py", line 1368, in detect_modules
if '--with-system-expat' in sysconfig.get_config_var("CONFIG_ARGS"):
TypeError: argument of type 'NoneType' is not iterable
make: *** [sharedmods] Error 1
Which again points to problems with
sysconfig.get_config_var("CONFIG_ARGS"):
[The earlier call was with "__CONFIG_ARGS", for whatever difference that
makes.] It appears to be returning None instead of [] (or a populated
list).
In 3.2.2, at line 579 of sysconfig.py is
def get_config_var(name):
return get_config_vars().get(name)
That defaults to None if name is not a key in the dict returned by
get_config_vars(). My guess is that it always is and and the the value
is always a list for tested win/*nix/mac systems. So either setup.py has
the bug of assuming that there is always a list value for "CONFIG_ARGS"
or sysconfig.py has the bug of not setting it for os2, perhaps because
of a bug elsewhere.
At line 440 of sysconfig.py is
def get_config_var(*args):
global _CONFIG_VARS
if _CONFIG_VARS is None:
_CONFIG_VARS = {}
<code to populate _CONFIG_VARS, including>
if os.name in ('nt', 'os2'):
_init_non_posix(_CONFIG_VARS)
if args:
vals = []
for name in args:
vals.append(_CONFIG_VARS.get(name))
return vals
else:
return _CONFIG_VARS
At 456 is
def _init_non_posix(vars):
"""Initialize the module as appropriate for NT"""
# set basic install directories
...
"CONFIG_ARGS" is not set explicitly for any system anywhere in the file,
so I do not know how the call ever works.
using _init_posix() for 'os2' instead of _init_non_posix is the fix for
this.
sysconfig.py also needs the following changes:
--- \dev\Python-2.7.2-o\Lib\sysconfig.py 2012-01-06 19:27:14.000000000
+1030
+++ sysconfig.py 2012-01-07 19:03:00.000000000 +1030
@@ -46,7 +46,7 @@
'scripts': '{base}/Scripts',
'data' : '{base}',
},
- 'os2_home': {
+ 'os2_user': {
'stdlib': '{userbase}/lib/python{py_version_short}',
'platstdlib': '{userbase}/lib/python{py_version_short}',
'purelib':
'{userbase}/lib/python{py_version_short}/site-packages',
@@ -413,9 +413,9 @@
_CONFIG_VARS['platbase'] = _EXEC_PREFIX
_CONFIG_VARS['projectbase'] = _PROJECT_BASE
- if os.name in ('nt', 'os2'):
+ if os.name in ('nt'):
_init_non_posix(_CONFIG_VARS)
- if os.name == 'posix':
+ if os.name in ('posix', 'os2'):
_init_posix(_CONFIG_VARS)
# Setting 'userbase' is done below the call to the
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com