50e9780e66
for aqt on qt/Makefile, because .whl files are just zip simple zip files and do not support dynamic versioning. Also, there is no restriction for aqt to be shipped as source tarball because it does not ship any binaries.
147 lines
3.2 KiB
Makefile
147 lines
3.2 KiB
Makefile
SHELL := /bin/bash
|
|
|
|
ifndef SHELLFLAGS
|
|
SHELLFLAGS :=
|
|
endif
|
|
|
|
.SHELLFLAGS := -eu -o pipefail ${SHELLFLAGS} -c
|
|
MAKEFLAGS += --warn-undefined-variables
|
|
MAKEFLAGS += --no-builtin-rules
|
|
|
|
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
|
|
MYPY_ARGS :=
|
|
PYLINT_ARGS :=
|
|
|
|
ifndef OS
|
|
OS := unknown
|
|
endif
|
|
|
|
# https://anki.tenderapp.com/discussions/beta-testing/1860-error-unused-type-ignore-comment
|
|
ifneq (${OS},Windows_NT)
|
|
MYPY_ARGS := --warn-unused-ignores
|
|
else
|
|
PYLINT_ARGS := --ignored-modules=win32file,pywintypes,socket,win32pipe
|
|
endif
|
|
|
|
.DELETE_ON_ERROR:
|
|
.SUFFIXES:
|
|
|
|
BLACKARGS := -t py36 aqt tests setup.py tools/*.py --exclude='aqt/forms|buildinfo|colors'
|
|
ISORTARGS := aqt tests setup.py
|
|
|
|
$(shell mkdir -p .build ../dist)
|
|
|
|
PHONY: all
|
|
all: check
|
|
|
|
.build/run-deps: setup.py
|
|
python -m pip install -e .
|
|
@touch $@
|
|
|
|
.build/dev-deps: requirements.dev
|
|
python -m pip install -r requirements.dev
|
|
@touch $@
|
|
|
|
.build/ui: $(shell ${FIND} designer -type f)
|
|
./tools/build_ui.sh
|
|
@touch $@
|
|
|
|
.build/i18n: $(wildcard po/repo/desktop/*/anki.po)
|
|
(cd po && \
|
|
./scripts/build-mo-files && \
|
|
./scripts/copy-qt-files)
|
|
@touch $@
|
|
|
|
TSDEPS := $(wildcard ts/src/*.ts) $(wildcard ts/scss/*.scss)
|
|
|
|
.build/js: $(TSDEPS)
|
|
(cd ts && npm i && npm run build)
|
|
python ./tools/extract_scss_colors.py
|
|
@touch $@
|
|
|
|
.build/hooks: tools/genhooks_gui.py ../pylib/tools/hookslib.py
|
|
python tools/genhooks_gui.py
|
|
python -m black aqt/gui_hooks.py
|
|
@touch $@
|
|
|
|
BUILD_STEPS := .build/vernum .build/run-deps .build/dev-deps .build/js .build/ui aqt/buildinfo.py .build/hooks .build/i18n
|
|
|
|
# Checking
|
|
######################
|
|
|
|
.PHONY: check
|
|
check: $(BUILD_STEPS) .build/mypy .build/test .build/fmt .build/imports .build/lint .build/ts-fmt
|
|
|
|
.PHONY: fix
|
|
fix: $(BUILD_STEPS)
|
|
isort $(ISORTARGS)
|
|
python -m black $(BLACKARGS)
|
|
(cd ts && npm run pretty)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf .build aqt.egg-info build dist
|
|
|
|
# Checking Typescript
|
|
######################
|
|
|
|
JSDEPS := $(patsubst ts/src/%.ts, web/%.js, $(TSDEPS))
|
|
|
|
.build/ts-fmt: $(TSDEPS)
|
|
(cd ts && npm i && npm run check-pretty)
|
|
@touch $@
|
|
|
|
# Checking python
|
|
######################
|
|
|
|
PYLIB := ../pylib
|
|
|
|
CHECKDEPS := $(shell ${FIND} aqt tests -name '*.py' | grep -v buildinfo.py)
|
|
|
|
.build/mypy: $(CHECKDEPS) .build/qt-stubs
|
|
python -m mypy ${MYPY_ARGS} aqt
|
|
@touch $@
|
|
|
|
.build/test: $(CHECKDEPS)
|
|
python -m pytest -s
|
|
@touch $@
|
|
|
|
.build/lint: $(CHECKDEPS)
|
|
python -m pylint -j 0 --rcfile=.pylintrc -f colorized ${PYLINT_ARGS} \
|
|
--extension-pkg-whitelist=PyQt5,ankirspy aqt tests setup.py
|
|
@touch $@
|
|
|
|
.build/imports: $(CHECKDEPS)
|
|
isort $(ISORTARGS) --check
|
|
@touch $@
|
|
|
|
.build/fmt: $(CHECKDEPS)
|
|
python -m black --check $(BLACKARGS)
|
|
@touch $@
|
|
|
|
.build/qt-stubs:
|
|
./tools/typecheck-setup.sh
|
|
@touch $@
|
|
|
|
# Building
|
|
######################
|
|
|
|
.PHONY: build
|
|
build: $(BUILD_STEPS)
|
|
rm -rf dist build
|
|
python setup.py -q sdist
|
|
rsync -a dist/*.tar.gz ../dist/
|
|
|
|
.PHONY: develop
|
|
develop: $(BUILD_STEPS)
|
|
|
|
aqt/buildinfo.py: ../meta/version ../meta/buildhash
|
|
echo "buildhash='$$(cat ../meta/buildhash)'" > $@
|
|
echo "version='$$(cat ../meta/version)'" >> $@
|
|
|
|
VER := $(shell cat ../meta/version)
|
|
.build/vernum: ../meta/version
|
|
sed -i.bak 's/.*automatically updated.*/ version="$(VER)", # automatically updated/' setup.py
|
|
rm setup.py.bak
|
|
@touch $@
|