-
Notifications
You must be signed in to change notification settings - Fork 265
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
Address Windows and MacOS s3 issues #2759
Conversation
@DennisHeimbigner I'm seeing an interesting error now on Windows. I'm building without When running ctest, I see this:
I don't have |
The aws warnings are just informational. But I am surprised you are seeing them. The path conversion code operates by converting the given path into a canonical path. |
@DennisHeimbigner is there a way to have the path conversion only use cygwin representation if you are running under cygwin? I'm also seeing some new failures as a result of the PR we merged; for some reason, plugins aren't being found under MSYS, now. I think we should put a pause on other PR's until we get this sorted out, which hopefully we can do in short order. |
If there is other code silently looking for |
That should not be the case. The use of the canonical path should only occur inside the path |
The reason I use the canonical path idea is this. |
@DennisHeimbigner that makes sense, but it feels like if it's determining the path should be |
@DennisHeimbigner I think I may have something figured out re: pathing on my system, so stand by while I see if I can narrow down that list of failures. The debug/diagnostic statements will need to be fixed but we can track that down easily enough. |
The canonical path is supposed to never be used to actually access the file system.
|
@DennisHeimbigner I'm starting to figure out some of the differences for the tests that are failing and those that are passing. One difference is this: Tests that are passing use a file path that looks like this:
Tests that fail use a file path that looks like this:
Note the difference between |
That info looks promising. |
@DennisHeimbigner A specific example. In netCDF-C In the current |
I think the problem is that the dpathmgr.c code does not properly convert an msys path.
|
I'm back to looking at this, is there any obvious reason why this behavior would have changed from |
Not that I can think of. |
So |
Am I correct in thinking that MSYS accepts windows paths? I may have taken a shortcut to just always |
You are correct; it accepts and, when working with programs compiled natively for Windows, requires windows paths
…-Ward
On Oct 4, 2023 at 3:56 PM -0600, Dennis Heimbigner ***@***.***>, wrote:
> So ncpathcvt -k is identifying my MSYS environment as win instead of msys. This feels like a starting point, perhaps the method being used to identify the environment has broken with later releases of MSYS? I'll investigate.
Am I correct in thinking that MSYS accepts windows paths? I may have taken a shortcut to just always
treat MSYS as windows when outputting.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were assigned.Message ID: ***@***.***>
|
Then the path conversion stuff should (famous last words) work for msys. |
Does the same error occur in the MSYS github action? |
The shell scripts are working, so great progress has been made. The canonical path code is still trying to pass cygwin-style paths to open the AWS credentials under MSYS2, which fails because MSYS requires Windows-style paths. |
We are nearly there with the internal S3 API; as soon as I sort out the canonical path in MSYS trying to load credentials via a *nix style path instead of a Windows style path, we will have S3 functionality working using the internal API. We'll then have that in place while we sort out the befuddling issues around the aws s3 sdk. |
Can you try the following?
Then capture all the output from that fprintf and post it. |
@DennisHeimbigner Yes. I'm using the same credentials which work under Linux and MacOS using the same options. |
Ok, next step:
then rerun one of the failing tests and post the output. |
@DennisHeimbigner here's the result of |
Can you insert a "set -x" at the front of the script nczarr_test/run_notzarr.sh |
@DennisHeimbigner here you go: |
I see at least one problem:
The -k option should look like an S3 key, something like this: |
For what it's worth, and may bear repeating/keeping in mind. Working in the MSYS bash shell, *nix style paths are used. But when programs are working with the filesystem, Windows-style paths are Required. No idea if it's relevant, but just in case that's useful information, there you go. I'll also try to dig into it. |
@DennisHeimbigner just a quick check-in, I'm running the |
So it looks like prepending an additional |
@DennisHeimbigner The failure for |
…RNAL and WITH_S3_TESTING on Windows and MSYS2.
Similar to |
If a failure is expected, then it should be noted in the script; usually by the phrase XFAIL.
|
BTW if the errors you are seeing are like these:
then those are normal. |
I think this is exactly the same error as with run_notzarr. The path "C:/msys64/group_with_dims/var2D" |
What I see is that the program s3util is called with:
But the value seen by the program is in effect that -k value prefixed with "C:/msys64" |
I found this: msys2/MSYS2-packages#2316
into the file netcdf-c/test_common.in |
See also this: https://www.msys2.org/wiki/Porting/#filesystem-namespaces |
That is good to know; thanks, @DennisHeimbigner. That may obviate a lot of these and future issues. |
Interestingly enough, |
Did you solve these three tests?
|
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 was surprised by the prefixing of "/" to S3ISOPATH.
What problem was it fixing?
@dennis the issue with the path conversion complaining about a lack of a leading '/'. |
A small mistake in logic was resulting in Amazon S3 SDK libraries not being properly linked against, even if found on the system. There are additional steps required for Windows (Visual Studio) builds, so this PR is not yet ready. See
We are also seeing strange hangs on MacOS and Windows.
Todo