---
number: DC2
name: DIALS installer
tags: proposal
---
# DC2: DIALS installer
Proposal | DIALS installer
--- | ---
Created | 2020-02-23
Status | [Accepted](https://dials.github.io/kb/core/20210225#dc2-dials-installer)
[](https://hackmd.io/csjWOVK5Qz6MJ-52-TLfUQ)
---
1. **WP1:** We can use [`conda-pack`](https://github.com/conda/conda-pack) to pack up the environment.
* This does not depend on anything else really, so we can start here.
* Having this would mean that we have a valid (non-relocated) conda environment in the installation, which would resolve eg. the readline/ncurses issues. So this has an immediate benefit.
* The installer should be able to run offline.
* Workflow would be:
* use `conda-pack` to pack up the correct environment
* unpack that manually
* do the equivalent of the create-installer script using the `conda-pack`'d environment
* And then on installation:
* unpack the `conda-pack`'d environment
* run the `conda-pack` post install fixer-upper
* do the remainder of the DIALS installer bit
* done
* Also: disconnect the DIALS installer scripts from libtbx
2. **WP2:** Support an offline developer installation. Currently this is covered by downloading a release.
* Add a `--download` option to bootstrap that
* downloads and unpacks miniconda
* tells miniconda to resolve and download the environment (not: install)
* clones all sources repositories
* Add an `--offline` option to bootstrap that
* takes all the above files and does the base & build step
3. **WP3**: have a run-time spec and a development environment
* Split up eg. `linux.txt` into run/dev, and then there will be some overlap between platforms and it can probably be simplified
* Not on the critical path.
* This would allow us to remove C compilers, alabaster, sphinx, scons, pytest, ..., and make
4. **WP4**: The installer should only install user installation, not development installation
* Not reasonable to provide an 'upgrade' path, as that would need to rebuild everything anyway. We can provide manual instructions for converting.
* With this we can remove all C++ source code and intermediate files
Ancillary:
* Make bootstrap print out '*you're in uncharted territory*' if you change the Python version on a release build that has otherwise pinned conda-forge packages. Unpin the CF packages.