Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for standalone application installers #211

Closed
tjd2002 opened this issue Jul 25, 2018 · 4 comments
Closed

Add support for standalone application installers #211

tjd2002 opened this issue Jul 25, 2018 · 4 comments
Labels
locked [bot] locked due to inactivity stale::closed [bot] closed after being marked as stale stale [bot] marked as stale due to inactivity type::feature request for a new feature or capability

Comments

@tjd2002
Copy link

tjd2002 commented Jul 25, 2018

With the impending return of conda-run in conda 4.6 (PR at conda/conda#7320; discussion at conda/conda#2379 and conda/conda#2682 ), I think it would be wildly useful if constructor could be used to build installers that expose only a limited set of entry points to a packaged app. I.e. allow installed software to be run without needing to activate the underlying conda env.

Motivation: I am packaging a scientific software suite with Python, NodeJS, and Qt components (https://github.com/flatironinstitute/mountainlab-js). It runs magically from a conda env (recipes at: https://github.com/flatironinstitute/mountainlab-conda) and from from a constructor installer. I would love to use these tools to provide a standalone installer for users who do not already use conda (or who may not want to). However after running the constructor installer, ~200 extra binaries are added to the user's path in addition to the app I am trying to install (clobbering, among other things, the user's Python, Pip, NodeJS, npm, qmake, Qt-designer, bzip2, and conda).

Using @kalefranz's experimental conda-run (or @gqmelo's exec-wrappers? ), one could instead expose only a limited set of binaries, via some simple wrapper scripts. This would allow the constructor-built installer to function as a standalone app installer (albeit one backed by a conda env).

One implementation of this would be to add an 'entry_points' key in construct.yaml (a list of binary names to wrap), and the construction of a directory of wrapper scripts corresponding to each entry point. This directory could then be added to the path upon installation, rather than the $PREFIX/bin directory.

Does this use case go against the intended purpose of constructor as a way to distribute Conda distributions? (An end user would not necessarily even be aware they were installing a Conda env). If so, it might be possible to build this functionality separately.

@mcg1969
Copy link
Contributor

mcg1969 commented Sep 27, 2020

@tjd2002 I know this is an older issue but I've tagged it as an enhancement, and with this stale issue sweep I'm doing perhaps it will get some attention. I think there is genuine potential here for this to be useful if carefully crafted.

On Windows, we have the menuinst tool that allows Start Menu items to be created, that is somewhat similar to this. I think for Windows you could come very close to an installer that provides a standalone executable.

For Linux and macOS you'd have to think of something different—perhaps installing scripts into ~/bin or /usr/local/bin that call appropriate conda run commands.

@mcg1969 mcg1969 changed the title True standalone app installer using constructor + conda-run Add support for standalone application installers Sep 27, 2020
@mcg1969
Copy link
Contributor

mcg1969 commented Sep 27, 2020

A closely related issue from @raphaeljolivet #330

Is there a way to package any other file (like a Notebook for instance) ?

Ideally, I would like to ship a python Notebook with all its dependencies and have Jupyter to be opened on it automatically. Can this be achieved ?

Thanks for your help.

Effectively, this is the same because the "application" in question is just jupyter notebook $PREFIX/notebook.ipynb.

@github-actions
Copy link

Hi there, thank you for your contribution!

This issue has been automatically marked as stale because it has not had recent activity. It will be closed automatically if no further activity occurs.

If you would like this issue to remain open please:

  1. Verify that you can still reproduce the issue at hand
  2. Comment that the issue is still reproducible and include:
    - What OS and version you reproduced the issue on
    - What steps you followed to reproduce the issue

NOTE: If this issue was closed prematurely, please leave a comment.

Thanks!

@github-actions github-actions bot added the stale [bot] marked as stale due to inactivity label Mar 11, 2022
@github-actions github-actions bot added the stale::closed [bot] closed after being marked as stale label May 14, 2022
@tjd2002
Copy link
Author

tjd2002 commented May 14, 2022

Please reopen: enhancement request still valuable

@github-actions github-actions bot added the locked [bot] locked due to inactivity label May 15, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 15, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
locked [bot] locked due to inactivity stale::closed [bot] closed after being marked as stale stale [bot] marked as stale due to inactivity type::feature request for a new feature or capability
Projects
Archived in project
Development

No branches or pull requests

2 participants