-
Notifications
You must be signed in to change notification settings - Fork 975
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
[bug] Impossible to build latest Arrow with parquet? #14587
Comments
Hi @kevin-mcvey
Thanks for your feedback and your kind words! :) Keep the feedback coming and we will keep trying our best to further improve and support it.
I think the first step could be not adding the dependencies directly. The def requirements(self):
if self.options.with_thrift:
self.requires("thrift/0.17.0")
if self.options.with_protobuf:
self.requires("protobuf/3.21.9")
if self.options.with_jemalloc:
self.requires("jemalloc/5.3.0")
if self.options.with_mimalloc:
self.requires("mimalloc/1.7.6")
if self.options.with_boost:
self.requires("boost/1.81.0") That means, it has options to control its conditional dependencies, as long as the options are activated, it shouldn't be necessary to add the dependencies yourself. If this is not working, it is possible that the recipe is not working correctly. ConanCenter can only build the default configurations, so other I am trying: class CoralCConan(ConanFile):
name = 'MyProject'
version = '1.0.0'
description = 'A test project'
generators = ('CMakeDeps')
requires = ('arrow/12.0.1')
def configure(self):
self.options['arrow'].parquet = True
self.options["arrow"].with_thrift = True And what I get is a conflict:
Was this the reason that made you add the |
Hi @memsharded , thank you for the lightning-fast reply!
Yes, that's exactly why I started adding packages directly to the Step 1: # Same name, version, generators, and build policy as before
requires = (
'arrow/12.0.1',
)
def configure(self):
self.options['arrow'].parquet = True With this configuration,
Step 2: # Same name, version, generators, and build policy as before
requires = (
'arrow/12.0.1',
)
def configure(self):
self.options['arrow'].parquet = True
self.options['arrow'].with_boost = True However that yields the following error log:
Step 3: # Same name, version, generators, and build policy as before
requires = (
'arrow/12.0.1',
)
def configure(self):
self.options['arrow'].parquet = True
self.options['arrow'].with_boost = True
self.options['arrow'].with_thrift = True However that yields the version conflict you mentioned above.
Step 4: |
It seems arrow got some very recent changes, it might be worth trying again. @danimtb will be having a look, he did some of these changes. |
Hi @kevin-mcvey, I worked recently updating the arrow recipe on conan center at conan-io/conan-center-index#19380 and it should be working fine with conan v2. I have tested your consumer recipe and got to the same version conflict of boost you pointed out. Anyway, since this is a pretty common scenario, here you can see how to overcome the version conflict of boost for your case. conanfile.py
Using Also, since you require a package that has different option values than the default ones, you will need to build it from sources (this configuration is not available as package in conan center):
I have also opened a new PR on conan-center-index to update the version of the boost requirement in the arrow recipe conan-io/conan-center-index#19465 It will avoid adding the Thank you for reporting and hope it helps! |
Wow, thank you so much for the assistance @danimtb ! Confirmed that using the override flag on my Boost dependency does resolve the version conflict. Additionally, re-confirming that adding the And also thank you for putting together that conan-center-index PR on my behalf! I guess an approval from some random Conan user isn't helpful but ... ship it! |
Thank you for the feedback @kevin-mcvey, glad it did the trick! 😄 |
Environment details
Steps to reproduce
First of all, thank you all very much for your hard work on Conan. I love the tool and get a ton of use out of it. :)
Onto my issue: I'm trying to install Arrow with the
with_parquet=True
option on the latest version of Conan. However, this appears to be impossible due to mismatched requirements. To demonstrate this, I've got a minimal Conanfile in a fresh Ubuntu 22.04 installation:I then attempt to install:
conan install conanfile.py --build=missing
Note that Boost and Thrift are added as requirements. This is for the following reasons:
with_boost = True
), Arrow will fail to build with a message ofCould NOT find Boost (missing: Boost_INCLUDE_DIR) (Required is at least version "1.58")
Could NOT find ThriftAlt: Found unsuitable version "", but required is at least "0.11.0" (found ThriftAlt_LIB-NOTFOUND)
Unfortunately, adding Thrift does not appear to resolve the latter issue. I'm hoping there's something obvious I'm missing. Thank you so much in advance for your support!
Logs
(I can attach more complete logs if needed!)
The text was updated successfully, but these errors were encountered: