-
Notifications
You must be signed in to change notification settings - Fork 142
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 CI using AppVeyor - also change to a MinGW binary #135
Conversation
I'm combining multiple somewhat unrelated commits into one PR here - the second commit switches the Windows binary to a MinGW one. I downloaded the binary from here http://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/mingw-w64-x86_64-hdf5-1.8.13-1-any.pkg.tar.xz but the libhdf5 dll also depended on libszip-0.dll which was in a separate download here http://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/mingw-w64-x86_64-szip-2.1-1-any.pkg.tar.xz (and similar for 32 bit, just replacing x86_64 with i686) I tried to add both to the bindeps script, and use the |
I see you were able to turn on AppVeyor. This passed tests locally for me with a Win64 Julia, but on AppVeyor apparently there were connectivity troubles (probably transient) downloading the Julia binary. And I should've checked the dependencies of the Win32 binaries more carefully (didn't test those locally, haven't downloaded and installed a Win32 copy of 0.3.0 yet). The 32-bit MinGW download I grabbed was compiled with the wrong kind of MinGW - one using dwarf2 exception handling, which is also a different C runtime than used by Julia (SJLJ on Win32). I'll keep searching. |
Also note that the reason the mmap tests currently pass on Windows is probably that we now write small datasets in compact form. This is slightly faster (actually in terms of IO it is much faster, but for such small datasets the time to read/write is dominated by libhdf5) and consumes slightly less space, but compact datasets can't be mmapped because libhdf5 won't tell us where they are in the file. I should add a test that writes enough data that it will actually be mmapped (EDIT: done in 0b19961), but then we'll probably have to disable it on Windows for now. |
@simonster was wondering why that would start passing. Do you have admin access here, are you able to turn on the multi-status webhook? It looks much better than having Travis and AppVeyor overwrite each other. |
I don't think I have admin access (I don't think it's possible to grant it for repositories under a personal account), so @timholy will have to do this. |
On 32-bit:
|
Should be fixed in d07833f |
from arch cross-compiled repository using SJLJ on Win32 instead of dwarf2 (msys2 version was using dwarf2, didn't work)
As expected the mmap test fails on Windows, should be made
|
And disabled. |
Windows CI using AppVeyor - also change to a MinGW binary
Awesome! Thanks for taking care of this! |
HTH. Hope @ihnorton doesn't mind us switching out the old MSVC binary to a different one. Maybe we should get rid of the readme's suggestion to manually install the MSVC version of the hdf5 dll now that we've seen it causes crashes? Also reminder to @timholy to turn on the multi-status webhook when he gets a chance, and may as well add Travis and AppVeyor and PkgEval status badges to the readme for better visibility. I think only the owner of the AppVeyor project can actually get the badge url from the settings page. |
Happy to do this. I found the page to edit the webhooks, but I don't see anything labeled "multi-status". There's one labeled "status" and another "deployment_status". Am I on the right track? And, @tkelman, awesome work! Indeed I'll edit the README. |
I just edited the README. (Thanks for pointing that out!) Is there any easy way to check if Julia and libhdf5 are built against the same runtime? I'm betting the answer is no, but if it's possible we could make a runtime mismatch just slow things down instead of resulting in segfaults. |
Just noticed you tackled that already, thanks @simonster! |
@timholy sorry I need to write clearer instructions - go to http://github-multi-status.herokuapp.com, click the link where it says "To get started: follow this link", authorize the app to see statuses, then copy the URL. Go to GitHub settings, add a new webhook with the copied Payload URL, "Leave the Content type and Secret as-is, then select Let me select individual events. and select the Status checkbox. Make sure the Active checkbox is ticked, and click on Add webhook." @simonster sometimes it's hard to tell, especially if the runtime gets linked statically. Usually I check the dll via Dependency Walker to see whether it's linking to one of the msvcr###.dll's, or libgcc_s_*.dll, etc. Since we don't really have a universally present equivalent to |
@tkelman, should be done. |
Cool, we'll see when the next PR gets opened. The AppVeyor badge url should be available under settings at https://ci.appveyor.com/project/timholy/hdf5-jl/settings/badges |
I'm ready to tag a new version. If people have previously installed HDF5 with the MSVC version, will this work for them? I.e., will it download & use the new MingGW version? I assume this will work since the library has changed names, but I am just being paranoid and checking. |
Good question. I'm trying it out now, will let you know. |
Okay, looks like this will probably happen after users update:
Maybe improving that message to suggest trying |
Won't the build script run automatically when the package updates? |
I think so, but I'm not completely sure. |
Let's try it and see! 😄 |
Yeah, looks good.
|
How to get started:
Sign up at appveyor.com for a free open source plan
Probably have to authenticate to let AppVeyor see your GitHub repos, I forget
Click New Project, find this repo in the list and click Add
Push a test commit, or manually go to projects, HDF5.jl, click New Build
Also recommended so Travis and AppVeyor coexist nicely on pull request status indicators:
Follow instructions here http://github-multi-status.herokuapp.com/ to add an extra webhook for Status events