@@ -7,6 +7,12 @@ PIP := $(venv_full)/pip
7
7
PYTHON := $(venv_full ) /python
8
8
LASTTAG = $(shell git describe --tags --abbrev=0)
9
9
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
+
10
16
IMAGES_TYPES := full minimal dev
11
17
DISTROS := alpine ubuntu
12
18
alpine_images := $(IMAGES_TYPES:%=docker-alpine-% )
@@ -38,52 +44,50 @@ help: ## List all make commands available
38
44
# Virtualenv
39
45
# ===================================================================
40
46
41
- venv-python : venv-full-python venv-min-python venv-dev-python # # Install all Python 3 venv
47
+ venv-% -upgrade : UPGRADE = --upgrade
42
48
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
44
52
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)))
46
54
47
- # For full installation (with optional dependencies)
55
+ $(VENV_PYTHON ) : venv-% -python:
56
+ virtualenv -p /usr/bin/python3 $(if $(filter full,$* ) ,venv,venv-$* )
48
57
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)
51
68
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
55
70
71
+ venv-full-python : # # Install Python 3 venv
72
+ venv-full : venv-python # # Install Python 3 run-time
56
73
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
60
74
61
75
# For minimal installation (without optional dependencies)
62
76
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
65
78
79
+ venv-min-python : # # Install Python 3 venv minimal
66
80
venv-min : venv-min-python # # Install Python 3 minimal run-time dependencies
67
- $(VENV_MIN ) /pip install -r requirements.txt
68
-
69
81
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
72
82
73
83
# For development
74
84
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
77
87
88
+ venv-dev-python : # # Install Python 3 venv
78
89
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
-
83
90
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
87
91
88
92
# ===================================================================
89
93
# Tests
0 commit comments