#!/bin/bash # # Copyright 2021 Signal Messenger, LLC. # SPDX-License-Identifier: AGPL-3.0-only # # To keep code size down, we try to avoid depending on multiple versions of crates. # # For now, these dependencies have conflicting requirements. # You can use the `cargo tree` command below to see where they come from, # and then document them here. # # bitflags: # mostly provides a macro, with only a small bit of code that actually # makes it into the final build. EXPECTED=" bitflags v1.3.2 bitflags v2.3.3" check_cargo_tree() { # Only check the mobile targets, where we care most about code size. cargo tree --quiet --duplicates --edges normal,no-proc-macro \ --workspace --all-features --locked \ --target aarch64-apple-ios \ --target armv7-linux-androideabi \ --target aarch64-linux-android \ "$@" } if [[ "$(check_cargo_tree --depth 0 | sort -u -V)" != "${EXPECTED}" ]]; then check_cargo_tree exit 1 fi