This is an automated email from the ASF dual-hosted git repository.

kszucs pushed a commit to branch maint-1.0.x
in repository https://gitbox.apache.org/repos/asf/arrow.git

commit b9ed76f1654008331826c3c4494d2c28072ba01d
Author: alamb <and...@nerdnetworks.org>
AuthorDate: Thu Jul 30 15:03:57 2020 -0600

    ARROW-9600: [Rust][Arrow] pin older version of proc-macro2 during build
    
    When used as a crate dependency, arrow-flight is rebuilt on every 
invocation of cargo build
    
    # Repro:
    
    Create a new repo, add `arrow=1.0.0` as a dependency, and then run `cargo 
build`
    
    *Expected behavior*: After the first successful invocation of `cargo 
build`, arrow-flight will not recompile if no other changes are made.
    
    *Actual behavior*: After every invocation of `cargo build`, arrow-flight is 
recompiled, even when nothing has changed
    
    Here is an example:
    
    Create a new crate
    ```
    alamb@ip-192-168-0-129 arrow_rebuilds % cargo new too_many_rebuilds --bin
    cargo new too_many_rebuilds --bin
         Created binary (application) `too_many_rebuilds` package
    ```
    
    Add arrow as a dependency in Cargo.toml:
    
    ```
    diff --git a/Cargo.toml b/Cargo.toml
    index a239680..44ed358 100644
    --- a/Cargo.toml
    +++ b/Cargo.toml
    @@ -5,3 +5,6 @@ authors = ["alamb <and...@nerdnetworks.org>"]
     edition = "2018"
    
     # See more keys and their definitions at 
https://doc.rust-lang.org/cargo/reference/manifest.html
    +
    +[dependencies]
    +arrow = "1.0.0"
    
    ```
    >
    Now, all invocations of `cargo build` will rebuild arrow, even though 
nothing in the code has changed:
    
    ```
    alamb@ip-192-168-0-129 too_many_rebuilds % cargo build
    cargo build
       Compiling arrow-flight v1.0.0
       Compiling arrow v1.0.0
       Compiling too_many_rebuilds v0.1.0 
(/Users/alamb/Software/bugs/arrow_rebuilds/too_many_rebuilds)
        Finished dev [unoptimized + debuginfo] target(s) in 8.70s
    alamb@ip-192-168-0-129 too_many_rebuilds % cargo build
    cargo build
       Compiling arrow-flight v1.0.0
       Compiling arrow v1.0.0
       Compiling too_many_rebuilds v0.1.0 
(/Users/alamb/Software/bugs/arrow_rebuilds/too_many_rebuilds)
        Finished dev [unoptimized + debuginfo] target(s) in 8.65s
    ```
    You can see what is happening by checking out a fresh copy of arrow/master 
(no Cargo.log) and running `cargo build` -- you'll see your local checkout has 
changes in rust/arrow-flight/src/arrow.flight.protocol.rs:
    
    There is more detail on https://issues.apache.org/jira/browse/ARROW-9600
    
    # Proposed Fix:
    This proposed patch pins to the same version of proc-macro2 that was used 
to create the currently checked in version of 
rust/arrow-flight/src/arrow.flight.protocol.rs.
    
    Alternately, I could pin to the newer version of proc-macro2 and update the 
checked in version of rust/arrow-flight/src/arrow.flight.protocol.rs.
    
    Closes #7867 from alamb/alamb/arrow-9600
    
    Authored-by: alamb <and...@nerdnetworks.org>
    Signed-off-by: Andy Grove <andygrov...@gmail.com>
---
 rust/arrow-flight/Cargo.toml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/rust/arrow-flight/Cargo.toml b/rust/arrow-flight/Cargo.toml
index 5d36c47..c15da50 100644
--- a/rust/arrow-flight/Cargo.toml
+++ b/rust/arrow-flight/Cargo.toml
@@ -35,8 +35,10 @@ futures = { version = "0.3", default-features = false, 
features = ["alloc"]}
 
 [build-dependencies]
 tonic-build = "0.2"
+# Pin specific version of the tonic-build dependencies to avoid auto-generated
+# (and checked in) arrow.flight.protocol.rs from changing
+proc-macro2="1.0.18"
 
 [lib]
 name = "flight"
 path = "src/lib.rs"
-

Reply via email to