unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* package.el, auto-installation, and auto-removal
@ 2014-11-07 13:45 Stefan Monnier
  2014-11-07 14:12 ` Ted Zlatanov
  2014-11-07 20:00 ` Nic Ferrier
  0 siblings, 2 replies; 80+ messages in thread
From: Stefan Monnier @ 2014-11-07 13:45 UTC (permalink / raw)
  To: emacs-devel


`package.el' is great to install packages more easily, but it falls short
when you want to keep the same set of installed packages on various
machines, or when it's time to remove package you don't need because it
doesn't distinguish between the packages you want and those required
by those packages.

So I'm looking for some kind soul who could extend package.el so as to
keep track of the packages that the user installed explicitly.
This should likely be kept in a custom variable.

Then we could add a command to install all the packages listed in
that variable.  And we could also write a function that deletes all
"orphan" packages.


        Stefan



^ permalink raw reply	[flat|nested] 80+ messages in thread
* Re: package.el, auto-installation, and auto-removal
@ 2014-11-11 20:55 Robert Dallas Gray
  2014-11-11 21:34 ` Nic Ferrier
  0 siblings, 1 reply; 80+ messages in thread
From: Robert Dallas Gray @ 2014-11-11 20:55 UTC (permalink / raw)
  To: emacs-devel

As an addendum to the points that have been raised on this topic, and as the author of Pallet, I thought it worth chipping in a few tuppences. 

There are several solutions to the problem Stefan outlines, with varying degrees of complexity and flexibility. To my mind, Cask is the least complex and most flexible. 

Cask only requires Python when used from the command line. There is a version available as a package.el package; this is what Pallet uses as its backend.

Pallet, as has been stated, is a dirt-simple layer over Cask, which rewrites the Cask manifest when the user installs or deletes packages using the package.el subsystem.

Pallet doesn't yet support version-controlled packages (outside of the package.el ecosystem), but Cask does. Pallet will also, when I have time.

Cask uses a tried-and-tested text-file manifest strategy, which has worked well for, e.g., Ruby's bundler and Javascript's npm. The syntax is a subset of Emacs Lisp.

Cask's author, Johan Andersson (https://github.com/rejeep) has also written epl (https://github.com/cask/epl), a layer over package.el which abstracts the package.el api, and servant (https://github.com/cask/servant), a mock package.el server. He knows the vagaries of package.el very well indeed.

I don't really have a dog in this fight, as I respect the authors and codebases of elpakit, Cask and use-package equally (I don't know enough about el-get to have an opinion), and as Pallet is so functionally trivial. 

But from the point of view of testability, at least, I've had success with using the Cask/epl/servant ecosystem to develop a package, and a set of integration tests which work across several Emacs versions (not so trivial). So I'll throw my hat in the ring for something like Cask and something on top of it like Pallet, even if it's neither of those actual things.

I think a consensus on something simple and flexible would be a great thing for Emacs.

Robert Dallas Gray


^ permalink raw reply	[flat|nested] 80+ messages in thread

end of thread, other threads:[~2014-11-16  3:49 UTC | newest]

