unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Supporting multiline Package-Requires header
@ 2015-08-10 11:12 Artur Malabarba
  2015-08-10 11:42 ` Kaushal
                   ` (2 more replies)
  0 siblings, 3 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 11:12 UTC (permalink / raw)
  To: emacs-devel

I'd like to add support for multiline Package-Requires headers in
package.el. Does anyone have any preference over the following 2
possible formats?

1. Same as now, just allow it to span more than one line. E.g.:

        ;; Package-Requires: ((pkg-a "4.2.0")
                              (pkg-b "1.0") (pkg-c "2.0"))

2. Without parenthesis, with exactly one per line. E.g.:

        ;; Package-Requires: pkg-a "4.2.0"
                             pkg-b "1.0"
                             pkg-c "2.0"


Of course, the current way will still be supported. For reference,
here is the current method.

    ;; Package-Requires: ((pkg-a "4.2.0") (pkg-b "1.0") (pkg-c "2.0"))



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 11:12 Supporting multiline Package-Requires header Artur Malabarba
@ 2015-08-10 11:42 ` Kaushal
  2015-08-10 11:59   ` Artur Malabarba
  2015-08-10 12:05   ` Phillip Lord
  2015-08-10 14:26 ` Thierry Volpiatto
  2015-08-10 22:01 ` Stefan Monnier
  2 siblings, 2 replies; 57+ messages in thread
From: Kaushal @ 2015-08-10 11:42 UTC (permalink / raw)
  To: Bruce Connor; +Cc: Emacs developers

[-- Attachment #1: Type: text/plain, Size: 1084 bytes --]

I think you meant to prefix the comment chars on each line of the
multi-line header, correct?

As for preference, I like (1)

    ;; Package-Requires: ((pkg-a "4.2.0")
    ;;                          (pkg-b "1.0") (pkg-c "2.0"))

In (2), it is not clear where the requires end.

--
Kaushal Modi
On Aug 10, 2015 7:12 AM, "Artur Malabarba" <bruce.connor.am@gmail.com>
wrote:

> I'd like to add support for multiline Package-Requires headers in
> package.el. Does anyone have any preference over the following 2
> possible formats?
>
> 1. Same as now, just allow it to span more than one line. E.g.:
>
>         ;; Package-Requires: ((pkg-a "4.2.0")
>                               (pkg-b "1.0") (pkg-c "2.0"))
>
> 2. Without parenthesis, with exactly one per line. E.g.:
>
>         ;; Package-Requires: pkg-a "4.2.0"
>                              pkg-b "1.0"
>                              pkg-c "2.0"
>
>
> Of course, the current way will still be supported. For reference,
> here is the current method.
>
>     ;; Package-Requires: ((pkg-a "4.2.0") (pkg-b "1.0") (pkg-c "2.0"))
>
>

[-- Attachment #2: Type: text/html, Size: 1680 bytes --]

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

* Re: Supporting multiline Package-Requires header
  2015-08-10 11:42 ` Kaushal
@ 2015-08-10 11:59   ` Artur Malabarba
  2015-08-10 12:05   ` Phillip Lord
  1 sibling, 0 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 11:59 UTC (permalink / raw)
  To: Kaushal; +Cc: Emacs developers

2015-08-10 12:42 GMT+01:00 Kaushal <kaushal.modi@gmail.com>:
> I think you meant to prefix the comment chars on each line of the multi-line
> header, correct?

Yes I meant to do that. Thanks for clarifying.



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 11:42 ` Kaushal
  2015-08-10 11:59   ` Artur Malabarba
@ 2015-08-10 12:05   ` Phillip Lord
  2015-08-10 12:28     ` Artur Malabarba
  1 sibling, 1 reply; 57+ messages in thread
From: Phillip Lord @ 2015-08-10 12:05 UTC (permalink / raw)
  To: Kaushal; +Cc: Bruce Connor, Emacs developers

Kaushal <kaushal.modi@gmail.com> writes:

> I think you meant to prefix the comment chars on each line of the
> multi-line header, correct?
>
> As for preference, I like (1)
>
>     ;; Package-Requires: ((pkg-a "4.2.0")
>     ;;                          (pkg-b "1.0") (pkg-c "2.0"))
>
> In (2), it is not clear where the requires end.


I dislike this format, though, because it is too easy to miss of the
last paren and then quite hard to detect (M-x check-parens doesn't check
these parens because they are in comments). This is already a problem
with the current format where there are several dependencies.

I raise possibility (3)

