-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows Support #177
Windows Support #177
Conversation
I've squashed all the commits and it's ready for review. |
Great! Some initial thoughts (please bear with me, I know very little about Windows):
@DirectXMan12 this touches some of your magic deployment goo, so I do want your signoff before merging. (Also with your username, how could I not.) |
|
I see, the arithmetic occurs because of the way cython handles Will wait for @DirectXMan12's thoughts on the rest. |
I can also look into opening a pull request with Cython to eliminate the zeros. I'm not thrilled about the char* casts having to be maintained when new extensions have to be added. Edit: This is the relevant code. It wouldn't be hard to eliminate them, but also isn't the cleanest solution as it kind of just hides the problem. |
I'm just realizing a made a mistake on my explanation for the It's |
Interesting. I appreciate you looking into it, but the reality is that we have to support older cython versions anyway, so it wouldn't help much. I still think the casts are the right way to go. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looked through the build stuff
some of it should probably be pulled out into functions in setup.py
-- it's getting long enough that it's harder to read
all the arg splitting needs to be shell-split instead of normal split, most likely
hey, sorry for all the delay, been swamped with other stuff :-( |
No problem for the delay. I took care of those three splits. (Should have done that myself originally, haha) Overall improvements to setup.py might want to be its own PR. One improvement I had in mind was moving the shared kwargs to |
@aiudirog If you're willing to make other improvements, feel free to tack them onto this PR as a separate commit - I think that should be fine. (And if you're not, just let us know :) ) |
No problem, I started by abstracting out the I'm not quite sure yet of the best way to clean up the rest. Not too much is actually repeated or easily abstracted into useful functions, so maybe the best way would be to have one function for each environment that configures it completely? However that would split up the configuration stages so it wouldn't flow as well top to bottom. Maybe sectioning off each block with clearer/more thorough commenting is the way to go? Any thoughts? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess it's okay to remove 2.6 support - we don't work on el6 without EPEL anymore anyway.
I'm likewise not seeing a better way to handle setup.py. Hoisting a lot of functions out won't help - it'll just get longer and harder to follow, and there's nothing that obviously would benefit from it. The only other way I could see to structure it would be wholly separate buildpaths for each type, but that gets out of hand quickly: we explicitly support six meaningfully different OS/Kerberos/compiler combinations and there's a fair amount of code reuse there. (We probably also work on most of the *BSD, which would make it at least eight if not more, but no one's tested that to my knowledge.)
Will give @DirectXMan12 a couple days to respond, but we can always do a cleanup commit later, so I don't want to hold this up too long just for that.
I decided to drop the 2.6 support because it wasn't in the classifiers anyways and you had mentioned dropping 2.7 support earlier. It looks like there are 4 distinct build paths (Windows, OSX > 10.7, MSYS, & Linux/OSX < 10.7), then the varying support like Heimdal which affects |
@frozencemetery Let me know what you think. After testing a few different solutions, I found that having a default config that does most of the heavy lifting and then subclassing it to customize for each platform feels the cleanest. Tested so far on Arch, Windows, and MSYS. |
Add casts through `char *` to prevent errors in compilation when Cython performs pointer arithmetic on buffers. [[email protected]: squashed patches, rewrite commit message]
This suppresses a frequent warning about the future from Cython. [[email protected]: rewrote commit message]
Pull out an Extension() helper and remove 2.6 support vestiges. [[email protected]: squashed, wrote commit message]
Pull for #32. Currently working on Travis building, no wheels yet. I will squash all of the commits once it's ready.