1- VENV_NAME = venv
2- PIP =$(VENV_NAME ) /bin/pip
1+ VIRTUAL_ENV ?= venv
2+ PIP =$(VIRTUAL_ENV ) /bin/pip
33TOX =` which tox `
4- GARDEN =$(VENV_NAME ) /bin/garden
5- PYTHON =$(VENV_NAME ) /bin/python
6- ISORT =$(VENV_NAME ) /bin/isort
7- FLAKE8 =$(VENV_NAME ) /bin/flake8
4+ PYTHON =$(VIRTUAL_ENV ) /bin/python
5+ ISORT =$(VIRTUAL_ENV ) /bin/isort
6+ FLAKE8 =$(VIRTUAL_ENV ) /bin/flake8
7+ PYTEST =$(VIRTUAL_ENV ) /bin/pytest
88TWINE =` which twine `
99SOURCES =src/ tests/ setup.py setup_meta.py
1010# using full path so it can be used outside the root dir
1111SPHINXBUILD =$(shell realpath venv/bin/sphinx-build)
1212DOCS_DIR =doc
1313SYSTEM_DEPENDENCIES = \
14- libpython$(PYTHON_VERSION ) -dev \
14+ build-essential \
15+ ccache \
16+ cmake \
17+ curl \
18+ git \
1519 libsdl2-dev \
20+ libsdl2-image-dev \
21+ libsdl2-mixer-dev \
22+ libsdl2-ttf-dev \
23+ libpython3.6-dev \
24+ libpython$(PYTHON_VERSION ) -dev \
1625 libzbar-dev \
26+ pkg-config \
27+ python3.6 \
28+ python3.6-dev \
29+ python$(PYTHON_VERSION ) \
30+ python$(PYTHON_VERSION ) -dev \
1731 tox \
1832 virtualenv
19- OS =$(shell lsb_release -si)
33+ OS =$(shell lsb_release -si 2>/dev/null || uname )
2034PYTHON_MAJOR_VERSION =3
21- PYTHON_MINOR_VERSION =6
35+ PYTHON_MINOR_VERSION =7
2236PYTHON_VERSION =$(PYTHON_MAJOR_VERSION ) .$(PYTHON_MINOR_VERSION )
37+ PYTHON_MAJOR_MINOR =$(PYTHON_MAJOR_VERSION )$(PYTHON_MINOR_VERSION )
2338PYTHON_WITH_VERSION =python$(PYTHON_VERSION )
2439
2540
2641all : system_dependencies virtualenv
2742
28- venv :
29- test -d venv || virtualenv -p $(PYTHON_WITH_VERSION ) venv
43+ system_dependencies :
44+ ifeq ($(OS ) , Ubuntu)
45+ sudo apt install --yes --no-install-recommends $(SYSTEM_DEPENDENCIES)
46+ endif
3047
31- virtualenv : venv
48+ $(VIRTUAL_ENV ) :
49+ virtualenv -p $(PYTHON_WITH_VERSION ) $(VIRTUAL_ENV )
3250 $(PIP ) install Cython==0.28.6
33- $(PIP ) install -r requirements/requirements.txt
51+ $(PIP ) install -r requirements.txt
52+
53+ virtualenv : $(VIRTUAL_ENV )
3454
3555virtualenv/test : virtualenv
3656 $(PIP ) install -r requirements/requirements-test.txt
3757
38- system_dependencies :
39- ifeq ($(OS ) , Ubuntu)
40- sudo apt install --yes --no-install-recommends $(SYSTEM_DEPENDENCIES)
41- endif
42-
43- run/linux : virtualenv
58+ run : virtualenv
4459 $(PYTHON ) src/main.py
4560
46- run : run/linux
47-
4861test :
4962 $(TOX )
63+ @if test -n " $$ CI" ; then .tox/py$(PYTHON_MAJOR_MINOR ) /bin/coveralls; fi ; \
5064
51- uitest : virtualenv/test
52- PYTHONPATH=src $(PYTHON ) -m unittest discover --top-level-directory=. --start-directory= tests/ui /
65+ pytest : virtualenv/test
66+ PYTHONPATH=src $(PYTEST ) --cov src/ --cov-report html tests/
5367
5468lint/isort-check : virtualenv/test
5569 $(ISORT ) --check-only --recursive --diff $(SOURCES )
@@ -65,7 +79,7 @@ lint: lint/isort-check lint/flake8
6579docs/clean :
6680 rm -rf $(DOCS_DIR ) /build/
6781
68- docs :
82+ docs : virtualenv
6983 cd $(DOCS_DIR ) && SPHINXBUILD=$(SPHINXBUILD ) make html
7084
7185release/clean :
@@ -80,9 +94,21 @@ release/upload:
8094 $(TWINE ) upload dist/*
8195
8296clean : release/clean docs/clean
83- py3clean src/
84- find src/ -type d -name " __pycache__" -exec rm -r {} +
85- find src/ -type d -name " *.egg-info" -exec rm -r {} +
97+ py3clean .
98+ find . -type d -name " __pycache__" -exec rm -r {} +
99+ find . -type d -name " *.egg-info" -exec rm -r {} +
86100
87101clean/all : clean
88- rm -rf $(VENV_NAME ) .tox/
102+ rm -rf $(VIRTUAL_ENV ) .tox/
103+
104+ docker/build :
105+ docker build --tag=zbarcam-linux --file=dockerfiles/Dockerfile-linux .
106+
107+ docker/run/test :
108+ docker run --env-file dockerfiles/env.list -v /tmp/.X11-unix:/tmp/.X11-unix zbarcam-linux ' make test'
109+
110+ docker/run/app :
111+ docker run --env-file dockerfiles/env.list -v /tmp/.X11-unix:/tmp/.X11-unix --device=/dev/video0:/dev/video0 zbarcam-linux ' make run'
112+
113+ docker/run/shell :
114+ docker run --env-file dockerfiles/env.list -v /tmp/.X11-unix:/tmp/.X11-unix --device=/dev/video0:/dev/video0 -it --rm zbarcam-linux
0 commit comments