5

I have a project that uses arrow and parquet. I downloaded and built the required libraries, and then successfully built my library. Now I want to migrate it to use conan, to simplify the build process.

The problem I'm facing is that most if not all the prebuilt binaries of arrow don't include parquet, at least for Windows.

This probably means that conan would download the recipe and build it. However, once I add parquet to my conanfile.txt, I get errors

Here's my conanfile.txt

[requires]
arrow/2.0.0
rapidjson/cci.20200410
catch2/2.13.6

[generators]
cmake

[options]
arrow:shared=False
arrow:parquet=True

These are the errors I get when I use conan install

>conan install ..
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
compiler.runtime=MD
compiler.version=14
os=Windows
os_build=Windows
[options]
[build_requires]
[env]

WARN: thrift/0.13.0: requirement boost/1.76.0 overridden by arrow/2.0.0 to boost/1.74.0
WARN: libevent/2.1.12: requirement openssl/1.1.1j overridden by thrift/0.13.0 to openssl/1.1.1k
ERROR: Permission denied for user: 'None'. [Remote: bincrafters:]

From the error, I'm assuming that the recipe has some version conflicts and can't continue, and that I need to do something like Using override, but I don't know how to effectively do this.

Other answers, including one in a very similar question assume that updating conan to the latest would fix this, but I already updated to version 1.38, to no avail.

Any hints?

EDIT 1:

First thing I found is that my remotes.json is outdated, pointing to bincrafters. This may indeed be the thing that is breaking my build. I'll post what I found later

JACH
  • 996
  • 11
  • 20

2 Answers2

6

First thing I found is that my remotes.json is outdated, pointing to bincrafters. This may indeed be the thing that is breaking my build. I'll post what I found later

Yes, you are right. This information and action was shared here: https://bincrafters.github.io/2020/04/19/infrastructure-changes-and-required-actions/

From the error, I'm assuming that the recipe has some version conflicts and can't continue, and that I need to do something like Using override, but I don't know how to effectively do this.

As all recipes are updated manually, so version conflicts occur from time to time. The correct fix for your problem is documented here: https://docs.conan.io/en/latest/faq/troubleshooting.html#error-incompatible-requirements-obtained-in-different-evaluations-of-requirements

Besides that, you can open an issue requesting for version update here: https://github.com/conan-io/conan-center-index/issues

uilianries
  • 3,363
  • 15
  • 28
1

I thought I'd document my findings since the information was not easy to come by:

First,

ERROR: Permission denied for user: 'None'. [Remote: bincrafters:]

This signaled that the remotes.json has a bad configuration. bincrafters is no longer around, but conan does a full stop if can't reach one of the remotes (the configuration was created by someone else a few years ago, and it is custom because it points also to company repositories).

Second:

Once the first error was cleared, the second answer was somewhat obvious:

I updated my conanfile.txt to force my recipe to use the latest boost and openssl (and therefore bypass the version conflict)

[requires]
arrow/2.0.0
rapidjson/cci.20200410
catch2/2.13.6
boost/1.76.0
openssl/1.1.1k

[generators]
cmake

[options]
arrow:shared=False
arrow:parquet=True
arrow:with_snappy=True

and then proceeded to install the conan dependencies, building the missing one:

conan install .. --build=arrow
JACH
  • 996
  • 11
  • 20