classification
Title: Python3.2.2 make fail on cygwin
Type: compile error Stage: resolved
Components: Build Versions: Python 3.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Lohoris, Luis.Marsano, erik.bray, ezio.melotti, holgerd00d, jlt63, loewis, masamoto, merwok, mhammond, python-dev, rpetrov, yselkowitz, zach.ware
Priority: normal Keywords: needs review, patch

Created on 2012-01-10 12:44 by holgerd00d, last changed 2017-03-31 16:36 by dstufft. This issue is now closed.

Files
File name Uploaded Description Edit
patch.xz Luis.Marsano, 2012-02-02 08:32 Patch file (xz compressed)
patch merwok, 2012-02-27 11:58
3.2.3-libpython-abi.patch jlt63, 2012-06-11 14:22
0001-CYGWIN-issue13756-Python-make-fail-on-cygwin.patch rpetrov, 2013-02-02 15:45 review
Pull Requests
URL Status Linked Edit
PR 552 closed dstufft, 2017-03-31 16:36
Messages (19)
msg151014 - (view) Author: Holger (holgerd00d) Date: 2012-01-10 12:44
Downloaded Python-3.2.2.tar
cd Python-3.2.2
./configure
make
....
Fail on:
--------------------
.....
ranlib libpython3.2m.a
make: *** No rule to make target `libpython3.2m.dll.a', needed by `python.exe'.  Stop.
--------------------

libpython3.2m.a was built successfully:
--------------------
$ ls -l libpython3.2m.a
-rw-r--r--+ 1 hbille Domain Users 7182050 Jan 10 13:31 libpython3.2m.a
--------------------

I am not sure which part is incorrect. The name with or without "dll"
msg151217 - (view) Author: Éric Araujo (merwok) * (Python committer) Date: 2012-01-14 03:46
I am not sure building CPython with Cygwin is supported.
msg151346 - (view) Author: Luis Marsano (Luis.Marsano) Date: 2012-01-16 10:12
The README file implies support:
[⋮]
Build Instructions
------------------

On Unix, Linux, BSD, OSX, and Cygwin:
[⋮]
msg152455 - (view) Author: Luis Marsano (Luis.Marsano) Date: 2012-02-02 08:32
Got it to build. Unpack the Python (3.2.2) source package and apply this patch to get a package that builds on Cygwin (1.7.9), eg:
xz -d patch.xz && tar -xJf Python-3.2.2.tar.xz && patch -p0 -i patch

Changes:
(1) The Makefile, makesetup, and distutils.UnixCCompiler and distutils.command.build_ext modules set values for locating cygwin's python library that didn't agree or make sense during buildtime, so I revised them to agree and use build options that work.
(2) configuration and setup.py couldn't locate cygwin's ncurses headers, so I revised them to do that. I don't think I made that change as portable friendly as possible, so someone please check that and find a better way.

Your input is welcome.
msg154466 - (view) Author: Éric Araujo (merwok) * (Python committer) Date: 2012-02-27 11:58
Martin, any input?

Uncompressed patch attached.  Plain text files are easier to review and devoid of security issues (unlike executables on Windows, PDFs if you’re using Adobe Reader, etc.).
msg154490 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012-02-27 16:54
The removal of testing for ncurses.h is incorrect: this should break the Linux build, where ncurses.h is indeed commonly located in /usr/include.

Not sure how to proceed here: if somebody would try to reproduce the problem, they would likely come up with a patch which is fairly different from the one you are proposing. 

So, Luis: are you interested in working out a complete and correct patch? If so, please start with generating one that is against the hg 3.2 branch (or perhaps even against the default branch). It's ok if you are not interested, in that case we'll need to wait for some other volunteer.
msg162619 - (view) Author: Jason Tishler (jlt63) * Date: 2012-06-11 14:22
I offer the attached patch for consideration. AFAICT, only the Makefile.pre.in and build_ext.py changes are required. I included the makesetup change for completeness and to be consistent with the other changes.
msg162641 - (view) Author: Roumen Petrov (rpetrov) * Date: 2012-06-11 19:56
Hi Jason,
if you look in default rule you will see the same, so this relict specific "else case" could be removed. Also in Lib/packaging/command/build_ext.py.
msg181069 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2013-02-01 05:09
Is this still an issue on 3.3/3.4?  Does the patch still work?
msg181092 - (view) Author: Jason Tishler (jlt63) * Date: 2013-02-01 18:53
> Is this still an issue on 3.3/3.4?

I presume so.

> Does the patch still work?

I haven't tried it on 3.3 yet, so I don't know if it will apply cleanly.
msg181170 - (view) Author: Roumen Petrov (rpetrov) * Date: 2013-02-02 15:45
Jason Tishler wrote:
> Jason Tishler added the comment:
>
>> Is this still an issue on 3.3/3.4?
> I presume so.
This build is broken since SOABI implementation.
>
>> Does the patch still work?
> I haven't tried it on 3.3 yet, so I don't know if it will apply cleanly.
Attached "0001-CYGWIN-issue13756-Python-make-fail-on-cygwin.patch" for head.
This patch is part of split issue3871 into small independent changes.

