19f1c98025
1. Documented on README.development how to setup the environment for Windows. 2. Fixed qt/ts/package.json not working due usage of ; instead of && 3. Fixed copy-qt-files rsync using Windows paths instead of Unix ones 4. Fixed Makefile's using Windows Linux Subsystem bash instead of the Cygwin one. 5. Ensured running the correct pip module by using python -m pip instead of just pip. 6. Fixed Makefiles using Windows `find` command, instead of the Cygwin's one (POSIX find). 7. Fixed pyenv sourcing/activate using /pyevn/bin/ instead of /python/Scripts/ on Windows. 8. Fixed pyaudio not installing/linking with portaudio on Windows by installing for a patched fork at evandroforks/pyaudio 9. Forked and fixed portaudio not building with Visual Studio 2017 or superior and added the reference for the patched fork on README.development at evandroforks/portaudio.
127 lines
2.7 KiB
Makefile
127 lines
2.7 KiB
Makefile
SHELL := /bin/bash
|
|
ECHOCMD := /bin/echo -e
|
|
FIND_EXEC := $(if $(wildcard /bin/find),,/usr)/bin/find
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
IS_WINDOWS := true
|
|
else
|
|
IS_WINDOWS :=
|
|
endif
|
|
|
|
.SHELLFLAGS := -eu -o pipefail -c
|
|
.DELETE_ON_ERROR:
|
|
MAKEFLAGS += --warn-undefined-variables
|
|
MAKEFLAGS += --no-builtin-rules
|
|
.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
|
|
$(if ${IS_WINDOWS},python -m pip install git+https://github.com/evandroforks/pyaudio,)
|
|
python -m pip install -e .
|
|
@touch $@
|
|
|
|
.build/dev-deps: requirements.dev
|
|
python -m pip install -r requirements.dev
|
|
@touch $@
|
|
|
|
.build/ui: $(shell ${FIND_EXEC} designer -type f)
|
|
./tools/build_ui.sh
|
|
@touch $@
|
|
|
|
.build/i18n: $(wildcard i18n/po/desktop/*/anki.po)
|
|
(cd i18n && ./pull-git && ./build-mo-files && ./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
|
|
black aqt/gui_hooks.py
|
|
@touch $@
|
|
|
|
BUILD_STEPS := .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)
|
|
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_EXEC} aqt tests -name '*.py' | grep -v buildinfo.py)
|
|
|
|
.build/mypy: $(CHECKDEPS) .build/qt-stubs
|
|
mypy aqt
|
|
@touch $@
|
|
|
|
.build/test: $(CHECKDEPS)
|
|
python -m pytest -s
|
|
@touch $@
|
|
|
|
.build/lint: $(CHECKDEPS)
|
|
pylint -j 0 --rcfile=.pylintrc -f colorized --extension-pkg-whitelist=PyQt5,ankirspy aqt tests setup.py
|
|
@touch $@
|
|
|
|
.build/imports: $(CHECKDEPS)
|
|
isort $(ISORTARGS) --check
|
|
@touch $@
|
|
|
|
.build/fmt: $(CHECKDEPS)
|
|
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 bdist_wheel
|
|
rsync -a dist/*.whl ../dist/
|
|
|
|
.PHONY: develop
|
|
develop: $(BUILD_STEPS)
|
|
|
|
aqt/buildinfo.py: ../meta/version ../meta/buildhash
|
|
echo "buildhash='$$(cat ../meta/buildhash)'" > $@
|
|
echo "version='$$(cat ../meta/version)'" >> $@
|