Mercurial > hg > xemacs-beta
diff lisp/build-report.el @ 219:262b8bb4a523 r20-4b8
Import from CVS: tag r20-4b8
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:09:35 +0200 |
parents | d44af0c54775 |
children | 85a06df23a9a |
line wrap: on
line diff
--- a/lisp/build-report.el Mon Aug 13 10:08:36 2007 +0200 +++ b/lisp/build-report.el Mon Aug 13 10:09:35 2007 +0200 @@ -1,10 +1,10 @@ -;;; xemacs-build-report.el --- Automatically formatted build reports for XEmacs +;;; build-report.el --- Automatically formatted build reports for XEmacs ;; Copyright (C) 1997 Adrian Aichner ;; Author: Adrian Aichner, Teradyne GmbH Munich <aichner@ecf.teradyne.com> ;; Date: Sun., Apr. 20, 1997. -;; Version: 1.28 +;; Version: 1.35 ;; Keywords: internal ;; This file is part of XEmacs. @@ -33,7 +33,7 @@ ;; The Concept: ;; User creates an XEmacs Build Report by just calling -;; M-x xemacs-create-build-report +;; M-x build-report ;; which will initialize a mail buffer with relevant information ;; derived from the XEmacs build process. Point is left at the ;; beginning of the report for user to input some personal notes and @@ -48,100 +48,124 @@ ;;; Code: (require 'config) -(provide 'xemacs-build-report) +(provide 'build-report) ;; Due to recommandation by developers on xemacs-beta@xemacs.org, ;; release versions are to be checked out using `co -u -kv ...'. -(defconst xemacs-build-report-version - "1.28" - "Version number of xemacs-build-report.") +(defconst build-report-version + "1.35" + "Version number of build-report.") -(defgroup xemacs-build-report nil - "Package automating the process of sending Xemacs Build Reports.") +(defgroup build-report nil + "Package automating the process of sending XEmacs Build Reports." + :group 'build) -(defcustom xemacs-build-report-destination +(defcustom build-report-destination "xemacs-beta@xemacs.org" "The mail address XEmacs Build Reports should go to." - :group 'xemacs-build-report) - -(defcustom xemacs-build-report-keep-regexp - "make\\[\\|error\\|warn\\|pure.*\\(space\\|size\\)\\|hides\\b\\|strange\\|shadowings" - "Regexp of make process output lines to keep in the report." - :group 'xemacs-build-report) + :type 'string + :group 'build-report) -(defcustom xemacs-build-report-delete-regexp - "confl.*with.*auto-inlining" +(defcustom build-report-keep-regexp + (list + "make\\[" + "error" + "warn" + "pure.*\\(space\\|size\\)" + "hides\\b" + "strange" + "shadowings" + "^Compilation" + "not\\s-+found") + "Regexp of make process output lines to keep in the report." + :type '(repeat regexp) + :group 'build-report) + +(defcustom build-report-delete-regexp + (list + "confl.*with.*auto-inlining") "Regexp of make process output lines to delete from the report." - :group 'xemacs-build-report) + :type '(repeat regexp) + :group 'build-report) -(defcustom xemacs-build-report-make-output-file +(defcustom build-report-make-output-file (concat (gethash 'blddir (config-value-hash-table)) "/beta.err") "Filename where stdout and stderr of XEmacs make process have been stored. mk.err will not be created automatically. You'll have to run make with output redirection. I use an alias alias mk 'make \!* >>&\! \!$.err &' for that, so that I get beta.err went I run `mk beta'." - :group 'xemacs-build-report) + :type 'file + :group 'build-report) -(defcustom xemacs-build-report-installation-file +(defcustom build-report-installation-file (concat (gethash 'blddir (config-value-hash-table)) "/Installation") "Installation file produced by XEmacs configure process." - :group 'xemacs-build-report) + :type 'file + :group 'build-report) -(defcustom xemacs-build-report-subject +(defcustom build-report-installation-insert-all nil + "Tell build-report to insert the whole Installation file +instead of just the last report." + :type 'boolean + :group 'build-report) + +(defcustom build-report-subject (concat "[%s] " emacs-version " on " system-configuration) "XEmacs Build Report Subject Line. %s-sequences will be substituted -with user input through `xemacs-create-build-report' according to -`xemacs-build-report-prompts' using `format'." - :group 'xemacs-build-report) +with user input through `build-report' according to +`build-report-prompts' using `format'." + :type 'string + :group 'build-report) -(defcustom xemacs-build-report-prompts +(defcustom build-report-prompts '(("Status?: " "Success" "Failure")) "XEmacs Build Report Prompt(s). This is a list of prompt-string -lists used by `xemacs-create-build-report' in conjunction with -`xemacs-build-report-subject'. Each list consists of a prompt string +lists used by `build-report' in conjunction with +`build-report-subject'. Each list consists of a prompt string followed by any number of strings which can be chosen via the history mechanism." - :group 'xemacs-build-report) + :group 'build-report) -(defcustom xemacs-build-report-file-encoding +(defcustom build-report-file-encoding "7bit" "XEmacs Build Report File Encoding to be used when MIME support is available." -:group 'xemacs-build-report) + :group 'build-report) -;; Symbol Name mappings from TM to SEMI serving as -;; Compatibility Bandaid -;; If 'mime-editor/version-name is bound, we must be using TM(-edit). -(if (featurep 'mime-setup) - (if (locate-library "tm-edit") - (progn - ;; No (defvaralias ...) so far. T - ;; Thanks to "Didier Verna" verna@inf.enst.fr for reporting my - ;; incorrect defvaraliasing of `mime-editor/insert-tag'. - (defalias - 'mime-edit-insert-tag - 'mime-editor/insert-tag - ) - (defalias - 'mime-edit-insert-binary-file - 'mime-editor/insert-binary-file - )))) +;; Symbol Name mappings from TM to SEMI serving as Compatibility +;; Bandaid +(when (featurep 'mime-setup) + ;; No (defvaralias ...) so far. Thanks to "Didier Verna" + ;; <verna@inf.enst.fr> for reporting my incorrect defvaraliasing of + ;; `mime-editor/insert-tag'. + ;; Thanks to Jens-Ulrik Holger Petersen + ;; <petersen@kurims.kyoto-u.ac.jp> for suggesting the conditional + ;; aliasing of SEMI functions. + (unless (fboundp 'mime-edit-content-beginning) + (defalias 'mime-edit-content-beginning 'mime-editor/content-beginning)) + (unless (fboundp 'mime-edit-insert-tag) + (defalias 'mime-edit-insert-tag 'mime-editor/insert-tag)) + (unless (fboundp 'mime-edit-insert-binary-file) + (defalias 'mime-edit-insert-binary-file + 'mime-editor/insert-binary-file))) -(defun xemacs-create-build-report (&rest args) - "Initializes a fresh mail-mode buffer with the contents of XEmacs -Installation file and excerpts from XEmacs make output and errors and -leaves point at the beginning of the mail text. See also -`xemacs-build-report-destination', -`xemacs-build-report-keep-regexp', -`xemacs-build-report-delete-regexp', -`xemacs-build-report-make-output-file' and -`xemacs-build-report-installation-file'." +(defun build-report (&rest args) + "Initializes a fresh mail composition buffer using `compose-mail' +with the contents of XEmacs Installation file and excerpts from XEmacs +make output and errors and leaves point at the beginning of the mail text. + See also +`compose-mail', `mail-user-agent', +`build-report-destination', +`build-report-keep-regexp', +`build-report-delete-regexp', +`build-report-make-output-file' and +`build-report-installation-file'." (interactive (let (prompt hist arg - (prompts xemacs-build-report-prompts)) + (prompts build-report-prompts)) (progn (while prompts (setq prompt (caar prompts)) @@ -151,93 +175,119 @@ arg))) (save-excursion (compose-mail - xemacs-build-report-destination - (apply 'format xemacs-build-report-subject args) + build-report-destination + (apply 'format build-report-subject args) nil nil nil nil nil) - (let ((report-begin (mail-text))) - (xemacs-build-report-insert-make-output report-begin) - (xemacs-build-report-insert-installation-file report-begin) - (xemacs-build-report-insert-header report-begin) - ))) + (let ((report-begin (point))) + (insert (build-report-insert-make-output report-begin)) + (insert (build-report-insert-installation-file + report-begin + build-report-installation-insert-all)) + (insert (build-report-insert-header report-begin)) + (goto-char report-begin)))) -(defun xemacs-build-report-insert-header (where) - "Inserts the xemacs-build-report-header at the point specified by `where'." +(defun build-report-insert-header (where) + "Inserts the build-report-header at the point specified by `where'." (goto-char where) - (insert "\n> XEmacs Build Report as generated\n> by " - "xemacs-build-report-version " - xemacs-build-report-version - " follows:\n\n")) + (with-temp-buffer + (insert "\n> XEmacs Build Report as generated\n> by" + " build-report-version " + build-report-version " follows:\n\n") + (buffer-string))) -(defun xemacs-build-report-insert-make-output (where) +(defun build-report-insert-make-output (where) "Inserts the output of the XEmacs Beta make run. The make process output must have been saved in -`xemacs-build-report-make-output-file' during the XEmacs Beta building." +`build-report-make-output-file' during the XEmacs Beta building." (goto-char where) - (if (file-exists-p xemacs-build-report-make-output-file) - (progn - (if (featurep 'mime-setup) - (progn - (setq xemacs-build-report-keep-regexp - (concat "^--\\[\\[\\|\\]\\]$\\|" - xemacs-build-report-keep-regexp)) - (mime-edit-insert-tag - "application" - "octet-stream" - (concat - "\nContent-Disposition: attachment;" - " filename=\"" - (file-name-nondirectory - xemacs-build-report-make-output-file) - "\"")) - (mime-edit-insert-binary-file - xemacs-build-report-make-output-file - xemacs-build-report-file-encoding)) - (insert-file-contents xemacs-build-report-make-output-file)) - (goto-char where) - (delete-non-matching-lines - xemacs-build-report-keep-regexp) - (goto-char where) - (delete-matching-lines xemacs-build-report-delete-regexp) - (goto-char where) - (insert "> Contents of " - xemacs-build-report-make-output-file - "\n> keeping lines matching\n> \"" - xemacs-build-report-keep-regexp - "\"\n> and then deleting lines matching\n> \"" - xemacs-build-report-delete-regexp - "\"\n\n")) - (insert "> " xemacs-build-report-make-output-file - " does not exist!\n\n"))) + (with-temp-buffer + (if (file-exists-p build-report-make-output-file) + (progn + (if (featurep 'mime-setup) + (progn + (mime-edit-insert-tag + "text" + "plain" + (concat + "\nContent-Disposition: attachment;" + " filename=\"" + (file-name-nondirectory + build-report-make-output-file) + "\"")) + (mime-edit-insert-binary-file + build-report-make-output-file + build-report-file-encoding)) + (insert-file-contents build-report-make-output-file)) + (goto-char (point-min)) + (delete-non-matching-lines (build-report-keep)) + (goto-char (point-min)) + (delete-matching-lines (build-report-delete)) + (goto-char (point-min)) + (insert "> Contents of " + build-report-make-output-file + "\n> keeping lines matching\n> \"" + (build-report-keep) + "\"\n> and then deleting lines matching\n> \"" + (build-report-delete) + "\"\n\n")) + (insert "> " build-report-make-output-file + " does not exist!\n\n")) + (buffer-string))) -(defun xemacs-build-report-insert-installation-file (where) - "Inserts the contents of the `xemacs-build-report-installation-file' +(defun build-report-insert-installation-file (where all) + "Inserts the contents of the `build-report-installation-file' created by the XEmacs Beta configure process." (goto-char where) - (if (file-exists-p xemacs-build-report-installation-file) - (progn - (insert "> Contents of " - xemacs-build-report-installation-file - ":\n\n") - (if (featurep 'mime-setup) - (progn - (mime-edit-insert-tag - "application" - "octet-stream" - (concat - "\nContent-Disposition: attachment;" - " filename=\"" - (file-name-nondirectory - xemacs-build-report-installation-file) - "\"")) - (mime-edit-insert-binary-file - xemacs-build-report-installation-file - xemacs-build-report-file-encoding)) - (insert-file-contents xemacs-build-report-installation-file))) - (insert "> " xemacs-build-report-installation-file - " does not exist!\n\n"))) + (with-temp-buffer + (if (file-exists-p build-report-installation-file) + (let (file-begin last-configure) + (insert "> Contents of " + build-report-installation-file + ":\n") + (insert + (format + "> (Output from %s of ./configure)\n\n" + (if all "all runs" "most recent run"))) + (if (featurep 'mime-setup) + (progn + (mime-edit-insert-tag + "text" + "plain" + (concat + "\nContent-Disposition: attachment;" + " filename=\"" + (file-name-nondirectory + build-report-installation-file) + "\"")) + (mime-edit-insert-binary-file + build-report-installation-file + build-report-file-encoding) + (setq file-begin (mime-edit-content-beginning))) + (setq file-begin (point)) + (insert-file-contents + build-report-installation-file)) + (unless all + (setq last-configure + (search-backward-regexp + "^\\(uname.*\\|osversion\\):\\s-+" file-begin t)) + (if (and file-begin last-configure) + (delete-region file-begin last-configure)))) + (insert "> " build-report-installation-file + " does not exist!\n\n")) + (buffer-string))) -;;; xemacs-build-report.el ends here +(defun build-report-keep () + "build-report-internal fuction of no general value." + (mapconcat '(lambda (item) item) + (cons "^--\\[\\[\\|\\]\\]$" build-report-keep-regexp) "\\|")) + +(defun build-report-delete () + "build-report-internal fuction of no general value." + (mapconcat '(lambda (item) item) + build-report-delete-regexp "\\|")) + +;;; build-report.el ends here