emacs /

Filename Size Date modified Message
70 B
34.3 KB
1.8 KB
3.4 KB
Copyright (C) 2010-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.

This branch contains the sources, deployment scripts, and auxilliary
files for the Emacs Lisp package archive (

This file explains the branch layout, how to add and edit packages,
and how to deploy the archive (either on, or a local copy
for testing purposes).


** admin/    -- scripts for administering the package archive.
** html/     -- HTML for the website.
** packages/ -- source code for the packages.


** Contents of the packages/ directory:
This directory holds the package sources, with one subdirectory for
each package.

** To add a package:

*** Add a simple (1-file) package as packages/NAME/NAME.el.

*** Add a multi-file package as a directory, packages/NAME.

*** Commit your changes the usual way ("bzr add", "bzr commit", etc).

Changes in the Bzr repository do not immediately propagate to the
user-facing archive (what users see when they do `M-x list-packages').
That is done by deploying the archive.


** To use the package repository as a "site installation" of packages:

  make site

This compiles and generates autoloads for all the packages in the
packages/ directory, and creates a site/ directory containing symlinks
to the package directories.

Now you have to add this site/ directory to `package-directory-list',
and all the packages will be available.

** To deploy the package repository as a remotely-accessible archive:

  make archive


  make archive-full

This deploys the packages to the archive/ directory.  Unlike "make
site", this makes a full copy of the packages, and tars up multi-file

A full deployment also copies the admin scripts to archive/admin, and
fetches externally hosted packages (currently, the Org daily builds)
and adds them to the archive.

** To access a deployed archive

To access the archive via HTPP, have a symlink (say) /var/www/packages
pointing to DEST/packages, and set up Emacs with

  (setq package-archives '(("new-elpa" . "")))

You can also access the archive via normal file access.  Such "local
archives" are useful for debugging:

  (setq package-archives '(("local-elpa" . "DEST/packages")))

** Notes specific to

The way things are set up on this machine, we refresh the archive by
logging in (login access set up by FSF admins), and

su elpa
cd ~elpa/elpa
bzr up

Then make a full archive deployment, as discussed above.  The symlink
/var/www/packages points to the staging package directory under

The Org mode dailies are also fetched and added by the script
admin/, run as a cron job.

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <>.

Local variables:
mode: outline
paragraph-separate: "[ 	]*$"