Skip to content

Commit 13079a6

Browse files
committed
Used patterns rules in venv, venv-python, & venv-python
* `venv-*-python` relies on the pattern `venv-%-python` * `venv-(full|min|dev)` & `venv-*-upgrade` on `venv-%` * macros `UPGRADE`, `PRE_COMMIT`, `VIRTUAL_ENV`, & `REQS` are rule switches * `VIRTUAL_ENV` being evaluated at runtime from `DEFINE_VARS_FOR_TYPE` * `make help` is unchanged. ``` $ make venv -n virtualenv -p /usr/bin/python3 venv virtualenv -p /usr/bin/python3 venv-min virtualenv -p /usr/bin/python3 venv-dev venv/bin/pip install -r requirements.txt; venv/bin/pip install -r optional-requirements.txt; venv-min/bin/pip install -r requirements.txt; venv-dev/bin/pip install -r dev-requirements.txt; venv-dev/bin/pip install -r doc-requirements.txt; venv-dev/bin/pre-commit install --hook-type pre-commit $ make venv-python -n virtualenv -p /usr/bin/python3 venv virtualenv -p /usr/bin/python3 venv-min virtualenv -p /usr/bin/python3 venv-dev $ make venv-upgrade -n venv/bin/install install --upgrade pip venv/bin/pip install --upgrade -r requirements.txt; venv/bin/pip install --upgrade -r optional-requirements.txt; venv-min/bin/install install --upgrade pip venv-min/bin/pip install --upgrade -r requirements.txt; venv-dev/bin/install install --upgrade pip venv-dev/bin/pip install --upgrade -r dev-requirements.txt; venv-dev/bin/pip install --upgrade -r doc-requirements.txt; ``` Signed-off-by: Ariel Otilibili <otilibil@eurecom.fr>
1 parent feac10a commit 13079a6

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

Makefile

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ PIP := $(venv_full)/pip
77
PYTHON := $(venv_full)/python
88
LASTTAG = $(shell git describe --tags --abbrev=0)
99

10+
VENV_TYPES := full min dev
11+
VENV_PYTHON := $(VENV_TYPES:%=venv-%-python)
12+
VENV_UPG := $(VENV_TYPES:%=venv-%-upgrade)
13+
VENV_DEPS := $(VENV_TYPES:%=venv-%)
14+
VENV_INST_UPG := $(VENV_DEPS) $(VENV_UPG)
15+
1016
IMAGES_TYPES := full minimal dev
1117
DISTROS := alpine ubuntu
1218
alpine_images := $(IMAGES_TYPES:%=docker-alpine-%)
@@ -38,52 +44,50 @@ help: ## List all make commands available
3844
# Virtualenv
3945
# ===================================================================
4046

41-
venv-python: venv-full-python venv-min-python venv-dev-python ## Install all Python 3 venv
47+
venv-%-upgrade: UPGRADE = --upgrade
4248

43-
venv: venv-full venv-min venv-dev ## Install all Python 3 dependencies
49+
define DEFINE_VARS_FOR_TYPE
50+
venv-$(TYPE) venv-$(TYPE)-upgrade: VIRTUAL_ENV = $(venv_$(TYPE))
51+
endef
4452

45-
venv-upgrade: venv-full-upgrade venv-min-upgrade venv-dev-upgrade ## Upgrade all Python 3 dependencies
53+
$(foreach TYPE,$(VENV_TYPES),$(eval $(DEFINE_VARS_FOR_TYPE)))
4654

47-
# For full installation (with optional dependencies)
55+
$(VENV_PYTHON): venv-%-python:
56+
virtualenv -p /usr/bin/python3 $(if $(filter full,$*),venv,venv-$*)
4857

49-
venv-full-python: ## Install Python 3 venv
50-
virtualenv -p /usr/bin/python3 venv
58+
$(VENV_INST_UPG): venv-%:
59+
$(if $(UPGRADE),$(VIRTUAL_ENV)/install install --upgrade pip,)
60+
$(foreach REQ,$(REQS), $(VIRTUAL_ENV)/pip install $(UPGRADE) -r $(REQ);)
61+
$(if $(PRE_COMMIT),$(VIRTUAL_ENV)/pre-commit install --hook-type pre-commit,)
62+
63+
venv-python: $(VENV_PYTHON) ## Install all Python 3 venv
64+
venv: $(VENV_DEPS) ## Install all Python 3 dependencies
65+
venv-upgrade: $(VENV_UPG) ## Upgrade all Python 3 dependencies
66+
67+
# For full installation (with optional dependencies)
5168

52-
venv-full: venv-python ## Install Python 3 run-time dependencies
53-
$(PIP) install -r requirements.txt
54-
$(PIP) install -r optional-requirements.txt
69+
venv-full venv-full-upgrade: REQS = requirements.txt optional-requirements.txt
5570

71+
venv-full-python: ## Install Python 3 venv
72+
venv-full: venv-python ## Install Python 3 run-time
5673
venv-full-upgrade: ## Upgrade Python 3 run-time dependencies
57-
$(PIP) install --upgrade pip
58-
$(PIP) install --upgrade -r requirements.txt
59-
$(PIP) install --upgrade -r optional-requirements.txt
6074

6175
# For minimal installation (without optional dependencies)
6276

63-
venv-min-python: ## Install Python 3 venv minimal
64-
virtualenv -p /usr/bin/python3 venv-min
77+
venv-min venv-min-upgrade: REQS = requirements.txt
6578

79+
venv-min-python: ## Install Python 3 venv minimal
6680
venv-min: venv-min-python ## Install Python 3 minimal run-time dependencies
67-
$(VENV_MIN)/pip install -r requirements.txt
68-
6981
venv-min-upgrade: ## Upgrade Python 3 minimal run-time dependencies
70-
$(VENV_MIN)/pip install --upgrade pip
71-
$(VENV_MIN)/pip install --upgrade -r requirements.txt
7282

7383
# For development
7484

75-
venv-dev-python: ## Install Python 3 venv
76-
virtualenv -p /usr/bin/python3 venv-dev
85+
venv-dev venv-dev-upgrade: REQS = dev-requirements.txt doc-requirements.txt
86+
venv-dev: PRE_COMMIT = 1
7787

88+
venv-dev-python: ## Install Python 3 venv
7889
venv-dev: venv-python ## Install Python 3 dev dependencies
79-
$(VENV_DEV)/pip install -r dev-requirements.txt
80-
$(VENV_DEV)/pip install -r doc-requirements.txt
81-
$(VENV_DEV)/pre-commit install --hook-type pre-commit
82-
8390
venv-dev-upgrade: ## Upgrade Python 3 dev dependencies
84-
$(VENV_DEV)/pip install --upgrade pip
85-
$(VENV_DEV)/pip install --upgrade -r dev-requirements.txt
86-
$(VENV_DEV)/pip install --upgrade -r doc-requirements.txt
8791

8892
# ===================================================================
8993
# Tests

0 commit comments

Comments
 (0)