Commits


Neal Richardson authored and Wes McKinney committed 1d588ab3524
ARROW-3758: [R] Build R library and dependencies on Windows in Appveyor CI After much trial and error, I have successfully built the C++ library using the R toolchain on our Appveyor, and then used that in installing and checking the R package. Here is a passing build: https://ci.appveyor.com/project/nealrichardson/arrow/builds/25406324 Importantly, this patch puts the Windows Rtools/mingw pkgbuild script under our source control and continuous integration, as well as the additional complex procedure for assembling the "rwinlib" build described [on the wiki](https://cwiki.apache.org/confluence/display/ARROW/Release+Management+Guide#ReleaseManagementGuide-UpdatingRpackages). In the process, this patch also updates the `r/configure.win` script to work with the latest version of Arrow and it addresses some test failures that occur on Windows (more below). One side effect of this CI setup is that the binary build artifacts (e.g. https://ci.appveyor.com/api/buildjobs/rkp1pu42dr2d5yev/artifacts/build%2Farrow-0.13.0.9000.zip) are now available for download and use on every commit. It is a small step from here to publishing those dev artifacts on each commit (as Jeroen's rtools-packages/backports repos to) or doing so nightly. This would enable R users/developers on Windows to install the development version of `arrow` without requiring the entire C++ toolchain. Items resolved since the initial PR: - [x] Need to work out the right Windows incantations to find and pass in the path to the built C++ library to the R build script. The way I'm doing it now isn't totally kosher, but it's good enough for CI purposes and wouldn't affect the CRAN procedure. This is possibly deferable. - [x] Cleanup: need to uncomment the other appveyor jobs, obviously - [x] Add Windows dev installation instructions to the R README, currently nonexistent. (Doing on https://issues.apache.org/jira/browse/ARROW-5555) - [x] I need to confirm (with Jeroen) that it's ok to put the Apache license on the PKGBUILD script (copied with some modifications from [rtools-backports](https://github.com/r-windows/rtools-backports/blob/master/mingw-w64-arrow/PKGBUILD)) and appveyor-build-r.sh, which [is inspired by rtools-backports](https://github.com/r-windows/rtools-backports/blob/master/ci-build.sh) too. Seems uncontroversial to me but IANAL. Followup items: * The C++ library was built without Snappy support, which means that Parquet support will be limited in practice. I had to skip the one test that used a fixture .parquet file (which happened to use snappy compression). https://issues.apache.org/jira/browse/ARROW-5683 to address that. * I'd like to review this with Jeroen, the RTools maintainer. This works in the Appveyor job, and I've installed the R package on my local VM using the build that the Appveyor job creates, but there are a lot of subtleties in the R Windows toolchain and I am not confident that I've gotten them all right. https://issues.apache.org/jira/browse/ARROW-5686 Author: Neal Richardson <neal.p.richardson@gmail.com> Closes #4622 from nealrichardson/r-appveyor-part2 and squashes the following commits: 294a9797f <Neal Richardson> Review feedback 9009969d9 <Neal Richardson> Merge remote-tracking branch 'upstream/master' into r-appveyor-part2 234dc93fb <Neal Richardson> Merge remote-tracking branch 'upstream/master' into r-appveyor-part2 c39d7e9c7 <Neal Richardson> Some cleanup 9f560f1d2 <Neal Richardson> Try absolute path; add more debug messages f5f6da2f9 <Neal Richardson> Try this to pass in the local rwinlib 14520fdfc <Neal Richardson> Read version from DESCRIPTION in build script; look elsewhere to set env var 51a6069b1 <Neal Richardson> Merge upstream/master 976bdb291 <Neal Richardson> Skip tests that fail on windows. Attempt to pass in local built rwinlib via env var cce770092 <Neal Richardson> Oops 1ba73c2c4 <Neal Richardson> Fix wonky URLs b302acfa3 <Neal Richardson> Fix path, store .zip artifact e4e127bff <Neal Richardson> Assemble built libraries for rwinlib. Adjust configure.win flags. Temporary hack to test out the R package with the built libs 21304b9c5 <Neal Richardson> quote c7cdfd580 <Neal Richardson> Try to collect the built packages as artifacts 46cf050a5 <Neal Richardson> Try installing Antoine's patch a2800109c <Neal Richardson> Now that that passes, update PKGBUILD to build from master 9c44946c4 <Neal Richardson> Reset PKGBUILD to backports version 994c394cf <Neal Richardson> this is the dir 3f0d2441e <Neal Richardson> prints 46181a0fd <Neal Richardson> more sigh 27aaf7fef <Neal Richardson> try to find dir again 5de658bdf <Neal Richardson> Sigh 72372a658 <Neal Richardson> See if building 0.13 works 541d4555b <Neal Richardson> ? c2eacc759 <Neal Richardson> '' ed554f487 <Neal Richardson> Try adding PATH 983345023 <Neal Richardson> Recomment these ca826c34e <Neal Richardson> Try pacman.conf d86c66cdd <Neal Richardson> Merge upstream/master 306661463 <Neal Richardson> Path to cpp f33a094ff <Neal Richardson> fix dir cc3d9a4df <Neal Richardson> echo d89edfea3 <Neal Richardson> Touch to trigger build 50dbbec19 <Neal Richardson> Debug PKGBUILD 5a10965c2 <Neal Richardson> More verbosity 7ab79fa93 <Neal Richardson> This was important 0d3ffeddd <Neal Richardson> Slightly larger cargo 4755f8797 <Neal Richardson> Try this in a bash script dad5f2d7c <Neal Richardson> More paths' e621b3455 <Neal Richardson> Add paths 5837c243c <Neal Richardson> this is redundant 29ea6af63 <Neal Richardson> Install more stuff 6add01f79 <Neal Richardson> Let's see how badly this fails 6d6a74e31 <Neal Richardson> PR feedback 84eef1b2d <Neal Richardson> Merge upstream/master 328bc376f <Neal Richardson> Merge remote-tracking branch 'upstream/master' into r-appveyor 53c3a2084 <Neal Richardson> Makevars.win is dynamically generated now, no need to tweak it in the release script 567f04142 <Neal Richardson> Cleanups f4cf5c3dd <Neal Richardson> Some appveyor.yml cleanup 19b60df07 <Neal Richardson> Enable R package to install on windows even if rwinlib isn't found fb199110a <Neal Richardson> Try this name hack 15c0342d1 <Neal Richardson> Try building first, see where that goes 18803c353 <Neal Richardson> cd this way b6f6c8de7 <Neal Richardson> No popd? 1ba4839e2 <Neal Richardson> let the debugging begin d5e8f4ed4 <Neal Richardson> Bootstrap within the package dir f7327ed23 <Neal Richardson> Find shell script up a level 8c3e898f8 <Neal Richardson> nm we already fast finish 39236f3f7 <Neal Richardson> Put mine first and fast-finish 94c9a42df <Neal Richardson> Debug with fewer jobs in the matrix af1852e79 <Neal Richardson> Throw this at appveyor and see how far off we are