Skip to content

Crate paths specified with --extern cause bogus duplicate crates when using symlinks #16496

Closed
@dotdash

Description

@dotdash

Build servo in a path that has a symlink in it currently fails, because the url crate is used in http as well as servo's net. Both are build with the crate for url specified using --extern, but the assigned paths end up differently:

DEBUG:rustc::metadata::creader:   name: url
DEBUG:rustc::metadata::creader:   cnum: 35
DEBUG:rustc::metadata::creader:   hash: 9b74b61cf9c6fb6a
DEBUG:rustc::metadata::creader:    rlib: /home/doener/src/servo/build/x86_64-unknown-linux-gnu/src/support/url/rust-url/liburl.rlib

DEBUG:rustc::metadata::creader:   name: url
DEBUG:rustc::metadata::creader:   cnum: 20
DEBUG:rustc::metadata::creader:   hash: 9b74b61cf9c6fb6a
DEBUG:rustc::metadata::creader:    rlib: /home/doener/storage/builds/servo/x86_64-unknown-linux-gnu/src/support/url/rust-url/liburl.rlib

One path has the symlink (the build dir in this case) resolved, the other doesn't. Looks like there's a call to realpath() missing from existing_match().

Unless somebody beats me to it, I'll create a PR later today or tomorrow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions