Skip to content
This repository was archived by the owner on Feb 28, 2023. It is now read-only.
This repository was archived by the owner on Feb 28, 2023. It is now read-only.

Unexpected rebuild around std::option_env!() usage #166

@Guiguiprim

Description

@Guiguiprim

A dependency that use std::option_env!() cause systematic rebuild.

In my case: the dependency is the crate obfstr since version 0.4.0. It tries to read OBFSTR_SEED that I do not define.

From a small investigation it looks like meta-data saved by rustc about environment variable dependency is different when build with cachepot. # env-dep:OBFSTR_SEED became # env-dep:OBFSTR_SEED= which I guess triggers the rebuild by cachepot because the variable is not defined and it was expected to be defined empty.

> cargo init test-proj
> cd test-proj
> cargo add obfstr # needs obfstr ~0.4.0

# First build without cachepot
> cargo run
> grep "env-dep" target/debug/deps/*.d
target/debug/deps/obfstr-fb744c55b2eda770.d:# env-dep:OBFSTR_SEED
> cargo run 
# no rebuild

# First build with cachepot
> export RUSTC_WRAPPER=cachepot
> rm -rf target
> cachepot --clear-cache # to be clean
> cargo run
> grep "env-dep" target/debug/deps/*.d
target/debug/deps/obfstr-fb744c55b2eda770.d:# env-dep:OBFSTR_SEED=
> cargo run 
# rebuild from obfstr crate

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions