Check more targets

This commit is contained in:
trinity-1686a 2022-11-10 13:34:17 +00:00 committed by Ian Jackson
parent e3c3bc797b
commit 614cf34284
11 changed files with 143 additions and 9 deletions

View File

@ -308,6 +308,16 @@ coverage-aggregated:
tags:
- amd64
check-targets:
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
stage: test
image: rust:latest
script:
- ./maint/cargo_check_target -il
after_script:
- cargo clean
pages:
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_REF_NAME == "main"

View File

@ -12,14 +12,14 @@ categories = ["network-programming", "cryptography"]
repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
[features]
default = ["tokio", "native-tls"]
default = ["tokio", "native-tls", "compression"]
# "full" is a top-level selector that turns on every feature, _EXCEPT FOR_:
# * Features that are experimental or unstable
# * Features that are testing-only
# * Features which are select a particular implementation or build flag and
# which therefore are not strictly additive.
# * Features which may introduce unnecessary licensing restrictions.
full = ["tokio", "async-std", "native-tls", "tor-rtcompat/full", "tor-proto/full", "tor-netdoc/full", "tor-dirmgr/full"]
full = ["tokio", "async-std", "native-tls", "compression", "tor-rtcompat/full", "tor-proto/full", "tor-netdoc/full", "tor-dirmgr/full"]
async-std = ["tor-rtcompat/async-std"]
bridge-client = ["tor-guardmgr/bridge-client"]
@ -35,6 +35,8 @@ static-native-tls = ["tor-rtcompat/static", "native-tls"]
accel-sha1-asm = ["tor-llcrypto/with-sha1-asm"]
accel-openssl = ["tor-llcrypto/with-openssl"]
compression = ["tor-dirmgr/compression"]
# Enable experimental APIs that are not yet officially supported.
#
# These APIs are not covered by semantic versioning. Using this
@ -78,7 +80,7 @@ tor-chanmgr = { path = "../tor-chanmgr", version = "0.7.0" }
tor-checkable = { path = "../tor-checkable", version = "0.3.0" }
tor-circmgr = { path = "../tor-circmgr", version = "0.6.0" }
tor-config = { path = "../tor-config", version = "0.6.0" }
tor-dirmgr = { path = "../tor-dirmgr", version = "0.8.0" }
tor-dirmgr = { path = "../tor-dirmgr", version = "0.8.0", default-features = false, features = ["mmap"] }
tor-error = { path = "../tor-error", version = "0.3.2" }
tor-guardmgr = { path = "../tor-guardmgr", version = "0.7.0" }
tor-llcrypto = { path = "../tor-llcrypto", version = "0.3.5" }

View File

