tree 8e4efa88c7ccb332a57d188c83bb83b721ddba56
parent bc4407c605a60c1f78b3b48b2fbca44bc45af2da
author danakj <danakj@chromium.org> 1646663414 -0500
committer Commit Bot <commit-bot@chromium.org> 1646851037 +0000

All accessible crates should be specified by a public --extern

Currently direct dependencies are added to the rustc command line as
`--extern cratename:path/to/rlib/file` which tells rustc how to resolve
any references to the crate. In compiler terms, it adds the dependency
crate to the currently-being-compiled crate's "extern prelude", making
it available throughout the crate.

GN uses public_deps to express that a dependency should be available
not just in the current crate but in anything that depends on it. That
means a crate that is reachable from the currently-compiling-crate
from a direct dependency + a chain-of-public_deps should also be
accessible to be used. To do so, it needs to appear in the extern
prelude by passing it to --extern.

Currently all transitive dependencies are represented on the command-
line via `-Ldependency=path/to/rlib/dir` in order for rustc to find
the crates, but this does not allow the currently-compiling-crate to
use them itself.

To resolve this issue, we add any crates publicly-accessible to the
list of externs, to be listed with the `--extern` flag. We also continue
to list them with `-Ldependency` in order for rustc to also find them
when used inside a dependency.

This is of special interest for dynamic libraries. If a rust dylib
depends on crate A via public_deps and crate B via deps, then a
target that makes use of the dylib should also gain access to crate
A without linking A into its own link target. This is now supported
as depending on the dylib would gain `--extern thedylib:path` as
well as `--extern A:path` on the rustc command line.

Along the way, we ensure that rust crate aliases written in the
currently-compiling-crate will apply not just to direct dependencies
but also to transitive public dependencies, and we add a unit test
for this case.

An example BUILD.gn that works after this change, but not without it:

rust_library("rust_repro_inner_lib") {
  sources = ["rust_repro_inner_lib.rs"]
  crate_root = "rust_repro_inner_lib.rs"
}

rust_library("rust_repro_dylib") {
  sources = ["rust_repro_dylib.rs"]
  crate_root = "rust_repro_dylib.rs"
  public_deps = [":rust_repro_inner_lib"]
}

shared_library("rust_repro_dylib_so") {
  public_deps = [":rust_repro_dylib"]
}

rust_library("rust_repro_lib") {
  sources = ["rust_repro_lib.rs"]
  crate_root = "rust_repro_lib.rs"
  public_deps = [":rust_repro_dylib_so"]
}

executable("rust_repro_bin") {
  sources = ["rust_repro_bin.rs"]
  crate_root = "rust_repro_bin.rs"
  deps = [ ":rust_repro_lib" ]
}

Without this change, rust_repro_bin.rs is unable to call functions in
rust_repro_dylib or rust_repro_inner_lib, though they are in the set of
accessible dependencies.

Bug: 276
Change-Id: I772b4728a848d9e54ffc876383990df2bf66bd42
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/13060
Reviewed-by: Brett Wilson <brettw@chromium.org>
Commit-Queue: Brett Wilson <brettw@google.com>
