content: # Stages:
  #   root       : Common image, both for the builder and for the final image.
  #                This contains only minimal dependencies required in both cases
  #                for miniconda and the Makefile.
  #   env_builder: stage in which the conda envrionment is created
  #                and dependencies are installed
  #   base       : the final image containing only the required environment files,
  #                and none of the infrastructure required to generate them.
  
  FROM registry.gitlab.com/mbarkhau/bootstrapit/env_builder AS builder
  
  RUN mkdir /root/.ssh/ && \
      ssh-keyscan gitlab.com >> /root/.ssh/known_hosts && \
      ssh-keyscan registry.gitlab.com >> /root/.ssh/known_hosts
  
  ADD requirements/ requirements/
  ADD scripts/ scripts/
  
  ADD Makefile.bootstrapit.make Makefile.bootstrapit.make
  ADD Makefile Makefile
  
  # install envs (relatively stable)
  ADD requirements/conda.txt requirements/conda.txt
  RUN make build/envs.txt
  
  # install python package dependencies (change more often)
  ADD requirements/ requirements/
  RUN make conda
  
  # Deleting pkgs implies that `conda install`
  # will have to pull all packages again.
  RUN conda clean --all --yes
  # Conda docs say that it is not safe to delete pkgs
  # because there may be symbolic links, so we verify
  # first that there are no such links.
  RUN find -L /opt/conda/envs/ -type l | grep "/opt/conda/pkgs" || exit 0
  
  # The conda install is not usable after this RUN command. Since
  # we only need /opt/conda/envs/ anyway, this shouldn't be an issue.
  RUN conda clean --all --yes && \
      ls -d /opt/conda/* | grep -v envs | xargs rm -rf && \
      find /opt/conda/ -name "*.exe" | xargs rm -rf && \
      find /opt/conda/ -name "__pycache__" | xargs rm -rf && \
      rm -rf /opt/conda/pkgs/
  
  
  FROM registry.gitlab.com/mbarkhau/bootstrapit/root
  
  RUN apt-get install --yes mercurial;
  
  COPY --from=builder /opt/conda/ /opt/conda/
  COPY --from=builder /vendor/ /vendor
  