From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Sebastian Wiesner Newsgroups: gmane.emacs.devel Subject: Re: cl-defstruct-based package.el, now with ert tests and no external tar! Date: Tue, 25 Jun 2013 14:19:08 +0200 Message-ID: References: <87y5cx0wh7.fsf@yandex.ru> <87ppy7e5ke.fsf@lifelogs.com> <87vc5x1uzj.fsf@yandex.ru> <87txlcdyl1.fsf@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1372162754 32342 80.91.229.3 (25 Jun 2013 12:19:14 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 25 Jun 2013 12:19:14 +0000 (UTC) Cc: Emacs development discussions , Daniel Hackney , Dmitry Gutov To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Jun 25 14:19:16 2013 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UrSDL-0006bR-O7 for ged-emacs-devel@m.gmane.org; Tue, 25 Jun 2013 14:19:15 +0200 Original-Received: from localhost ([::1]:51787 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UrSDL-0006C2-88 for ged-emacs-devel@m.gmane.org; Tue, 25 Jun 2013 08:19:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54828) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UrSDG-0006B4-Kv for emacs-devel@gnu.org; Tue, 25 Jun 2013 08:19:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UrSDF-0000QP-8g for emacs-devel@gnu.org; Tue, 25 Jun 2013 08:19:10 -0400 Original-Received: from mail-qa0-x22f.google.com ([2607:f8b0:400d:c00::22f]:45114) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UrSDF-0000QL-4w for emacs-devel@gnu.org; Tue, 25 Jun 2013 08:19:09 -0400 Original-Received: by mail-qa0-f47.google.com with SMTP id i13so546245qae.20 for ; Tue, 25 Jun 2013 05:19:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=TmG5P7GjHzfTcauspr/THFky8jxPIFbQyQbxqasc2AU=; b=n80W8qBvleHJ1ygMlZyKeQOHNcbiUaiH3Z/nqfF1gEjnOn48FWIS6kbVSW/LGBxVrT NRDwE7cd0dpstt+rHDCLe3y2ujL9tSF38QLt2nuWk7VbBNcg2qavyW1GQN1+LoNRkp6B cDx0s01S9jp1RkmKKCrGCoOGT7h/7OX3q4WlBKqPU+vC3kNgnyfgt5UJHtFC3syRG/TZ d+MaHrmSD8tngqksssMtYZfa5fT4R7iamP1Fcw2O1gEtgatUSRS3L7hAOSVhWuoi+2Lt x2uBjA/YCwioquHpt6Ny3BCNSLi3KboORvPNaPFkpd+iiqv+PEMI+RKVPEKhtTplQUeO a00A== X-Received: by 10.229.184.71 with SMTP id cj7mr5233891qcb.60.1372162748765; Tue, 25 Jun 2013 05:19:08 -0700 (PDT) Original-Received: by 10.224.178.193 with HTTP; Tue, 25 Jun 2013 05:19:08 -0700 (PDT) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c00::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:161023 Archived-At: 2013/6/25 Stefan Monnier : >> The API *has* changed. > > It probably has, depends what you mean by API. Since all the code is > accessible, any change can break some external package. > > If something broke for you, then please say so explicitly, and we'll see > whether we think it could/should be fixed, or whether you're just out > of luck. Well, the list is long: - "package-archive-contents" and "package-alist" have different contents now, because the package descriptors have changed, - "package-delete" takes a single argument only, but used to take two, - "package-obsolete-alist" is gone, - "package-install" doesn't accept a package name anymore, - etc. Since most of these changes come from the introducing of "package-desc" struct, I know that I am out of luck. Interestingly, all the internal API that we use doesn't seem to have changed. "package-menu--generate" and "package-menu--find-upgrades" work as before, and not less awkward to use. >> We (that is, the Carton team [1]) =E2=80=9Cuse=E2=80=9D this API. > > What API? Well, the package.el API, that is, "package-install", "package-delete", "package-alist", and unfortunately a number of internal functions ("package--*"), too, because the public API is somewhat limited. >> [1]: https://github.com/rejeep/carton > > I don't understand what this does. Could you give me some description > of what is the benefit of such a tool, either for an end-user or for > a developer of a package? Carton creates isolated and independent package environments. For an end user, it's just a declarative way to specify all packages used in her configuration, installable with a single shell command, but for a package developer, it maintains an isolated, automated and repeatable package environment for testing. Say, I develop a package "foo" which depends on dash.el and s.el, and also on ERT and Ecukes for unit and integration tests. I manage these dependencies through Carton, and use "carton exec" to run my test suite. Now - my "~/.emacs.d" packages are separated from the packages used to run the tests of "foo", - so my "~/.emacs.d" is not cluttered with all sorts of development dependencies from various packages I write, - and the test environment of "foo" is clean of any unwanted packages, so I cannot accidentally use a function from a package that's present in my "~/.emacs.d" but not specified as dependency, - the test environment of "foo" is repeatable, and can be set up with just a single shell command, whether on my personal laptop, the desktop system of a new contributor, or a CI service like Travis CI, - etc. Essentially, it's Bundler, but for Emacs Lisp.