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

BLD: Get ESMF compiling on Cygwin #202

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

Conversation

DWesl
Copy link
Collaborator

@DWesl DWesl commented Dec 8, 2023

I updated my ESMF build on Cygwin, and tried to generalize my changes from the last time I did this so ESMF would still compile on Linux.

I also added a CI run to ensure ESMF compilation gets checked. I think I set up the tests to run as well, but I'm less sure of that.

Might close #136; I'm not sure if they're after a Cygwin build of ESMF or a 64-bit MinGW/Windows build of ESMF. PR #149 suggests they're after a MinGW-w64 build but are trying to do it in Cygwin without cross-compilers for whatever reason.

Follow-on to #201.

DWesl and others added 16 commits November 20, 2023 08:30
So far only tests whether ESMF actuall compiles on Cygwin.  I don't actually run the tests yet.

I will need to figure out how to add "-D_BSD_SOURCE" to C++ compile lines before it completes.
This should let the compilation start.
Hopefully this lets me figure out the unexpected end of file errors.
Forgot that Windows git would put \r\n line endings, which Cygwin doesn't like.
Many declarations are hidden behind visibility macros.
_BSD_SOURCE un-hides most of them.
_POSIX_C_SOURCE un-hides another couple.
Cygwin is more like Windows than Linux here: make sure the import library gets generated in addition to the DLL and that both have the right names.

Import library: lib${name}.dll.a
Shared library: cyg${name}-${abi}.dll or cyg${name}.dll
I forgot the semicolons, so bash didn't recognize the control structures.
Not sure if this will fix the failure, the error wasn't very clear.
Get ESMF Compiling on Cygwin, and set up a CI run
@theurich
Copy link
Member

theurich commented Dec 9, 2023

@oehmke, @billsacks, @danrosen25, @uturuncoglu, I am not sure what's the best move forward here. The branch builds again for me under Linux after fixing some syntax issue in the logic change. However, I have not looked at the action part of the PR, and will not have time for it either. @oehmke I assigned the PR to you just to have a person responsible for it, and made the rest of the core team reviewers. Hope this works for now.

Copy link
Member

@billsacks billsacks left a comment

Choose a reason for hiding this comment

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

@theurich if you're happy with the changes to common.mk and the Cygwin build_rules.mk then I am, too. I'll defer to others who have more experience with github workflows to review the workflow piece.

Drop push, add workflow_dispatch and release.
I don't think those were actually working anyway, and I don't feel like debugging those.
@DWesl
Copy link
Collaborator Author

DWesl commented May 14, 2024

Presumably the doc build is tested other places, so I skipped that to lower the compilation time and avoid the failure.

The ESMPy tests are also skipped now: I think those were failing and I couldn't figure out why.

At the moment, the action is checking that ESMF and ESMPy build on Cygwin and the ESMF checks pass on Cygwin, and will do that anytime someone opens a PR, pushes commits to a PR, pushes a button to run the action, or hits the "Release" button on GitHub.

If you'd prefer not to spend three hours waiting for all that to run on every PR, I can drop the action now that it's demonstrated the rest of the changes allow Cygwin builds, and leave just the Cygwin changes.

@DWesl DWesl marked this pull request as ready for review May 14, 2024 21:43
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.

Build config fixes for Cygwin
5 participants