constructor icon indicating copy to clipboard operation
constructor copied to clipboard

Add more output formats (Docker, conda-pack)

Open jaimergp opened this issue 1 year ago • 0 comments

Checklist

  • [X] I added a descriptive title
  • [X] I searched open requests and couldn't find a duplicate

What is the idea?

constructor is able to generate installers for Linux, macOS, and Windows, using an array of formats (SH, PKG, EXE, respectively). However, there's nothing special about these "installers" they are just "artifacts" that "pack" a number of conda packages.

The idea here would be to teach constructor how to generate additional artifact formats, like:

  • Docker containers via conda-docker
  • Tarballs via conda-pack

Why is this needed?

constructor would slowly become an interface for packaging and distributing conda environments. There is plenty of duplicated logic across this projects and we would benefit from a single maintenance hub for all of them. There are bits of conda-pack internals that would be lovely to have in constructor's code (like the Environment abstraction).

What should happen?

Users could just have a construct.yml like this:

name: Scripts
version: X
# installer_type: all
artifacts:
  - container  # via conda-docker
  - conda-pack
channels:
  - http://repo.anaconda.com/pkgs/main/
specs:
  - python

Additional Context

This is the other side of https://github.com/conda/conda-pack/issues/294.

We could take a look and see how feasible this is. constructor was always built with the "installer" idea in mind, so some concepts in the config file and code base might be too coupled. In that case, a separate tool that encompasses all these usages with their nuances could be better welcome (e.g. conda-bundle).

jaimergp avatar Nov 10 '23 18:11 jaimergp