Files
pezkuwi-subxt/.gitlab/rust-features.sh
T
Dcompoze 002d9260f9 Fix spelling mistakes across the whole repository (#3808)
**Update:** Pushed additional changes based on the review comments.

**This pull request fixes various spelling mistakes in this
repository.**

Most of the changes are contained in the first **3** commits:

- `Fix spelling mistakes in comments and docs`

- `Fix spelling mistakes in test names`

- `Fix spelling mistakes in error messages, panic messages, logs and
tracing`

Other source code spelling mistakes are separated into individual
commits for easier reviewing:

- `Fix the spelling of 'authority'`

- `Fix the spelling of 'REASONABLE_HEADERS_IN_JUSTIFICATION_ANCESTRY'`

- `Fix the spelling of 'prev_enqueud_messages'`

- `Fix the spelling of 'endpoint'`

- `Fix the spelling of 'children'`

- `Fix the spelling of 'PenpalSiblingSovereignAccount'`

- `Fix the spelling of 'PenpalSudoAccount'`

- `Fix the spelling of 'insufficient'`

- `Fix the spelling of 'PalletXcmExtrinsicsBenchmark'`

- `Fix the spelling of 'subtracted'`

- `Fix the spelling of 'CandidatePendingAvailability'`

- `Fix the spelling of 'exclusive'`

- `Fix the spelling of 'until'`

- `Fix the spelling of 'discriminator'`

- `Fix the spelling of 'nonexistent'`

- `Fix the spelling of 'subsystem'`

- `Fix the spelling of 'indices'`

- `Fix the spelling of 'committed'`

- `Fix the spelling of 'topology'`

- `Fix the spelling of 'response'`

- `Fix the spelling of 'beneficiary'`

- `Fix the spelling of 'formatted'`

- `Fix the spelling of 'UNKNOWN_PROOF_REQUEST'`

- `Fix the spelling of 'succeeded'`

- `Fix the spelling of 'reopened'`

- `Fix the spelling of 'proposer'`

- `Fix the spelling of 'InstantiationNonce'`

- `Fix the spelling of 'depositor'`

- `Fix the spelling of 'expiration'`

- `Fix the spelling of 'phantom'`

- `Fix the spelling of 'AggregatedKeyValue'`

- `Fix the spelling of 'randomness'`

- `Fix the spelling of 'defendant'`

- `Fix the spelling of 'AquaticMammal'`

- `Fix the spelling of 'transactions'`

- `Fix the spelling of 'PassingTracingSubscriber'`

- `Fix the spelling of 'TxSignaturePayload'`

- `Fix the spelling of 'versioning'`

- `Fix the spelling of 'descendant'`

- `Fix the spelling of 'overridden'`

- `Fix the spelling of 'network'`

Let me know if this structure is adequate.

**Note:** The usage of the words `Merkle`, `Merkelize`, `Merklization`,
`Merkelization`, `Merkleization`, is somewhat inconsistent but I left it
as it is.

~~**Note:** In some places the term `Receival` is used to refer to
message reception, IMO `Reception` is the correct word here, but I left
it as it is.~~

~~**Note:** In some places the term `Overlayed` is used instead of the
more acceptable version `Overlaid` but I also left it as it is.~~

~~**Note:** In some places the term `Applyable` is used instead of the
correct version `Applicable` but I also left it as it is.~~

**Note:** Some usage of British vs American english e.g. `judgement` vs
`judgment`, `initialise` vs `initialize`, `optimise` vs `optimize` etc.
are both present in different places, but I suppose that's
understandable given the number of contributors.

~~**Note:** There is a spelling mistake in `.github/CODEOWNERS` but it
triggers errors in CI when I make changes to it, so I left it as it
is.~~
2024-03-26 13:57:57 +00:00

88 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
##############################################################################
#
# This script checks that crates to not carelessly enable features that
# should stay disabled. It's important to check that since features
# are used to gate specific functionality which should only be enabled
# when the feature is explicitly enabled.
#
# Invocation scheme:
# ./rust-features.sh <CARGO-ROOT-PATH>
#
# Example:
# ./rust-features.sh path/to/substrate
#
# The steps of this script:
# 1. Check that all required dependencies are installed.
# 2. Check that all rules are fulfilled for the whole workspace. If not:
# 4. Check all crates to find the offending ones.
# 5. Print all offending crates and exit with code 1.
#
##############################################################################
set -eu
# Check that cargo and grep are installed - otherwise abort.
command -v cargo >/dev/null 2>&1 || { echo >&2 "cargo is required but not installed. Aborting."; exit 1; }
command -v grep >/dev/null 2>&1 || { echo >&2 "grep is required but not installed. Aborting."; exit 1; }
# Enter the workspace root folder.
cd "$1"
echo "Workspace root is $PWD"
function main() {
feature_does_not_imply 'default' 'runtime-benchmarks'
feature_does_not_imply 'std' 'runtime-benchmarks'
feature_does_not_imply 'default' 'try-runtime'
feature_does_not_imply 'std' 'try-runtime'
}
# Accepts two feature names as arguments.
# Checks that the first feature does not imply the second one.
function feature_does_not_imply() {
ENABLED=$1
STAYS_DISABLED=$2
echo "📏 Checking that $ENABLED does not imply $STAYS_DISABLED ..."
# Check if the forbidden feature is enabled anywhere in the workspace.
# But only check "normal" dependencies, so no "dev" or "build" dependencies.
if cargo tree --no-default-features --locked --workspace -e features,normal --features "$ENABLED" | grep -qF "feature \"$STAYS_DISABLED\""; then
echo "$ENABLED implies $STAYS_DISABLED in the workspace"
else
echo "$ENABLED does not imply $STAYS_DISABLED in the workspace"
return
fi
# Find all Cargo.toml files but exclude the root one since we already know that it is broken.
CARGOS=`find . -name Cargo.toml -not -path ./Cargo.toml`
NUM_CRATES=`echo "$CARGOS" | wc -l`
FAILED=0
PASSED=0
echo "🔍 Checking all $NUM_CRATES crates - this takes some time."
for CARGO in $CARGOS; do
OUTPUT=$(cargo tree --no-default-features --locked --offline -e features,normal --features $ENABLED --manifest-path $CARGO 2>&1 || true)
if echo "$OUTPUT" | grep -qF "not supported for packages in this workspace"; then
# This case just means that the pallet does not support the
# requested feature which is fine.
PASSED=$((PASSED+1))
elif echo "$OUTPUT" | grep -qF "feature \"$STAYS_DISABLED\""; then
echo "❌ Violation in $CARGO by dependency:"
# Best effort hint for which dependency needs to be fixed.
echo "$OUTPUT" | grep -wF "feature \"$STAYS_DISABLED\"" | head -n 1
FAILED=$((FAILED+1))
else
PASSED=$((PASSED+1))
fi
done
echo "Checked $NUM_CRATES crates in total of which $FAILED failed and $PASSED passed."
echo "Exiting with code 1"
exit 1
}
main "$@"