Skip to content
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 build #263

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
Open

Conversation

jones-gareth
Copy link

Hi,

I have created Windows executables for hmmer programs using mingw.

This PR contains the changes I made to get all tests (except hmmpgmd_ga and hmmpgmd_shard_ga) passing using the mingw compiler and the msys2 shell. Details are in Windows.md

If you're interested it would be nice to include these changes in the main repository. However, I could certainly understand that you might not want Windows specific tweaks in your code base.

I also had to make changes to easel/develop and will create a PR for that repository if you want to move forward.

Thanks for making all the source for this great program freely available.

Gareth

@npcarter
Copy link
Member

npcarter commented Nov 18, 2021 via email

@jones-gareth
Copy link
Author

Nick, I understand where you're coming from. I will package things up in such a way that others can reproduce the build steps. WSL is great for many things but not (yet) a practical solution to distributing hmmer to many users in corporate environment.
Thanks,
Gareth

@npcarter
Copy link
Member

npcarter commented Nov 19, 2021 via email

@jones-gareth
Copy link
Author

I have packaged up my changes into master branches of my forks of hmmer and easel. In addition to build instructions I've included the resulting execubles.

I would be great if you could link to the https://github.com/jones-gareth/hmmer repository. Since you don't want to to merge in my changes I'm planning to ask github to remove the fork status from these 2 projects (unless you have any objections). Thanks again.

@npcarter
Copy link
Member

npcarter commented Dec 3, 2021 via email

@npcarter
Copy link
Member

npcarter commented Dec 19, 2021 via email

src/p7_config.h.in Outdated Show resolved Hide resolved
@althonos
Copy link
Contributor

@npcarter : thanks for the heads-up!

I was trying to update MinGW compatibility to be able to build PyHMMER for Windows, which would require less effort than actually building all the binaries like Gareth is doing. I'll see if I can get his fork to build, in which case I would be happy to use while compiling for Windows, while using the official sources for UNIX.

Of course, I'd be happier if the patches were merged, but I also understand why it's not practical for you now.

README.md Show resolved Hide resolved
@jones-gareth
Copy link
Author

@althonos and @npcarter - is there anything else I can do to move this forward?

@althonos
Copy link
Contributor

@jones-gareth : I'll have some opportunity to work on this next month hopefully. At the moment I couldn't get a working MinGW / Cython build because of Windows memory mapping which does weird things with memory allocated in a DLL being used in another DLL. This is why there has been no real progress on my side.

@npcarter
Copy link
Member

Hello. I've finally gotten some time to give this a try, and noticed a few issues. The first is pretty minor: your instructions for installing MinGW leave out the "git" package, so trying to check out your hmmer and easel packages fails. That part worked fine for me once I did "pacman -S git" however.

More seriously, Easel tests 73-84 (except 83) fail with crash error messages on my machine. Are they working for you guys?

The final thing is that the configure command you provided tells gcc to generate unoptimized code, which is going to hurt performance a lot. When I tried compiling with optimizations on, the big change was that the hmmpgmd test hung instead of failed. Have you looked into what's going on with optimization there?

@jones-gareth
Copy link
Author

Hello. I've finally gotten some time to give this a try, and noticed a few issues. The first is pretty minor: your instructions for installing MinGW leave out the "git" package, so trying to check out your hmmer and easel packages fails. That part worked fine for me once I did "pacman -S git" however.

Sorry about that- I have updated the README.

More seriously, Easel tests 73-84 (except 83) fail with crash error messages on my machine. Are they working for you guys?

Those tests are all working for me- I checked by pulling the repositories to a temporary directory and following the README instructions.

The final thing is that the configure command you provided tells gcc to generate unoptimized code, which is going to hurt performance a lot. When I tried compiling with optimizations on, the big change was that the hmmpgmd test hung instead of failed. Have you looked into what's going on with optimization there?

I'm also not seeing that. I did a full optimization using

CPPFLAGS="-Ic:/local/include" LDFLAGS=" -static -Lc:/local/lib" CFLAGS="-O3" ./configure --prefix=c:/local

All tests completed successfully (except the 2 that normally fail). I did see 2 compile warnings about inlined macros which I should probably investigate.

Unfortunately, your issues are a mystery to me right now. What error messages are you seeing? I wonder if it is worth creating an Azure pipeline to validate the build. I haven't worked with Azure, but it looks like it should be possible to create a reference build.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants