123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- .. _makefile:
- ================
- Makefile Targets
- ================
- .. sidebar:: build environment
- Before looking deeper at the targets, first read about :ref:`makefile setup`
- and :ref:`make pyenv`.
- With the aim to simplify development cycles, started with :pull:`1756` a
- ``Makefile`` based boilerplate was added.
- The usage is simple, just type ``make {target-name}`` to *build* a target.
- Calling the ``help`` target gives a first overview::
- $ make help
- test - run developer tests
- docs - build documentation
- docs-live - autobuild HTML documentation while editing
- run - run developer instance
- install - developer install (./local)
- uninstall - uninstall (./local)
- gh-pages - build docs & deploy on gh-pages branch
- clean - drop builds and environments
- ...
- .. contents:: Contents
- :depth: 2
- :local:
- :backlinks: entry
- .. _makefile setup:
- Setup
- =====
- .. _git stash: https://git-scm.com/docs/git-stash
- The main setup is done in the :origin:`Makefile`::
- export GIT_URL=https://github.com/asciimoo/searx
- export SEARX_URL=https://searx.me
- export DOCS_URL=https://asciimoo.github.io/searx
- .. sidebar:: fork & upstream
- Commit changes in your (local) branch, fork or whatever, but do not push them
- upstream / `git stash`_ is your friend.
- :GIT_URL: Changes this, to point to your searx fork.
- :SEARX_URL: Changes this, to point to your searx instance.
- :DOCS_URL: If you host your own (branded) documentation, change this URL.
- .. _make pyenv:
- Python environment
- ==================
- .. sidebar:: activate environment
- ``source ./local/py3/bin/activate``
- With Makefile we do no longer need to build up the virualenv manually (as
- described in the :ref:`devquickstart` guide). Jump into your git working tree
- and release a ``make pyenv``:
- .. code:: sh
- $ cd ~/searx-clone
- $ make pyenv
- PYENV usage: source ./local/py3/bin/activate
- ...
- With target ``pyenv`` a development environment (aka virtualenv) was build up in
- ``./local/py3/``. To make a *developer install** of searx (:origin:`setup.py`)
- into this environment make target ``install``
- .. code:: sh
- $ make install
- PYENV usage: source ./local/py3/bin/activate
- PYENV using virtualenv from ./local/py3
- PYENV install .
- You have never to think about intermediate targets like ``pyenv`` or
- ``install``, the ``Makefile`` chains them as requisites. Just run your main
- target.
- .. sidebar:: drop environment
- To get rid of the existing environment before re-build use :ref:`clean target
- <make clean>` first.
- If you think, something goes wrong with your ./local environment or you change
- the :origin:`setup.py` file (or the requirements listed in
- :origin:`requirements-dev.txt` and :origin:`requirements.txt`), you have to call
- :ref:`make clean`.
- .. _make run:
- ``make run``
- ============
- To get up a running a developer instance simply call ``make run``. This enables
- *debug* option in :origin:`searx/settings.yml`, starts ``./searx/webapp.py``
- instance, disables *debug* option and opens the site (xdg-open):
- .. code:: sh
- $ make run
- PYENV usage: source ./local/py3/bin/activate
- PYENV install .
- ./local/py3/bin/python ./searx/webapp.py
- ...
- INFO:werkzeug: * Running on http://127.0.0.1:8888/ (Press CTRL+C to quit)
- ...
- .. _make clean:
- ``make clean``
- ==============
- Drop all intermediate files, all builds, but keep sources untouched. Includes
- target ``pyclean`` which drops ./local environment. Before calling ``make
- clean`` stop all processes using :ref:`make pyenv`.
- .. code:: sh
- $ make clean
- CLEAN pyclean
- CLEAN clean
- .. _make docs:
- ``make docs docs-live docs-clean``
- ==================================
- We describe the usage of the ``doc*`` targets in the :ref:`How to contribute /
- Documentation <contrib docs>` section. If you want to edit the documentation
- read our :ref:`make docs-live` section. If you are working in your own brand,
- adjust your :ref:`Makefile setup <makefile setup>`.
- .. _make gh-pages:
- ``make gh-pages``
- =================
- To deploy on github.io first adjust your :ref:`Makefile setup <makefile
- setup>`. For any further read :ref:`deploy on github.io`.
- .. _make test:
- ``make test``
- =============
- Runs a series of tests: ``test.pep8``, ``test.unit``, ``test.robot`` and does
- additional :ref:`pylint checks <make pylint>`. You can run tests selective,
- e.g.:
- .. code:: sh
- $ make test.pep8 test.unit
- . ./local/py3/bin/activate; ./manage.sh pep8_check
- [!] Running pep8 check
- . ./local/py3/bin/activate; ./manage.sh unit_tests
- [!] Running unit tests
- .. _make pylint:
- ``make pylint``
- ===============
- .. _Pylint: https://www.pylint.org/
- Before commiting its recommend to do some (more) linting. Pylint_ is known as
- one of the best source-code, bug and quality checker for the Python programming
- language. Pylint_ is not yet a quality gate within our searx project (like
- :ref:`test.pep8 <make test>` it is), but Pylint_ can help to improve code
- quality anyway. The pylint profile we use at searx project is found in
- project's root folder :origin:`.pylintrc`.
- Code quality is a ongoing process. Don't try to fix all messages from Pylint,
- run Pylint and check if your changed lines are bringing up new messages. If so,
- fix it. By this, code quality gets incremental better and if there comes the
- day, the linting is balanced out, we might decide to add Pylint as a quality
- gate.
- ``make pybuild``
- ================
- .. _PyPi: https://pypi.org/
- .. _twine: https://twine.readthedocs.io/en/latest/
- Build Python packages in ``./dist/py``.
- .. code:: sh
- $ make pybuild
- ...
- BUILD pybuild
- running sdist
- running egg_info
- ...
- $ ls ./dist/py/
- searx-0.15.0-py3-none-any.whl searx-0.15.0.tar.gz
- To upload packages to PyPi_, there is also a ``upload-pypi`` target. It needs
- twine_ to be installed. Since you are not the owner of :pypi:`searx` you will
- never need the latter.
|