429aa60880
A problem existed prior to this commit: if a package was changed from darcs to git, then running "git pull" in the package's working dir would silently perform that git operation in the root of the Melpa repo. Checking that the version control for a working dir is as expected prevents this issue. |
||
---|---|---|
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.
Checking out
git clone git://github.com/milkypostman/melpa.git
git sm init
git sm update
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 update the [epkgs] repository, 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
filesync : sync built files with the repository
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).
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.