Package-Requires: ((pkg-a "4.2.0) (pkg-b "1.0))
                  ((pkg-c "1.2))

Although I would be concerned that some existing tools would silently
drop the second line. One advantage with (1) is that the first line is
invalid wrt to the existing format. There is something to be send for a
format change that should cleanly break existing tools: fail fast
behaviour seems a good thing. The first packages that go this way on
ELPA will fail on an older versions of Emacs than the first one to have
this support in package.el.

Phil




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

* Re: Supporting multiline Package-Requires header
  2015-08-10 12:05   ` Phillip Lord
@ 2015-08-10 12:28     ` Artur Malabarba
  2015-08-10 12:51       ` Phillip Lord
  0 siblings, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 12:28 UTC (permalink / raw)
  To: Phillip Lord; +Cc: Emacs developers, Kaushal

> I raise possibility (3)
>
> Package-Requires: ((pkg-a "4.2.0) (pkg-b "1.0))
>                   ((pkg-c "1.2))

I thought about this one too, but I don't like it much because (as you
mention) when someone messes up it will fail silently. Other than
that, it's viable.

Option also has the advantage that it's impossible to use by accident
(since the whole thing has to be a single valid sexp).



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 12:28     ` Artur Malabarba
@ 2015-08-10 12:51       ` Phillip Lord
  2015-08-10 13:08         ` Artur Malabarba
  0 siblings, 1 reply; 57+ messages in thread
From: Phillip Lord @ 2015-08-10 12:51 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Emacs developers, Kaushal

Artur Malabarba <bruce.connor.am@gmail.com> writes:

>> I raise possibility (3)
>>
>> Package-Requires: ((pkg-a "4.2.0) (pkg-b "1.0))
>>                   ((pkg-c "1.2))
>
> I thought about this one too, but I don't like it much because (as you
> mention) when someone messes up it will fail silently. Other than
> that, it's viable.
>
> Option also has the advantage that it's impossible to use by accident
> (since the whole thing has to be a single valid sexp).

Indeed. But it's only accidentally a sexp, in the sense that it's not
actually a sexp in the buffer -- it's a comment.

What is the failure behaviour of package.el for this at the moment? I
know Cask would fail nicely for this now (cause I complained about the
old error message!).

It's worth considering. In this case, you really do want the format
change to break everything that doesn't accept it!

Phil



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 12:51       ` Phillip Lord
@ 2015-08-10 13:08         ` Artur Malabarba
  2015-08-10 13:54           ` Bozhidar Batsov
  2015-08-11 21:05           ` Phillip Lord
  0 siblings, 2 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 13:08 UTC (permalink / raw)
  To: Phillip Lord; +Cc: Kaushal, Emacs developers

> Indeed. But it's only accidentally a sexp, in the sense that it's not
> actually a sexp in the buffer -- it's a comment.

It's a commented-out sexp, but it's still a sexp, and it has to be a valid one.

> What is the failure behaviour of package.el for this at the moment?

Package.el will signal an error during installation if it's not a
valid sexp. The error itself will depend on what the problem is.
Here's what you get if you miss a closing paren for instance:
    package-read-from-string: End of file during parsing



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 13:08         ` Artur Malabarba
@ 2015-08-10 13:54           ` Bozhidar Batsov
  2015-08-10 15:22             ` Artur Malabarba
  2015-08-11 21:05           ` Phillip Lord
  1 sibling, 1 reply; 57+ messages in thread
From: Bozhidar Batsov @ 2015-08-10 13:54 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Phillip Lord, Emacs developers, Kaushal

[-- Attachment #1: Type: text/plain, Size: 869 bytes --]

I'd love to be able to just add several "Package-Requires" lists, as this
would be most visually appealing and easiest to read. At any rate -
something has to be done about long dependency lists, as they look quite
ridiculous right now.

On 10 August 2015 at 16:08, Artur Malabarba <bruce.connor.am@gmail.com>
wrote:

> > Indeed. But it's only accidentally a sexp, in the sense that it's not
> > actually a sexp in the buffer -- it's a comment.
>
> It's a commented-out sexp, but it's still a sexp, and it has to be a valid
> one.
>
> > What is the failure behaviour of package.el for this at the moment?
>
> Package.el will signal an error during installation if it's not a
> valid sexp. The error itself will depend on what the problem is.
> Here's what you get if you miss a closing paren for instance:
>     package-read-from-string: End of file during parsing
>
>

[-- Attachment #2: Type: text/html, Size: 1302 bytes --]

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

* Re: Supporting multiline Package-Requires header
  2015-08-10 11:12 Supporting multiline Package-Requires header Artur Malabarba
  2015-08-10 11:42 ` Kaushal
@ 2015-08-10 14:26 ` Thierry Volpiatto
  2015-08-10 15:18   ` Artur Malabarba
                     ` (2 more replies)
  2015-08-10 22:01 ` Stefan Monnier
  2 siblings, 3 replies; 57+ messages in thread
From: Thierry Volpiatto @ 2015-08-10 14:26 UTC (permalink / raw)
  To: emacs-devel

Artur Malabarba <bruce.connor.am@gmail.com> writes:

> I'd like to add support for multiline Package-Requires headers in
> package.el. Does anyone have any preference over the following 2
> possible formats?

I suggest keeping what we have actually for backward compatibility and
generalize the use of a *-pkg.el file with a define-package form even
for single file packages.

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 




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

* Re: Supporting multiline Package-Requires header
  2015-08-10 14:26 ` Thierry Volpiatto
@ 2015-08-10 15:18   ` Artur Malabarba
  2015-08-10 15:38     ` Thierry Volpiatto
  2015-08-10 15:40     ` Nicolas Richard
  2015-08-10 21:49   ` Phillip Lord
  2015-08-10 22:05   ` Stefan Monnier
  2 siblings, 2 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 15:18 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: emacs-devel

> I suggest keeping what we have actually for backward compatibility and
> generalize the use of a *-pkg.el file with a define-package form even
> for single file packages.

The proposed changes don't break backwards compatbility.



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 13:54           ` Bozhidar Batsov
@ 2015-08-10 15:22             ` Artur Malabarba
  0 siblings, 0 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 15:22 UTC (permalink / raw)
  To: Bozhidar Batsov; +Cc: Phillip Lord, Emacs developers, Kaushal

2015-08-10 14:54 GMT+01:00 Bozhidar Batsov <bozhidar@batsov.com>:
> I'd love to be able to just add several "Package-Requires" lists, as this
> would be most visually appealing and easiest to read.

As in, several separate entries that start with `;; Package-Requires:' ?
This is not supported by the lisp-mnt header-parsing functions, so it
would be too much work IMO.



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 15:18   ` Artur Malabarba
@ 2015-08-10 15:38     ` Thierry Volpiatto
  2015-08-10 15:53       ` Artur Malabarba
  2015-08-10 15:40     ` Nicolas Richard
  1 sibling, 1 reply; 57+ messages in thread
From: Thierry Volpiatto @ 2015-08-10 15:38 UTC (permalink / raw)
  To: bruce.connor.am; +Cc: emacs-devel


Artur Malabarba <bruce.connor.am@gmail.com> writes:

>> I suggest keeping what we have actually for backward compatibility and
>> generalize the use of a *-pkg.el file with a define-package form even
>> for single file packages.
>
> The proposed changes don't break backwards compatbility.

I understood this.

I suggest not using anymore the source files to display such
informations, but instead the *-pkg.el file, which is cleaner IMO.

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 15:18   ` Artur Malabarba
  2015-08-10 15:38     ` Thierry Volpiatto
@ 2015-08-10 15:40     ` Nicolas Richard
  2015-08-10 15:49       ` Artur Malabarba
  2015-08-10 16:34       ` Thierry Volpiatto
  1 sibling, 2 replies; 57+ messages in thread
From: Nicolas Richard @ 2015-08-10 15:40 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: emacs-devel, Thierry Volpiatto

>> I suggest keeping what we have actually for backward compatibility and
>> generalize the use of a *-pkg.el file with a define-package form even
>> for single file packages.
>
> The proposed changes don't break backwards compatbility.

I understand that the new tools will work with old files, but will the
new files work with the old tools ? i.e. will it be possible to install
these packages to emacs 24.5 ?

-- 
Nico.



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 15:40     ` Nicolas Richard
@ 2015-08-10 15:49       ` Artur Malabarba
  2015-08-11  8:44         ` Nicolas Richard
  2015-08-10 16:34       ` Thierry Volpiatto
  1 sibling, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 15:49 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 499 bytes --]

> I understand that the new tools will work with old files, but will the
> new files work with the old tools ? i.e. will it be possible to install
> these packages to emacs 24.5 ?

No. A package that writes it like this will only be (properly) installable
on Emacs 25 and up.

Of course I'd never drop support for Emacs 24 on one of my packages just
for the sake of this minor feature. But once I start routinely requiring
Emacs 25.1 because of other features, I'll be glad to have this as a bonus.

[-- Attachment #2: Type: text/html, Size: 575 bytes --]

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

* Re: Supporting multiline Package-Requires header
  2015-08-10 15:38     ` Thierry Volpiatto
@ 2015-08-10 15:53       ` Artur Malabarba
  2015-08-10 16:33         ` Thierry Volpiatto
  0 siblings, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-10 15:53 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 695 bytes --]

On Aug 10, 2015 4:38 PM, "Thierry Volpiatto" <thierry.volpiatto@gmail.com>
wrote:
>
>
> Artur Malabarba <bruce.connor.am@gmail.com> writes:
>
> >> I suggest keeping what we have actually for backward compatibility and
> >> generalize the use of a *-pkg.el file with a define-package form even
> >> for single file packages.
> >
> > The proposed changes don't break backwards compatbility.
>
> I understood this.
>
> I suggest not using anymore the source files to display such
> informations, but instead the *-pkg.el file, which is cleaner IMO.

I see.
Then what do you mean by generalize? Don't we already support using the
-pkg file wherever it's present? (genuine question, not rethorical).

[-- Attachment #2: Type: text/html, Size: 990 bytes --]

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

* Re: Supporting multiline Package-Requires header
  2015-08-10 15:53       ` Artur Malabarba
@ 2015-08-10 16:33         ` Thierry Volpiatto
  0 siblings, 0 replies; 57+ messages in thread
From: Thierry Volpiatto @ 2015-08-10 16:33 UTC (permalink / raw)
  To: bruce.connor.am; +Cc: emacs-devel


Artur Malabarba <bruce.connor.am@gmail.com> writes:

> On Aug 10, 2015 4:38 PM, "Thierry Volpiatto" <thierry.volpiatto@gmail.com> wrote:
>>
>>
>> Artur Malabarba <bruce.connor.am@gmail.com> writes:
>>
>> >> I suggest keeping what we have actually for backward compatibility and
>> >> generalize the use of a *-pkg.el file with a define-package form even
>> >> for single file packages.
>> >
>> > The proposed changes don't break backwards compatbility.
>>
>> I understood this.
>>
>> I suggest not using anymore the source files to display such
>> informations, but instead the *-pkg.el file, which is cleaner IMO.
>
> I see.
> Then what do you mean by generalize?

I mean encourage people using a *-pkg.el file in their packages and
perhaps improve `define-package' if needed.
(I have myself packages not using a *-pkg.el files but it is not a good
practice IMO)

> Don't we already support using the -pkg file wherever it's present?

Yes, I use *-pkg.el files myself, but perhaps specify in documentation
its usage in favor of using source files?

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 15:40     ` Nicolas Richard
  2015-08-10 15:49       ` Artur Malabarba
@ 2015-08-10 16:34       ` Thierry Volpiatto
  1 sibling, 0 replies; 57+ messages in thread
From: Thierry Volpiatto @ 2015-08-10 16:34 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: Artur Malabarba, emacs-devel


Nicolas Richard <youngfrog@members.fsf.org> writes:

>>> I suggest keeping what we have actually for backward compatibility and
>>> generalize the use of a *-pkg.el file with a define-package form even
>>> for single file packages.
>>
>> The proposed changes don't break backwards compatbility.
>
> I understand that the new tools will work with old files, but will the
> new files work with the old tools ? i.e. will it be possible to install
> these packages to emacs 24.5 ?

Good question :-)

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 14:26 ` Thierry Volpiatto
  2015-08-10 15:18   ` Artur Malabarba
@ 2015-08-10 21:49   ` Phillip Lord
  2015-08-11  9:24     ` Artur Malabarba
  2015-08-10 22:05   ` Stefan Monnier
  2 siblings, 1 reply; 57+ messages in thread
From: Phillip Lord @ 2015-08-10 21:49 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: emacs-devel

Thierry Volpiatto <thierry.volpiatto@gmail.com> writes:

> Artur Malabarba <bruce.connor.am@gmail.com> writes:
>
>> I'd like to add support for multiline Package-Requires headers in
>> package.el. Does anyone have any preference over the following 2
>> possible formats?
>
> I suggest keeping what we have actually for backward compatibility and
> generalize the use of a *-pkg.el file with a define-package form even
> for single file packages.

I think actually, you have hit the nail on the head here.

As others have pointed out, while this change is backward compatible
(for package.el) actually using the format in a package is not backward
compatible with older Emacs'.

The package author can specify the minimal Emacs version, of course, but
unfortunately this happens in the "Package-Requires:", which will be
parsed incorrectly in older Emacs'.

Instead of making Package-* headers more capable, deprecating them in
favour of *-pkg.el files (which really is a sexp, has to balance, but is
easy to check for balance) makes quite a lot of sense. Probably easier
when you get right down to it.

Phil



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 11:12 Supporting multiline Package-Requires header Artur Malabarba
  2015-08-10 11:42 ` Kaushal
  2015-08-10 14:26 ` Thierry Volpiatto
@ 2015-08-10 22:01 ` Stefan Monnier
  2015-08-11  9:29   ` Artur Malabarba
  2 siblings, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-10 22:01 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: emacs-devel

> 1. Same as now, just allow it to span more than one line. E.g.:
>
>         ;; Package-Requires: ((pkg-a "4.2.0")
>                               (pkg-b "1.0") (pkg-c "2.0"))

Should be

         ;; Package-Requires: ((pkg-a "4.2.0")
         ;;                    (pkg-b "1.0") (pkg-c "2.0"))

Basically, use the familiar RFC-822 convention.


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 14:26 ` Thierry Volpiatto
  2015-08-10 15:18   ` Artur Malabarba
  2015-08-10 21:49   ` Phillip Lord
@ 2015-08-10 22:05   ` Stefan Monnier
  2015-08-11  8:56     ` Thierry Volpiatto
  2 siblings, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-10 22:05 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: emacs-devel

> I suggest keeping what we have actually for backward compatibility and
> generalize the use of a *-pkg.el file with a define-package form even
> for single file packages.

How would that work?  I mean a single-file package, as the name implies,
is made up of a single file, so where would you put the *-pkg.el?


        Stefan


PS: FWIW, the elpa.git source code used to make GNU ELPA's packages
doesn't use *-pkg.el files (instead they're built from the lisp-mnt
headers when constructing the tarball).



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 15:49       ` Artur Malabarba
@ 2015-08-11  8:44         ` Nicolas Richard
  2015-08-11  9:28           ` Artur Malabarba
  0 siblings, 1 reply; 57+ messages in thread
From: Nicolas Richard @ 2015-08-11  8:44 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: emacs-devel

>> I understand that the new tools will work with old files, but will the
>> new files work with the old tools ? i.e. will it be possible to install
>> these packages to emacs 24.5 ?
>
> No. A package that writes it like this will only be (properly) installable on Emacs 25 and up. 
>
> Of course I'd never drop support for Emacs 24 on one of my packages
> just for the sake of this minor feature. But once I start routinely
> requiring Emacs 25.1 because of other features, I'll be glad to have
> this as a bonus.

It makes sense. My worry is also that emacs-24 must have a way to
understand that the package is "not installable". e.g. we don't want
list-packages to suddenly break on older emacsen (I have no idea if this
can actually happen).

-- 
Nico



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 22:05   ` Stefan Monnier
@ 2015-08-11  8:56     ` Thierry Volpiatto
  2015-08-11 15:55       ` Stefan Monnier
  0 siblings, 1 reply; 57+ messages in thread
From: Thierry Volpiatto @ 2015-08-11  8:56 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel


Stefan Monnier <monnier@iro.umontreal.ca> writes:

> How would that work?  I mean a single-file package, as the name implies,
> is made up of a single file,

AFAIK a single source file inside a directory.

> so where would you put the *-pkg.el?

In the directory.

AFAIK this is supported by MELPA, perhaps Steve can confirm.

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 21:49   ` Phillip Lord
@ 2015-08-11  9:24     ` Artur Malabarba
  0 siblings, 0 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-11  9:24 UTC (permalink / raw)
  To: Phillip Lord; +Cc: emacs-devel, Thierry Volpiatto

>> I suggest keeping what we have actually for backward compatibility a
>> generalize the use of a *-pkg.el file with a define-package form even
>> for single file packages.
>
> I think actually, you have hit the nail on the head here.
>
> As others have pointed out, while this change is backward compatible
> (for package.el) actually using the format in a package is not backward
> compatible with older Emacs'.

As with any new feature.

> The package author can specify the minimal Emacs version, of course, but
> unfortunately this happens in the "Package-Requires:", which will be
> parsed incorrectly in older Emacs'.

Before a package is installed, the header is not being parsed by the
user's computer, it is being parsed by the archive's server (be it
Gelpa, Melpa or Marmalade). The archive's server should be using
latest Emacs, and they'll know that the package requires Emacs 25, and
they'll provide that information to the user during `list-packages'.
(Even if the archive is using Emacs 24, or if the user tries to
manually install the package, they'll be immediately greeted with an
error, telling them something is wrong.)

> Instead of making Package-* headers more capable, deprecating them in
> favour of *-pkg.el files (which really is a sexp, has to balance, but is
> easy to check for balance) makes quite a lot of sense.

I'm not strongly against this, but I think it would be more of an
annoyance than a benefit. I've never run into problems because of the
fact that we use lisp headers for package information, so I don't see
why we'd deprecate them.

> Probably easier when you get right down to it.

Easier than what? Extending the Package-Requires header would be
something like 3-6 lines of code.



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

* Re: Supporting multiline Package-Requires header
  2015-08-11  8:44         ` Nicolas Richard
@ 2015-08-11  9:28           ` Artur Malabarba
  2015-08-11  9:33             ` Nicolas Richard
  0 siblings, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-11  9:28 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: emacs-devel

2015-08-11 9:44 GMT+01:00 Nicolas Richard <youngfrog@members.fsf.org>:
>>> I understand that the new tools will work with old files, but will the
>>> new files work with the old tools ? i.e. will it be possible to install
>>> these packages to emacs 24.5 ?
>>
>> No. A package that writes it like this will only be (properly) installable on Emacs 25 and up.
>>
>> Of course I'd never drop support for Emacs 24 on one of my packages
>> just for the sake of this minor feature. But once I start routinely
>> requiring Emacs 25.1 because of other features, I'll be glad to have
>> this as a bonus.
>
> It makes sense. My worry is also that emacs-24 must have a way to
> understand that the package is "not installable". e.g. we don't want
> list-packages to suddenly break on older emacsen (I have no idea if this
> can actually happen).

I don't think this can happen. `list-packages' receives information
from the archives, it doesn't manually parse remote packages (it
parses already-installed packages, but if it has been installed
already then it must be compatible). As long as the archive servers
are using the latest Emacs release, they'll know that the package
requires Emacs 25, and they'll provide that information to the user
during `list-packages'.

(And besides, even if the archive is using Emacs 24, or if the user
tries to manually install the package, they'll be immediately greeted
with an error, telling them something is wrong.)



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 22:01 ` Stefan Monnier
@ 2015-08-11  9:29   ` Artur Malabarba
  0 siblings, 0 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-11  9:29 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

2015-08-10 23:01 GMT+01:00 Stefan Monnier <monnier@iro.umontreal.ca>:
>> 1. Same as now, just allow it to span more than one line. E.g.:
>>
>>         ;; Package-Requires: ((pkg-a "4.2.0")
>>                               (pkg-b "1.0") (pkg-c "2.0"))
>
> Should be
>
>          ;; Package-Requires: ((pkg-a "4.2.0")
>          ;;                    (pkg-b "1.0") (pkg-c "2.0"))
>
> Basically, use the familiar RFC-822 convention.

Yes, sorry. As I mentioned on another reply, I forgot to write the
semicolons on the second line, but they're supposed to be there.



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

* Re: Supporting multiline Package-Requires header
  2015-08-11  9:28           ` Artur Malabarba
@ 2015-08-11  9:33             ` Nicolas Richard
  0 siblings, 0 replies; 57+ messages in thread
From: Nicolas Richard @ 2015-08-11  9:33 UTC (permalink / raw)
  To: bruce.connor.am; +Cc: emacs-devel

Le 11/08/2015 11:28, Artur Malabarba a écrit :
> I don't think this can happen. `list-packages' receives information
> from the archives, it doesn't manually parse remote packages

Ah that was the bit I was missing, thanks for clarification.

Nico.




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

* Re: Supporting multiline Package-Requires header
  2015-08-11  8:56     ` Thierry Volpiatto
@ 2015-08-11 15:55       ` Stefan Monnier
  0 siblings, 0 replies; 57+ messages in thread
From: Stefan Monnier @ 2015-08-11 15:55 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: emacs-devel

>> How would that work?  I mean a single-file package, as the name implies,
>> is made up of a single file,
> AFAIK a single source file inside a directory.

No: in the elpa.git source, yes, in the .emacs.d/elpa/<pkg> dir, yes,
but not in the "package archive" (the http server) where it's a single
file (either a .el or a .tar file).

AFAIK this discussion is only about the format used for the "single .el
files" in the package archive.


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-10 13:08         ` Artur Malabarba
  2015-08-10 13:54           ` Bozhidar Batsov
@ 2015-08-11 21:05           ` Phillip Lord
  2015-08-11 21:48             ` Artur Malabarba
  1 sibling, 1 reply; 57+ messages in thread
From: Phillip Lord @ 2015-08-11 21:05 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Kaushal, Emacs developers

Artur Malabarba <bruce.connor.am@gmail.com> writes:

>> Indeed. But it's only accidentally a sexp, in the sense that it's not
>> actually a sexp in the buffer -- it's a comment.
>
> It's a commented-out sexp, but it's still a sexp, and it has to be a valid one.

No, it's a sexp once the comments have been removed.

I'm not just being pedantic here! This has consequences.


>> What is the failure behaviour of package.el for this at the moment?
>
> Package.el will signal an error during installation if it's not a
> valid sexp. The error itself will depend on what the problem is.
> Here's what you get if you miss a closing paren for instance:
>     package-read-from-string: End of file during parsing

My issue with this is that, iff I see this error, my first port of call
is going to be check-parens, and generally look for unbalanced parens in
the relevant file. And there are not going to be any, because in the
file, there is no invalid sexp. There is a commented out, pseudo sexp.

Here are three bugs caused by exactly this problem.

https://github.com/cask/cask/issues/304
https://github.com/cask/cask/issues/284
https://github.com/expez/evil-smartparens/pull/2/files

The first is from me, when I screwed this up in one of my own files, and
spent an hour tearing my hair out (and I don't have much left). The last
one is in evil-smartparens which missed a closing paren in
Package-Requires despite being a package for keeping parens balanced.

So, making Package-Requires more complex (even for multiline) seems not
the right way forward.

Just my thoughts, I will leave the issue in your hands from there.

Phil




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

* Re: Supporting multiline Package-Requires header
  2015-08-11 21:05           ` Phillip Lord
@ 2015-08-11 21:48             ` Artur Malabarba
  2015-08-12  5:34               ` Bozhidar Batsov
  2015-08-12 14:09               ` Stefan Monnier
  0 siblings, 2 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-11 21:48 UTC (permalink / raw)
  To: Phillip Lord; +Cc: Kaushal, Emacs developers

>>> What is the failure behaviour of package.el for this at the moment?
>>
>> Package.el will signal an error during installation if it's not a
>> valid sexp. The error itself will depend on what the problem is.
>> Here's what you get if you miss a closing paren for instance:
>>     package-read-from-string: End of file during parsing
>
> My issue with this is that, iff I see this error, my first port of call
> is going to be check-parens, and generally look for unbalanced parens in
> the relevant file. And there are not going to be any, because in the
> file, there is no invalid sexp. There is a commented out, pseudo sexp.
> [...]
> Just my thoughts, I will leave the issue in your hands from there.

Thanks for the thoughts. I do think package.el could do better error
reporting in these situations (and I might take that up too).
That said, I don't think the proposed patch makes this situation any worse.



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

* Re: Supporting multiline Package-Requires header
  2015-08-11 21:48             ` Artur Malabarba
@ 2015-08-12  5:34               ` Bozhidar Batsov
  2015-08-12 14:09               ` Stefan Monnier
  1 sibling, 0 replies; 57+ messages in thread
From: Bozhidar Batsov @ 2015-08-12  5:34 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Kaushal, Emacs developers, Phillip Lord

[-- Attachment #1: Type: text/plain, Size: 1070 bytes --]

I agree with Artur on both points.

On 12 August 2015 at 00:48, Artur Malabarba <bruce.connor.am@gmail.com>
wrote:

> >>> What is the failure behaviour of package.el for this at the moment?
> >>
> >> Package.el will signal an error during installation if it's not a
> >> valid sexp. The error itself will depend on what the problem is.
> >> Here's what you get if you miss a closing paren for instance:
> >>     package-read-from-string: End of file during parsing
> >
> > My issue with this is that, iff I see this error, my first port of call
> > is going to be check-parens, and generally look for unbalanced parens in
> > the relevant file. And there are not going to be any, because in the
> > file, there is no invalid sexp. There is a commented out, pseudo sexp.
> > [...]
> > Just my thoughts, I will leave the issue in your hands from there.
>
> Thanks for the thoughts. I do think package.el could do better error
> reporting in these situations (and I might take that up too).
> That said, I don't think the proposed patch makes this situation any worse.
>
>

[-- Attachment #2: Type: text/html, Size: 1543 bytes --]

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

* Re: Supporting multiline Package-Requires header
  2015-08-11 21:48             ` Artur Malabarba
  2015-08-12  5:34               ` Bozhidar Batsov
@ 2015-08-12 14:09               ` Stefan Monnier
  2015-08-12 14:23                 ` Artur Malabarba
  1 sibling, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-12 14:09 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Kaushal, Emacs developers, Phillip Lord

> That said, I don't think the proposed patch makes this situation any worse.

Oh, I missed it.  Can you resend it?


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-12 14:09               ` Stefan Monnier
@ 2015-08-12 14:23                 ` Artur Malabarba
  2015-08-12 17:18                   ` Stefan Monnier
  0 siblings, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-12 14:23 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Kaushal, Emacs developers, Phillip Lord

>> That said, I don't think the proposed patch makes this situation any worse.
>
> Oh, I missed it.  Can you resend it?

My brain probably glitched, I meant "the proposed feature".
There was no patch yet, but here it is now:

---
 lisp/emacs-lisp/package.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 9677208..a2027d2 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -982,7 +982,8 @@ boundaries."
     (narrow-to-region start (point))
     (require 'lisp-mnt)
     ;; Use some headers we've invented to drive the process.
-    (let* ((requires-str (lm-header "package-requires"))
+    (let* ((requires-str (when-let ((reqs (lm-header-multiline
"package-requires")))
+                           (apply #'concat reqs)))
            ;; Prefer Package-Version; if defined, the package author
            ;; probably wants us to use it.  Otherwise try Version.
            (pkg-version
-- 
2.4.6



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

* Re: Supporting multiline Package-Requires header
  2015-08-12 14:23                 ` Artur Malabarba
@ 2015-08-12 17:18                   ` Stefan Monnier
  2015-08-12 20:10                     ` Artur Malabarba
  2015-08-13 18:13                     ` Artur Malabarba
  0 siblings, 2 replies; 57+ messages in thread
From: Stefan Monnier @ 2015-08-12 17:18 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Kaushal, Emacs developers, Phillip Lord

> -    (let* ((requires-str (lm-header "package-requires"))
> +    (let* ((requires-str (when-let ((reqs (lm-header-multiline
> "package-requires")))
> +                           (apply #'concat reqs)))

Sounds good to me.  A similar change is probably needed somewhere in
elpa.git's admin/*.el.

I do wonder why lm-header doesn't just automatically handle
multiline headers.


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-12 17:18                   ` Stefan Monnier
@ 2015-08-12 20:10                     ` Artur Malabarba
  2015-08-13 18:13                     ` Artur Malabarba
  1 sibling, 0 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-12 20:10 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Kaushal, Emacs developers, Phillip Lord

2015-08-12 18:18 GMT+01:00 Stefan Monnier <monnier@iro.umontreal.ca>:
>> -    (let* ((requires-str (lm-header "package-requires"))
>> +    (let* ((requires-str (when-let ((reqs (lm-header-multiline
>> "package-requires")))
>> +                           (apply #'concat reqs)))
>
> Sounds good to me.  A similar change is probably needed somewhere in
> elpa.git's admin/*.el.
>
> I do wonder why lm-header doesn't just automatically handle
> multiline headers.

Backwards compatibility? We could have a new function for that, though
I can't think of a short name.



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

* Re: Supporting multiline Package-Requires header
  2015-08-12 17:18                   ` Stefan Monnier
  2015-08-12 20:10                     ` Artur Malabarba
@ 2015-08-13 18:13                     ` Artur Malabarba
  2015-08-13 20:44                       ` Stefan Monnier
  1 sibling, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-13 18:13 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Emacs developers

> Sounds good to me.  A similar change is probably needed somewhere in
> elpa.git's admin/*.el.

I just looked into the archive--metadata function in
elpa/admin/archive-contents.el. Looks like it would benefit from
calling package-buffer-info instead of replicating the functionality.
The only obstacle I see for that is the special treatment it gives to
the org package:

    (or (lm-header "package-version")
        (lm-header "version")
        (unless (equal pkg "org")
          (error "Missing `version' header")))

Is this still necessary?



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

* Re: Supporting multiline Package-Requires header
  2015-08-13 18:13                     ` Artur Malabarba
@ 2015-08-13 20:44                       ` Stefan Monnier
  2015-08-13 22:37                         ` Rasmus
  2015-08-23  6:33                         ` Achim Gratz
  0 siblings, 2 replies; 57+ messages in thread
From: Stefan Monnier @ 2015-08-13 20:44 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Emacs developers

>     (or (lm-header "package-version")
>         (lm-header "version")
>         (unless (equal pkg "org")
>           (error "Missing `version' header")))
>
> Is this still necessary?

Sadly, yes.  But it should be "easy" to solve: ask the Org guys to put the
version of their package in org.el's pseudo-headers.

I put quotes around "easy" because they have a latent problem with their
version numbers.


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-13 20:44                       ` Stefan Monnier
@ 2015-08-13 22:37                         ` Rasmus
  2015-08-13 23:01                           ` Artur Malabarba
  2015-08-14  1:42                           ` Stefan Monnier
  2015-08-23  6:33                         ` Achim Gratz
  1 sibling, 2 replies; 57+ messages in thread
From: Rasmus @ 2015-08-13 22:37 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

>>     (or (lm-header "package-version")
>>         (lm-header "version")
>>         (unless (equal pkg "org")
>>           (error "Missing `version' header")))
>>
>> Is this still necessary?
>
> Sadly, yes.  But it should be "easy" to solve: ask the Org guys to put the
> version of their package in org.el's pseudo-headers.

Do you want us to add header like:

    ;; Version: 8.3.1

to org.el?

> I put quotes around "easy" because they have a latent problem with their
> version numbers.

Care to elaborate?

Rasmus

-- 
When the facts change, I change my mind. What do you do, sir?




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

* Re: Supporting multiline Package-Requires header
  2015-08-13 22:37                         ` Rasmus
@ 2015-08-13 23:01                           ` Artur Malabarba
  2015-08-14  0:12                             ` Rasmus
  2015-08-14  1:42                           ` Stefan Monnier
  1 sibling, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-13 23:01 UTC (permalink / raw)
  To: Rasmus; +Cc: emacs-devel

> >> Is this still necessary?
> >
> > Sadly, yes.  But it should be "easy" to solve: ask the Org guys to put the
> > version of their package in org.el's pseudo-headers.
>
> Do you want us to add header like:
>
>     ;; Version: 8.3.1
>
> to org.el?

Yes, that would be very helpful.



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

* Re: Supporting multiline Package-Requires header
  2015-08-13 23:01                           ` Artur Malabarba
@ 2015-08-14  0:12                             ` Rasmus
  0 siblings, 0 replies; 57+ messages in thread
From: Rasmus @ 2015-08-14  0:12 UTC (permalink / raw)
  To: emacs-devel

Artur Malabarba <bruce.connor.am@gmail.com> writes:

>> >> Is this still necessary?
>> >
>
>> > Sadly, yes.  But it should be "easy" to solve: ask the Org guys to put the
>> > version of their package in org.el's pseudo-headers.
>>
>> Do you want us to add header like:
>>
>>     ;; Version: 8.3.1
>>
>> to org.el?
>
> Yes, that would be very helpful.

org.el should have a Version header from 8.3.2, which I guesstimate will
be released towards the end of the month.

Rasmus

-- 
Enough with the bla bla!




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

* Re: Supporting multiline Package-Requires header
  2015-08-13 22:37                         ` Rasmus
  2015-08-13 23:01                           ` Artur Malabarba
@ 2015-08-14  1:42                           ` Stefan Monnier
  2015-08-17 18:45                             ` Achim Gratz
  1 sibling, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-14  1:42 UTC (permalink / raw)
  To: Rasmus; +Cc: emacs-devel

> Do you want us to add header like:
>     ;; Version: 8.3.1
> to org.el?

For example, yes.  I'm talking about the org.el file inside the tarballs
you release for GNU ELPA.

>> I put quotes around "easy" because they have a latent problem with their
>> version numbers.
> Care to elaborate?

Last I checked, your GNU ELPA packages have "bogus" version numbers that
don't look like "8.3.1".


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-14  1:42                           ` Stefan Monnier
@ 2015-08-17 18:45                             ` Achim Gratz
  2015-08-18 15:56                               ` Stefan Monnier
  0 siblings, 1 reply; 57+ messages in thread
From: Achim Gratz @ 2015-08-17 18:45 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
> Last I checked, your GNU ELPA packages have "bogus" version numbers that
> don't look like "8.3.1".

So who's been messing with the scripts on ELPA that the latest Org
package got called "org-8.3.1" or was that just Rasmus' addition of the
version header?  Besides the fact that this is the wrong version since
the packaged one is "8.3.1-56-g17a225-elpa", it nicely ensures that
nobody ever updates to it.

Really, whatever you don't like about the way the Org ELPA package is
created is probably fixable, but this is not the way to do it.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Samples for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldSamplesExtra




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

* Re: Supporting multiline Package-Requires header
  2015-08-17 18:45                             ` Achim Gratz
@ 2015-08-18 15:56                               ` Stefan Monnier
  2015-08-18 18:00                                 ` Achim Gratz
  0 siblings, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-18 15:56 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

> So who's been messing with the scripts on ELPA that the latest Org
> package got called "org-8.3.1" or was that just Rasmus' addition of the
> version header?

The scripts haven't changed.  It must be Rasmus's change.  The script
just takes whatever's in the "Version:" header (or in the Org exception
where this is missing, the version from the -pkg.el file).

> Really, whatever you don't like about the way the Org ELPA package is
> created is probably fixable, but this is not the way to do it.

Indeed.


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-18 15:56                               ` Stefan Monnier
@ 2015-08-18 18:00                                 ` Achim Gratz
  2015-08-19 17:14                                   ` Stefan Monnier
  0 siblings, 1 reply; 57+ messages in thread
From: Achim Gratz @ 2015-08-18 18:00 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
> The scripts haven't changed.  It must be Rasmus's change.  The script
> just takes whatever's in the "Version:" header (or in the Org exception
> where this is missing, the version from the -pkg.el file).

OK, so if things stay the way they are we need to generate the org.el
file one way or the other, then.

>> Really, whatever you don't like about the way the Org ELPA package is
>> created is probably fixable, but this is not the way to do it.
>
> Indeed.

Just to be sure, there is still no possibility to run a build directly
on ELPA for packages such as Org and the bits and pieces you get in the
archive will be delivered verbatim?


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

SD adaptations for Waldorf Q V3.00R3 and Q+ V3.54R2:
http://Synth.Stromeko.net/Downloads.html#WaldorfSDada




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

* Re: Supporting multiline Package-Requires header
  2015-08-18 18:00                                 ` Achim Gratz
@ 2015-08-19 17:14                                   ` Stefan Monnier
  0 siblings, 0 replies; 57+ messages in thread
From: Stefan Monnier @ 2015-08-19 17:14 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

> Just to be sure, there is still no possibility to run a build directly
> on ELPA for packages such as Org and the bits and pieces you get in the
> archive will be delivered verbatim?

Not sure what you mean by that, but currently the scripts that generate
the tarballs from the Git checkout are very limited: they only create
the *-pkg.el file, the ChangeLog file, and can arrange for some files to
be absent from the tarball.
I'd like to add a makeinfo step in there, but haven't found the time to
do it.

So far, the design has been to refrain from running code which is under the
control of committers (we have very many committers).


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-13 20:44                       ` Stefan Monnier
  2015-08-13 22:37                         ` Rasmus
@ 2015-08-23  6:33                         ` Achim Gratz
  2015-08-23  9:17                           ` Artur Malabarba
  2015-08-23 22:16                           ` Stefan Monnier
  1 sibling, 2 replies; 57+ messages in thread
From: Achim Gratz @ 2015-08-23  6:33 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
>>     (or (lm-header "package-version")
>>         (lm-header "version")
>>         (unless (equal pkg "org")
>>           (error "Missing `version' header")))
>>
>> Is this still necessary?

I've finally had a look at what you're doing there.

> Sadly, yes.  But it should be "easy" to solve: ask the Org guys to put the
> version of their package in org.el's pseudo-headers.

The easy solution is to recognize that you already got a complete
package archive from the Org guys which is ready to be deployed.

> I put quotes around "easy" because they have a latent problem with their
> version numbers.

No, it's actually your expectation to have version numbers in the
comments of a non-generated, version-controlled file that's a latent
problem.  Keeping that up-to-date would require a stream of otherwise
useless commits in the VCS and result in merge conflicts while keeping
the maint and master branch in sync.  It may be sort of OK for simple
packages, but for anything else it isn't.

The only problem we have with the version numbers has been forced by an
external package archive we have no control over and that never even put
out a correctly packaged Org that would actually work when installed.
But their versioning scheme has been org-YYYYMMDD.  We'd totally switch
to something like 8.3.1-56-g17a225-elpa if there was a way to make sure
that the existing versioning scheme wouldn't get people stuck on
outdated releases.

Now, if you still insist on having these headers, the easiest way is to
put them into org-version.el since that file is already generated.  But
you'd have to look there in preference of the "main" package file if it
exists.  I don't want to modify org.el just for ELPA and re-organizing
the sources so that org.el becomes a generated file instead is possible,
but not really something we'd normally do on the maint branch.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Samples for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldSamplesExtra




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

* Re: Supporting multiline Package-Requires header
  2015-08-23  6:33                         ` Achim Gratz
@ 2015-08-23  9:17                           ` Artur Malabarba
  2015-08-23  9:37                             ` Achim Gratz
  2015-08-23 22:12                             ` Stefan Monnier
  2015-08-23 22:16                           ` Stefan Monnier
  1 sibling, 2 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-23  9:17 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 883 bytes --]

On Aug 23, 2015 7:33 AM, "Achim Gratz" <Stromeko@nexgo.de> wrote:
>
> Stefan Monnier writes:
> >>     (or (lm-header "package-version")
> >>         (lm-header "version")
> >>         (unless (equal pkg "org")
> >>           (error "Missing `version' header")))
> >>
> >> Is this still necessary?
>
> I've finally had a look at what you're doing there.
>
> > Sadly, yes.  But it should be "easy" to solve: ask the Org guys to put
the
> > version of their package in org.el's pseudo-headers.
>
> The easy solution is to recognize that you already got a complete
> package archive from the Org guys which is ready to be deployed.

I'm meaning to see if Elpa can be made to look for a -pkg file before
visiting the main package file to gather information.
I was just forced to interrupt what I was doing here because I had to start
writing my thesis,but I'll get back to it eventually.

[-- Attachment #2: Type: text/html, Size: 1250 bytes --]

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

* Re: Supporting multiline Package-Requires header
  2015-08-23  9:17                           ` Artur Malabarba
@ 2015-08-23  9:37                             ` Achim Gratz
  2015-08-23 12:03                               ` Artur Malabarba
  2015-08-23 22:17                               ` Stefan Monnier
  2015-08-23 22:12                             ` Stefan Monnier
  1 sibling, 2 replies; 57+ messages in thread
From: Achim Gratz @ 2015-08-23  9:37 UTC (permalink / raw)
  To: emacs-devel

Artur Malabarba writes:
> I'm meaning to see if Elpa can be made to look for a -pkg file before
> visiting the main package file to gather information.

As suggested before, looking for <pkg>-version.el before the main
package file (if it's a multi-file package) is probably easier since it
wouldn't touch most of the existing code.

> I was just forced to interrupt what I was doing here because I had to start
> writing my thesis,but I'll get back to it eventually.

Your thesis will obviously have to take precedence.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Terratec KOMPLEXER:
http://Synth.Stromeko.net/Downloads.html#KomplexerWaves




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

* Re: Supporting multiline Package-Requires header
  2015-08-23  9:37                             ` Achim Gratz
@ 2015-08-23 12:03                               ` Artur Malabarba
  2015-08-23 22:17                               ` Stefan Monnier
  1 sibling, 0 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-23 12:03 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

2015-08-23 10:37 GMT+01:00 Achim Gratz <Stromeko@nexgo.de>:
> Artur Malabarba writes:
>> I'm meaning to see if Elpa can be made to look for a -pkg file before
>> visiting the main package file to gather information.
>
> As suggested before, looking for <pkg>-version.el before the main
> package file (if it's a multi-file package)

<pkg>-version.el is an ad-hoc file that org uses, but <pkg>-pkg.el is
a standard way for package.el to specify the package definition
(there's already code for it, Elpa just doesn't use it yet).

> is probably easier since it
> wouldn't touch most of the existing code.

I don't understand. What code are you referring to?
AFAICT, org already generates a perfectly compliant -pkg file, no? So
no code would have to change for org.

>> I was just forced to interrupt what I was doing here because I had to start
>> writing my thesis,but I'll get back to it eventually.
>
> Your thesis will obviously have to take precedence.

Fortunately, thanks to Emacs, it's going very rapidly. :-)



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

* Re: Supporting multiline Package-Requires header
  2015-08-23  9:17                           ` Artur Malabarba
  2015-08-23  9:37                             ` Achim Gratz
@ 2015-08-23 22:12                             ` Stefan Monnier
  2015-08-23 23:32                               ` Artur Malabarba
  1 sibling, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-23 22:12 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: Achim Gratz, emacs-devel

> I'm meaning to see if Elpa can be made to look for a -pkg file before
> visiting the main package file to gather information.

I don't want to go back there, no.


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-23  6:33                         ` Achim Gratz
  2015-08-23  9:17                           ` Artur Malabarba
@ 2015-08-23 22:16                           ` Stefan Monnier
  2015-08-24  6:56                             ` Achim Gratz
  1 sibling, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-23 22:16 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

> The easy solution is to recognize that you already got a complete
> package archive from the Org guys which is ready to be deployed.

Yes, that is also a problem.  But I'd rather we try and solve one
problem at a time.

> No, it's actually your expectation to have version numbers in the
> comments of a non-generated, version-controlled file that's a latent
> problem.  Keeping that up-to-date would require a stream of otherwise
> useless commits in the VCS and result in merge conflicts while keeping
> the maint and master branch in sync.

Why?  We're talking about the org.el that's in the tarball you send us.
It doesn't have to be identical to the org.el in your VCS.

This said, it could also be identical to the one in your VCS without
needing an extra commit: just make sure the version is changed as part
of the last commit (since it's the last commit before a new release,
it's not completely extravagant to expect that you'd often/usually know
this commit will be used for a release and hence needs a change in the
org.el's Version: header).


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-23  9:37                             ` Achim Gratz
  2015-08-23 12:03                               ` Artur Malabarba
@ 2015-08-23 22:17                               ` Stefan Monnier
  1 sibling, 0 replies; 57+ messages in thread
From: Stefan Monnier @ 2015-08-23 22:17 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

> Your thesis will obviously have to take precedence.
                                     ^^^^^^^^^^^^^^^
                                       wait!


-- Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-23 22:12                             ` Stefan Monnier
@ 2015-08-23 23:32                               ` Artur Malabarba
  0 siblings, 0 replies; 57+ messages in thread
From: Artur Malabarba @ 2015-08-23 23:32 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Achim Gratz, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 335 bytes --]

On Aug 23, 2015 11:12 PM, "Stefan Monnier" <monnier@iro.umontreal.ca> wrote:
>
> > I'm meaning to see if Elpa can be made to look for a -pkg file before
> > visiting the main package file to gather information.
>
> I don't want to go back there, no.

Didn't realise we'd been there before. :-)
Was it troublesome to support last time?

[-- Attachment #2: Type: text/html, Size: 503 bytes --]

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

* Re: Supporting multiline Package-Requires header
  2015-08-23 22:16                           ` Stefan Monnier
@ 2015-08-24  6:56                             ` Achim Gratz
  2015-08-24 19:17                               ` Stefan Monnier
  0 siblings, 1 reply; 57+ messages in thread
From: Achim Gratz @ 2015-08-24  6:56 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
> Why?  We're talking about the org.el that's in the tarball you send us.
> It doesn't have to be identical to the org.el in your VCS.

Yes, it should very much be identical.  If you look in org-version.el
you'll find the exact commit to check out from Git and any user would
have to expect that the files installed on her machine would match up
with the files in that tree.

> This said, it could also be identical to the one in your VCS without
> needing an extra commit: just make sure the version is changed as part
> of the last commit (since it's the last commit before a new release,
> it's not completely extravagant to expect that you'd often/usually know
> this commit will be used for a release and hence needs a change in the
> org.el's Version: header).

No, that simply doesn't work and I'm really not sure why you even
suggest it might.  The ELPA archive is created by a cron job every
Monday and we don't have a commit to org.el exactly every Monday, nor
would anyone touching org.el know if his commit is going to be the last
one before the tarball is created.

Again, this being a distributed VCS with many developers hacking away on
their own boxes and time and merging their stuff with both maint and
master, it would also ensure lots or merge conflicts that someone would
have to manually try and confine to the maint branch (each commit to
maint is expected to be merged into master as well).  No thanks, it was
a major improvement to get rid of this nonsense (also in the texinfo
files if you'd care to look) and we really don't want to go back there
for whatever reason.

As I said, if you insist on this we'll move to generate org.el and put
it's current content to a new file, but that will either take time or a
decision by Bastien that it's OK to do on maint.  Again, I can also put
these headers in any other generated file, be it org-pkg.el
org-version.el or anything else you want, which would be easier for us
to do and hence I expect it to be faster.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Factory and User Sound Singles for Waldorf Q+, Q and microQ:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds




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

* Re: Supporting multiline Package-Requires header
  2015-08-24  6:56                             ` Achim Gratz
@ 2015-08-24 19:17                               ` Stefan Monnier
  2015-08-24 19:32                                 ` Achim Gratz
  0 siblings, 1 reply; 57+ messages in thread
From: Stefan Monnier @ 2015-08-24 19:17 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

>> Why?  We're talking about the org.el that's in the tarball you send us.
>> It doesn't have to be identical to the org.el in your VCS.
> Yes, it should very much be identical.  If you look in org-version.el
> you'll find the exact commit to check out from Git and any user would
> have to expect that the files installed on her machine would match up
> with the files in that tree.

I don't think anyone will complain if one of the files has a comment
that's slightly different.


        Stefan



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

* Re: Supporting multiline Package-Requires header
  2015-08-24 19:17                               ` Stefan Monnier
@ 2015-08-24 19:32                                 ` Achim Gratz
  2015-08-24 22:51                                   ` Artur Malabarba
  0 siblings, 1 reply; 57+ messages in thread
From: Achim Gratz @ 2015-08-24 19:32 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
>>> Why?  We're talking about the org.el that's in the tarball you send us.
>>> It doesn't have to be identical to the org.el in your VCS.
>> Yes, it should very much be identical.  If you look in org-version.el
>> you'll find the exact commit to check out from Git and any user would
>> have to expect that the files installed on her machine would match up
>> with the files in that tree.
>
> I don't think anyone will complain if one of the files has a comment
> that's slightly different.

Sigh.  So it boils down to this: you want us to implement a horrible
hack in Org to support some other horrible hack in ELPA to get rid of a
tiny bit of a hack in another part of ELPA.  I'll leave it to Bastien to
decide which way to proceed.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

DIY Stuff:
http://Synth.Stromeko.net/DIY.html




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

* Re: Supporting multiline Package-Requires header
  2015-08-24 19:32                                 ` Achim Gratz
@ 2015-08-24 22:51                                   ` Artur Malabarba
  2015-08-25  5:44                                     ` Achim Gratz
  0 siblings, 1 reply; 57+ messages in thread
From: Artur Malabarba @ 2015-08-24 22:51 UTC (permalink / raw)
  To: Achim Gratz; +Cc: emacs-devel

>> I don't think anyone will complain if one of the files has a comment
>> that's slightly different.
>
> Sigh.  So it boils down to this: you want us to implement a horrible
> hack in Org to support some other horrible hack in ELPA to get rid of a
> tiny bit of a hack in another part of ELPA.  I'll leave it to Bastien to
> decide which way to proceed.

From what I've been gathering (do correct me if I'm wrong), it sounds
like this issue stems from wanting to use GNU Elpa to release org
snapshots.
You want your version numbers to be updated every day, and you need
that because you want to always deliver the very latest commits.

However, the Gelpa reporistory is really more designed to deliver
proper releases, not snapshots. Which is why its release system is
based on when you bump the version number (which people usually do on
a specific commit when they decide to release).

That said, I'm not here to tell people they're "doing it wrong". And
I'm very sympathetic to org.
So, if you guys find that any solution on org's side would be "a
horrible hack", I can put some effort into making Gelpa's "tiny hack"
a little smaller.



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

* Re: Supporting multiline Package-Requires header
  2015-08-24 22:51                                   ` Artur Malabarba
@ 2015-08-25  5:44                                     ` Achim Gratz
  0 siblings, 0 replies; 57+ messages in thread
From: Achim Gratz @ 2015-08-25  5:44 UTC (permalink / raw)
  To: emacs-devel

Artur Malabarba writes:
> From what I've been gathering (do correct me if I'm wrong), it sounds
> like this issue stems from wanting to use GNU Elpa to release org
> snapshots.

Org snapshots are yet a different thing and trace the master branch.

> You want your version numbers to be updated every day, and you need
> that because you want to always deliver the very latest commits.

The maint branch is for bugfixes between releases, so the ELPA package
is for people that want releases plus bugfixes.

> However, the Gelpa reporistory is really more designed to deliver
> proper releases, not snapshots. Which is why its release system is
> based on when you bump the version number (which people usually do on
> a specific commit when they decide to release).

That's the design problem, it should really be based on tags instead.
Among other things, it allows you to release a version further down the
history, after proper testing, when (likely someone else) has already
added new commits on top of that already, which is common in distributed
development.

> That said, I'm not here to tell people they're "doing it wrong". And
> I'm very sympathetic to org.
> So, if you guys find that any solution on org's side would be "a
> horrible hack", I can put some effort into making Gelpa's "tiny hack"
> a little smaller.

We can cope, I just need direction as to what the decision is.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Factory and User Sound Singles for Waldorf rackAttack:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds




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

end of thread, other threads:[~2015-08-25  5:44 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-10 11:12 Supporting multiline Package-Requires header Artur Malabarba
2015-08-10 11:42 ` Kaushal
2015-08-10 11:59   ` Artur Malabarba
2015-08-10 12:05   ` Phillip Lord
2015-08-10 12:28     ` Artur Malabarba
2015-08-10 12:51       ` Phillip Lord
2015-08-10 13:08         ` Artur Malabarba
2015-08-10 13:54           ` Bozhidar Batsov
2015-08-10 15:22             ` Artur Malabarba
2015-08-11 21:05           ` Phillip Lord
2015-08-11 21:48             ` Artur Malabarba
2015-08-12  5:34               ` Bozhidar Batsov
2015-08-12 14:09               ` Stefan Monnier
2015-08-12 14:23                 ` Artur Malabarba
2015-08-12 17:18                   ` Stefan Monnier
2015-08-12 20:10                     ` Artur Malabarba
2015-08-13 18:13                     ` Artur Malabarba
2015-08-13 20:44                       ` Stefan Monnier
2015-08-13 22:37                         ` Rasmus
2015-08-13 23:01                           ` Artur Malabarba
2015-08-14  0:12                             ` Rasmus
2015-08-14  1:42                           ` Stefan Monnier
2015-08-17 18:45                             ` Achim Gratz
2015-08-18 15:56                               ` Stefan Monnier
2015-08-18 18:00                                 ` Achim Gratz
2015-08-19 17:14                                   ` Stefan Monnier
2015-08-23  6:33                         ` Achim Gratz
2015-08-23  9:17                           ` Artur Malabarba
2015-08-23  9:37                             ` Achim Gratz
2015-08-23 12:03                               ` Artur Malabarba
2015-08-23 22:17                               ` Stefan Monnier
2015-08-23 22:12                             ` Stefan Monnier
2015-08-23 23:32                               ` Artur Malabarba
2015-08-23 22:16                           ` Stefan Monnier
2015-08-24  6:56                             ` Achim Gratz
2015-08-24 19:17                               ` Stefan Monnier
2015-08-24 19:32                                 ` Achim Gratz
2015-08-24 22:51                                   ` Artur Malabarba
2015-08-25  5:44                                     ` Achim Gratz
2015-08-10 14:26 ` Thierry Volpiatto
2015-08-10 15:18   ` Artur Malabarba
2015-08-10 15:38     ` Thierry Volpiatto
2015-08-10 15:53       ` Artur Malabarba
2015-08-10 16:33         ` Thierry Volpiatto
2015-08-10 15:40     ` Nicolas Richard
2015-08-10 15:49       ` Artur Malabarba
2015-08-11  8:44         ` Nicolas Richard
2015-08-11  9:28           ` Artur Malabarba
2015-08-11  9:33             ` Nicolas Richard
2015-08-10 16:34       ` Thierry Volpiatto
2015-08-10 21:49   ` Phillip Lord
2015-08-11  9:24     ` Artur Malabarba
2015-08-10 22:05   ` Stefan Monnier
2015-08-11  8:56     ` Thierry Volpiatto
2015-08-11 15:55       ` Stefan Monnier
2015-08-10 22:01 ` Stefan Monnier
2015-08-11  9:29   ` Artur Malabarba

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).