forked from zaclys/searxng
Merge pull request #2421 from return42/mod-pyenvinstall
[perf] optimize creation of the virtualenv & pyenvinstal targets
This commit is contained in:
commit
48b4af1e08
14
utils/lib.sh
14
utils/lib.sh
|
@ -41,7 +41,7 @@ DOT_CONFIG="${DOT_CONFIG:-${REPO_ROOT}/.config.sh}"
|
||||||
|
|
||||||
source_dot_config() {
|
source_dot_config() {
|
||||||
if [[ ! -e "${DOT_CONFIG}" ]]; then
|
if [[ ! -e "${DOT_CONFIG}" ]]; then
|
||||||
err_msg "configuration does not extsts at: ${DOT_CONFIG}"
|
err_msg "configuration does not exists at: ${DOT_CONFIG}"
|
||||||
return 42
|
return 42
|
||||||
fi
|
fi
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
|
@ -159,7 +159,7 @@ clean_stdin() {
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_key(){
|
wait_key(){
|
||||||
# usage: waitKEY [<timeout in sec>]
|
# usage: wait_key [<timeout in sec>]
|
||||||
|
|
||||||
clean_stdin
|
clean_stdin
|
||||||
local _t=$1
|
local _t=$1
|
||||||
|
@ -639,7 +639,7 @@ nginx_distro_setup() {
|
||||||
NGINX_DEFAULT_SERVER=/etc/nginx/nginx.conf
|
NGINX_DEFAULT_SERVER=/etc/nginx/nginx.conf
|
||||||
|
|
||||||
# Including *location* directives from a dedicated config-folder into the
|
# Including *location* directives from a dedicated config-folder into the
|
||||||
# server directive is, what what fedora and centos (already) does.
|
# server directive is, what fedora and centos (already) does.
|
||||||
NGINX_APPS_ENABLED="/etc/nginx/default.d"
|
NGINX_APPS_ENABLED="/etc/nginx/default.d"
|
||||||
|
|
||||||
# We add a apps-available folder and linking configurations into the
|
# We add a apps-available folder and linking configurations into the
|
||||||
|
@ -692,7 +692,7 @@ nginx_reload() {
|
||||||
|
|
||||||
nginx_install_app() {
|
nginx_install_app() {
|
||||||
|
|
||||||
# usage: nginx_install_app [<template option> ...] <myapp>
|
# usage: nginx_install_app [<template option> ...] <myapp.conf>
|
||||||
#
|
#
|
||||||
# <template option>: see install_template
|
# <template option>: see install_template
|
||||||
|
|
||||||
|
@ -1381,7 +1381,7 @@ in_container() {
|
||||||
LXC_ENV_FOLDER=
|
LXC_ENV_FOLDER=
|
||||||
if in_container; then
|
if in_container; then
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
LXC_ENV_FOLDER="lxc/$(hostname)/"
|
LXC_ENV_FOLDER="lxc-env/$(hostname)/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
lxc_init_container_env() {
|
lxc_init_container_env() {
|
||||||
|
@ -1413,8 +1413,8 @@ LXC_BASE_PACKAGES_centos="bash git python3"
|
||||||
case $DIST_ID in
|
case $DIST_ID in
|
||||||
ubuntu|debian) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_debian}" ;;
|
ubuntu|debian) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_debian}" ;;
|
||||||
arch) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_arch}" ;;
|
arch) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_arch}" ;;
|
||||||
fedora) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_fedora}" ;;
|
fedora) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_fedora}" ;;
|
||||||
centos) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_centos}" ;;
|
centos) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_centos}" ;;
|
||||||
*) err_msg "$DIST_ID-$DIST_VERS: pkg_install LXC_BASE_PACKAGES not yet implemented" ;;
|
*) err_msg "$DIST_ID-$DIST_VERS: pkg_install LXC_BASE_PACKAGES not yet implemented" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ PHONY += lxc-activate lxc-purge
|
||||||
lxc-activate:
|
lxc-activate:
|
||||||
@$(MAKE) -s -f "$$(dirname $(abspath $(lastword $(MAKEFILE_LIST))))/makefile.lxc" lxc-activate
|
@$(MAKE) -s -f "$$(dirname $(abspath $(lastword $(MAKEFILE_LIST))))/makefile.lxc" lxc-activate
|
||||||
lxc-purge:
|
lxc-purge:
|
||||||
$(Q)rm -rf ./lxc
|
$(Q)rm -rf ./lxc-env
|
||||||
else
|
else
|
||||||
include /.lxcenv.mk
|
include /.lxcenv.mk
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
# sudo make ./utils/makefile.lxc lxc-activate
|
# sudo make ./utils/makefile.lxc lxc-activate
|
||||||
# sudo make ./utils/makefile.lxc lxc-deactivate
|
# sudo make ./utils/makefile.lxc lxc-deactivate
|
||||||
|
|
||||||
LXC_ENV_FOLDER=lxc/$(shell hostname)/
|
LXC_ENV_FOLDER=lxc-env/$(shell hostname)/
|
||||||
|
|
||||||
lxc-help::
|
lxc-help::
|
||||||
@echo 'LXC: running in container LXC_ENV_FOLDER=$(LXC_ENV_FOLDER)'
|
@echo ' LXC: running in container LXC_ENV_FOLDER=$(LXC_ENV_FOLDER)'
|
||||||
|
|
||||||
# If not activated, serve target 'lxc-activate' ..
|
# If not activated, serve target 'lxc-activate' ..
|
||||||
ifeq (,$(wildcard /.lxcenv.mk))
|
ifeq (,$(wildcard /.lxcenv.mk))
|
||||||
|
@ -24,6 +24,9 @@ else
|
||||||
PHONY += lxc-deactivate
|
PHONY += lxc-deactivate
|
||||||
lxc-deactivate:
|
lxc-deactivate:
|
||||||
rm /.lxcenv.mk
|
rm /.lxcenv.mk
|
||||||
|
$(LXC_ENV_FOLDER):
|
||||||
|
$(Q)mkdir -p $(LXC_ENV_FOLDER)
|
||||||
|
$(Q)echo placeholder > $(LXC_ENV_FOLDER).placeholder
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: $(PHONY)
|
.PHONY: $(PHONY)
|
||||||
|
|
|
@ -75,7 +75,9 @@ msg-python-exe:
|
||||||
https://www.python.org or install it from your package\n\
|
https://www.python.org or install it from your package\n\
|
||||||
manager. On debian based OS these requirements are\n\
|
manager. On debian based OS these requirements are\n\
|
||||||
installed by::\n\n\
|
installed by::\n\n\
|
||||||
sudo -H apt-get install $(PYTHON)\n" | $(FMT)
|
sudo -H add-apt-repository ppa:deadsnakes/ppa\n\
|
||||||
|
sudo -H apt update\n\
|
||||||
|
sudo -H apt-get install $(PYTHON) $(PYTHON)-venv\n"
|
||||||
|
|
||||||
ifeq ($(shell which $(PYTHON) >/dev/null 2>&1; echo $$?), 1)
|
ifeq ($(shell which $(PYTHON) >/dev/null 2>&1; echo $$?), 1)
|
||||||
python-exe: msg-python-exe
|
python-exe: msg-python-exe
|
||||||
|
@ -95,7 +97,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.
|
||||||
|
@ -113,6 +121,8 @@ quiet_cmd_virtualenv = PYENV usage: $ source ./$@/bin/activate
|
||||||
cmd_virtualenv = \
|
cmd_virtualenv = \
|
||||||
if [ ! -d "./$(PY_ENV)" ];then \
|
if [ ! -d "./$(PY_ENV)" ];then \
|
||||||
$(PYTHON) -m venv $(VTENV_OPTS) $2; \
|
$(PYTHON) -m venv $(VTENV_OPTS) $2; \
|
||||||
|
$(PY_ENV_BIN)/python -m pip install $(PIP_VERBOSE) -U pip wheel setuptools; \
|
||||||
|
$(PY_ENV_BIN)/python -m pip install $(PIP_VERBOSE) -r requirements.txt; \
|
||||||
else \
|
else \
|
||||||
echo "PYENV using virtualenv from $2"; \
|
echo "PYENV using virtualenv from $2"; \
|
||||||
fi
|
fi
|
||||||
|
@ -193,8 +203,6 @@ pyclean:
|
||||||
pyenv: $(PY_ENV)
|
pyenv: $(PY_ENV)
|
||||||
$(PY_ENV): python-exe
|
$(PY_ENV): python-exe
|
||||||
$(call cmd,virtualenv,$(PY_ENV))
|
$(call cmd,virtualenv,$(PY_ENV))
|
||||||
$(Q)$(PY_ENV_BIN)/python -m pip install $(PIP_VERBOSE) -U pip wheel pip setuptools
|
|
||||||
$(Q)$(PY_ENV_BIN)/python -m pip install $(PIP_VERBOSE) -r requirements.txt
|
|
||||||
|
|
||||||
PHONY += pylint-exe
|
PHONY += pylint-exe
|
||||||
pylint-exe: $(PY_ENV)
|
pylint-exe: $(PY_ENV)
|
||||||
|
|
Loading…
Reference in New Issue