mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Don't try to link C from rust doctests for nss detection
This is really annoying, since we can't use cfg(test) for doctests.
This commit is contained in:
parent
078debb0de
commit
a8ac21fbb5
@ -23,3 +23,9 @@ default = []
|
||||
test-c-from-rust = [
|
||||
"crypto/test-c-from-rust",
|
||||
]
|
||||
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
@ -30,3 +30,9 @@ rand_core = { version = "=0.2.0-pre.0", default-features = false }
|
||||
# execute with `cargo test`. Due to numerous linker issues (#25386), this is
|
||||
# currently disabled by default.
|
||||
test-c-from-rust = []
|
||||
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
6
src/rust/external/Cargo.toml
vendored
6
src/rust/external/Cargo.toml
vendored
@ -14,3 +14,9 @@ name = "external"
|
||||
path = "lib.rs"
|
||||
crate_type = ["rlib", "staticlib"]
|
||||
|
||||
[features]
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
@ -4,6 +4,11 @@ version = "0.0.1"
|
||||
name = "protover"
|
||||
|
||||
[features]
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
||||
[dependencies]
|
||||
libc = "=0.2.39"
|
||||
@ -27,4 +32,3 @@ path = "../tor_log"
|
||||
name = "protover"
|
||||
path = "lib.rs"
|
||||
crate_type = ["rlib", "staticlib"]
|
||||
|
||||
|
@ -10,7 +10,6 @@ use std::str::FromStr;
|
||||
use std::string::String;
|
||||
|
||||
use external::c_tor_version_as_new_as;
|
||||
use external::c_tor_is_using_nss;
|
||||
|
||||
use errors::ProtoverError;
|
||||
use protoset::ProtoSet;
|
||||
@ -125,6 +124,17 @@ impl From<Protocol> for UnknownProtocol {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature="test_linking_hack")]
|
||||
fn have_linkauth_v1() -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
#[cfg(not(feature="test_linking_hack"))]
|
||||
fn have_linkauth_v1() -> bool {
|
||||
use external::c_tor_is_using_nss;
|
||||
! c_tor_is_using_nss()
|
||||
}
|
||||
|
||||
/// Get a CStr representation of current supported protocols, for
|
||||
/// passing to C, or for converting to a `&str` for Rust.
|
||||
///
|
||||
@ -142,7 +152,7 @@ impl From<Protocol> for UnknownProtocol {
|
||||
///
|
||||
// C_RUST_COUPLED: protover.c `protover_get_supported_protocols`
|
||||
pub(crate) fn get_supported_protocols_cstr() -> &'static CStr {
|
||||
if c_tor_is_using_nss() {
|
||||
if ! have_linkauth_v1() {
|
||||
cstr!("Cons=1-2 \
|
||||
Desc=1-2 \
|
||||
DirCache=1-2 \
|
||||
|
@ -11,3 +11,9 @@ name = "smartlist"
|
||||
path = "lib.rs"
|
||||
crate_type = ["rlib", "staticlib"]
|
||||
|
||||
[features]
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
@ -11,3 +11,9 @@ name = "tor_allocate"
|
||||
path = "lib.rs"
|
||||
crate_type = ["rlib", "staticlib"]
|
||||
|
||||
[features]
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
@ -9,6 +9,11 @@ path = "lib.rs"
|
||||
crate_type = ["rlib", "staticlib"]
|
||||
|
||||
[features]
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
||||
[dependencies]
|
||||
libc = "0.2.39"
|
||||
|
@ -14,3 +14,9 @@ path = "../tor_util"
|
||||
[dependencies.protover]
|
||||
path = "../protover"
|
||||
|
||||
[features]
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
@ -17,3 +17,9 @@ path = "../tor_log"
|
||||
[dependencies]
|
||||
libc = "=0.2.39"
|
||||
|
||||
[features]
|
||||
# We have to define a feature here because doctests don't get cfg(test),
|
||||
# and we need to disable some C dependencies when running the doctests
|
||||
# because of the various linker issues. See
|
||||
# https://github.com/rust-lang/rust/issues/45599
|
||||
test_linking_hack = []
|
||||
|
@ -10,6 +10,7 @@ for cargo_toml_dir in "${abs_top_srcdir:-../../..}"/src/rust/*; do
|
||||
cd "${abs_top_builddir:-../../..}/src/rust" && \
|
||||
CARGO_TARGET_DIR="${abs_top_builddir:-../../..}/src/rust/target" \
|
||||
"${CARGO:-cargo}" test ${CARGO_ONLINE-"--frozen"} \
|
||||
--features "test_linking_hack" \
|
||||
${EXTRA_CARGO_OPTIONS} \
|
||||
--manifest-path "${cargo_toml_dir}/Cargo.toml" || exitcode=1
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user