mirror of https://github.com/mamba-org/mamba.git
132 lines
3.1 KiB
ReStructuredText
132 lines
3.1 KiB
ReStructuredText
=======================
|
|
Development Environment
|
|
=======================
|
|
|
|
.. warning::
|
|
|
|
These instructions have some inaccuracies on Windows.
|
|
|
|
Get the code and Mamba
|
|
======================
|
|
|
|
Clone the repo
|
|
**************
|
|
|
|
Fork and clone the repository in your preferred manner.
|
|
Refer to GitHub documentation for how to do so.
|
|
|
|
Install micromamba
|
|
******************
|
|
|
|
Setting the development environment requires conda, mamba, or micromamba.
|
|
Since some commands are automated with ``micromamba``, and to avoid any runtime linking issue,
|
|
it is best to work with micromamba.
|
|
|
|
Refer to the :ref:`installation<umamba-install>` page for how to install micromamba or mamba.
|
|
|
|
Running commands manually
|
|
=========================
|
|
|
|
.. note::
|
|
|
|
The CI files in ``.github/workflow`` provide an alternative way of developing Mamba.
|
|
|
|
Install development dependencies
|
|
********************************
|
|
|
|
.. code:: bash
|
|
|
|
micromamba create -n mamba -c conda-forge -f dev/environment-dev.yml
|
|
micromamba activate mamba
|
|
|
|
Compile ``libmamba`` and other artifacts
|
|
****************************************
|
|
|
|
``libmamba`` is built using CMake.
|
|
Typically during development, we build everything dynamically using dependencies
|
|
from Conda-Forge.
|
|
|
|
The first step is to configure the build options.
|
|
A recommended set is already provided as CMake Preset, but feel free to use any variations.
|
|
|
|
.. note::
|
|
If you do choose to use the provided CMake Preset, you may need to
|
|
install ``ccache`` as an extra requirement as specified
|
|
in ``dev/environment-dev-extra.yml``.
|
|
|
|
.. note::
|
|
All ``cmake`` commands listed below use ``bash`` multi-line syntax.
|
|
On Windows, replace ``\`` trailing character with ``^``.
|
|
|
|
.. code:: bash
|
|
|
|
cmake -B build/ -G Ninja --preset mamba-unix-shared-debug-dev
|
|
|
|
Compilation can then be launched with:
|
|
|
|
.. code:: bash
|
|
|
|
cmake --build build/ --parallel
|
|
|
|
``libmamba`` tests
|
|
******************
|
|
|
|
The tests for libmamba are written in C++.
|
|
|
|
.. code:: bash
|
|
|
|
./build/libmamba/tests/test_libmamba
|
|
|
|
``mamba``/``micromamba`` integration tests
|
|
******************************************
|
|
|
|
Many ``mamba`` integration tests are written through a pytest Python wrapper.
|
|
The environment variable ``TEST_MAMBA_EXE`` controls which executable is being tested.
|
|
|
|
.. code:: bash
|
|
|
|
export TEST_MAMBA_EXE="${PWD}/build/micromamba/mamba"
|
|
python -m pytest micromamba/tests
|
|
|
|
``libmambapy`` tests
|
|
********************
|
|
|
|
To run the ``libmambapy`` tests, the Python package needs to be properly installed first.
|
|
|
|
.. warning::
|
|
|
|
This needs to be done every time ``libmamba`` changes.
|
|
|
|
.. code:: bash
|
|
|
|
cmake --install build/ --prefix "${CONDA_PREFIX}"
|
|
|
|
Then the Python bindings can be installed
|
|
|
|
.. code:: bash
|
|
|
|
python -m pip install --no-deps --no-build-isolation libmambapy/
|
|
|
|
Finally the tests can be run:
|
|
|
|
.. code:: bash
|
|
|
|
python -m pytest libmambapy/tests
|
|
|
|
Code Formatting
|
|
===============
|
|
|
|
Code formatting is done using Pre-Commit hooks.
|
|
Whichever way you decided to install development dependencies, we recommend installing
|
|
Pre-Commit hooks with
|
|
|
|
.. code:: bash
|
|
|
|
pre-commit install
|
|
|
|
Alternatively, the checks can be run manually
|
|
|
|
.. code:: bash
|
|
|
|
pre-commit run --all-files
|