[New-bugs-announce] [issue22846] distutils needlessly fails to build apsw
Mark Summerfield
report at bugs.python.org
Tue Nov 11 09:29:28 CET 2014
New submission from Mark Summerfield:
When I try to build APSW (http://rogerbinns.github.io/apsw/index.html) with Python 3.3 or 3.4 on Debian stable 64-bit I get the error output shown below.
I dug into the source and it seems that the problem is that distutils/ccompiler.py's gen_preprocess_options() functions expects to get a sequence of macros and each macro *must* be a 1 or 2 item tuple.
But for some reason during the APSW build it gets a 2 item list which it then chokes on.
Now, the code really does need a tuple because in some cases it uses Python's % print formatting option as in "-D%s=%s" % macro -- and this won't work if macro is a list.
I solved this problem for me by adding two lines, shown here in context:
pp_opts = []
for macro in macros:
if isinstance(macro, list): # NEW
macro = tuple(macro) # NEW
I don't know how safe or wise a fix this is, but it did work for me for a locally built (from www.python.org tarball) 3.3 and 3.4.
$ /home/mark/opt/python34/bin/python3 setup.py fetch --all build --enable-all-extensions install
running fetch
Getting download page to work out current SQLite version
Fetching https://sqlite.org/download.html
Version is 3.8.7.1
Getting the SQLite amalgamation
Fetching https://sqlite.org/2014/sqlite-autoconf-3080701.tar.gz
Length: 1998389 SHA1: 5601be1263842209d7c5dbf6128f1cc0b6bbe2e5 MD5: 8ee4541ebb3e5739e7ef5e9046e30063
Checksums verified
Running configure to work out SQLite compilation flags
setup.py:53: DeprecationWarning: 'U' mode is deprecated
f=open(name, mode)
running build
running build_ext
SQLite: Using amalgamation /home/mark/zip/apsw-3.8.7.1-r1/sqlite3/sqlite3.c
setup.py:624: ResourceWarning: unclosed file <_io.TextIOWrapper name=4 encoding='UTF-8'>
for part in shlex.split(os.popen("icu-config --cppflags", "r").read()):
setup.py:637: ResourceWarning: unclosed file <_io.TextIOWrapper name=4 encoding='UTF-8'>
for part in shlex.split(os.popen("icu-config --ldflags", "r").read()):
ICU: Added includes, flags and libraries from icu-config
building 'apsw' extension
Traceback (most recent call last):
File "setup.py", line 862, in <module>
'win64hackvars': win64hackvars}
File "/home/mark/opt/python34/lib/python3.4/distutils/core.py", line 148, in setup
dist.run_commands()
File "/home/mark/opt/python34/lib/python3.4/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/home/mark/opt/python34/lib/python3.4/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/home/mark/opt/python34/lib/python3.4/distutils/command/build.py", line 126, in run
self.run_command(cmd_name)
File "/home/mark/opt/python34/lib/python3.4/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/home/mark/opt/python34/lib/python3.4/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "setup.py", line 661, in run
v=beparent.run(self)
File "/home/mark/opt/python34/lib/python3.4/distutils/command/build_ext.py", line 339, in run
self.build_extensions()
File "/home/mark/opt/python34/lib/python3.4/distutils/command/build_ext.py", line 448, in build_extensions
self.build_extension(ext)
File "/home/mark/opt/python34/lib/python3.4/distutils/command/build_ext.py", line 503, in build_extension
depends=ext.depends)
File "/home/mark/opt/python34/lib/python3.4/distutils/ccompiler.py", line 566, in compile
depends, extra_postargs)
File "/home/mark/opt/python34/lib/python3.4/distutils/ccompiler.py", line 341, in _setup_compile
pp_opts = gen_preprocess_options(macros, incdirs)
File "/home/mark/opt/python34/lib/python3.4/distutils/ccompiler.py", line 1061, in gen_preprocess_options
% macro)
TypeError: bad macro definition '['_FORTIFY_SOURCE', '2']': each element of 'macros' list must be a 1- or 2-tuple
----------
components: Distutils
messages: 231008
nosy: dstufft, eric.araujo, mark
priority: normal
severity: normal
status: open
title: distutils needlessly fails to build apsw
type: behavior
versions: Python 3.3, Python 3.4
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue22846>
_______________________________________
More information about the New-bugs-announce
mailing list