summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2020-12-14 14:44:39 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2020-12-14 14:44:39 -0500
commitee03829f90d25f62c2d36c5fef6f7b5eafb1040d (patch)
treee044253335f127df4b66f8edd28031cdc7836377 /README
parent624bf8c02a3d83f489875484a16205cd0c4aa660 (diff)
Finalize the new master branch
* README: Adjust to the new deployment system * .gitignore: Re-add the file. Adjust to new generated subdirectories. * Makefile: New file. * copyright_exceptions: Re-add the file.
Diffstat (limited to 'README')
-rw-r--r--README77
1 files changed, 26 insertions, 51 deletions
diff --git a/README b/README
index 86e999f..7fb7fc7 100644
--- a/README
+++ b/README
@@ -4,9 +4,14 @@
Copyright (C) 2010-2011, 2014-2020 Free Software Foundation, Inc. \\
See the end of the file for license conditions.
+This branch contains auxiliary files for [[https://elpa.gnu.org/][GNU ELPA]].
-This branch contains the sources, deployment scripts, and auxiliary
-files for [[https://elpa.gnu.org/][GNU ELPA]].
+The sources are stashed in auxiliary branches,
+and the deployment scripts, are in the =elpa-admin= branch.
+The =Makefile= will automatically pull that last branch
+to populate the =admin= subdirectory, whose own makefile
+will in turn populate the =packages= subdirectories from
+the relevant sources.
This file explains the branch layout, how to add and edit packages,
and how to deploy the archive (either on =elpa.gnu.org=, or a local copy
@@ -23,7 +28,8 @@ and look for "ELPA". Using a clone of a clone does not work.
** =admin/= -- scripts for administering the package archive.
** =html/= -- HTML for the elpa.gnu.org website.
** =packages/= -- source code for the packages.
-
+** =archive/= -- destination of the release tarballs built.
+** =archive-devel/= -- destination of the snapshot tarballs built.
* Packages
@@ -31,15 +37,14 @@ and look for "ELPA". Using a clone of a clone does not work.
This directory holds the package sources, with one subdirectory for
each package.
-Each directory in here corresponds to a package, which can be
-either a single-file package or a multifile package.
+Each directory in here corresponds to a package.
A nightly cron job refreshes the GNU ELPA archive from this repository.
This cron job only creates a new package when the "version" (as specified in
the =Version:= header) of a package is modified. This means that you can
safely work on the next version here without worrying about the unstable
-code making it to GNU ELPA, and simply update the "version" when you want to
+code making it to GNU ELPA, and simply update the =Version:= when you want to
release the new code.
** To add a package: (submission, submit)
@@ -95,7 +100,7 @@ your changes for you. You should probably also subscribe to
to [[https://lists.gnu.org/mailman/listinfo/bug-gnu-emacs][bug-gnu-emacs@gnu.org]], since that's where people will report bugs
about your package.
-*** Add a simple (1-file) package as =packages/<pkg-name>/<pkg-name>.el.=
+*** Add a simple package as =<pkg-name>.el=.
The file needs to follow the usual coding conventions (most importantly start
with =";;; <file> --- <description> -*- lexical-binding: t -*-"=) and have a
@@ -107,12 +112,10 @@ For some examples, see [[https://www.gnu.org/software/emacs/manual/html_node/eli
(info "(elisp) Simple Packages")
#+end_src
-*** Add a multi-file package as a directory: =packages/<pkg-name>=
+*** Add a multi-file package as a directory
-It needs to have a file named =packages/<pkg-name>/<pkg-name>.el= which follows the
-same rules as above. Note that if your package is large, we recommend you
-add it as an "external" into its own branch, see below discussion of
-[[External branches][external branches]].
+It needs to have a file named =<pkg-name>/<pkg-name>.el= which follows the
+same rules as above.
It additionally follows the same guidelines described in [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Multi_002dfile-Packages.html][Multi-File Packages]]
(web link) or in Emacs
@@ -158,10 +161,6 @@ and the web-pages from this source code:
of the package, if it's maintained externally.
- A =News:= section (or "NEWS" file) can/should be used to list the
user-visible changes of each version.
-- The =Package-Type:= header can be used to force the type of package
- created (can be either =simple= for single-file packages or =multi= for
- tarballs). By default the type is decided based on whether there are
- several Elisp files in the source.
- If you want some files to not be included in the tarball, you can
put a =.elpaignore= file in the root of your package directory, where you
can list patterns of files to ignore (this file is passed to =tar='s =-X=).
@@ -183,20 +182,15 @@ correctly in the commit.
** External branches
-The above instructions are enough to add regular packages, those that
-are maintained primarily here in the repository and are fairly small.
-The instructions below are for those maintainers who prefer to use a dedicated
-repository or branch for the package or for largish packages.
-
-In any case, a copy of the code is kept in the =elpa.git= repository
-(not in the =master= branch) and should be sync'd with the
+A copy of the code of every package is kept in the =elpa.git= repository
+(not in the =master= branch) and if applicable should be sync'd with the
upstream every once in a while. This copy may include local changes,
although these should be kept to a minimum.
The copy of the code is not kept in =master= but in the
=externals/<pkg-name>= branch in the =elpa.git= repository.
-To add a new external package, first add this =elpa.git= repository as a
+To add a new package, first add this =elpa.git= repository as a
new remote in your existing repository.
Then push a local branch to a
@@ -277,37 +271,18 @@ This compiles and generates autoloads for all the packages in the
** To deploy the package repository as a remotely-accessible archive:
-The deployment process creates sibling directories, so start by creating
-a clean directory to work in:
-
-#+begin_src shell
- mkdir elpa ; cd elpa
-#+end_src
-
-The above step is optional, but recommended.
-
#+begin_src shell
- git -c fetch.fsckObjects=false clone .../elpa
- (cd elpa; git clone .../emacs) #If you want to generate :core packages.
- mkdir build
- cd build
- (cd ../elpa; git log --format=%H | tail -n 1) >.changelog-witness
- ln -s ../elpa/admin
- ln -s ../elpa/GNUmakefile
- admin/update-archive.sh
+ make build-all
#+end_src
-This deploys the packages to the =staging/= directory (sibling of =build=).
+This deploys the packages to the =archive/= subdirectory.
Unlike =make=, this makes a full copy of the packages, tars up
multi-file packages, and doesn't byte-compile any files.
-The =fetch.fsckObjects= setting works around a glitch in the ELPA
-repository. (See [[https://debbugs.gnu.org/22690][Bug#22690]].)
-
** To access a deployed archive
To access the archive via HTTP, have a symlink (say) =/var/www/packages=
-pointing to =DEST/packages=, and set up Emacs with
+pointing to the =archive/= subdirectory, and set up Emacs with
#+begin_src elisp
(setq package-archives '(("new-elpa" . "http://foo.com/packages")))
@@ -317,7 +292,7 @@ You can also access the archive via normal file access. Such "local
archives" are useful for debugging:
#+begin_src elisp
- (setq package-archives '(("local-elpa" . ".../elpa/packages")))
+ (setq package-archives '(("local-elpa" . ".../elpa/archive")))
#+end_src
** Notes specific to =elpa.gnu.org=
@@ -327,13 +302,13 @@ a cron job. You can do it by hand by logging in (access set up by FSF
admins), and
#+begin_src shell
- su elpa
- cd ~elpa/build
- admin/update-archive.sh
+ su - elpa
+ cd elpa
+ make build-all
#+end_src
Which makes a full archive deployment, as discussed above. The symlink
-=/var/www/packages= points to the staging package directory under
+=/var/www/packages= points to the corresponding directory under
=/home/elpa/=.
* License