diff options
| author | Stefan Monnier <monnier@iro.umontreal.ca> | 2020-12-11 01:59:53 -0500 |
|---|---|---|
| committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2020-12-11 01:59:53 -0500 |
| commit | d8903b638d445db61ac122eab4252a394195982e (patch) | |
| tree | 5d0556917c5d1027b2447dd7e31b106d6accd016 /README | |
| parent | 311d8196e7823fad6f82e3b195297f097c07df7f (diff) | |
* elpa-admin.el: Add some of the support needed to build Org packages
Add support for :main-file, :release-branch,
:ignored-files, and :renames in package specifications.
(elpaa--branch-prefix, elpaa--release-branch-prefix)
(elpaa--specs-file): New variables.
(elpaa-batch-make-archive, elpaa--process-simple-package): Delete functions.
(elpaa--get-specs, elpaa--spec-get, elpaa--main-file): New functions,
use them where appropriate.
(elpaa--get-release-revision, elpaa--select-revision): Take a pkg-spec
rather than just a name.
(elpaa--make-tar-transform): New function.
(elpaa--make-one-tarball): Use it, obey :ignored-files and :renames.
(elpaa--html-bytes-format): Don't burp if the file is missing.
(elpaa--fetch, elpaa--push, elpaa--get-last-release):
Handle the :release-branch.
* GNUmakefile (archive, archive-tmp, process-archive, archive-full)
(org-fetch): Delete targets used with the old scripts.
* README: Start documenting the new code.
Diffstat (limited to 'README')
| -rw-r--r-- | README | 94 |
1 files changed, 80 insertions, 14 deletions
@@ -1,17 +1,11 @@ -#+TITLE: GNU ELPA README +#+TITLE: ELPA-Admin README #+DATE: 2020-11-28 -Copyright (C) 2010-2011, 2014-2020 Free Software Foundation, Inc. \\ +Copyright (C) 2010-2020 Free Software Foundation, Inc. \\ See the end of the file for license conditions. - -This branch contains the sources, deployment scripts, and auxiliary -files for [[https://elpa.gnu.org/][GNU ELPA]]. - -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 -for testing purposes). - +This branch contains the source code used to build and manage +the [[https://elpa.gnu.org/][GNU ELPA]] and NonGNU ELPA archives. * Getting the source @@ -20,10 +14,82 @@ and look for "ELPA". Using a clone of a clone does not work. * Directory layout -** =admin/= -- scripts for administering the package archive. -** =html/= -- HTML for the elpa.gnu.org website. -** =packages/= -- source code for the packages. - +This code expects to be used in a directory that has the following layout: + +- =admin/= -- Directory containing a copy of the here files +- =GNUmakefile= -- A copy of or symlink to =admin/GNUmakefile= +- =externals-list= -- The specifications of the packages + +Additionally to the above, this code will then add to that directory +the following elements: + +- =packages/= -- Directory holding Git worktrees of packages +- =archive/= -- Directory holding the generated files for the archive +- =archive-devel/= -- Same for the "bleeding edge" version of the archive + +* Specifications + +The specifications of packages is a `lisp-data-mode` file containing +a single Lisp list where each element describe a particular ELisp package +that should be part of the archive. Each element has the form + + (NAME . PLIST) + +where NAME is the name of the ELisp package and PLIST is a property list +giving additional info about that package. It has to have either +an =:external= or a =:core= property, all others are optional. +The properties are the following: + +** =:external URL= +Gives the URL where the upstream Git repository for that package can be found. +The URL can be =nil= if there is no upstream repository. + +** =:core FILES= +Indicates that this is a special package which will be built by extracting +files directly from Emacs's source code. For this to work, the Emacs +source code should be available in the =emacs= subdirectory. +FILES specifies the files that will be contained in the generated tarballs. +It can be a single file name or a list of file names. + +** =:branch BRANCH= +Specifies the branch to follow in the upstream Git repository, in case +it should be different from =master=. + +** =:main-file FILE= +Gives the name of the main file of the package, i.e. the file in which +the metadata can be found in the form of pseudo-headers like "Version:". +It needs to be an ELisp file formatted following the proper conventions. +This is normally the file [PKG].el, but in some rare circumstances, +the file is named differently, typically because it is placed in +a subdirectory. + +** =:version-map MAP= +A list of elements of the form (ORIG-VERSION REMAPPED-VERSION REVISION). +This allows replacing the ORIG-VERSION from the [PKG].el file +with REMAPPED-VERSION (e.g. because the ORIG-VERSION is not a valid +version number, is missing, or because we want to create a new package +from the same code version). +It also makes it possible to specify which REVISION corresponds to +this ORIG-VERSION (or REMAPPED-VERSION if non-nil) to override +the default heuristic which uses the last revision that modified the +"Version:" header. + +** =:release-branch BRANCH= +The upstream BRANCH from which releases are cut. This is only used +for those packages which have both a development branch and a release branch +and only if the version number in the development branch indicates that it +contains development code (i.e. a "snapshot" version, according to +`version-to-list`). + +** =:ignored-files FILES= +Names of files or directories that should not be included in the tarballs. + +** =:renames RENAMES= +Mapping from the source layout to the layout used in the tarball. +RENAMES is a list of element (FROM TO) where FROM should terminate with =/= +if it's a directory. + +* Text below this marker is OUTDATED and still needs to be reviewed/rewritten!! * Packages |
