2011-10-05 05:53:09 +00:00
# MELPA
2011-10-05 05:49:38 +00:00
2011-12-14 03:04:08 +00:00
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.
2011-10-05 05:49:38 +00:00
2011-12-14 03:04:08 +00:00
### Checking out
2011-10-05 05:49:38 +00:00
2011-12-14 03:04:08 +00:00
git clone git://github.com/milkypostman/melpa.git
## Scripts
* `buildpkg` -- Create an archive of the package(s) passed as
arguments to the script. Built packages are put in the `packages/`
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 the `pkglist` file. By default this will
update the [epkgs] repository, build all packages listed in `pkglist` ,
compile the `index.html` file for the [melpa] website front page, and
sync with the site.
The following arguments are accepted,
clear
: clean out the `packages/` directory
build
: build all packages in `pkglist`
index
: build the `index.html` file
2012-03-17 15:06:39 +00:00
validate
: naively validate that the correct number of packages were built.
2011-12-14 03:04:08 +00:00
[melpa]: http://melpa.milkbox.net
## 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).
2012-03-17 15:06:39 +00:00
Use `(package-build-all)` to build all melpa packages.
Alternatively you can
2011-12-14 03:04:08 +00:00
load this file from within Emacs and issues commands from there.
2012-03-17 15:06:39 +00:00
2012-01-22 20:28:20 +00:00
## Package List
`pkglist` contains a list of all the currently known packages. Entries
are lisp data of the form,
2012-03-17 15:06:39 +00:00
(name :url "< repo url > "
:fetcher [git|svn|darcs]
[:files ("< file1 > ", ...)])
2012-01-22 20:28:20 +00:00
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 ](https://github.com/technomancy/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` .
2011-12-14 03:04:08 +00:00
## Adding Packages
2012-01-22 20:28:20 +00:00
Open an issue on Github and either paste in the relevant entry for
`pkglist` or add a bunch and send a pull request.
2011-12-14 03:04:08 +00:00
## Developement
Fork away! Send me some pull requests.
2012-03-17 15:06:39 +00:00
2011-12-14 03:04:08 +00:00
### 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.
2011-10-05 05:49:38 +00:00
2012-01-22 20:28:20 +00:00
2011-10-05 05:49:38 +00:00