- Add helper function `package-build-create-recipe`
- Add `package-build-minor-mode`, enabled for recipes: C-c C-c builds current recipe
- Opening recipe files causes `package-build` to get loaded, and
`package-build-minor-mode` to get enabled
Since most packages do not have `dir` or `*.info` files, this required
changing the behaviour when a wildcard entry in `:file` expands to an
empty file list. Previously, an error would be raised in this case; now,
an error is raised only when the *entire* `:files` spec expands to an
empty file list.
The slight danger, then, is that certain build failures due to upstream
reorganisation of files might be less obvious.
the package-initialize function will not be called until it is needed.
by default this will be in any function that requires the variables
which it initializes. there is also a check so that the variables are
not repeatedly initialized.
If we can determine whether an emacswiki .el file has changed since
the last download, we can usually skip the follow-up request to
determine its last-modified timestamp.
Not all repositories use 'master' as the name of the master branch. Therefore, we need to query the remote server and see which branch is actually supposed to be tracked by default.
The list of recipies and the packages in the archive can be serialized
to json with:
- package-build-alist-as-json
- package-build-archive-alist-as-json
The json files can be used to simplify the generation of the html index
or serve as some form of API for non-lisp clients.
This will fix problems when the "-pkg.el" file is located in a
subdirectory as long as that file is included in the ":files" list
specified by the recipe, which *should* be the case anyways because
you would want that file installed as part of the package.
Sometimes the name-pkg.el file is included but gets included twice
because we also add our own version. This causes problems when
installing. The `tar' will list both files and extract only one and
the tar mode for Emacs doesn't behave nicely.
This commit introduces pb/expand-file-specs, which expands a :files
list into a list of (SOURCE . DEST) pairs -- SOURCE is the relative
path of a source file or directory, and DEST is the relative path to
which it should be copied. By mapcar'ing this list, it's then easy to
get lists of the source and destination files, and copying files
becomes as easy as copying each SOURCE to its corresponding DEST.