diff options
| author | Stefan Monnier <monnier@iro.umontreal.ca> | 2020-12-14 14:44:39 -0500 |
|---|---|---|
| committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2020-12-14 14:44:39 -0500 |
| commit | ee03829f90d25f62c2d36c5fef6f7b5eafb1040d (patch) | |
| tree | e044253335f127df4b66f8edd28031cdc7836377 /README | |
| parent | 624bf8c02a3d83f489875484a16205cd0c4aa660 (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-- | README | 77 |
1 files changed, 26 insertions, 51 deletions
@@ -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 |
