SHELL := /bin/bash ifndef SPACY_EXTRAS override SPACY_EXTRAS = spacy-lookups-data==0.4.0.dev0 jieba pkuseg==0.0.25 sudachipy sudachidict_core endif ifndef PYVER override PYVER = 3.6 endif VENV := ./env$(PYVER) version := $(shell "bin/get-version.sh") package := $(shell "bin/get-package.sh") ifndef SPACY_BIN override SPACY_BIN = $(package)-$(version).pex endif ifndef WHEELHOUSE override WHEELHOUSE = "./wheelhouse" endif ifndef SPACY_PEX_MODULE # By default, don't execute a module, so we just run Python, not spaCy override SPACY_PEX_MODULE = "" endif dist/$(SPACY_BIN) : $(WHEELHOUSE)/spacy-$(PYVER)-$(version).stamp $(VENV)/bin/pex \ -f $(WHEELHOUSE) \ --no-index \ --disable-cache \ $(SPACY_PEX_MODULE) -o $@ \ $(package)==$(version) \ $(SPACY_EXTRAS) chmod a+rx $@ cp $@ dist/spacy.pex dist/pytest.pex : $(WHEELHOUSE)/pytest-*.whl $(VENV)/bin/pex -f $(WHEELHOUSE) --no-index --disable-cache -m pytest -o $@ pytest pytest-timeout mock chmod a+rx $@ $(WHEELHOUSE)/spacy-$(PYVER)-$(version).stamp : $(VENV)/bin/pex setup.py spacy/*.py* spacy/*/*.py* $(VENV)/bin/pip wheel . -w $(WHEELHOUSE) $(VENV)/bin/pip wheel $(SPACY_EXTRAS) -w $(WHEELHOUSE) touch $@ $(WHEELHOUSE)/pytest-%.whl : $(VENV)/bin/pex $(VENV)/bin/pip wheel pytest pytest-timeout mock -w $(WHEELHOUSE) $(VENV)/bin/pex : python$(PYVER) -m venv $(VENV) $(VENV)/bin/pip install -U pip setuptools pex wheel $(VENV)/bin/pip install numpy .PHONY : clean test test : dist/spacy-$(version).pex dist/pytest.pex ( . $(VENV)/bin/activate ; \ PEX_PATH=dist/spacy-$(version).pex ./dist/pytest.pex --pyargs spacy -x ; ) clean : setup.py rm -rf dist/* rm -rf $(WHEELHOUSE)/* rm -rf $(VENV) python setup.py clean --all