***************
Developer guide
***************
.. _include-pkg:
Including a package
-------------------
If you want a python package included in Deltaforge, there are the following
requirements:
* The package is released on `conda-forge `_
* The package has a license which allows us to distribute it freely
* The package dependency requirements need to be compatible with the already
included packages
If this is the case, you can post an issue
`on our issueboard. `_
Or you can add it to the ``construct.yaml`` file under ``specs``, and open up a
pull request. The ``construct.yaml`` currently looks like:
.. literalinclude:: ../deltaforge/construct.yaml
:language: yaml
:caption: construct.yaml
Building locally
----------------
Building Deltaforge at present is slightly tricky, as ``constructor`` is not
fully compatible with the latest features of ``conda`` yet.
Deltaforge is built with the package `constructor
`_. However, Deltaforge has a lot of
dependencies to include, for which the standard ``conda`` solver is too slow.
Luckily for us, the ``libmamba`` solver `is recently added to conda.
`_ However, ``constructor``
does not support the plugin structure introduced in ``conda 20.11`` yet. But our
way out is using the ``conda 20.9`` installation, which included ``libmamba``
`as an experimental solver
`_. In
addition, ``constructor`` hasn't released a version yet which support
experimental solvers, so we have to ``pip`` directly from Github.
**TL;DR**, these are the commandos required to build Deltaforge at present (22-12-2022):
.. code-block:: shell
conda deactivate
conda install conda-libmamba-solver conda=20.9
conda config --set experimental_solver libmamba
pip install git+https://github.com/conda/constructor@fd028c8
constuctor .
Signing
-------
The installers are signed with the Deltares certificate on Deltares servers. At
present, these are not pushed back to Github, so the built installers listed on
Github under `release `_ are
unsigned. Windows will throw warnings to users when using unsigned installers.