Skip to content
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

Build failure #212

Open
HolgerPeters opened this issue Mar 4, 2025 · 1 comment
Open

Build failure #212

HolgerPeters opened this issue Mar 4, 2025 · 1 comment

Comments

@HolgerPeters
Copy link

I am on MacOS, using rustup and stable toolchain.

cargo build --features azure leads to the following build failure

   Compiling seq-macro v0.3.6
error[E0034]: multiple applicable items in scope
   --> /Users/holger/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/arrow-arith-53.4.0/src/temporal.rs:91:36
    |
91  |         DatePart::Quarter => |d| d.quarter() as i32,
    |                                    ^^^^^^^ multiple `quarter` found
    |
note: candidate #1 is defined in the trait `ChronoDateExt`
   --> /Users/holger/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/arrow-arith-53.4.0/src/temporal.rs:637:5
    |
637 |     fn quarter(&self) -> u32;
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
note: candidate #2 is defined in the trait `Datelike`
   --> /Users/holger/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chrono-0.4.40/src/traits.rs:47:5
    |
47  |     fn quarter(&self) -> u32 {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^
help: disambiguate the method for candidate #1
    |
91  |         DatePart::Quarter => |d| ChronoDateExt::quarter(&d) as i32,
    |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
help: disambiguate the method for candidate #2
    |
91  |         DatePart::Quarter => |d| Datelike::quarter(&d) as i32,
    |                                  ~~~~~~~~~~~~~~~~~~~~~

   Compiling zstd v0.13.3

cargo add arrow-arith fixes the issue, then I stumble into different strum versions colliding:

   Compiling deltalake-core v0.23.1 (https://github.com/buoyant-data/delta-rs?branch=default-engine-rustls#4a0fdea8)
   Compiling kafka-delta-ingest v0.4.0 (/Users/holger/ext/kafka-delta-ingest)
error[E0308]: mismatched types
   --> /Users/holger/.cargo/git/checkouts/delta-rs-21d93be165b8c8e2/4a0fdea/crates/core/src/kernel/models/actions.rs:488:9
    |
487 |     fn try_from(value: &TableFeatures) -> Result<Self, Self::Error> {
    |                                           ------------------------- expected `Result<ReaderFeatures, strum::ParseError>` because of return type
488 |         ReaderFeatures::try_from(value.as_ref())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `strum::ParseError`, found a different `strum::ParseError`
    |
note: two different versions of crate `strum` are being used; two types coming from two different versions of the same crate are different types even if they look the same
    |
   ::: /Users/holger/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/strum-0.27.1/src/lib.rs:42:1
    |
42  | pub enum ParseError {
    | ^^^^^^^^^^^^^^^^^^^ this is the expected type `strum::ParseError`
   --> /Users/holger/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/strum-0.26.3/src/lib.rs:42:1
    |
42  | pub enum ParseError {
    | ^^^^^^^^^^^^^^^^^^^ this is the found type `strum::ParseError`
    |
   ::: /Users/holger/.cargo/git/checkouts/delta-rs-21d93be165b8c8e2/4a0fdea/crates/core/src/kernel/models/actions.rs:485:18
    |
485 |     type Error = strum::ParseError;
    |                  ----- one version of crate `strum` used here, as a direct dependency of the current crate
    |
   ::: /Users/holger/.cargo/git/checkouts/delta-rs-21d93be165b8c8e2/4a0fdea/crates/core/src/kernel/mod.rs:4:5
    |
4   | use delta_kernel::engine::arrow_expression::ArrowExpressionHandler;
    |     ------------ one version of crate `strum` used here, as a dependency of crate `delta_kernel`
    = help: you can use `cargo tree` to explore your dependency tree
@noahshpak
Copy link

There's likely a better fix that requires pulling upstream from the buoyant-data forks but for me I did two things:

  1. Set a precise version for chrono in kafka-delta-ingest (chrono = "=0.4.39")
  2. Fork bouyant-data/delta-rs and set an explicit strum version (commit)
  3. Point kafka-delta-ingest to my fork

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

No branches or pull requests

2 participants