Scripts for building Emacs packages from Version Control
Find a file
Donald Ephraim Curtis d6946fec11 Merge pull request #9 from genehack/misc-fixes
cleanup melpa script

remove unneeded arguments to emacs calls

ignore errors when removing packages
2012-03-19 07:30:43 -07:00
html Wording change because package.el has changed in HEAD. 2012-03-18 15:20:13 -05:00
packages Completion of reorganization. 2011-12-13 21:08:36 -06:00
working Initial commit. 2011-10-05 00:49:38 -05:00
.gitignore Ignore emacs backup files 2012-01-28 20:31:50 +00:00
.gitmodules Completion of reorganization. 2011-12-13 21:08:36 -06:00
buildpkg Completion of reorganization. 2011-12-13 21:08:36 -06:00
melpa Remove '-u dcurtis' from package-build invocation 2012-03-18 23:12:18 -04:00
melpa.el Remove commented functions. 2012-02-02 13:22:27 -06:00
migrate update migrate script to ignore summary 2012-01-22 00:38:53 -06:00
package-build.el Consistently use "wiki" rather than "emacswiki" in fn/var names 2012-03-19 14:17:16 +00:00
pkglist Add icicles 2012-03-19 12:51:06 +00:00
README.md minor working fix. 2012-03-17 10:37:32 -05:00

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 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 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

    validate : 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.