3bf025e659
This resolves the inconsistency wherein an empty :files value meant "every file" for git packages, but just "package-name.el" for wiki packages. It also allows the removal of most :files values in the pkglist, since "*.el" is almost always the Right Value. |
||
---|---|---|
html | ||
packages | ||
working | ||
.gitignore | ||
.gitmodules | ||
buildpkg | ||
melpa | ||
melpa.el | ||
migrate | ||
package-build.el | ||
pkglist | ||
README.md |
MELPA
Repository of code for MELPA or Milkypostman's ELPA or Milkypostman's Experimental Lisp Package Repository if you're not into the whole brevity thing.
Scripts
-
buildpkg
-- Create an archive of the package(s) passed as arguments to the script. Built packages are put in thepackages/
folder with version corresponding to the newest HEAD revision available; given according to the%Y%m%d
format. -
melpa
-- All the logic for generating everything in the repository based on thepkglist
file. By default this will build all packages listed inpkglist
, compile theindex.html
file for the melpa website front page, and sync with the site.The following arguments are accepted,
clear : clean out the
packages/
directorybuild : build all packages in
pkglist
index : build the
index.html
filevalidate : naively validate that the correct number of packages were built.
Code
The package-build.el
file contains all the heavy lifting. The
scripts above call the package-build-archive
function from the
command-line to actually build the package(s).
Use (package-build-all)
to build all melpa packages.
Alternatively you can load this file from within Emacs and issues commands from there.
Package List
pkglist
contains a list of all the currently known packages. Entries
are lisp data of the form,
(name :url "<repo url>"
:fetcher [git|svn|darcs]
[:files ("<file1>", ...)])
The :files
entry is optional but is required for either single-file
packages or repositories which contain more than one package and
individual packages should be extracted. For example, the
emacs-starter-kit
contains the starter-kit package along with extra packages in the
modules
directory; starter-kit-bindings, starter-kit-lisp, etc.
The entry for starter-kit is,
(starter-kit
:url "git://github.com/technomancy/emacs-starter-kit.git"
:fetcher git
:files ("starter-kit-defuns.el"
"starter-kit-misc.el"
"starter-kit.el"))
Here the required elisp files are specified. All other information is
generated by the package-build.el
script. This include the
description, version, and requires. In single-file packages the
metadata is parsed from the file itself just as package.el
does. For
packages containing multiple files, metadata will be searched for in
name-pkg.el
, name.el
, and name-pkg.el.in
. If the information
cannot be found the metadata is generated with requires set to
nil
.
Adding Packages
Open an issue on Github and either paste in the relevant entry for
pkglist
or add a bunch and send a pull request.
Developement
Fork away! Send me some pull requests.
Notes
Packages end up in the packages/
directory by default.
This can be configured using the package-build-archive-dir
variable.
Repositories are checked out to the working/
directory by default.
This can be configured using the package-build-working-dir
variable.