From 4b43775c91a3c2ef415527edb4b3c041859453b4 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Tue, 27 Jul 2021 18:37:46 +0200 Subject: version based on the git repository This commit remove the need to update the brand for GIT_URL and GIT_BRANCH: there are read from the git repository. It is possible to call python -m searx.version freeze to freeze the current version. Useful when the code is installed outside git (distro package, docker, etc...) --- utils/brand.env | 4 ++-- utils/build_env.py | 8 ++++---- utils/searx.sh | 39 ++++++++++++++++++++++++++++----------- 3 files changed, 34 insertions(+), 17 deletions(-) (limited to 'utils') diff --git a/utils/brand.env b/utils/brand.env index 2075a2bf4..bd1629175 100644 --- a/utils/brand.env +++ b/utils/brand.env @@ -1,5 +1,5 @@ -export GIT_URL='https://github.com/searxng/searxng' -export GIT_BRANCH='master' export SEARX_URL='' export SEARX_PORT='8888' export SEARX_BIND_ADDRESS='127.0.0.1' +export GIT_URL='https://github.com/searxng/searxng' +export GIT_BRANCH='master' diff --git a/utils/build_env.py b/utils/build_env.py index dc55bd0a8..39708acb9 100644 --- a/utils/build_env.py +++ b/utils/build_env.py @@ -7,6 +7,8 @@ import sys import os from os.path import realpath, dirname, join, sep, abspath +from searx.version import GIT_URL, GIT_BRANCH + repo_root = realpath(dirname(realpath(__file__)) + sep + '..') sys.path.insert(0, repo_root) @@ -30,9 +32,6 @@ def _env(*arg, **kwargs): name_val = [ - ('GIT_URL' , 'brand.git_url'), - ('GIT_BRANCH' , 'brand.git_branch'), - ('SEARX_URL' , 'server.base_url'), ('SEARX_PORT' , 'server.port'), ('SEARX_BIND_ADDRESS' , 'server.bind_address'), @@ -57,8 +56,9 @@ from searx import get_setting print('build %s (settings from: %s)' % (brand_env, os.environ['SEARX_SETTINGS_PATH'])) sys.path.insert(0, repo_root) -from searx import settings with open(repo_root + sep + brand_env, 'w', encoding='utf-8') as f: for name, option in name_val: print("export %s='%s'" % (name, _env(option)), file=f) + print(f"export GIT_URL='{GIT_URL}'", file=f) + print(f"export GIT_BRANCH='{GIT_BRANCH}'", file=f) diff --git a/utils/searx.sh b/utils/searx.sh index f02611059..a9bd41288 100755 --- a/utils/searx.sh +++ b/utils/searx.sh @@ -429,13 +429,11 @@ EOF popd > /dev/null } +# shellcheck disable=SC2034 prompt_installation_status(){ - local state branch remote remote_url instance_setting + local state branch remote remote_url GIT_URL GIT_BRANCH VERSION_STRING VERSION_TAG state="$(install_searx_get_state)" - branch="$(git name-rev --name-only HEAD)" - remote="$(git config branch."${branch}".remote)" - remote_url="$(git config remote."${remote}".url)" case $state in missing-searx-clone) @@ -445,14 +443,16 @@ prompt_installation_status(){ *) warn_msg "SearXNG instance already installed at: $SEARX_SRC" warn_msg "status: ${_BBlue}$(install_searx_get_state)${_creset} " - instance_setting="$(prompt_installation_setting brand.git_url)" - if ! [ "$instance_setting" = "$remote_url" ]; then - warn_msg "instance's brand.git_url: '${instance_setting}'" \ + branch="$(git name-rev --name-only HEAD)" + remote="$(git config branch."${branch}".remote)" + remote_url="$(git config remote."${remote}".url)" + eval "$(get_installed_version_variables)" + if ! [ "$GIT_URL" = "$remote_url" ]; then + warn_msg "instance's git URL: '${GIT_URL}'" \ "differs from local clone's remote URL: ${remote_url}" fi - instance_setting="$(prompt_installation_setting brand.git_branch)" - if ! [ "$instance_setting" = "$branch" ]; then - warn_msg "instance brand.git_branch: ${instance_setting}" \ + if ! [ "$GIT_BRANCH" = "$branch" ]; then + warn_msg "instance git branch: ${GIT_BRANCH}" \ "differs from local clone's branch: ${branch}" fi return 42 @@ -469,7 +469,7 @@ verify_continue_install(){ prompt_installation_setting(){ - # usage: prompt_installation_setting brand.git_url + # usage: prompt_installation_setting brand.docs_url # # Prompts the value of the (YAML) setting in the SearXNG instance. @@ -496,6 +496,23 @@ EOF esac } +get_installed_version_variables() { + + # usage: eval "$(get_installed_version_variables)" + # + # Set variables VERSION_STRING, VERSION_TAG, GIT_URL, GIT_BRANCH + + local _state + _state="$(install_searx_get_state)" + case $_state in + python-installed|installer-modified) + sudo -H -u "${SERVICE_USER}" "${SEARX_PYENV}/bin/python -m searx.version";; + *) + return 42 + ;; + esac +} + init_SEARX_SRC(){ rst_title "Update instance: ${SEARX_SRC}/" section -- cgit v1.2.3 From 64d64535a2cc894bd9e2e742475cde9d85acb519 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 30 Jul 2021 08:10:02 +0200 Subject: [fix] buildenv: first unset environment / then import searx package The first import of names from the searx package implies loading the settings.yml. Before this is done, the enviroment variables must be unset to not overwrite the values from the settings.yml Signed-off-by: Markus Heiser --- utils/build_env.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'utils') diff --git a/utils/build_env.py b/utils/build_env.py index 39708acb9..0ff99e99f 100644 --- a/utils/build_env.py +++ b/utils/build_env.py @@ -7,15 +7,12 @@ import sys import os from os.path import realpath, dirname, join, sep, abspath -from searx.version import GIT_URL, GIT_BRANCH - repo_root = realpath(dirname(realpath(__file__)) + sep + '..') sys.path.insert(0, repo_root) -# Under the assumption that a brand is always a fork assure that the settings -# file from reposetorie's working tree is used to generate the build_env, not -# from /etc/searx/settings.yml. -os.environ['SEARX_SETTINGS_PATH'] = abspath(dirname(__file__) + sep + 'settings.yml') +# Assure that the settings file from reposetorie's working tree is used to +# generate the build_env, not from /etc/searx/settings.yml. +os.environ['SEARX_SETTINGS_PATH'] = join(repo_root, 'etc', 'settings.yml') def _env(*arg, **kwargs): val = get_setting(*arg, **kwargs) @@ -49,9 +46,10 @@ for name, option in name_val: if not os.environ.get(name, _unset) is _unset: del os.environ[name] -# After the variables are unset in the environ, we can import settings -# (get_setting) from searx module. +# After the variables are unset in the environ, we can import from the searx +# package (what will read the values from the settings.yml). +from searx.version import GIT_URL, GIT_BRANCH from searx import get_setting print('build %s (settings from: %s)' % (brand_env, os.environ['SEARX_SETTINGS_PATH'])) -- cgit v1.2.3 From 85e0908e4fa2f7b5dea6095b73eea51f0996f47b Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 30 Jul 2021 09:40:36 +0200 Subject: [fix] searx.sh - get_installed_version_variables() Fix the quotation marks in the command line to run python -m searx.version Signed-off-by: Markus Heiser --- utils/searx.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'utils') diff --git a/utils/searx.sh b/utils/searx.sh index a9bd41288..1d08ed5f8 100755 --- a/utils/searx.sh +++ b/utils/searx.sh @@ -429,10 +429,11 @@ EOF popd > /dev/null } -# shellcheck disable=SC2034 prompt_installation_status(){ - local state branch remote remote_url GIT_URL GIT_BRANCH VERSION_STRING VERSION_TAG + # shellcheck disable=SC2034 + local GIT_URL GIT_BRANCH VERSION_STRING VERSION_TAG + local ret_val state branch remote remote_url state="$(install_searx_get_state)" case $state in @@ -506,7 +507,7 @@ get_installed_version_variables() { _state="$(install_searx_get_state)" case $_state in python-installed|installer-modified) - sudo -H -u "${SERVICE_USER}" "${SEARX_PYENV}/bin/python -m searx.version";; + sudo -H -u "${SERVICE_USER}" "${SEARX_PYENV}/bin/python" -m searx.version;; *) return 42 ;; -- cgit v1.2.3 From 5b3eeb6e54d4b88adccdf847c32d8102ff6202a5 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 30 Jul 2021 09:43:17 +0200 Subject: [mod] searx.sh - improve some messages prompted while installation Signed-off-by: Markus Heiser --- utils/searx.sh | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'utils') diff --git a/utils/searx.sh b/utils/searx.sh index 1d08ed5f8..3ebe5df11 100755 --- a/utils/searx.sh +++ b/utils/searx.sh @@ -213,20 +213,26 @@ main() { *) usage "$_usage"; exit 42;; esac ;; install) - rst_title "SearXNG (install)" part sudo_or_exit case $2 in - all) install_all ;; + all) + rst_title "SearXNG (install)" part + install_all + ;; user) + rst_title "SearXNG (install user)" verify_continue_install assert_user ;; pyenv) + rst_title "SearXNG (install pyenv)" verify_continue_install create_pyenv ;; searx-src) + rst_title "SearXNG (install searx-src)" verify_continue_install + assert_user clone_searx install_DOT_CONFIG init_SEARX_SRC @@ -241,6 +247,7 @@ main() { install_settings ;; uwsgi) + rst_title "SearXNG (install uwsgi)" verify_continue_install install_searx_uwsgi if ! service_is_available "http://${SEARX_INTERNAL_HTTP}"; then @@ -248,9 +255,11 @@ main() { fi ;; packages) + rst_title "SearXNG (install packages)" pkg_install "$SEARX_PACKAGES" ;; buildhost) + rst_title "SearXNG (install buildhost)" pkg_install "$SEARX_PACKAGES" pkg_install "$BUILD_PACKAGES" ;; @@ -377,6 +386,11 @@ installations that were installed with this script." assert_user() { rst_title "user $SERVICE_USER" section echo + if getent passwd "$SERVICE_USER" > /dev/null; then + echo "user exists" + return 0 + fi + tee_stderr 1 <