Skip to content

Conversation

@pitrou
Copy link
Member

@pitrou pitrou commented Nov 13, 2019

Based on initial work by @xuechendi.

@github-actions
Copy link

@pitrou pitrou changed the title ARROW-6720: [C++] Add HDFS implementation to filesystem layer [WIP] ARROW-6720: [C++] Add HDFS implementation to filesystem layer Nov 13, 2019
@pitrou pitrou force-pushed the ARROW-6720-hdfs branch 2 times, most recently from 05512af to cf6f3fe Compare November 13, 2019 17:36
@pitrou pitrou changed the title [WIP] ARROW-6720: [C++] Add HDFS implementation to filesystem layer ARROW-6720: [C++] Add HDFS implementation to filesystem layer Nov 13, 2019
@pitrou pitrou force-pushed the ARROW-6720-hdfs branch 2 times, most recently from 8423502 to 9793132 Compare November 13, 2019 20:28
@pitrou
Copy link
Member Author

pitrou commented Nov 13, 2019

@nealrichardson Will need your help for the R AppVeyor failure:
https://ci.appveyor.com/project/pitrou/arrow/builds/28838764#L3459

@nealrichardson
Copy link
Member

Looks like ARROW_FILESYSTEM now requires a new dependency? Is it vendored?

@pitrou
Copy link
Member Author

pitrou commented Nov 13, 2019

It's built by the Arrow build chain, but it's not in the packages used by R-Arrow ("rarow"?) on Windows. It seems to work elsewhere, including R Ubuntu here: https://github.com/apache/arrow/pull/5820/checks?check_run_id=301764483

@nealrichardson
Copy link
Member

Yes but Windows is "special". I'll dig in a bit and see if I can understand what the deal is. Alternatively, is uriparser needed for all of filesystem or just HDFS?

@pitrou
Copy link
Member Author

pitrou commented Nov 13, 2019

It's needed for all of filesystem (it's needed for Flight too).

@nealrichardson
Copy link
Member

🤔 there's also this message higher up: https://ci.appveyor.com/project/pitrou/arrow/builds/28838764#L1576

@pitrou
Copy link
Member Author

pitrou commented Nov 13, 2019

It says "Building uriparser from source" which is expected at this point.

@nealrichardson
Copy link
Member

Ok, and on master it's not building uriparser (cf. https://ci.appveyor.com/project/ApacheSoftwareFoundation/arrow/builds/28838835/job/788gr6gydfhrdk4v?fullLog=true)

Have you tried without adding -luriparser here? https://github.com/apache/arrow/pull/5820/files#diff-eb7edbff9a6d44777b97bc545daa680dR44

Maybe it's bundled somehow and not needed? Otherwise, where does it get built to?

@nealrichardson
Copy link
Member

@ursabot crossbow submit macos-r-autobrew

@pitrou
Copy link
Member Author

pitrou commented Nov 13, 2019

Have you tried without adding -luriparser here?

Yes, it fails with a link error: https://ci.appveyor.com/project/ApacheSoftwareFoundation/arrow/builds/28836148/job/o95eh8ft96n3n0pl#L3348

@ursabot
Copy link

ursabot commented Nov 13, 2019

AMD64 Conda Crossbow Submit (#76833) builder has been succeeded.

Revision: 9793132e05e5b674c492fe9e64f442239cd2266c

Submitted crossbow builds: ursa-labs/crossbow @ ursabot-324

Task Status
macos-r-autobrew TravisCI

@nealrichardson
Copy link
Member

Ok so we need it. We're building it and that seems not to error, but it's not getting bundled with the build. That is, we're dealing with https://github.com/apache/arrow/blob/master/ci/appveyor-build-r.sh, which calls https://github.com/apache/arrow/blob/master/ci/PKGBUILD and https://github.com/apache/arrow/blob/master/ci/windows-pkg-arrow-for-r.sh.

@pitrou
Copy link
Member Author

pitrou commented Nov 13, 2019

Does it bundle other dependencies such as double-conversion?

@nealrichardson
Copy link
Member

double-conversion is an external dependency, so that gets downloaded and bundled here: https://github.com/apache/arrow/blob/master/ci/windows-pkg-arrow-for-r.sh#L61

@nealrichardson
Copy link
Member

If we don't want to use the vendored uriparser, we could port https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-uriparser/PKGBUILD to the rtools-packages repository and then treat it like we do double-conversion et al.

@pitrou
Copy link
Member Author

pitrou commented Nov 13, 2019

If we don't want to use the vendored uriparser

I'm not sure what you mean by that. Personally, I have no preference :-) I just don't know how to do it.

@nealrichardson
Copy link
Member

Neither do I :)

cf. #5814

@nealrichardson
Copy link
Member

Locally it gets built into $BUILD_DIR/uriparser_ep-install/lib/liburiparser.a. Maybe we can grab that before makepkg-mingw deletes it.

@nealrichardson
Copy link
Member

Looks like we have the same problem on macOS: https://travis-ci.org/ursa-labs/crossbow/builds/611598498#L831

@pitrou
Copy link
Member Author

pitrou commented Nov 14, 2019

Can I get you to handle the issue?

@nealrichardson
Copy link
Member

Realistically I can’t commit to doing it before going on vacation. But it doesn’t require me, there’s no other special R knowledge needed, I think we just need to mv the built liburiparser to the right directory.

Copy link
Contributor

Choose a reason for hiding this comment

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

This function should take the path as parameter and return FileStats directly, would make thing more natural.

Copy link
Member Author

Choose a reason for hiding this comment

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

No, because it acts on an existing FileStats. I mean other members have been set by the caller.

@nealrichardson
Copy link
Member

@pitrou I did some exploration in the Appveyor build and I think I see how to grab the liburiparser that we build; however, it seems that we build a .dll but for R we need a static library.

I see there is a uriparser cmake flag BUILD_SHARED_LIBS, which if it is OFF will build static libraries. Is there a way we can pass through that flag (and presumably have it just follow what's in the arrow cmake wrt shared/static)?

@bkietz
Copy link
Member

bkietz commented Nov 15, 2019

@nealrichardson that flag is already set to off when building uriparser; it really looks like we're trying to always build it static

@nealrichardson
Copy link
Member

And yet I see liburiparser-1.dll is what is made on Appveyor: https://ci.appveyor.com/project/nealrichardson/arrow/builds/28875888?fullLog=true#L1177

Locally I do see liburiparser.a though.

@nealrichardson
Copy link
Member

Maybe there's another flag needed somewhere for mingw? https://stackoverflow.com/a/42979732/11897522

@bkietz
Copy link
Member

bkietz commented Nov 18, 2019

there was a merge conflict due to ARROW-6633. I've rebased

@pitrou
Copy link
Member Author

pitrou commented Nov 20, 2019

I've rebased for the uriparser vendoring, this should fix the R build on Windows.

Copy link
Member

@bkietz bkietz left a comment

Choose a reason for hiding this comment

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

CI is green, I'll merge this now

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.

5 participants