@ -159,6 +159,8 @@ about these features.
[native-tls](https://github.com/sfackler/rust-native-tls) crate for TLS
support
* `async-std` -- build with [async-std](https://async.rs/) support
* `compression` (default) -- Build support for downloading compressed
documents. Requires a C compiler.
* `full` -- Build with all features above, along with all stable additive
features from other arti crates. (This does not include experimental

View File

@ -12,9 +12,9 @@ categories = ["command-line-utilities", "cryptography"]
repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
[features]
default = ["tokio", "native-tls", "dns-proxy", "harden"]
default = ["tokio", "native-tls", "dns-proxy", "harden", "compression"]
full = ["async-std", "tokio", "native-tls", "journald", "arti-client/full", "dns-proxy", "harden"]
full = ["async-std", "tokio", "native-tls", "journald", "arti-client/full", "dns-proxy", "harden", "compression"]
async-std = [
"arti-client/async-std",
@ -40,6 +40,8 @@ journald = ["tracing-journald"]
accel-sha1-asm = ["arti-client/accel-sha1-asm"]
accel-openssl = ["arti-client/accel-openssl"]
compression = ["arti-client/compression"]
# This feature flag enables experimental features that are not supported. Turning it on may
# void your API.
experimental = ["arti-client/experimental", "experimental-api"]

View File

@ -121,6 +121,8 @@ work.
DNS queries over the Tor network.
* `harden` (default) -- Build with support for hardening the Arti process by
disabling debugger attachment and other local memory-inspection vectors.
* `compression` (default) -- Build support for downloading compressed
documents. Requires a C compiler.
* `full` -- Build with all features above, along with all stable additive
features from other arti crates. (This does not include experimental

View File

@ -12,13 +12,14 @@ categories = ["network-programming", "cryptography"]
repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
[features]
default = ["mmap"]
default = ["mmap", "compression"]
full = ["routerdesc"]
experimental = ["experimental-api", "dirfilter", "bridge-client"]
bridge-client = ["tor-circmgr/specific-relay", "tor-guardmgr/bridge-client", "routerdesc"]
mmap = ["memmap2"]
static = ["rusqlite/bundled"]
compression = ["tor-dirclient/xz", "tor-dirclient/zstd"]
# (Incomplete) support for downloading and storing router descriptors
routerdesc = ["tor-dirclient/routerdesc"]
dirfilter = []
@ -63,7 +64,7 @@ tor-checkable = { path = "../tor-checkable", version = "0.3.0" }
tor-circmgr = { path = "../tor-circmgr", version = "0.6.0" }
tor-config = { path = "../tor-config", version = "0.6.0" }
tor-consdiff = { path = "../tor-consdiff", version = "0.3.0" }
tor-dirclient = { path = "../tor-dirclient", version = "0.5.0" }
tor-dirclient = { path = "../tor-dirclient", version = "0.5.0", default-features = false }
tor-error = { path = "../tor-error", version = "0.3.2" }
tor-guardmgr = { path = "../tor-guardmgr", version = "0.7.0" }
tor-llcrypto = { path = "../tor-llcrypto", version = "0.3.5" }

View File

@ -26,6 +26,9 @@ reading large directory objects from disk.
`routerdesc` -- (Incomplete) support for downloading and storing
router descriptors.
`compression` (default) -- Build support for downloading compressed
documents. Requires a C compiler.
### Experimental and unstable features
Note that the APIs enabled by these features are NOT covered by

View File

@ -77,7 +77,7 @@ age and the difficulty of working with them.
We currently have automated tests on Linux only. On OSX and Windows, we
have automated builds, but the tests are not (yet) run. In the long
run, we aim to have automated builds and testing for all of our these
run, we aim to have automated builds and testing for all of these
platforms.
All other modern Free operating systems are **community-supported**:

109
maint/cargo_check_target Executable file
View File

@ -0,0 +1,109 @@
#!/bin/bash
set -euo pipefail
SCRIPT_NAME=$(basename "$0")
# all targets with status "maintained" or higher"
# this should match `rustup target list | grep -E '(linux|windows|ios|darwin)' | grep -E '(arm|i.86|x86|aarch|thumb)'`
MAINTAINED_PLATFORMS=(
"aarch64-apple-darwin"
"aarch64-apple-ios"
"aarch64-apple-ios-sim"
"aarch64-linux-android"
"aarch64-pc-windows-msvc"
"aarch64-unknown-linux-gnu"
"aarch64-unknown-linux-musl"
#"arm-linux-androideabi" AtomicU64 not supported; breaks coarsetime
"arm-unknown-linux-gnueabi"
"arm-unknown-linux-gnueabihf"
"arm-unknown-linux-musleabi"
"arm-unknown-linux-musleabihf"
#"armv5te-unknown-linux-gnueabi" AtomicU64 not supported; breaks coarsetime
#"armv5te-unknown-linux-musleabi" AtomicU64 not supported; breaks coarsetime
"armv7-linux-androideabi"
"armv7-unknown-linux-gnueabi"
"armv7-unknown-linux-gnueabihf"
"armv7-unknown-linux-musleabi"
"armv7-unknown-linux-musleabihf"
#"i586-pc-windows-msvc" trait `Zeroize` is not implemented for `__m128i`; breaks aes
#"i586-unknown-linux-gnu" trait `Zeroize` is not implemented for `__m128i`; breaks aes
#"i586-unknown-linux-musl" trait `Zeroize` is not implemented for `__m128i`; breaks aes
"i686-linux-android"
"i686-pc-windows-gnu"
"i686-pc-windows-msvc"
"i686-unknown-linux-gnu"
"i686-unknown-linux-musl"
"thumbv7neon-linux-androideabi"
"thumbv7neon-unknown-linux-gnueabihf"
"x86_64-apple-darwin"
"x86_64-apple-ios"
"x86_64-linux-android"
"x86_64-pc-windows-gnu"
"x86_64-pc-windows-msvc"
"x86_64-unknown-linux-gnu"
"x86_64-unknown-linux-gnux32"
"x86_64-unknown-linux-musl"
)
# SUPPORTTARGET, excluding emulators (x86 android...), and unusual combo (Windows on ARM...)
SUPPORTTARGETED_PLATFORMS=(
"aarch64-apple-darwin"
"aarch64-apple-ios"
"aarch64-linux-android"
"aarch64-unknown-linux-gnu"
"armv7-linux-androideabi"
"i686-pc-windows-gnu"
"i686-unknown-linux-gnu"
"x86_64-apple-darwin"
"x86_64-pc-windows-gnu"
"x86_64-pc-windows-msvc"
"x86_64-unknown-linux-gnu"
"x86_64-unknown-linux-musl"
)
function usage()
{
cat <<EOF
${SCRIPT_NAME}: Check arti for many targets, with parameters minimising dependancies
on platform dependant tooling.
Usage:
cargo_check_target [opts] : Run cargo check for many targets.
Options:
-h: Print this message.
-i: Install the target if they are missing
-l: Longer test, test ${#MAINTAINED_PLATFORMS[@]} targets instead of ${#SUPPORTTARGETED_PLATFORMS[@]}.
EOF
}
install=no
to_build=("${SUPPORTTARGETED_PLATFORMS[@]}")
while getopts "hil" opt ; do
case "$opt" in
h) usage
exit 0
;;
i) install=yes
;;
l) to_build=("${MAINTAINED_PLATFORMS[@]}")
;;
*) echo "Unknown option."
exit 1
;;
esac
done
if [ "$install" = "yes" ]; then
rustup target add "${to_build[@]}"
fi
CC=$(realpath "$(dirname "$0")")/stunt/fake-cc
export CC
for target in "${to_build[@]}" ; do
echo "Testing $target"
# don't include "compression" as it requires a C compiler for the given target
PKG_CONFIG_ALLOW_CROSS=1 cargo check -p arti --no-default-features --features tokio,native-tls,dns-proxy,harden --target "$target"
done
rm "$CC"

3
maint/stunt/fake-cc Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
# this is made to convince openssl-sys we have a working compiler for the target it wants
echo RUST_VERSION_OPENSSL_0x101010efL

View File

@ -20,7 +20,7 @@ Options:
-s: Skip generating a final report.
-f <format>: format to use when generating coverage report. one of html (default), ade,
lcov, coveralls, coveralls+, files, covdir, or cobertura
-o <path>: set the output path for the coverage report (defaiult "coverage")
-o <path>: set the output path for the coverage report (default "coverage")
Notes:
You need to have grcov and llvm-tools-preview installed.