README.md 3.73 KB
Newer Older
1
2
3
4
5
6
7
8
# FSL conda package infrastructure


_This documentation is a work in progress_


This repository hosts information and documentation regarding the FSL conda package infrastructure. 

9

10
11
This `README` file contains a general overview. More detailed information on different topics can be found in the folowing files:

12
13
 - [`development_workflow.md`](development_workflow.md): Details on development and release workflows and processes.
 - [`official_fsl_installations.md`](official_fsl_installations.md): Details on official/full conda-based FSL installations.
14
 - [`local_development.md`](local_development.md): Setting up an FSL development environment on your own machine.
15
 - [`building_fsl_conda_packages.md`](building_fsl_conda_packages.md): Details on how to build a FSL conda package locally.
16
 - [`creating_fsl_conda_recipes.md`](creating_fsl_conda_recipes.md): Details on how to create a FSL conda recipe.
17
18
19
20
21
22


## Overview

FSL is installed using the [**conda**](https://conda.io/) package and environment management system. Each FSL project is built as a conda package, and published to an internally hosted conda channel.

23

24
25
26
27
28
29
30
31
32
33
34
35
36
37
Prior to FSL 6.1.0, FSL was released and installed as a monolithic archive file, containing most FSL tools, and a separate conda environment called "`fslpython`", configured after the archive file was installed. Some of the reasons for transitioning to a purely conda-based release model are as follows:

 - Simplify FSL installation procedure
 - Reduce the size of `$FSLDIR`
 - Allow "minimal" FSL installations, with only the utilities that are required
 - Improve support for container-based FSL installations
 - Simplify cross-platform management of external dependencies (e.g. VTK, OpenBLAS)


## Official FSL installations


Each official FSL release is defined by a conda [`environment.yml` specification](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#create-env-file-manually). This specification contains a list of all of the packages, including their versions, to be installed.

38

39
40
The official fsl/installer> script performs the following tasks:

41

42
43
44
45
1. Downloads a `miniconda` installer.
2. Installs a base `miniconda` environment into `$FSLDIR/../.fslconda/` (where `$FSLDIR` defaults to `/usr/local/fsl/`, or is explicitly specified by the user).
3. Creates a child conda environment at `$FSLDIR`.
4. Installs all FSL packages into the `$FSLDIR` conda environment.
46
5. Sets up the user shell profile so that FSL is configured in their shell environment by default.
47
48
49
50
51
52
53
54
55
56


## Partial FSL installations


Users may choose to install specific FSL packages by installing the desired FSL packages directly from the FSL conda channel into their own conda environment.


## FSL conda packages

57

58
59
All FSL projects and their dependencies are published as conda packages, either in the internal FMRIB conda channel, or on https://anaconda.org, in one of the `conda-forge` or `defaults` channels.

60

61
62
All FSL projects, and any dependencies which are not available on https://anaconda.org, are built according to a conda "recipe", which describes how the project can be built as a conda package. All FSL conda recipes are hosted as git repositories on the FMRIB gitlab server, under the `fsl/conda/` group.

63

64
65
To clarify, each FSL project, and internally managed dependency, comprises **two** git repositories:

66
* The project repository contains the project source code/resources, and is typically hosted at `https://git.fmrib.ox.ac.uk/fsl/<project>`
67
* The recipe repository contains a conda recipe for the project, and is hosted at `https://git.fmrib.ox.ac.uk/fsl/conda/fsl-<project>`.
68
69
70


FSL conda packages are built automatically using Gitlab CI - the CI infrastructure for automatically building conda packages is hosted in the fsl/fsl-ci-rules> repository.