Thread overview: 80+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-07 13:45 package.el, auto-installation, and auto-removal Stefan Monnier
2014-11-07 14:12 ` Ted Zlatanov
2014-11-07 19:50   ` joakim
2014-11-08  4:27     ` Stefan Monnier
2014-11-10 14:55   ` Phillip Lord
2014-11-10 17:46     ` Ted Zlatanov
2014-11-10 20:27       ` Nic Ferrier
2014-11-10 21:49         ` Stefan Monnier
2014-11-10 22:02           ` package and testing rant (was Re: package.el, auto-installation, and auto-removal) Nic Ferrier
2014-11-10 23:24             ` Stefan Monnier
2014-11-11  2:53               ` Drew Adams
2014-11-11 11:41               ` Nic Ferrier
2014-11-11 16:03                 ` Eli Zaretskii
2014-11-11 17:17                   ` Nic Ferrier
2014-11-11 17:20                   ` Stefan Monnier
2014-11-11 17:53                     ` Eli Zaretskii
2014-11-11 16:24                 ` Stefan Monnier
2014-11-11 17:15                   ` Nic Ferrier
2014-11-11 15:57               ` Eli Zaretskii
2014-11-11 17:18                 ` Stefan Monnier
2014-11-11 17:52                   ` Eli Zaretskii
2014-11-11 18:04                     ` David Kastrup
2014-11-12  3:20                       ` Stephen J. Turnbull
2014-11-12  6:48                         ` David Kastrup
2014-11-11 17:27                 ` Nic Ferrier
2014-11-11 18:20               ` Achim Gratz
2014-11-12 16:13                 ` Stefan Monnier
2014-11-12 17:00                   ` Stephen Leake
2014-11-12 17:51                   ` Nic Ferrier
2014-11-12 20:34                     ` Stefan Monnier
2014-11-12 21:39                       ` Nic Ferrier
2014-11-12 22:40                         ` Stefan Monnier
2014-11-12 23:01                           ` Nic Ferrier
2014-11-12 23:31                             ` Stefan Monnier
2014-11-13  1:09                             ` Stephen J. Turnbull
2014-11-13  5:06                             ` Richard Stallman
2014-11-13 14:59                               ` Nic Ferrier
2014-11-15 17:09                             ` Stephen Leake
2014-11-15 18:20                               ` Nic Ferrier
2014-11-16  3:49                                 ` Stefan Monnier
2014-11-13  8:18                           ` Thien-Thi Nguyen
2014-11-13 10:53                         ` Phillip Lord
2014-11-13 14:54                           ` Nic Ferrier
2014-11-14 11:04                             ` Phillip Lord
2014-11-14 22:56                               ` Nic Ferrier
2014-11-12 18:15                   ` Achim Gratz
2014-11-12 22:21                     ` Stefan Monnier
2014-11-13 20:21                       ` Achim Gratz
2014-11-12 13:05               ` Stephen Leake
2014-11-11 13:30             ` Phillip Lord
2014-11-11 14:12               ` Nic Ferrier
2014-11-11 16:26                 ` Stefan Monnier
2014-11-11 17:13                   ` Nic Ferrier
2014-11-12 16:14                     ` Stefan Monnier
2014-11-12 17:02                       ` Stephen Leake
2014-11-12 17:21                         ` Stefan Monnier
2014-11-10 21:37       ` package.el, auto-installation, and auto-removal Stefan Monnier
2014-11-11  1:29         ` Ted Zlatanov
2014-11-11  2:26           ` Stefan Monnier
2014-11-11  2:59             ` Ted Zlatanov
2014-11-11  3:55               ` Stefan Monnier
2014-11-11 12:44                 ` Phillip Lord
2014-11-11 13:31                   ` Nic Ferrier
2014-11-11 11:31             ` Nic Ferrier
2014-11-11 16:22               ` Stefan Monnier
2014-11-11 17:10                 ` Nic Ferrier
2014-11-11 19:36                   ` Achim Gratz
2014-11-11 20:40                     ` Nic Ferrier
2014-11-11 21:53                       ` Stefan Monnier
2014-11-12 22:17                         ` Nic Ferrier
2014-11-12 22:59                           ` Stefan Monnier
2014-11-12 23:26                             ` Nic Ferrier
2014-11-13  0:21                               ` Stefan Monnier
2014-11-07 20:00 ` Nic Ferrier
2014-11-08  4:29   ` Stefan Monnier
2014-11-08 23:18     ` Nic Ferrier
2014-11-09  3:17       ` Stefan Monnier
  -- strict thread matches above, loose matches on Subject: below --
2014-11-11 20:55 Robert Dallas Gray
2014-11-11 21:34 ` Nic Ferrier
2014-11-13 10:46   ` Phillip Lord

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).