Skip to content

Conversation

@embray
Copy link
Contributor

@embray embray commented Jul 25, 2018

Note: Depends on #4348, #8445, #8712 as prerequisites, without which Python does not even build on Cygwin.

This adds a configuration to our AppVeyor builds to build/test on 64-bit Cygwin in addition to the native Windows build (32-bit Cygwin is increasingly less supported by the Cygwin community, and I'm not interested in supporting it for Python).

This PR should not be merged until at least #4348, #8445, and #8712 (or some equivalent alternatives) are merged, as they are the bare minimum necessary to get Python building on Cygwin. (Some extension modules fail to build as well--this is a bug with a known fix, but I have not included it for now since it only means some extensions can't be built/tested).

I started this work last year, but took an approach that was self-defeating: There are still numerous test failures on Cygwin, and I had hoped to fix all of them before requesting to add Cygwin to our CI. However, it's rather impractical time-wise to get all those issues fixed, especially considering the catch-22 of not having CI for Cygwin in the first place with which to test the fixes.

Therefore my approach this time is to brute-force disable all the modules that contain failures (~45) so that we can at least start with a nominally "passing" build on Cygwin. If we can get that up and running, it will decrease the number of new failures. Meanwhile, I volunteer to hack away at reducing the number of test modules that need to be disabled.

In fact, I already have fixes for roughly half of them. I just need to make issues/PRs for many of those fixes, and it will be better to have the CI implemented in the first place to help get those fixes merged.

I would consider this a prerequisite for getting a buildbot working for Cygwin, which I also have preliminary work on; again it's mostly a matter of disabling some known failures.

@embray
Copy link
Contributor Author

embray commented Jul 25, 2018

Also I fully recognize the commit history is a mess, and I can squash/clean it up if need be.

@embray
Copy link
Contributor Author

embray commented Jul 25, 2018

@zooba
Copy link
Member

zooba commented Jul 29, 2018

I'm interested, but will defer to @zware and @vstinner as to whether we should be enabling this on AppVeyor or a buildbot. Traditionally, we've added new platforms as unstable buildbots first.

@embray
Copy link
Contributor Author

embray commented Jul 30, 2018

I'd be fine with an unstable buildbot either first or in addition to this. Personally, I would find the appveyor build more immediately useful, because I feel that not having it has made people more wary of reviewing PRs addressing issues that affect Cygwin.

I'll also add that it's not quite right to call it a "new platform", but rather a platform that has been varyingly supported off-and-on and never quite officially "supported" or "unsupported", but mostly "supported" in principle but lacking a buildbot and a champion.

@vstinner
Copy link
Member

I don't want to see a new CI on PR until the platform is fully supported:

  • get a core developer who takes care of this platform
  • all tests should pass

If you want a CI to enhance the platform support, maybe start with a custom buildbot run manually?

@zware
Copy link
Member

zware commented Jul 31, 2018

I'm fine with going ahead and adding a buildbot; my only concern with adding it to AppVeyor is slowing it down.

@embray
Copy link
Contributor Author

embray commented Jul 31, 2018

What does "all tests should pass", actually mean? Some necessarily need to be skipped due to platform limitations. This is true on many other supported platforms.

@embray
Copy link
Contributor Author

embray commented Jul 31, 2018

@vstinner

I don't want to see a new CI on PR until the platform is fully supported

Okay, but then will you (by "you" I mean not you personally, but in general) agree to merge PRs that fix/skip (with valid reasoning) tests on the platform even if it's not supported?

Because in the past you've told me you won't merge things for platforms that you consider "not supported". I could get a custom build on a buildbot fully passing, but then I'm left with possibly dozens of fixes that individually need to be reviewed, and that's a very slow way to go about things. I feel like you're putting me in an impossible position.

Having it on AppVeyor I believe will help fixes get reviewed and accepted faster:

https://github.com/python/cpython/pulls?utf8=%E2%9C%93&q=is%3Aopen+is%3Apr+author%3Aembray+cygwin

@zware

I'm fine with going ahead and adding a buildbot; my only concern with adding it to AppVeyor is slowing it down.

That's a valid concern, though I'll point out that even now it's not the slowest PR check generally, and can even be faster than the Win32 build. That's helped of course by the fact that I'm skipping about a fifth of the tests, but that only helps so much.

@vstinner
Copy link
Member

"What does "all tests should pass", actually mean?"

Running "python -m test" must complete with SUCCESS.

"Some necessarily need to be skipped due to platform limitations. This is true on many other supported platforms."

I'm fine with that. No platform run all tests.

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your Modules/getpath.c change (adding "add_exe_suffix(wchar_t *progpath)") must be done in a separated change.

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@embray
Copy link
Contributor Author

embray commented Jul 31, 2018

@vstinner

"What does "all tests should pass", actually mean?"

Running "python -m test" must complete with SUCCESS.

Ok, that's reasonable. It might just mean skipping some tests, but I agree that those skips should be made explicit in the test modules themselves, not by skipping whole modules with -m test -x ....

Your Modules/getpath.c change (adding "add_exe_suffix(wchar_t *progpath)") must be done in a separated change.

That's #4348. This PR isn't even worth considering merging without having some form of #4348 as well as the other two PRs I mentioned in the description as prerequisites. I wish GH had a way to make prerequisites clearer.

@embray
Copy link
Contributor Author

embray commented Aug 1, 2018

It occurs to me that #8445 is not actually strictly necessary for this, just #8446 (or a better fix to the same problem).

@embray
Copy link
Contributor Author

embray commented Aug 9, 2018

I updated this branch to not include the changes from other PRs, in order to make this easier to review. Now the AppVeyor build for Cygwin will fail, but I feel I've at least demonstrated with previous builds of this branch that it can work if the necessary fixes are incorporated as well.

@zware
Copy link
Member

zware commented Sep 9, 2019

I am sorry, but with AppVeyor already being our slowest and most-blocking CI, I don't want to slow it down any further and am rejecting this PR. I would be more interested in adding a Cygwin build to the Azure build.

@zware zware closed this Sep 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants