mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-25 18:47:56 +00:00
002d9260f9
**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.~~
88 lines
3.1 KiB
Bash
Executable File
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 "$@"
|
|
|