This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Unable to compile python 3.3 [Was: Re: Python 3.3 coming soon?]


On 14/10/2013 10:17 AM, Ryan Johnson wrote:
Hi python maintainer,

Is there any chance to get a build of python 3.3 on x86_64? (I need PEP 380, delegating to a subgenerator, and the Windows version doesn't play nice with cygwin shells). I tried downloading the sources and applying the patches mentioned in the .cygport file for the cygwin python 3.2 source distribution, but make fails with:

./Modules/signalmodule.c: In function ‘fill_siginfo’:
./Modules/signalmodule.c:745:60: error: ‘siginfo_t’ has no member named ‘si_band’
PyStructSequence_SET_ITEM(result, 6, PyLong_FromLong(si->si_band));
^
Include/tupleobject.h:62:75: note: in definition of macro ‘PyTuple_SET_ITEM’ #define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v)
^
./Modules/signalmodule.c:745:5: note: in expansion of macro ‘PyStructSequence_SET_ITEM’
PyStructSequence_SET_ITEM(result, 6, PyLong_FromLong(si->si_band));
^

NOTES:

 * Google turned up several other reports of the same error message,
   going back as far as python 2.6 for cygwin, but all the workarounds
   seem to have been fixed in older versions upstream, and/or fix other
   problems that had no obvious link with si_band (such as using
   ncursesw instead of ncurses).
 * I don't have (or know how to use) cygport, so maybe it would be as
   simple as changing $VERSION in the .cygport file.


Detailed steps I followed:
Update: I installed cygport, waded through various slight incompatibilities in the patches, and verified that the compilation still fails with the same error message. The modified .cygport and updated patches are attached (other patches remain the same as for 3.2).

The steps to repro are now simply:
# download the 3.3.2 source .xz from python.org
$ ./cygport --64 python3-3.cygport prep
$ ./cygport --64 python3-3.cygport compile

Going by this StackOverflow question, si_band is POSIX, though I don't know which version introduced it... the linux man pages suggest POSIX.1-2001. In any case, it looks like si_band is endemic in POSIX systems, but missing in cygwin.

Updating the signal module to no longer expose si_band at all seems to work around the problem (see patch), but compilation still dies (much later) with:

Traceback (most recent call last):
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/setup.py", line 2166, in <module>
    main()
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/setup.py", line 2161, in main
    "Tools/scripts/2to3", "Tools/scripts/pyvenv"]
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/core.py", line 148, in setup
    dist.run_commands()
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/dist.py", line 929, in run_commands
    self.run_command(cmd)
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/dist.py", line 948, in run_command
    cmd_obj.run()
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/command/build.py", line 126, in run
    self.run_command(cmd_name)
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/dist.py", line 948, in run_command
    cmd_obj.run()
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/command/build_ext.py", line 354, in run
    self.build_extensions()
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/setup.py", line 245, in build_extensions
    build_ext.build_extensions(self)
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/Lib/distutils/command/build_ext.py", line 463, in build_extensions
    self.build_extension(ext)
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/setup.py", line 279, in build_extension
    if not self.configure_ctypes(ext):
File "/usr/src/python3-3.3.2-3/src/Python-3.3.2/setup.py", line 1807, in configure_ctypes
    exec(f.read(), globals(), fficonfig)
  File "<string>", line 33, in <module>
KeyError: 'X86_WIN64'
Makefile:505: recipe for target 'sharedmods' failed

At this point I'm stuck... any advice from the gurus out there would be appreciated.

Thanks,
Ryan

Attachment: 3.3-dbm.patch
Description: Text document

Attachment: 3.3-pep3149.patch
Description: Text document

Attachment: 3.3-tkinter.patch
Description: Text document

Attachment: python3-3.cygport
Description: Text document

Attachment: 3.3-si_band.patch
Description: Text document

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]