-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathMakefile
More file actions
136 lines (100 loc) · 4.24 KB
/
Makefile
File metadata and controls
136 lines (100 loc) · 4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
RUST_TOOLCHAIN_NIGHTLY = nightly-2026-01-22
SOLANA_CLI_VERSION = 3.1.11
nightly = +${RUST_TOOLCHAIN_NIGHTLY}
# This is a bit tricky -- findstring returns the found string, so we're looking
# for "directory-", returning that, and replacing "-" with "/" to change the
# first "-" to a "/". But if it isn't found, we replace "" with "", which works
# in the case where there is no subdirectory.
pattern-dir = $(firstword $(subst -, ,$1))
find-pattern-dir = $(findstring $(call pattern-dir,$1)-,$1)
make-path = $(subst $(call find-pattern-dir,$1),$(subst -,/,$(call find-pattern-dir,$1)),$1)
rust-toolchain-nightly:
@echo ${RUST_TOOLCHAIN_NIGHTLY}
solana-cli-version:
@echo ${SOLANA_CLI_VERSION}
cargo-nightly:
cargo $(nightly) $(ARGS)
audit:
cargo audit \
--ignore RUSTSEC-2022-0093 \
--ignore RUSTSEC-2024-0344 \
$(ARGS)
spellcheck:
cargo spellcheck --code 1 $(ARGS)
format-check-js-%:
cd $(call make-path,$*) && pnpm install && pnpm format $(ARGS)
lint-js-%:
cd $(call make-path,$*) && pnpm install && pnpm lint $(ARGS)
test-js-%:
make restart-test-validator
cd $(call make-path,$*) && pnpm install && pnpm build && pnpm test $(ARGS)
make stop-test-validator
setup-py-venv-%:
cd $(call make-path,$*) \
&& python3 -m venv venv \
&& ./venv/bin/pip3 install -r requirements.txt \
&& ./venv/bin/pip3 install -r optional-requirements.txt
format-check-py-%:
make setup-py-venv-$*
cd $(call make-path,$*) && ./venv/bin/flake8 --exclude venv
lint-py-%:
make setup-py-venv-$*
cd $(call make-path,$*) && ./venv/bin/mypy --exclude venv .
test-py-%:
make setup-py-venv-$*
cd $(call make-path,$*) && ./venv/bin/python3 -m pytest
clippy-%:
cargo $(nightly) clippy --manifest-path $(call make-path,$*)/Cargo.toml \
--all-targets \
--all-features \
-- \
--deny=warnings \
--deny=clippy::default_trait_access \
--deny=clippy::arithmetic_side_effects \
--deny=clippy::manual_let_else \
--deny=clippy::used_underscore_binding $(ARGS)
format-check-%:
cargo $(nightly) fmt --check --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
powerset-%:
cargo $(nightly) hack check --feature-powerset --all-targets --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
semver-check-%:
cargo semver-checks --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
shellcheck:
git ls-files -- '*.sh' | xargs shellcheck --color=always --external-sources --shell=bash $(ARGS)
sort-check:
cargo $(nightly) sort --workspace --check $(ARGS)
bench-%:
cargo $(nightly) bench --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
format-rust:
cargo $(nightly) fmt --all $(ARGS)
build-sbf-%:
cargo build-sbf --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
build-wasm-%:
cargo build --target wasm32-unknown-unknown --manifest-path $(call make-path,$*)/Cargo.toml --all-features $(ARGS)
build-doc-%:
RUSTDOCFLAGS="--cfg docsrs -D warnings" cargo $(nightly) doc --all-features --no-deps --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
test-doc-%:
cargo $(nightly) test --doc --all-features --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
test-%:
SBF_OUT_DIR=$(PWD)/target/deploy cargo $(nightly) test --manifest-path $(call make-path,$*)/Cargo.toml $(ARGS)
restart-test-validator:
./scripts/restart-test-validator.sh
stop-test-validator:
pkill -f solana-test-validator
generate-clients:
pnpm generate:clients $(ARGS)
# Helpers for publishing
tag-name = $(lastword $(subst /, ,$(call make-path,$1)))
preid-arg = $(subst pre,--preid $2,$(findstring pre,$1))
package-version = $(subst ",,$(shell jq -r '.version' $(call make-path,$1)/package.json))
crate-version = $(subst ",,$(shell toml get $(call make-path,$1)/Cargo.toml package.version))
git-tag-js-%:
@echo "$(call tag-name,$*)@v$(call package-version,$*)"
publish-js-%:
cd "$(call make-path,$*)" && pnpm install && pnpm version $(LEVEL) --no-git-tag-version $(call preid-arg,$(LEVEL),$(TAG)) && pnpm publish --no-git-checks --tag $(TAG)
git-tag-rust-%:
@echo "$(call tag-name,$*)@v$(call crate-version,$*)"
publish-rust-%:
cd "$(call make-path,$*)" && cargo release $(LEVEL) --tag-name "$(call tag-name,$*)@v{{version}}" --execute --no-confirm --dependent-version fix
publish-rust-dry-run-%:
cd "$(call make-path,$*)" && cargo release $(LEVEL) --tag-name "$(call tag-name,$*)@v{{version}}"