Browse Source

[perf] pyenvinstall: reinstall only when requirements are change

Create a (PY_ENV)/requirements.sha256 file with sha256 sums of the
./requirements*.txt files and reinstall only if the sha256 sums change.

Suggested-by: @dalf / https://github.com/searx/searx/pull/2418#pullrequestreview-558426579
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 4 years ago
parent
commit
809bf85426
1 changed files with 7 additions and 1 deletions
  1. 7 1
      utils/makefile.python

+ 7 - 1
utils/makefile.python

@@ -95,7 +95,13 @@ quiet_cmd_pyinstall = INSTALL   $2
 
 
 # $2 path to folder with setup.py, this uses pip from pyenv (not OS!)
 # $2 path to folder with setup.py, this uses pip from pyenv (not OS!)
 quiet_cmd_pyenvinstall = PYENV     install $2
 quiet_cmd_pyenvinstall = PYENV     install $2
-      cmd_pyenvinstall = $(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) install -e $2$(PY_SETUP_EXTRAS)
+      cmd_pyenvinstall = \
+	if ! cat $(PY_ENV)/requirements.sha256 2>/dev/null | sha256sum --check --status 2>/dev/null; then \
+		$(PY_ENV_BIN)/python -m pip $(PIP_VERBOSE) install -e $2$(PY_SETUP_EXTRAS) ;\
+		sha256sum requirements*.txt > $(PY_ENV)/requirements.sha256 ;\
+	else \
+		echo "PYENV     $2 already installed"; \
+	fi
 
 
 # Uninstall the package.  Since pip does not uninstall the no longer needed
 # Uninstall the package.  Since pip does not uninstall the no longer needed
 # depencies (something like autoremove) the depencies remain.
 # depencies (something like autoremove) the depencies remain.