tags 13281 patch quit "Drew Adams" writes: > > 1. Node `Package-Requires' says that this file-header field must be a > list of lists, each of whose cadr is a version number (string). IOW, > the version number seems to be mandatory: it must be present. It's not mandatory, I've clarified this in the patch below. > 2. It does not say how these version-number strings are compared, > rendering this spec of the field almost meaningless. `string-lessp'? > `version<'? `version<='? I added a mention of `version-to-list' in the patch. Along with the existing text saying "the minimum acceptable version number" I think that makes the meaning clear. > What is the relation between this `Version' "attribute" and the > file-header `Version' field? None? Where does the attribute value come > from, if not from that field? No info at all about this. `(elisp) Simple Packages' says The package's attributes are taken from the various headers `(elisp) Multi-file Packages' says One of the files in the content directory must be named `NAME-pkg.el'. It must contain a single Lisp form, consisting of a call to the function `define-package', described below. This defines the package's version, brief description, and requirements. I added the word "attributes" to the last sentence in the patch. I think that makes it clear. > > 4. #3 means that a library must use a version number that is > recognizable by `version-to-list'. And what if it does not - what > happens? How to refer to a required library, using `Package-Requires', > if that required library does not have a `Version' file-header entry > that corresponds to `version-to-list'? `(elisp) Simple Packages' says The version number comes from the `Package-Version' header, if it exists, or from the `Version' header otherwise. One or the other _must_ be present. > 5. Why does a package need to be released in "releases", each of which > is accompanied by an increase in the version number? And is it really > even true that this is a hard requirement? I added an explanation in the patch about why it's needed. > > This does not seem to be a requirement for multiple-file packages. Why > should it be a requirement for single-file packages? > > I know it is not required for multi-file packages because I have some > that work fine with MELPA etc., and their `Version' numbers are not > incremented each time the package files are uploaded, which is daily > (automatically). This doesn't cover MELPA though. MELPA automatically adds a version number based on the timestamp of when the source is retrieved. The manual does not document MELPA as it is not part of GNU Emacs. > > And what about inherited dependencies? If hl-line+.el requires > hl-line.el, do I need to flatten the `Package-Requires' for > crosshairs.el, to include hl-line? No. I added the word "recursively" to the "Dependencies" attribute description in the patch. > And what if the list of dependencies is long - do I need to write them > all on a single line, making the line-width far too wide for the file? > If not, what do `Package-Requires' continuation lines look like? It must be on a single line. I've added a mention about that in the patch.