-
Notifications
You must be signed in to change notification settings - Fork 148
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
MinGW support #36
MinGW support #36
Conversation
On windows the temp file cannot be opened a second time while it is still opened by python. Close the file in python before asking the compiler to read it. See https://docs.python.org/3.7/library/tempfile.html#tempfile.NamedTemporaryFile
try: | ||
compiler.compile([fname], extra_postargs=[flagname]) | ||
except setuptools.distutils.errors.CompileError: | ||
return False |
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.
What is the reason for not deleting the temporary file and moving this out of the context manager?
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.
On windows the temp file cannot be opened a second time while
it is still opened by python. Close the file in python before
asking the compiler to read it.
See https://docs.python.org/3.7/library/tempfile.html#tempfile.NamedTemporaryFile
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.
Ok it makes sense.
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.
But in this case, the file should be deleted later.
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.
How about something like below, so that I don't have to worry about cleaning up stuff?
import tempfile, os
with tempfile.TemporaryDirectory() as d:
fname = os.path.join(d, 'main.cpp')
with open(fname, 'w') as f:
f.write('int main (int argc, char **argv) { return 0; }')
try:
compiler.compile([fname], extra_postargs=[flagname])
except setuptools.distutils.errors.CompileError:
return False
return True
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.
TemporaryDirectory is not in py 2.7. Reverting to deleting the file
Has anyone tried to build this in MinGW? I see the Appveyor VMs use MSVC and conda ... |
Just to let you guys know that on my mingw system the pybind11 minimal example compiles fine without this PR. |
Yes, but does it work with MinGW 5.x or 4.x series which defaults to C++98? |
@SylvainCorlay, can you review again? |
This reverts commit 6be7a0c.
This looks good to me. The build failures seem unrelated. |
Ping |
fe696bc
to
08a2f37
Compare
This is ready for review now. |
Rebased and merged in 187e874, can you double-check that it's okay? |
No description provided.