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

On Windows, Git dependency with symlink source file fails to build #7466

Closed
azriel91 opened this issue Oct 1, 2019 · 1 comment · Fixed by rust-lang/git2-rs#527 or #7996
Closed
Labels
A-git Area: anything dealing with git C-bug Category: bug

Comments

@azriel91
Copy link

azriel91 commented Oct 1, 2019

Problem

Given a library crate contains a symlink as a source file, i.e. something.rs -> ../other/something.rs, when another crate depends on the library via a { git = ".." } dependency, then on Windows, the cloned dependency fails to build.

An example error message:

error[E0583]: file not found for module `log_disabled`
   --> D:\apps\gitlab_runner\.cargo\git\checkouts\rust-derive-builder-ac2766f218331415\67c9c95\derive_builder\src\lib.rs:576:5
    |
576 | mod log_disabled;
    |     ^^^^^^^^^^^^
    |
    = help: name the file either log_disabled.rs or log_disabled\mod.rs inside the directory "D:\apps\gitlab_runner\.cargo\git\checkouts\rust-derive-builder-ac2766f218331415\67c9c95\derive_builder\src"

Steps

  1. (On Windows!), create a crate with the following dependency:

    [dependencies]
    derive_builder = { git = "https://github.com/colin-kiegel/rust-derive-builder.git" }
    # commands:
    cargo init --lib builder_test
    cd builder_test
    cat >> Cargo.toml << EOF
    derive_builder = { git = "https://github.com/colin-kiegel/rust-derive-builder.git" }
    EOF
  2. cargo build

Possible Solution(s)

Not sure, but whatever cargo publish does, the consuming crate is able to build -- on the same commit, derive_builder = "0.8.0" builds successfully.

Notes

Output of cargo version: cargo 1.37.0-nightly (4c1fa54d1 2019-06-24)
OS: Windows 10 x64
Git: git version 2.23.0.windows.1
git config core.symlinks: true

cc: colin-kiegel/rust-derive-builder#149

@azriel91 azriel91 added the C-bug Category: bug label Oct 1, 2019
@ehuss
Copy link
Contributor

ehuss commented Oct 2, 2019

That's really strange! It looks like the issue is that libgit2 is creating symlinks with forward slashes, and those cannot be read. I have opened an upstream issue at libgit2/libgit2#5252.

@ehuss ehuss added the A-git Area: anything dealing with git label Oct 2, 2019
alexcrichton added a commit to alexcrichton/cargo that referenced this issue Mar 13, 2020
bors added a commit that referenced this issue Mar 13, 2020
ehuss pushed a commit to ehuss/cargo that referenced this issue Mar 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-git Area: anything dealing with git C-bug Category: bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants