Skip to content
Snippets Groups Projects
Commit 3cd5bf39 authored by James Kennington's avatar James Kennington
Browse files

add docs for local development env

parent d40a9600
No related branches found
No related tags found
1 merge request!70Add docs for contribution workflow and local development env
Pipeline #270152 passed
# Local Development Environment
The local development workflow consists of a few key points:
- Managed conda environments using [conda-flow](https://git.ligo.org/james.kennington/conda-flow)
- Using integrated development environments (IDEs) like [PyCharm]()/[CLion]()
- Running applications that can consume `gstlal`, like [Jupyter Notebook]()
## Creating the environment
Thanks to conda-flow, creating the environment is simple. Before we can use conda-flow, it must be installed. In
whatever environment you prefer, install conda-flow from pip:
```bash
pip install conda-flow
```
Once conda-flow is installed, There are locked environment files contained within the gstlal repo under
`gstlal/gstlal/share/conda/envs`. Using conda-flow, we can make sure the local development conda environment is built:
```bash
conda-flow activate -n gstlal-dev -c /path/to/gstlal/gstlal/share/conda/conda-flow.yml
```
## Activating the environment
The `activate` command within conda-flow is done through subprocesses, and consequently will *not* affect the parent
process, such as the shell from which conda-flow is called. This is done to prevent unintended side effects; however, it
also means that unlike `conda activate`, `conda-flow activate` will not activate the environment inside the shell. If
you wish to activate the environment inside the shell, run `conda activate gstlal-dev`.
## Using Developer Tools
To use an IDE to develop `gstlal`, you will first need to start your IDE from within the appropriate conda environment.
For example, to launch the PyCharm IDE, run:
```bash
conda-flow activate -n gstlal-dev --run-after "open -na ""PyCharm.app""" -c /path/to/gstlal/gstlal/share/conda/conda-flow.yml
```
### Python Development
Note that the python source modules are not in a typical pythonic package structure (due to use of GNU build for c code
within gstlal). This can present problems with package indexing / imports in the IDE. The solution is to provide the IDE
with a map of the proper import paths, which can be done via two ways:
1. Build `gstlal` (or at least the python components) and add the build directory as a source directory in your IDE
1. Create a new source directory full of symlinks to the source files with a structure that mimicks the import paths.
There is a utility for constructing such symlinks at `gstlal/gstlal/share/conda/dev_links.py`
## Launching Applications
Conda-flow is capable of running arbitrary commands after activating the environment in the subprocess which is useful
for launching applications in a controlled way. For example, to run a jupyter notebook:
```bash
conda-flow activate -n gstlal-dev --run-after "jupyter notebook" -c /path/to/gstlal/gstlal/share/conda/conda-flow.yml
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment