summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/fabfile.py117
-rw-r--r--utils/makefile.python31
-rw-r--r--utils/makefile.sphinx26
3 files changed, 36 insertions, 138 deletions
diff --git a/utils/fabfile.py b/utils/fabfile.py
deleted file mode 100644
index 136ef6293..000000000
--- a/utils/fabfile.py
+++ /dev/null
@@ -1,117 +0,0 @@
-from fabric.api import cd, run, sudo, put
-from io import StringIO
-
-
-base_dir = '/usr/local'
-hostname = 'searx.me'
-searx_dir = base_dir + '/searx'
-searx_ve_dir = searx_dir + '/searx-ve'
-current_user = run('whoami').stdout.strip()
-
-uwsgi_file = '''
-[uwsgi]
-# Who will run the code
-uid = {user}
-gid = {user}
-
-# Number of workers
-workers = 8
-
-# The right granted on the created socket
-chmod-socket = 666
-
-# Plugin to use and interpretor config
-single-interpreter = true
-master = true
-plugin = python
-
-# Module to import
-module = searx.webapp
-
-# Virtualenv and python path
-virtualenv = {searx_ve_dir}
-pythonpath = {searx_dir}
-chdir = {searx_dir}/searx
-'''.format(user=current_user,
- searx_dir=searx_dir,
- searx_ve_dir=searx_ve_dir)
-
-nginx_config = '''
-server {{
- listen 80;
- server_name {hostname};
- server_name www.{hostname};
- root /usr/local/searx;
-
- location / {{
- include uwsgi_params;
- uwsgi_pass unix:/run/uwsgi/app/searx/socket;
- }}
-}}
-'''.format(hostname=hostname)
-
-
-def stop():
- sudo('/etc/init.d/uwsgi stop')
-
-
-def start():
- sudo('/etc/init.d/uwsgi start')
-
-
-def restart():
- sudo('/etc/init.d/uwsgi restart')
-
-
-def init():
- if not run('test -d ' + searx_dir, warn_only=True).failed:
- return
-
- sudo('apt-get update')
-
- sudo('apt-get install git'
- ' build-essential'
- ' libxslt-dev'
- ' python-dev'
- ' python-virtualenv'
- ' python-pybabel'
- ' zlib1g-dev'
- ' uwsgi'
- ' uwsgi-plugin-python'
- ' nginx')
-
- sudo('mkdir -p ' + base_dir)
-
- put(StringIO(nginx_config), '/etc/nginx/sites-enabled/searx', use_sudo=True)
- sudo('/etc/init.d/nginx restart')
-
- with cd(base_dir):
- sudo('git clone https://github.com/searx/searx')
-
- sudo('chown -R {user}:{user} {searx_dir}'.format(user=current_user, searx_dir=searx_dir))
- put(StringIO(uwsgi_file), searx_dir + '/uwsgi.ini')
- sudo('ln -s {0}/uwsgi.ini /etc/uwsgi/apps-enabled/searx.ini'.format(searx_dir))
-
- run('virtualenv {0}'.format(searx_ve_dir))
-
- with cd(searx_dir):
- run('source {0}/bin/activate && pip install -r requirements.txt'.format(searx_ve_dir))
-
- start()
-
-
-def deploy():
- init()
-
- with cd(searx_dir):
- run("git stash", warn_only=True)
- run("git pull origin master")
- run("git stash pop", warn_only=True)
-
- restart()
-
-
-def clean():
- sudo('rm -rf {searx_dir}'.format(searx_dir=searx_dir), warn_only=True)
- sudo('rm /etc/uwsgi/apps-enabled/searx.ini', warn_only=True)
- sudo('rm /etc/nginx/sites-enabled/searx', warn_only=True)
diff --git a/utils/makefile.python b/utils/makefile.python
index 345434384..f4fd02197 100644
--- a/utils/makefile.python
+++ b/utils/makefile.python
@@ -87,6 +87,22 @@ python-exe:
@:
endif
+msg-pip-exe:
+ @echo "\n $(PIP) is required\n\n\
+ Make sure you have updated pip installed, grab it from\n\
+ https://pip.pypa.io or install it from your package\n\
+ manager. On debian based OS these requirements are\n\
+ installed by::\n\n\
+ sudo -H apt-get install python$(PY)-pip\n" | $(FMT)
+
+ifeq ($(shell which $(PIP) >/dev/null 2>&1; echo $$?), 1)
+pip-exe: msg-pip-exe
+ $(error The '$(PIP)' command was not found)
+else
+pip-exe:
+ @:
+endif
+
# ------------------------------------------------------------------------------
# commands
# ------------------------------------------------------------------------------
@@ -99,7 +115,8 @@ quiet_cmd_pyinstall = INSTALL $2
quiet_cmd_pyenvinstall = PYENV install $2
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) ;\
+ rm -f $(PY_ENV)/requirements.sha256; \
+ $(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"; \
@@ -119,13 +136,13 @@ quiet_cmd_pyenvuninstall = PYENV uninstall $2
# $2 path to folder where virtualenv take place
quiet_cmd_virtualenv = PYENV usage: $ source ./$@/bin/activate
cmd_virtualenv = \
- if [ ! -d "./$(PY_ENV)" ];then \
- $(PYTHON) -m venv $(VTENV_OPTS) $2; \
+ if [ -d "./$(PY_ENV)" -a -x "./$(PY_ENV_BIN)/python" ]; then \
+ echo "PYENV using virtualenv from $2"; \
+ else \
+ $(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 \
- echo "PYENV using virtualenv from $2"; \
- fi
+ $(PY_ENV_BIN)/python -m pip install $(PIP_VERBOSE) -r requirements.txt; \
+ fi
# $2 path to lint
quiet_cmd_pylint = LINT $@
diff --git a/utils/makefile.sphinx b/utils/makefile.sphinx
index e73686466..c0f39e87d 100644
--- a/utils/makefile.sphinx
+++ b/utils/makefile.sphinx
@@ -10,7 +10,7 @@ SPHINX_CONF ?= conf.py
DOCS_FOLDER = ./docs
DOCS_BUILD = ./$(LXC_ENV_FOLDER)build/docs
DOCS_DIST = ./$(LXC_ENV_FOLDER)dist/docs
-GH_PAGES ?= gh-pages
+GH_PAGES ?= build/gh-pages
BOOKS_FOLDER = ./docs
BOOKS_DIST = ./$(LXC_ENV_FOLDER)dist/books
@@ -172,24 +172,22 @@ PHONY += prepare-gh-pages
prepare-gh-pages:
cp -r $(DOCS_DIST)/* $(GH_PAGES)/
touch $(GH_PAGES)/.nojekyll
- echo "<html><head><META http-equiv='refresh' content='0;URL=index.html'></head></html>" > $(GH_PAGES)/404.html
-
-PHONY += $(GH_PAGES)
-$(GH_PAGES)::
- $(MAKE) docs
- [ -d "gh-pages/.git" ] || git clone $(GIT_URL) gh-pages
- -cd $(GH_PAGES); git checkout gh-pages >/dev/null
- -cd $(GH_PAGES); git pull
- -cd $(GH_PAGES); ls -A | grep -v '.git$$' | xargs rm -rf
+ echo "<html><head><META http-equiv='refresh' content='0;URL=index.html'></head></html>" > $(GH_PAGES)/404.html
+
+PHONY += gh-pages
+gh-pages: docs-clean docs
+ - git worktree remove -f $(GH_PAGES) || exit 0
+ - git branch -D gh-pages || exit 0
+ git worktree add --no-checkout $(GH_PAGES) master
+ cd $(GH_PAGES); git checkout --orphan gh-pages && git rm -rfq .
$(MAKE) prepare-gh-pages
cd $(GH_PAGES);\
git add --all . ;\
- git commit -m "gh-pages: updated" ;\
- git push origin gh-pages
+ git commit -q -m "make gh-pages: from $(shell git config --get remote.origin.url)@$(shell git rev-parse HEAD)" ;\
+ git push -f origin gh-pages
PHONY += travis-gh-pages
-travis-gh-pages:
- $(MAKE) docs
+travis-gh-pages: docs-clean docs
rm -Rf $(GH_PAGES)
mkdir -p $(GH_PAGES)
$(MAKE) prepare-gh-pages