emacs-eaf / emacs-application-framework

EAF, an extensible framework that revolutionizes the graphical capabilities of Emacs
GNU General Public License v3.0
3.1k stars 235 forks source link

Better way to distribute dependencies? #1134

Closed hammerfunctor closed 11 months ago

hammerfunctor commented 11 months ago

Is your feature request related to a problem? Please describe.

  1. It would be nice to add a switch --no-confirm to the installation script and make it opt-in, or at least print out the packages to be installed. Executing things like yay -Sy --noconfirm --needed beforehand without further information is not that invited.
  2. Is there better ways to distribute python deps? To grab tarballs from pypi and build locally seems way better than simply pip install --user --break-system-packages. Not to mention some users on linux doesn't even have pip installed, lmao.

Describe the solution you'd like A clear and concise description of what you want to happen.

Describe alternatives you've considered A clear and concise description of an alternative solutions or features you've considered, if any.

Additional context Add any other context or screenshots about the feature request here.

MatthewZMD commented 11 months ago

You raise a good point of prompting the user what dependencies are installed. Since there're many dependencies that differ system-to-system, I will suggest the user to refer to the easily understandable dependencies.json.

Regarding --no-confirm, I don't have a strong opinion. @manateelazycat

Curling tarballs from pypi and build it locally is a much more troublesome approach and prone-to-error, than assuming the user installed pip. Furthermore, using pip and other system package managers make the installation process coherent with the system libraries' installation, so that the EAF installation is not something "special" and could be managed (updated or uninstalled) along with other system dependencies.

hammerfunctor commented 11 months ago

Fair. What about setting up a github action to vendor build a binary? I did manage to build eaf.py using pyinstaller effortlessly and start eaf. But since different sub-apps are not coupled from python files, I don't see a direct way to start them. This is ultimately possible, I think, but would require a significant change in the structure of this repo. Even better all of those node modules can also be packaged in this scheme.

MatthewZMD commented 11 months ago

The reason to install all the apps and its dependencies at runtime by the user was to decouple the EAF project structure and make it more lightweight. And as you said, it would require a significant change in the structure of this repo, not something I'd opt to do unless it brings many significant advantages.