From eb8694ee59c211351b55601fdc88338b9c888f81 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 7 Mar 2011 19:08:03 -0500 Subject: Mention elpa branch in admin/notes/BRANCH; clarify admin/notes/elpa. --- admin/notes/BRANCH | 7 ++++++ admin/notes/elpa | 62 +++++++++++++++++++----------------------------------- 2 files changed, 29 insertions(+), 40 deletions(-) (limited to 'admin') diff --git a/admin/notes/BRANCH b/admin/notes/BRANCH index 53f3d9603ca..9f09135f206 100644 --- a/admin/notes/BRANCH +++ b/admin/notes/BRANCH @@ -23,3 +23,10 @@ on what branch at any time. If you are looking at this file in a branch other than the trunk, there may be some branch-specific documentation below this line. ________________________________________________________________________ + +* elpa + + This branch does not contain a copy of Emacs, but of the Emacs Lisp + package archive (elpa.gnu.org). See admin/notes/elpa for further + explanation, and the README file in the branch for usage + instructions. diff --git a/admin/notes/elpa b/admin/notes/elpa index e28d81e6d6e..cbea8cc1dfa 100644 --- a/admin/notes/elpa +++ b/admin/notes/elpa @@ -1,42 +1,24 @@ NOTES ON THE EMACS PACKAGE ARCHIVE -Here are instructions on uploading files to the package archive at -elpa.gnu.org, for Emacs maintainers. (If you are not a maintainer, -contact us if you want to submit a package.) - -1. You will need login access to elpa.gnu.org. You will also need to - get the FSF sysadmins to allow ssh access through the FSF firewall - for your local machine. Ensure that your uid, USER, is in the - `elpa' group on elpa.gnu.org; this gives you write access to the - bzr repository from which the packages are managed. - -2. Go to your bzr repository on your local machine. Of, if you don't - have one (you should, if you're tracking Emacs bzr), make one: - - cd $DEVHOME - bzr init-repo elpa/ - cd elpa - - Create a branch for elpa: - - bzr branch bzr+ssh://USER@elpa.gnu.org/home/elpa/package-repo package-repo - - Bind the branch: - - cd package-repo/ - echo "public_branch = bzr+ssh://USER@elpa.gnu.org/home/elpa/package-repo" >> .bzr/branch/branch.conf - bzr bind bzr+ssh://USER@elpa.gnu.org/home/elpa/package-repo - - Now you should be able to do `bzr up' and `bzr commit'. - -3. Changes in bzr do not immediately propagate to the user-facing tree - (i.e., what users see when they do `M-x list-packages'). That tree - is created by a (daily) cron job that does "bzr export". If for - some reason you need to refresh the user-facing tree immediately, - run /home/elpa/bin/package-update.sh as the "elpa" user. - - The Org mode dailies are not part of the repository. After the - package-update.sh script creates the user-facing tree, it copies - the daily tarfile hosted on orgmode.org directly into that tree. - -4. FIXME: How to actually upload a package file. +The GNU Emacs package archive, at elpa.gnu.org, is managed using Bzr. +The Bzr branch is hosted on Savannah, and you can check it out with + + bzr branch bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa elpa + +Changes made to this branch propagate to elpa.gnu.org as follows. +There exists a copy of the elpa branch on that machine. Someone with +access must log in, pull the latest changes from Savannah, and run a +"deployment" script that generates the content at the web-visible +location http://elpa.gnu.org/packages. + +The reason things are set up this way, instead of using the package +upload utilities in package-x.el, is so that Emacs hackers can easily +edit the contents of the Savannah "elpa" branch, with the aid of +version control. (For instance, multi-file packages are stored on the +Bzr branch in source form, not as tarfiles.) Because deployment is a +semi-manual process, this allows us some flexibility in making changes +to the branch on Savannah. Furthermore, one can use the elpa branch +to deploy a "local" copy of the package archive, for testing. + +For details on how to use the elpa branch, see that README file in +that branch. -- cgit v1.2.1 From 7f0869bd1d2f8681f86b0104dff1392d29634d0e Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 11 Mar 2011 17:53:47 -0500 Subject: admin/notes/elpa: Make Bzr checkout directions more explicit. --- admin/notes/elpa | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'admin') diff --git a/admin/notes/elpa b/admin/notes/elpa index cbea8cc1dfa..db14456fe32 100644 --- a/admin/notes/elpa +++ b/admin/notes/elpa @@ -1,24 +1,24 @@ NOTES ON THE EMACS PACKAGE ARCHIVE -The GNU Emacs package archive, at elpa.gnu.org, is managed using Bzr. -The Bzr branch is hosted on Savannah, and you can check it out with +The GNU Emacs package archive, at elpa.gnu.org, is managed using a Bzr +branch named "elpa", hosted on Savannah. To check it out: bzr branch bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa elpa + cd elpa + echo "public_branch = bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa" >> .bzr/branch/branch.conf + bzr bind bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/elpa + [create task branch for edits, etc.] -Changes made to this branch propagate to elpa.gnu.org as follows. +Changes to this branch propagate to elpa.gnu.org in a semi-manual way. There exists a copy of the elpa branch on that machine. Someone with -access must log in, pull the latest changes from Savannah, and run a -"deployment" script that generates the content at the web-visible -location http://elpa.gnu.org/packages. +access logs in, pulls the latest changes from Savannah, and runs a +"deployment" script. This script (which is itself kept in the Bzr +branch) generates the content visible at http://elpa.gnu.org/packages. -The reason things are set up this way, instead of using the package -upload utilities in package-x.el, is so that Emacs hackers can easily -edit the contents of the Savannah "elpa" branch, with the aid of -version control. (For instance, multi-file packages are stored on the -Bzr branch in source form, not as tarfiles.) Because deployment is a -semi-manual process, this allows us some flexibility in making changes -to the branch on Savannah. Furthermore, one can use the elpa branch -to deploy a "local" copy of the package archive, for testing. +The reason we set things up this way, instead of using the package +upload commands in package-x.el, is to let Emacs hackers conveniently +edit the contents of the "elpa" branch. (In particular, multi-file +packages are stored on the branch in source form, not as tarfiles.) -For details on how to use the elpa branch, see that README file in -that branch. +It is easy to use the elpa branch to deploy a "local" copy of the +package archive. For details, see the README file in the elpa branch. -- cgit v1.2.1 From 8d9101d850b5ad006ce41a231f294ea6de93986a Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 12 Mar 2011 22:50:33 -0500 Subject: admin/admin.el: Add some code for deploying web manuals. --- admin/admin.el | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) (limited to 'admin') diff --git a/admin/admin.el b/admin/admin.el index 717bfee702d..70958ce1a76 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -212,6 +212,236 @@ Root must be the root of an Emacs source tree." "\\\\def\\\\year{") "\\([0-9]\\{4\\}\\)}.+%.+copyright year")))))) +;;; Various bits of magic for generating the web manuals + +(defun make-manuals (root) + "Generate the web manuals for the Emacs webpage." + (interactive "DEmacs root directory: ") + (let* ((dest (expand-file-name "manual" root)) + (html-node-dir (expand-file-name "html_node" dest)) + (html-mono-dir (expand-file-name "html_mono" dest)) + (txt-dir (expand-file-name "text" dest)) + (dvi-dir (expand-file-name "dvi" dest)) + (ps-dir (expand-file-name "ps" dest))) + (when (file-directory-p dest) + (if (y-or-n-p (format "Directory %s exists, delete it first?" dest)) + (delete-directory dest t) + (error "Aborted"))) + (make-directory dest) + (make-directory html-node-dir) + (make-directory html-mono-dir) + (make-directory txt-dir) + (make-directory dvi-dir) + (make-directory ps-dir) + ;; Emacs manual + (let ((texi (expand-file-name "doc/emacs/emacs.texi" root))) + (manual-html-node texi (expand-file-name "emacs" html-node-dir)) + (manual-html-mono texi (expand-file-name "emacs.html" html-mono-dir)) + (manual-txt texi (expand-file-name "emacs.txt" txt-dir)) + (manual-pdf texi (expand-file-name "emacs.pdf" dest)) + (manual-dvi texi (expand-file-name "emacs.dvi" dvi-dir) + (expand-file-name "emacs.ps" ps-dir))) + ;; Lisp manual + (let ((texi (expand-file-name "doc/lispref/elisp.texi" root))) + (manual-html-node texi (expand-file-name "elisp" html-node-dir)) + (manual-html-mono texi (expand-file-name "elisp.html" html-mono-dir)) + (manual-txt texi (expand-file-name "elisp.txt" txt-dir)) + (manual-pdf texi (expand-file-name "elisp.pdf" dest)) + (manual-dvi texi (expand-file-name "elisp.dvi" dvi-dir) + (expand-file-name "elisp.ps" ps-dir))) + (message "Manuals created in %s" dest))) + +(defconst manual-doctype-string + "\n\n") + +(defconst manual-meta-string + " + + + +\n\n") + +(defconst manual-style-string "\n") + +(defun manual-html-mono (texi-file dest) + "Run Makeinfo on TEXI-FILE, emitting mono HTML output to DEST. +This function also edits the HTML files so that they validate as +HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using +the @import directive." + (call-process "makeinfo" nil nil nil + "--html" "--no-split" texi-file "-o" dest) + (with-temp-buffer + (insert-file-contents dest) + (setq buffer-file-name dest) + (manual-html-fix-headers) + (manual-html-fix-index-1) + (manual-html-fix-index-2 t) + (manual-html-fix-node-div) + (goto-char (point-max)) + (re-search-backward "[\n \t]*") + (insert "\n\n") + (save-buffer))) + +(defun manual-html-node (texi-file dir) + "Run Makeinfo on TEXI-FILE, emitting per-node HTML output to DIR. +This function also edits the HTML files so that they validate as +HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using +the @import directive." + (unless (file-exists-p texi-file) + (error "Manual file %s not found" texi-file)) + (call-process "makeinfo" nil nil nil + "--html" texi-file "-o" dir) + ;; Loop through the node files, fixing them up. + (dolist (f (directory-files dir nil "\\.html\\'")) + (let (opoint) + (with-temp-buffer + (insert-file-contents (expand-file-name f dir)) + (setq buffer-file-name (expand-file-name f dir)) + (if (looking-at "Copyright ©") + (setq opoint (match-beginning 0)) + (re-search-forward "") + (setq copyright-text (buffer-substring opoint (point))) + (delete-region opoint (point)) + (manual-html-fix-index-2) + (insert copyright-text "\n\n")) + ;; For normal nodes, give the header div a blue bg. + (manual-html-fix-node-div)) + (save-buffer)))))) + +(defun manual-txt (texi-file dest) + "Run Makeinfo on TEXI-FILE, emitting plaintext output to DEST." + (call-process "makeinfo" nil nil nil + "--plaintext" "--no-split" texi-file "-o" dest) + (shell-command (concat "gzip -c " dest " > " (concat dest ".gz")))) + +(defun manual-pdf (texi-file dest) + "Run texi2pdf on TEXI-FILE, emitting plaintext output to DEST." + (call-process "texi2pdf" nil nil nil texi-file "-o" dest)) + +(defun manual-dvi (texi-file dest ps-dest) + "Run texi2dvi on TEXI-FILE, emitting dvi output to DEST. +Also generate postscript output in PS-DEST." + (call-process "texi2dvi" nil nil nil texi-file "-o" dest) + (call-process "dvips" nil nil nil dest "-o" ps-dest) + (call-process "gzip" nil nil nil dest) + (call-process "gzip" nil nil nil ps-dest)) + +(defun manual-html-fix-headers () + "Fix up HTML headers for the Emacs manual in the current buffer." + (let (opoint) + (insert manual-doctype-string) + (search-forward "\n") + (insert manual-meta-string) + (search-forward "") + (delete-region opoint (match-beginning 0)))) + +(defun manual-html-fix-node-div () + "Fix up HTML \"node\" divs in the current buffer." + (let (opoint div-end) + (while (search-forward "
" nil t) + (replace-match + "
" + t t) + (setq opoint (point)) + (re-search-forward "
") + (setq div-end (match-beginning 0)) + (goto-char opoint) + (if (search-forward "
" div-end 'move) + (replace-match "" t t))))) + +(defun manual-html-fix-index-1 () + (let (opoint) + (re-search-forward "\n\\(

\n\n"))) + +(defun manual-html-fix-index-2 (&optional table-workaround) + "Replace the index list in the current buffer with a HTML table." + (let (done open-td tag desc) + ;; Convert the list that Makeinfo made into a table. + (search-forward "
    ") + (replace-match "") + (forward-line 1) + (while (not done) + (cond + ((or (looking-at "
  • \\(\\):[ \t]+\\(.*\\)$") + (looking-at "
  • \\(\\)$")) + (setq tag (match-string 1)) + (setq desc (match-string 2)) + (replace-match "" t t) + (when open-td + (save-excursion + (forward-char -1) + (skip-chars-backward " ") + (delete-region (point) (line-end-position)) + (insert "\n "))) + (insert "
  • \n ") + (if table-workaround + ;; This works around a Firefox bug in the mono file. + (insert "\n
    ") + (insert "")) + (insert tag "" (or desc "")) + (setq open-td t)) + ((eq (char-after) ?\n) + (delete-char 1) + ;; Negate the following `forward-line'. + (forward-line -1)) + ((looking-at "")) + ((looking-at "

    [- ]*The Detailed Node Listing[- \n]*") + (replace-match "

    \n +

    Detailed Node Listing

    \n\n" t t) + (search-forward "

    ") + (search-forward "

    ") + (goto-char (match-beginning 0)) + (skip-chars-backward "\n ") + (setq open-td nil) + (insert "

    \n\n")) + ((looking-at "") + (replace-match "" t t)) + ((looking-at "

    ") + (replace-match "" t t) + (when open-td + (insert " ") + (setq open-td nil)) + (insert "

    + ")) + ((looking-at "[ \t]*[ \t]*$") + (replace-match + (if open-td + " \n
    ") + (re-search-forward "

    [ \t\n]*
      ") + (replace-match "
    " + "") t t) + (setq done t)) + (t + (if (eobp) + (error "Parse error in %s" f)) + (unless open-td + (setq done t)))) + (forward-line 1)))) + (provide 'admin) ;;; admin.el ends here -- cgit v1.2.1 From 66b874939b5acd59c76fa53373f2e41871ec1fef Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 20 Mar 2011 16:58:23 -0700 Subject: (Re)move autotools generated files from the repository. Ref: http://lists.gnu.org/archive/html/emacs-devel/2011-03/msg00225.html * autogen/: New directory, to be excluded from releases. * autogen/copy_autogen, autogen/update_autogen: New scripts. * autogen/README: New file. * autogen/aclocal.m4, autogen/config.in, autogen/configure: * autogen/Makefile.in: Add auto-updated generated files. * autogen.sh: No longer a no-op, now it tests for autotools and runs them as necessary. * configure.in: Defaule maintainer-mode to on. * aclocal.m4, configure, lib/Makefile.in: Remove files. * src/config.in: Remove file. * INSTALL.BZR, admin/make-tarball.txt: Update instructions. --- admin/make-tarball.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'admin') diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 6a8072de06c..9c47d6e1fa2 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -28,11 +28,14 @@ For each step, check for possible errors. refer to a newer release of Emacs. (This is probably needed only when preparing a major Emacs release, or branching for it.) -5. autoreconf -I m4 --force +5. Edit configure.in so that maintainer-mode is off by default. + (FIXME - need to find a better way of dealing with this). + + autoreconf -I m4 --force make bootstrap -6. Commit configure, src/config.in, etc/AUTHORS, all the files changed - by M-x set-version, and lisp/cus-edit.el (if modified). +6. Commit etc/AUTHORS, all the files changed by M-x set-version, and + lisp/cus-edit.el (if modified). Copy lisp/loaddefs.el to lisp/ldefs-boot.el and commit lisp/ldefs-boot.el. For a release, also commit the ChangeLog files in all directories. -- cgit v1.2.1