diff options
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/fabfile.py | 117 | ||||
| -rw-r--r-- | utils/makefile.python | 31 | ||||
| -rw-r--r-- | utils/makefile.sphinx | 26 |
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 |