Roumen
msg181334 - (view) Author: Éric Araujo (merwok) * (Python committer) Date: 2013-02-04 15:30
I have no objection to the patch.  I can’t test it on cygwin (unless snakebite provides it, I’ll ask) but I can check that a linux build still works.
msg273435 - (view) Author: Erik Bray (erik.bray) * Date: 2016-08-23 12:10
I can confirm that the last attached patch on this issue fixes this particular issue with building on Cygwin.  There are other issues but this is definitely one of them.
msg277832 - (view) Author: Roundup Robot (python-dev) Date: 2016-10-01 21:15
New changeset 5b4c21436036 by Zachary Ware in branch 'default':
Issue #13756: Fix building extensions modules on Cygwin
https://hg.python.org/cpython/rev/5b4c21436036
msg277833 - (view) Author: Zachary Ware (zach.ware) * (Python committer) Date: 2016-10-01 21:26
Fixed on 3.7, we can evaluate backporting later.  With this committed, a build on Cygwin can succeed if you configure with --without-threads.

Thanks for the patch!
msg278029 - (view) Author: Erik Bray (erik.bray) * Date: 2016-10-04 11:36
FWIW, even with this patch and --without-threads Python does *not* build successfully on Cygwin64 (which is all I'm really interested in personally), though it does succeed on 32-bit Cygwin.  This has two related reasons:

1) The build of Python's bundled libffi does not work on 64-bit Cygwin for at least a few reasons that I won't go into here.  There doesn't seem to be a ticket yet for that so I'll open one.

2) Using --with-system-ffi doesn't work for reasons I talked about in #2445, and also discussed a bit in #1706863
msg278039 - (view) Author: Zachary Ware (zach.ware) * (Python committer) Date: 2016-10-04 13:56
Hmm, Cygwin64 is what I built on (successfully).  _ctypes does not build, but that's due to not having any libffi available at all: the bundled copy is no longer included in 3.7, and I didn't install a system copy.  I view ctypes support as a fairly low-priority item; we have much bigger issues to worry about first :).  If trying to build _ctypes actually crashes your build, I think '--without-system-ffi' might be enough to get it to error out cleanly.
msg278046 - (view) Author: Erik Bray (erik.bray) * Date: 2016-10-04 14:59
Okay, that would explain it then.  I was building from an older branch (pre-3.7) that still has the bundled libffi.

FWIW with the fix from #2445, --with-system-ffi works (as does some trivial use of _ctypes though I haven't run all the tests).  So if the bundled libffi is gone then I guess that's a moot point.

Thanks for getting a bunch of these fixes merged.
msg278057 - (view) Author: Zachary Ware (zach.ware) * (Python committer) Date: 2016-10-04 16:17
No problem.  Feel free to nosy me on any Cygwin issues that you feel have consensus on the solution and a commit-ready patch implementing it.  I can't guarantee when I'll have time to look at them, but I have finally gotten around to installing Cygwin and will get to them eventually :)
History
Date User Action Args
2017-03-31 16:36:18dstufftsetpull_requests: + pull_request919
2016-10-04 16:17:54zach.waresetmessages: + msg278057
2016-10-04 14:59:35erik.braysetmessages: + msg278046
2016-10-04 13:56:16zach.waresetmessages: + msg278039
versions: + Python 3.7, - Python 3.2, Python 3.3, Python 3.4
2016-10-04 11:36:05erik.braysetmessages: + msg278029
2016-10-01 21:26:41zach.waresetstatus: open -> closed

nosy: + zach.ware
messages: + msg277833

resolution: fixed
stage: patch review -> resolved
2016-10-01 21:15:22python-devsetnosy: + python-dev
messages: + msg277832
2016-08-23 12:10:39erik.braysetnosy: + erik.bray
messages: + msg273435
2015-04-18 07:01:22masamotosetnosy: + masamoto
2013-02-04 15:30:46merwoksetkeywords: + needs review

stage: patch review
messages: + msg181334
versions: + Python 3.3, Python 3.4
2013-02-02 15:45:23rpetrovsetfiles: + 0001-CYGWIN-issue13756-Python-make-fail-on-cygwin.patch

messages: + msg181170
2013-02-01 18:53:00jlt63setmessages: + msg181092
2013-02-01 05:09:46ezio.melottisetnosy: + ezio.melotti
messages: + msg181069
2012-06-11 19:56:09rpetrovsetnosy: + rpetrov
messages: + msg162641
2012-06-11 14:22:09jlt63setfiles: + 3.2.3-libpython-abi.patch

nosy: + jlt63, yselkowitz
messages: + msg162619

keywords: + patch
2012-04-24 14:49:40Lohorissetnosy: + Lohoris
type: compile error
2012-02-27 16:54:21loewissetmessages: + msg154490
2012-02-27 11:58:05merwoksetfiles: + patch

messages: + msg154466
2012-02-02 08:32:54Luis.Marsanosetfiles: + patch.xz

messages: + msg152455
2012-01-16 10:12:01Luis.Marsanosetnosy: + Luis.Marsano
messages: + msg151346
components: + Build, - Installation
2012-01-14 03:46:01merwoksetnosy: + loewis, merwok, mhammond
messages: + msg151217
2012-01-10 12:44:18holgerd00dcreate