mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 12:54:11 +08:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/58623 This splits out everything shellcheck related into its own job that generates and checks GHA workflows, then shellchecks those + jenkins scripts. This PR also integrates shellcheck into the changed-only stuff in `actions_local_runner.py` so that shellcheck won't do anything unless someone edits a shell script in their local checkout. This is the final piece to clean up the output of `make quicklint` and speeds it up by a good bit (before it was shellchecking everything which took a few seconds): ``` $ make quicklint -j $(nproc) ✓ quick-checks: Ensure no unqualified noqa ✓ quick-checks: Ensure canonical include ✓ quick-checks: Ensure no unqualified type ignore ✓ quick-checks: Ensure no direct cub include ✓ quick-checks: Ensure no tabs ✓ quick-checks: Ensure no non-breaking spaces ✓ shellcheck: Regenerate workflows ✓ quick-checks: Ensure no versionless Python shebangs ✓ quick-checks: Ensure correct trailing newlines ✓ shellcheck: Assert that regenerating the workflows didn't change them ✓ mypy (skipped typestub generation) ✓ cmakelint: Run cmakelint ✓ quick-checks: Ensure no trailing spaces ✓ flake8 ✓ shellcheck: Extract scripts from GitHub Actions workflows ✓ shellcheck: Run Shellcheck real 0.92 user 6.12 sys 2.45 ``` Test Plan: Imported from OSS Reviewed By: nikithamalgifb Differential Revision: D28617293 Pulled By: driazati fbshipit-source-id: af960ed441db797d07697bfb8292aff5010ca45b
123 lines
3.8 KiB
Makefile
123 lines
3.8 KiB
Makefile
# This makefile does nothing but delegating the actual building to cmake.
|
|
PYTHON = python3
|
|
|
|
all:
|
|
@mkdir -p build && cd build && cmake .. $(shell $(PYTHON) ./scripts/get_python_cmake_flags.py) && $(MAKE)
|
|
|
|
local:
|
|
@./scripts/build_local.sh
|
|
|
|
android:
|
|
@./scripts/build_android.sh
|
|
|
|
ios:
|
|
@./scripts/build_ios.sh
|
|
|
|
clean: # This will remove ALL build folders.
|
|
@rm -r build*/
|
|
@$(RM) -r $(SHELLCHECK_GHA_GENERATED_FOLDER)
|
|
|
|
linecount:
|
|
@cloc --read-lang-def=caffe.cloc caffe2 || \
|
|
echo "Cloc is not available on the machine. You can install cloc with " && \
|
|
echo " sudo apt-get install cloc"
|
|
|
|
SHELLCHECK_GHA_GENERATED_FOLDER=.shellcheck_generated_gha
|
|
shellcheck-gha:
|
|
@$(RM) -r $(SHELLCHECK_GHA_GENERATED_FOLDER)
|
|
tools/extract_scripts.py --out=$(SHELLCHECK_GHA_GENERATED_FOLDER)
|
|
tools/run_shellcheck.sh $(SHELLCHECK_GHA_GENERATED_FOLDER)
|
|
|
|
generate-gha-workflows:
|
|
.github/scripts/generate_ci_workflows.py
|
|
$(MAKE) shellcheck-gha
|
|
|
|
shellcheck:
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file .github/workflows/lint.yml \
|
|
--job 'shellcheck' \
|
|
--step "Regenerate workflows"
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file .github/workflows/lint.yml \
|
|
--job 'shellcheck' \
|
|
--step "Assert that regenerating the workflows didn't change them"
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file .github/workflows/lint.yml \
|
|
--job 'shellcheck' \
|
|
--step 'Extract scripts from GitHub Actions workflows'
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file-filter '.sh' \
|
|
$(CHANGED_ONLY) \
|
|
--job 'shellcheck'
|
|
|
|
setup_lint:
|
|
$(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \
|
|
--job 'flake8-py3' --step 'Install dependencies' --no-quiet
|
|
$(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \
|
|
--job 'cmakelint' --step 'Install dependencies' --no-quiet
|
|
$(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \
|
|
--job 'mypy' --step 'Install dependencies' --no-quiet
|
|
$(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \
|
|
--job 'shellcheck' --step 'Install Jinja2' --no-quiet
|
|
|
|
@if [ "$$(uname)" = "Darwin" ]; then \
|
|
if [ -z "$$(which brew)" ]; then \
|
|
echo "'brew' is required to install ShellCheck, get it here: https://brew.sh "; \
|
|
exit 1; \
|
|
fi; \
|
|
brew install shellcheck; \
|
|
else \
|
|
$(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \
|
|
--job 'shellcheck' --step 'Install ShellCheck' --no-quiet; \
|
|
fi
|
|
pip install jinja2
|
|
|
|
quick_checks:
|
|
# TODO: This is broken when 'git config submodule.recurse' is 'true' since the
|
|
# lints will descend into third_party submodules
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file .github/workflows/lint.yml \
|
|
--job 'quick-checks' \
|
|
--step 'Ensure no trailing spaces' \
|
|
--step 'Ensure no tabs' \
|
|
--step 'Ensure no non-breaking spaces' \
|
|
--step 'Ensure canonical include' \
|
|
--step 'Ensure no versionless Python shebangs' \
|
|
--step 'Ensure no unqualified noqa' \
|
|
--step 'Ensure no unqualified type ignore' \
|
|
--step 'Ensure no direct cub include' \
|
|
--step 'Ensure correct trailing newlines'
|
|
|
|
flake8:
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file-filter '.py' \
|
|
$(CHANGED_ONLY) \
|
|
--job 'flake8-py3'
|
|
|
|
mypy:
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file-filter '.py' \
|
|
$(CHANGED_ONLY) \
|
|
--job 'mypy'
|
|
|
|
cmakelint:
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file .github/workflows/lint.yml \
|
|
--job 'cmakelint' \
|
|
--step 'Run cmakelint'
|
|
|
|
clang_tidy:
|
|
echo "clang-tidy local lint is not yet implemented"
|
|
exit 1
|
|
|
|
toc:
|
|
@$(PYTHON) tools/actions_local_runner.py \
|
|
--file .github/workflows/lint.yml \
|
|
--job 'toc' \
|
|
--step "Regenerate ToCs and check that they didn't change"
|
|
|
|
lint: flake8 mypy quick_checks cmakelint shellcheck
|
|
|
|
quicklint: CHANGED_ONLY=--changed-only
|
|
quicklint: mypy flake8 mypy quick_checks cmakelint shellcheck
|