]> code.delx.au - gnu-emacs-elpa/blob - README
Fix typo in all.el commentary.
[gnu-emacs-elpa] / README
1 Copyright (C) 2010-2011 Free Software Foundation, Inc.
2 See the end of the file for license conditions.
3
4
5 This branch contains the sources, deployment scripts, and auxilliary
6 files for the Emacs Lisp package archive (elpa.gnu.org).
7
8 This file explains the branch layout, how to add and edit packages,
9 and how to deploy the archive (either on elpa.gnu.org, or a local copy
10 for testing purposes).
11
12
13 * DIRECTORY LAYOUT
14
15 ** admin/ -- scripts for deploying the package archive.
16 See the DEPLOYMENT section for details.
17 ** html/ -- HTML for the elp.gnu.org website.
18 ** packages/ -- source code for the packages.
19
20
21 * PACKAGES
22
23 ** Contents of the packages/ directory:
24
25 This directory holds the package sources. Unlike the deployed package
26 archive, multi-file packages are present here as directories, not tar
27 files. So, edits to the sources can be easily managed by Bzr.
28
29 *** archive-contents
30 This file contains a Lisp form recording the hosted package names and
31 their attributes. Once the archive is deployed, Emacs learns the
32 archive contents by reading this file (normally via HTTP).
33
34 In the future, we'll remove this file from the repository, and
35 generate it automatically during deployment.
36
37 *** Package sources
38 In the form of *.el files for simple (1-file) packages, or
39 subdirectories for multi-file packages.
40
41 *** Readme files
42 When the archive is deployed, Emacs retrieves the package descriptions
43 by reading these files (normally via HTTP).
44
45 In the future, we'll remove these files from the repository, and
46 generate them during deployment.
47
48 ** To add a package:
49
50 *** Add a simple (1-file) package as packages/NAME-VERSION.el.
51
52 *** Add a multi-file package a directory, packages/NAME-VERSION.
53
54 *** Add a readme file, packages/NAME-readme.txt. This should be a
55 copy of the commentary section for a simple package, or the README
56 file for a multi-file package.
57
58 *** Edit archive-contents and add an entry for the new package.
59
60 *** Commit your changes
61 This is done the usual way ("bzr add", "bzr commit", etc).
62
63 Changes in the Bzr repository do not immediately propagate to the
64 user-facing archive (what users see when they do `M-x list-packages').
65 That is done by deploying the archive (see below).
66
67
68 * DEPLOYMENT
69
70 ** The package-update.sh script
71
72 Use the script admin/package-update.sh to deploy a partial or full
73 copy of the package archive. To run a partial deployment:
74
75 /PATH/TO/admin/package-update.sh DEST
76
77 This deploys the packages in packages/ to DEST/packages.
78
79 To run a full deployment:
80
81 /PATH/TO/admin/package-update.sh DEST 1
82
83 A full deployment additionally copies the admin scripts to DEST/admin,
84 creates a full tarball in DEST/packages/emacs-packages-latest.tgz, and
85 fetches externally hosted packages (currently, the Org daily builds)
86 and adds them to the archive.
87
88 The package-update.sh script only works if it lives in a bzr
89 repository. It uses `bzr export' to deploy from the repository to the
90 destination directory. If you have uncommitted changes in the working
91 copy, those changes are not deployed.
92
93 You can view the deployment log at DEST/update-log.
94
95 The other scripts in the admin/ subdirectory are used for fetching the
96 Org dailies.
97
98 ** Accessing a deployed archive
99
100 To access the archive via HTPP, have a symlink (say) /var/www/packages
101 pointing to DEST/packages, and set up Emacs with
102
103 (setq package-archives '(("new-elpa" . "http://foo.com/packages")))
104
105 You can also access the archive via normal file access. Such "local
106 archives" are useful for debugging:
107
108 (setq package-archives '(("local-elpa" . "DEST/packages")))
109
110 ** Notes specific to elpa.gnu.org
111
112 The way things are set up on this machine, we refresh the archive by
113 logging in (login access set up by FSF admins), and
114
115 su elpa
116 cd ~elpa/elpa
117 bzr up
118 ./admin/package-update /home/elpa/staging/ 1
119
120 The symlink /var/www/packages points to /home/elpa/staging/packages.
121
122 The Org mode dailies are fetched and added by the script
123 admin/org-synch.sh, which is run as a cron job (we also run this
124 script during deployment).
125
126 \f
127 This file is part of GNU Emacs.
128
129 GNU Emacs is free software: you can redistribute it and/or modify
130 it under the terms of the GNU General Public License as published by
131 the Free Software Foundation, either version 3 of the License, or
132 (at your option) any later version.
133
134 GNU Emacs is distributed in the hope that it will be useful,
135 but WITHOUT ANY WARRANTY; without even the implied warranty of
136 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
137 GNU General Public License for more details.
138
139 You should have received a copy of the GNU General Public License
140 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
141
142 \f
143 Local variables:
144 mode: outline
145 paragraph-separate: "[ \f]*$"
146 end: