1. xemacs
  2. build

Commits

adrian  committed 208144e Merge

[PATCH] packages: Getting ready for release 2.00 of build package <k7pnzz6l.fsf@smtprelay.t-online.de>

  • Participants
  • Parent commits 234f805, 8de53b4
  • Branches default

Comments (0)

Files changed (3)

File ChangeLog

View file
+2002-05-26  Adrian Aichner  <adrian@xemacs.org>
+
+	* build.el: Update copyright years.
+	* build.el (build-version-number): Update to 2.00.
+	* build.el (build-version-date): Update to 2002-05-26.
+	* build.el (build-cvs-set-var-and-update-buffer): New.
+	* build.el (build-cvs-checkout-options-validate): Use new
+	build-cvs-set-var-and-update-buffer.
+	* build.el (build-cvs-options): Ditto.
+	* build.el (build-cvs-update-options): Ditto.
+	* build.el (build-cvs-checkout-parent-dir): Default to
+	(temp-directory). Use new build-cvs-set-var-and-update-buffer.
+	* build.el (build-cvs-xemacs-module): Change from defcustom to
+	defconst.
+	* build.el (build-cvs-checkout-dir): Change from defcustom to
+	defvar.
+	* build.el (build-cvs-use-pcl-cvs): Use new
+	build-cvs-set-var-and-update-buffer.
+	* build.el (build-cvs-xemacs-release): Ditto.  Add choices for
+	known releases.
+	* build.el (build-cvs-xemacs-repository): Update to repository at
+	SunSITE.dk.
+	* build.el (build-cvs-login): This works now.
+	* build.el (build-cvs-working-dir-naming): New. Use new
+	build-cvs-set-var-and-update-buffer.
+	* build.el (build-cvs-update): Add -A switch for update to latest
+	sources.
+	* build.el (build-from-CVS): Set `build-cvs-checkout-dir' from
+	`build-cvs-working-dir-naming'.  Display build-cvs settings and
+	general explanations in widget interface.
+	* build.el (build-tarball-dest): Use (temp-directory).
+	* build.el (build-tarball-site): Updated from
+	http://www.xemacs.org/Download/ as of 2002-03-07.
+	* build.el (build): Add documentation links to defgroup.  Test
+	availability of cvs and initialize GUI accordingly.  Add more user
+	information to widget interface.
+	* build.el (build-with-GNU): Back button to take build-from-what
+	into account.  Rename "Customize ..." to "Browse ..." in buttons.
+	* build.el (build-with-MS): Ditto.
+	* build.el (build-build-report): Back button to take
+	build-with-what into account.  Rename "Customize ..." to "Browse ..."
+	in buttons.
+	* build.el (build-with-MS): Ditto.
+	* build.el (build-make-alist): Fix typo.
+	* build.el (build-settings): New.  Reserved for future use.
+	* build.texi: Update copyright years.
+	* build.texi (Top): Update release version and date information.
+	* build.texi (Build Installation): Add Windows 2000.
+	* build.texi (Build XEmacs): Add information about Info and HTML
+	documentation.  Document cvs availability check.
+	* build.texi (Build XEmacs From CVS): Document CVS login, which
+	works now.
+	* build.texi (Build XEmacs With GNU Tools): Add some cindex
+	entries.
+	* build.texi (Build XEmacs With Microsoft Tools): Ditto.  Document
+	change of "Customize ..." to "Browse ..." in buttons.
+	* build.texi (Generate XEmacs Build Report): Document change of
+	"Customize ..." to "Browse ..." in buttons.
+
 2002-01-07  Adrian Aichner  <adrian@xemacs.org>
 
 	* Makefile (HTML_FILES): New.
 1999-03-16  Adrian Aichner  <aichner@ecf.teradyne.com>
 
 	* Create package.
-	
-

File build.el

View file
 
 ;;{{{ Legalese
 
-;; Copyright (C) 1997-2001 Adrian Aichner
+;; Copyright (C) 1997-2002 Adrian Aichner
 
 ;; Author: Adrian Aichner <adrian@xemacs.org>
 ;; Date: $Date$
 ;;; Version-handling, based on ideas from w3.
 ;;;
 (defconst build-version-number
-  (let ((x "1.01"))
+  (let ((x "2.00"))
     (if (string-match "Name:[ \t\n]+\\([^\n]+\\) \\$" x)
 	(setq x (match-string 1 x))
       (setq x (substring x 0)))
   "Version # of build.")
 
 (defconst build-version-date
-  (let ((x "2001-04-30"))
+  (let ((x "2002-03-07"))
     (if (string-match "Date:[ \t\n]+\\([^\n]+\\) \\$" x)
 	(match-string 1 x)
       x))
     (customize-set-value sym build-cvs-checkout-options)
     (warn "cannot use -d and -N.  `build-cvs-checkout-dir' will be used as -d argument if set, else `build-cvs-xemacs-module' will be used.  The -N option is unsupported."))
    (t
-    (set-default sym val))))
+    (build-cvs-set-var-and-update-buffer sym val))))
+
+(defun build-cvs-set-var-and-update-buffer (sym val)
+  "Internal function for build."
+  (set-default sym val)
+  (when (fboundp 'build-from-CVS)
+    (save-window-excursion
+      (save-excursion
+        (build-from-CVS)))))
 
 (defcustom build-cvs-checkout-options
   "-P"
   "CVS checkout command-line options to use for all CVS commands."
+  :type 'string
   :set 'build-cvs-checkout-options-validate
-  :type 'string
   :group 'build-cvs)
 
 (defcustom build-cvs-options
   "-z3"
   "CVS command-line options to use for all CVS commands."
   :type 'string
+  :set 'build-cvs-set-var-and-update-buffer
   :group 'build-cvs)
 
 (defcustom build-cvs-update-options
   "-P -d"
   "CVS update command-line options to use for all CVS commands."
   :type 'string
+  :set 'build-cvs-set-var-and-update-buffer
   :group 'build-cvs)
 
 (defcustom build-cvs-checkout-parent-dir
-  "/export/home/tmp/"
+  (temp-directory)
   "The parent directory on the local host into which the
 `build-cvs-xemacs-module' will be checked out, named according to
 `build-cvs-checkout-dir'."
   :type 'directory
+  :set 'build-cvs-set-var-and-update-buffer
   :group 'build-cvs)
 
-(defcustom build-cvs-xemacs-module
+(defconst build-cvs-xemacs-module
   "xemacs"
-  "CVS XEmacs module name to be checked out."
-  :type 'string
-  :group 'build-cvs)
+  "CVS XEmacs module name to be checked out.")
 
-(defcustom build-cvs-checkout-dir
-  build-cvs-xemacs-module
-  "The directory on the local host into which the
-`build-cvs-xemacs-module' will be checked out. Be aware that cvs
-checkout options -d and -N will affect the resulting directory
-structure.  Therefor these options are disallowed in
-`build-cvs-checkout-options'.  Please set `build-cvs-checkout-dir' if
-you want to name the working direcory different from the default
-`build-cvs-xemacs-module'.  The -N option is not supported, in order
-to avoid unknown directory structures."
-  :type 'string
-  :group 'build-cvs)
+(defvar build-cvs-checkout-dir
+  build-cvs-xemacs-release
+  "Internal variable updated from user variable
+  `build-cvs-working-dir-naming'.")
 
 (defcustom build-cvs-use-pcl-cvs
   nil
   "*Whether build is to use PCL-CVS, when available.
 Alternatively, build will run CVS commands via `compile'."
   :type 'boolean
+  :set 'build-cvs-set-var-and-update-buffer
   :group 'build-cvs)
 
 (defcustom build-cvs-xemacs-release
-  "release-21-2"
-  "CVS XEmacs release to be checked out, if not checking out the
-latest sources on the trunk."
-  :type 'string
+  "HEAD"
+  "CVS XEmacs release to be checked out.  Use \"Specify Tag Name\" to fill in
+the name of a release tag not yet in the list of choices."
+  :type '(choice
+          :custom-state t
+          (const "ben-mule-21-5")
+          (const "ben-mule-21-5-bp")
+          (const "ben-mule-21-5-chkp-post-ikeyama-merge-success")
+          (const "ben-mule-21-5-last-sync")
+          (const "ben-mule-21-5-next-sync")
+          (const "ben-mule-21-5-post-oct-26-2001-sync")
+          (const "candidate-21-4")
+          (const "gtk-xemacs")
+          (const "gtk-xemacs-21-2")
+          (const "mule-21-5")
+          (const "r21-1-12")
+          (const "r21-1-14")
+          (const "r21-4-0")
+          (const "r21-4-1")
+          (const "r21-4-3")
+          (const "r21-4-5")
+          (const "r21-4-5-windows")
+          (const "r21-4-6")
+          (const "r21-4-6-windows")
+          (const "r21-4-6rc1")
+          (const "r21-5-0")
+          (const "r21-5-1")
+          (const "r21-5-2")
+          (const "r21-5-3")
+          (const "r21-5-4")
+          (const "r21-5-5")
+          (const "r21-5-latest-beta")
+          (const "release-21-1")
+          (const "release-21-2")
+          (const "release-21-4")
+          (const "release-21-4-bp")
+          (const "release-21-5")
+          (const "windows-21-4")
+          (string :tag "Unlisted Release Name" ""))
+  :set 'build-cvs-set-var-and-update-buffer
   :group 'build-cvs)
 
 (defcustom build-cvs-xemacs-repository
-  ":pserver:xemacs@cvs.xemacs.org:/usr/CVSroot"
+  ":pserver:xemacs@cvs.xemacs.org:/pack/xemacscvs"
   "CVS Repository where XEmacs can be checked out from."
   :type 'string
+  :set 'build-cvs-set-var-and-update-buffer
   :group 'build-cvs)
 
-;;; BROKEN
+(defcustom build-cvs-working-dir-naming
+  '(format "%s-%s"
+           build-cvs-xemacs-module
+           build-cvs-xemacs-release)
+  "The naming of the directory on the local host into which the
+`build-cvs-xemacs-module' will be checked out. Be aware that cvs
+checkout options -d and -N will affect the resulting directory
+structure.  Therefor these options are disallowed in
+`build-cvs-checkout-options'.  The -N option is not supported, in order
+to avoid unknown directory structures."
+  :type '(choice
+          (const :tag "Named after CVS MODULE" build-cvs-xemacs-module)
+          (const :tag "Named after RELEASE Tag" build-cvs-xemacs-release)
+          (const :tag "Named after MODULE-RELEASE" (format "%s-%s"
+                         build-cvs-xemacs-module
+                         build-cvs-xemacs-release))
+          (string :tag "Working Dir Named manually" ""))
+  :set 'build-cvs-set-var-and-update-buffer
+  :group 'build-cvs)
+
 (defun build-cvs-login ()
   "Login to XEmacs CVS repository."
   (interactive)
   (unless (file-exists-p build-cvs-checkout-parent-dir)
     (make-directory build-cvs-checkout-parent-dir t))
   (cd build-cvs-checkout-parent-dir)
-  (let ((cmd
-         (format "cvs %s -d%s login" build-cvs-options
-                 build-cvs-xemacs-repository))
-        (compilation-mode-hook
-         'build-compilation-mode-hook)
-        (compilation-buffer-name-function
-         '(lambda (mode)
-            (generate-new-buffer-name
-             (concat build-cvs-checkout-dir "-cvs-login.err")))))
-    (add-hook 'comint-mode-hook
-              (function
-               (lambda ()
-                 (ring-insert-at-beginning comint-input-ring cmd))))
-    (shell)))
+  (let (exit-status
+        (command
+         (list
+          "cvs" build-cvs-options "-d" build-cvs-xemacs-repository "login"))
+        (file (make-temp-name (expand-file-name "cvs-login" (getenv "TEMP")))))
+    (with-temp-file file (insert "cvs\n"))
+    (with-temp-buffer
+      (message "build: cvs login at cvs.xemacs.org, please wait")
+      (setq exit-status
+            (apply 'call-process
+                   (append (list (car command) file t t) (cdr command))))
+      (cond
+       ((/= exit-status 0)
+        (warn "\n%s\nfailed with following output:\n%s\n"
+              (mapconcat 'identity command " ")
+              (buffer-string)))
+       (t (message "build: cvs login succeeded"))))
+    (delete-file file)))
 
 (defun build-cvs-checkout (&optional release-tag)
   "Fetch XEmacs from the repository."
                  (if (and release-tag
                           (not (string-equal release-tag "")))
                      (concat " -r " release-tag)
-                   "")
+                   " -A")
                  ))
         (compilation-mode-hook
          'build-compilation-mode-hook)
      ((and
        build-cvs-use-pcl-cvs
        (featurep 'pcl-cvs))
-      (cvs-update    
+      (cvs-update
        (expand-file-name build-cvs-checkout-dir
                          build-cvs-checkout-parent-dir)
        (split-string build-cvs-update-options "\\s-+")))
     (unless (file-exists-p build-cvs-checkout-parent-dir)
       (make-directory build-cvs-checkout-parent-dir t))
     (cd build-cvs-checkout-parent-dir)
+    ;; #### FIXME build-cvs-checkout-dir is not driven by custom
+    ;; events as it should be!
+    (setq build-cvs-checkout-dir
+          (eval build-cvs-working-dir-naming))
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (switch-to-buffer "*Build XEmacs*"))
                    :notify (lambda (&rest ignore)
                              (customize-browse 'build-cvs))
                    "Browse Build CVS Options ...")
-    (widget-insert "\n\n\t")
-    (widget-apply
-     (widget-create 'push-button
-                    :notify (lambda (&rest ignore)
-                              (build-cvs-login))
-                    "CVS Login XEmacs")
-     ;; build-cvs-login is not working!
-     :deactivate)
-    (widget-insert "\n	CVS Login XEmacs does not work.  Please do this from your favorite
-	shell (once):
-    \"cvs -d:pserver:xemacs@cvs.xemacs.org:/usr/CVSroot	login\"\n")
-    (widget-insert "\n\t")
+    (widget-insert "\n")
+    (widget-insert
+     (format "\t%+20s: %s\n" "Use Pcl Cvs"
+             (if build-cvs-use-pcl-cvs "Yes" "No")))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "XEmacs CVS Repository"
+             build-cvs-xemacs-repository))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "CVS Options"
+             build-cvs-options))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "Checkout Options"
+             build-cvs-checkout-options))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "Update Options"
+             build-cvs-update-options))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "XEmacs Module"
+             build-cvs-xemacs-module))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "XEmacs Release"
+             build-cvs-xemacs-release))
+    (widget-insert
+     (format "\t%+20s: %S\n" "Working Dir Naming"
+             build-cvs-working-dir-naming))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "Checkout Parent Dir"
+             build-cvs-checkout-parent-dir))
+    (widget-insert
+     (format "\t%+20s: \"%s\"\n" "Working Dir"
+             build-cvs-checkout-dir))
+    (widget-insert "\n")
+    (widget-create 'push-button
+                   :notify (lambda (&rest ignore)
+                             (build-cvs-login))
+                   "CVS Login XEmacs")
+    (widget-insert "\n\n")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (build-cvs-checkout
                               build-cvs-xemacs-release))
                    "CVS Checkout XEmacs")
-    (widget-insert "\n\n\t")
+    (widget-insert "\n\n")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (build-cvs-update
                               build-cvs-xemacs-release))
-                   "CVS Update XEmacs To Release")
-    (widget-insert "\n\t")
-    (widget-insert "Update to CVS tag "
-                   build-cvs-xemacs-release
-                   "\n")
-    (widget-insert "\n\t")
+                   (format
+                    "CVS Update XEmacs To CVS Tag \"%s\""
+                    build-cvs-xemacs-release))
+    (widget-insert "\nor\n")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (build-cvs-update))
-                   "CVS Update XEmacs To Latest")
-    (widget-insert "\n	Update to latest on the trunk.  Currently (2000-09-25) this is the
-	21.1 release.
-
-	")
+                   "CVS Update To Latest XEmacs on Trunk")
+    (widget-insert "\nMake sure to \"Browse Build CVS Options ...\" first.\nChoose XEmacs release to be checked out.\nAlternatively you can simply get the latest sources on the trunk (not\non any branch).  This is always the latest XEmacs version under\ndevelopment.  As of 2002-03-14 the trunk is headed for XEmacs 21.5.\n\n")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (cond
   :group 'build)
 
 (defcustom build-tarball-dest
-  "/export/home/tmp/CVSroot/"
+  (temp-directory)
   "The destination directory on the local host the `build-tarball-set'
 will be deposited in."
   :type 'directory
   "/ftp@ftp.xemacs.org:/pub/xemacs/"
   "The EFS path to a top-level XEmacs directory to fetch the XEmacs
   `build-tarball-set' from.  This list was last updated from
-  XEmacs-21.4.2/etc/FTP."
+   http://www.xemacs.org/Download/ on 2002-03-07."
+  :link '(url-link :tag "XEmacs Download Locations"
+                   "http://www.xemacs.org/Download/")
   :type '(choice
           :custom-state t
-          (const "/ftp@ftp.at.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.at.xemacs.org:/editors/xemacs/")
           (const "/ftp@ftp.au.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.be.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.be.xemacs.org:/xemacs/")
           (const "/ftp@ftp.br.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.ca.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.ch.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.ca.xemacs.org:/pub/Mirror/xemacs/")
+          (const "/ftp@ftp.ch.xemacs.org:/mirror/xemacs/")
           (const "/ftp@ftp.crc.ca:/pub/packages/editors/xemacs/")
-          (const "/ftp@ftp.de.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.dk.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.dti.ad.jp:/pub/unix/editor/xemacs/")
-          (const "/ftp@ftp.fi.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.cz.xemacs.org:/MIRRORS/ftp.xemacs.org/pub/xemacs/")
+          (const "/ftp@ftp.de.xemacs.org:/pub/ftp.xemacs.org/tux/xemacs/")
+          (const "/ftp@ftp.dk.xemacs.org:/pub/emacs/xemacs/")
+          (const "/ftp@ftp.fi.xemacs.org:/pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/")
           (const "/ftp@ftp.fr.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.hu.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.ie.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.it.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.jaist.ac.jp:/pub/GNU/xemacs/")
-          (const "/ftp@ftp.jp.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.kr.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.hu.xemacs.org:/pub/packages/xemacs/")
+          (const "/ftp@ftp.ie.xemacs.org:/mirrors/ftp.xemacs.org/pub/xemacs/")
+          (const "/ftp@ftp.it.xemacs.org:/unix/packages/XEMACS/")
+          (const "/ftp@ftp.jp.xemacs.org:/pub/GNU/xemacs/")
+          (const "/ftp@ftp.kr.xemacs.org:/pub/tools/emacs/xemacs/")
           (const "/ftp@ftp.no.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.nz.xemacs.org:/mirror/ftp.xemacs.org/")
           (const "/ftp@ftp.pasteur.fr:/pub/computing/xemacs/")
-          (const "/ftp@ftp.pl.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.pl.xemacs.org:/pub/unix/editors/xemacs/")
           (const "/ftp@ftp.ru.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.sa.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.se.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.sk.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.sa.xemacs.org:/pub/mirrors/ftp.xemacs.org/pub/xemacs/")
+          (const "/ftp@ftp.se.xemacs.org:/pub/gnu/xemacs/")
+          (const "/ftp@ftp.sk.xemacs.org:/pub/mirrors/xemacs/")
+          (const "/ftp@ftp.stealth.net:/pub/mirrors/ftp.xemacs.org/pub/xemacs/")
           (const "/ftp@ftp.tu-darmstadt.de:/pub/editors/xemacs/")
-          (const "/ftp@ftp.tw.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.twoguys.org:/pub/xemacs/")
-          (const "/ftp@ftp.uk.xemacs.org:/pub/xemacs/")
+          (const "/ftp@ftp.tw.xemacs.org:/Editors/xemacs/")
+          (const "/ftp@ftp.uk.xemacs.org:/sites/ftp.xemacs.org/pub/xemacs/")
           (const "/ftp@ftp.us.xemacs.org:/pub/xemacs/")
           (const "/ftp@ftp.xemacs.org:/pub/xemacs/")
-          (const "/ftp@ftp.za.xemacs.org:/pub/xemacs/")
-          (const "/ftp@metalab.unc.edu:/pub/packages/editors/xemacs/")
+          (const "/ftp@ftp.za.xemacs.org:/xemacs/")
+          (const "/ftp@ibiblio.org:/pub/packages/editors/xemacs/")
           (const "/ftp@mirror.aarnet.edu.au:/pub/xemacs/")
-          (const "/ftp@mirror.nucba.ac.jp:/mirror/xemacs/")
-          (const "/ftp@ring.aist.go.jp:/pub/text/xemacs/")
-          (const "/ftp@ring.asahi-net.or.jp:/pub/text/xemacs/")
           (const "/ftp@sunsite.doc.ic.ac.uk:/packages/xemacs/")
-          (const "/ftp@sunsite.sut.ac.jp:/pub/archives/packages/xemacs/")
           (directory :tag "EFS Path" "/user@host.domain:/directory/"))
   :group 'build-tarball)
 
 (defgroup build nil
   "Simplifies Building XEmacs; i.e. Fetching, Configuring, Making, and
 Reporting."
+  :link '(url-link :tag "XEmacs Build Reference Manual"
+                   "http://www.xemacs.org/Documentation/packages/html/build.html")
   :link '(url-link :tag "XEmacs Beta README"
                    "ftp://ftp@ftp.xemacs.org/pub/xemacs/beta/README")
-  :link '(url-link :tag "XEmacs README"
-                   "ftp://ftp@ftp.xemacs.org/pub/xemacs/README")
+  :link '(url-link :tag "XEmacs Gamma README"
+                   "ftp://ftp@ftp.xemacs.org/pub/xemacs/gamma/README")
+  :link '(url-link :tag "XEmacs Stable README"
+                   "ftp://ftp@ftp.xemacs.org/pub/xemacs/stable/README")
   :group 'emacs)
 
 ;;;###autoload
 *Build*."
   (interactive)
   (let
-      (
+      (exit-status
+       (command
+        (list
+         "cvs" "-v"))
+       output
 ;        build-from-cvs-button-widget
 ;        build-from-tarballs-button-widget
        (name "*Build XEmacs*"))
     (kill-buffer (get-buffer-create name))
     (switch-to-buffer (get-buffer-create name))
     (kill-all-local-variables)
-    (widget-insert "\n")
-    (widget-create 'push-button
-                   :notify (lambda (&rest ignore)
-                             (Info-query "build"))
-                   "Visit Build Info")
-    (widget-insert "\nVisit online information documenting the build package.
-
-")
+    ;; Determine availability of CVS client.
+    (with-temp-buffer
+      (message "build: checking whether you have cvs, please wait")
+      (setq exit-status
+            (apply 'call-process
+                   (append (list (car command) nil t t) (cdr command))))
+      (setq output (buffer-string))
+      (cond
+       ((/= exit-status 0)
+        (warn "\n%s\nfailed with following output:\n%s\n"
+              (mapconcat 'identity command " ")
+              output)
+        (setq build-from-what "Tarballs")
+        (widget-insert "\n\nPlease install cvs, unless you want to build from our tary balls.\n"))
+       (t
+        (setq build-from-what "CVS")
+        (message "build: cvs is available"))))
+    ;; Create widget-based interface.
+    (widget-insert
+     "Visit info documentation for the XEmacs build package inside ")
+    (widget-create
+     'info-link
+     :tag "XEmacs"
+     :value "(build)")
+    (widget-insert "\nor on the XEmacs website at\n")
+    (widget-create
+     'url-link
+     :value
+     "http://www.xemacs.org/Documentation/packages/html/build.html")
+    (widget-insert "\n\n")
+    (setq build-settings-widget
+          (widget-create 'choice
+                         :tag "Build settings"
+                         :value build-settings
+                         :notify (lambda (widget &rest ignore)
+                                   (setq build-settings (widget-value widget)))
+                         '(item :value "21.4")
+                         '(item :value "21.5")
+                         '(string)))
+    (widget-insert "\n\n")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (customize-browse 'build))
                    "Browse Build Options ...")
-    (widget-insert "\nBrowse and customize any options of the build process according to
-your current choices for the sources to build from and the tools to
-build with.
-
-")
-    (widget-create 'choice
-                   :tag "Build from"
-                   :value build-from-what
-                   :notify (lambda (widget &rest ignore)
-                             (setq build-from-what (widget-value widget))
-                             (cond
-                              ((string-equal build-from-what "CVS")
-                               (widget-apply 
-                                build-from-cvs-button-widget
-                                :activate)
-                               (widget-apply 
-                                build-from-tarballs-button-widget
-                                :deactivate))
-                              ((string-equal build-from-what "Tarballs")
-                               (widget-apply 
-                                build-from-cvs-button-widget
-                                :deactivate)
-                               (widget-apply 
-                                build-from-tarballs-button-widget
-                                :activate))))
-                   '(item :value "CVS")
-                   '(item :value "Tarballs"))
+    (widget-insert "\nBrowse and customize any options of the build process according to\nyour current choices for the sources to build from and the tools to\nbuild with.\n")
+    (setq build-from-what-choice-widget
+          (widget-create 'choice
+                         :tag "Build from"
+                         :value build-from-what
+                         :notify (lambda (widget &rest ignore)
+                                   (setq build-from-what (widget-value widget))
+                                   (cond
+                                    ((string-equal build-from-what "CVS")
+                                     (widget-apply
+                                      build-from-cvs-button-widget
+                                      :activate)
+                                     (widget-apply
+                                      build-from-tarballs-button-widget
+                                      :deactivate))
+                                    ((string-equal build-from-what "Tarballs")
+                                     (widget-apply
+                                      build-from-cvs-button-widget
+                                      :deactivate)
+                                     (widget-apply
+                                      build-from-tarballs-button-widget
+                                      :activate))))
+                         '(item :value "CVS")
+                         '(item :value "Tarballs")))
     (widget-insert
-     "To build a beta/release version of XEmacs please decide first whether
-to build from tarballs in .tar.gz format or from CVS sources.")
+     "Please decide now whether to build XEmacs from tarballs in .tar.gz\nformat or from CVS sources.  Using CVS is highly recommended.")
     (widget-insert "\n\n")
-    (widget-create 'choice
-                   :tag "Build with"
-                   :value build-with-what
-                   :notify (lambda (widget &rest ignore)
-                             (setq build-with-what (widget-value widget)))
-                   '(item :value "GNU Tools")
-                   '(item :value "Microsoft Tools")
-                   )
+    (setq build-with-what-choice-widget
+          (widget-create 'choice
+                         :tag "Build with"
+                         :value build-with-what
+                         :notify (lambda (widget &rest ignore)
+                                   (setq build-with-what (widget-value widget)))
+                         '(item :value "GNU Tools")
+                         '(item :value "Microsoft Tools")
+                         ))
     (widget-insert
-     "Furthermore, please specify whether you will build with GNU tools
-using configure and make or Microsoft Tools using nt\xemacs.mak and
-VC++ 4.0 or higher.
-
-")
+     "Furthermore, please specify whether you will build with GNU tools\nusing configure and make or Microsoft Tools using nt\\xemacs.mak and\nVC++ 4.0 or higher.")
     (widget-insert "\n\n")
     (setq
      build-from-cvs-button-widget
                     :notify (lambda (&rest ignore)
                               (build-from-CVS))
                     "Build XEmacs From CVS Now"))
-    (widget-insert "\n\n")
+    (widget-insert "\n")
+    ;; Recommend installation of CVS or provide cvs version
+    ;; information.
+    (cond
+     ((/= exit-status 0)
+      (warn "\n%s\nfailed with following output:\n%s\n"
+            (mapconcat 'identity command " ")
+            output)
+      (widget-insert
+       "\n\nPlease install cvs, unless you want to build from our tary balls.\n"))
+     (t
+      (widget-insert (format "cvs -v returns this:\n%s\n" output))))
+    ;; Building XEmacs from tarballs.
     (setq
      build-from-tarballs-button-widget
      (widget-create 'push-button
     ;; Initialize these buttons according to `build-from-what'.
     (cond
      ((string-equal build-from-what "CVS")
-      (widget-apply 
+      (widget-apply
        build-from-cvs-button-widget
        :activate)
-      (widget-apply 
+      (widget-apply
        build-from-tarballs-button-widget
        :deactivate))
      ((string-equal build-from-what "Tarballs")
-      (widget-apply 
+      (widget-apply
        build-from-cvs-button-widget
        :deactivate)
-      (widget-apply 
+      (widget-apply
        build-from-tarballs-button-widget
        :activate)))
     (widget-insert
     (cd dir)
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
-                             (switch-to-buffer "*Build XEmacs*"))
+                             (switch-to-buffer
+                              (cond
+                               ((string-equal build-from-what "Tarballs")
+                                "*Build XEmacs From Tarballs With Microsoft Tools*")
+                               ((string-equal build-from-what "CVS")
+                                "*Build XEmacs From CVS With Microsoft Tools*"))))
                    "Back")
     (widget-insert "\n\n")
     (widget-create 'push-button
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (customize-browse 'build-configure))
-                   "Customize Build Configure ...")
+                   "Browse Build Configure ...")
     (widget-insert "\n\t")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
 ;    (widget-create 'push-button
 ;		   :notify (lambda (&rest ignore)
 ;			     (customize-browse 'build-make))
-;		   "Customize Build-Make")
+;		   "Browse Build-Make")
     (widget-insert "\n\t")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
     (cd (expand-file-name "" dir))
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
-                             (switch-to-buffer "*Build XEmacs*"))
+                             (switch-to-buffer
+                              (cond
+                               ((string-equal build-from-what "Tarballs")
+                                "*Build XEmacs From Tarballs With Microsoft Tools*")
+                               ((string-equal build-from-what "CVS")
+                                "*Build XEmacs From CVS With Microsoft Tools*"))))
                    "Back")
     (widget-insert "\n")
     (widget-insert
                     "Activate Generated Build Make")
      (if (boundp 'build-make-options)
          :deactivate
-       :activate)
-     )
+       :activate))
     (when (boundp 'build-make-options)
       (widget-insert
        "\n\tYou will need to restart XEmacs to activate
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (customize-browse 'build-make))
-                   "Customize Build Make ...")
+                   "Browse Build Make ...")
     ;; Overwrite any customized setting for this build session so
     ;; that build-report will find the right information.
     (customize-set-variable
     (switch-to-buffer (get-buffer-create name))
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
-                             (switch-to-buffer "*Build XEmacs*"))
+                             (switch-to-buffer
+                              (cond
+                               ((string-equal build-with-what "GNU Tools")
+                                "*Build XEmacs With GNU Tools*")
+                               ((string-equal build-with-what "Microsoft Tools")
+                                "*Build XEmacs With Microsoft Tools*"))))
                    "Back")
     (widget-insert "\n\n")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
                              (customize-browse 'build-report))
-                   "Customize Build Report ...")
-    (widget-insert "\nYou may need to customize Build Report options in order to find all
+                   "Browse Build Report ...")
+    (widget-insert "\n\nYou may need to customize Build Report options in order to find all
 information created by your last building of XEamcs.\n\n")
     (widget-create 'push-button
                    :notify (lambda (&rest ignore)
 
 (defvar build-make-alist
   nil
-  "Internal variable keeping track of makefile macros and tragets")
+  "Internal variable keeping track of makefile macros and targets")
 
 (defconst build-make-target-doc-paragraph
   "^##\\s-*make\\s-+\\([^
   (princ "  :set 'build-make-set-value)\n")
   (princ "\n"))
 
+(defvar build-settings ""
+  "Internal variable storing alist of named settings for building multiple XEmacs configurations.")
+
 ;;}}}
 
 ;; build.el ends here

File build.texi

View file
 @setchapternewpage odd
 @ifinfo
 This document describes the XEmacs package called build.
-Copyright @copyright{} 2000-2001 Adrian Aichner.
+Copyright @copyright{} 2000-2002 Adrian Aichner.
 @end ifinfo
 
 @c @c Combine indices.
 @c @c The following two commands start the copyright page.
 @c @page
 @c @vskip 0pt plus 1filll
-@c Copyright @copyright{} 2000 Adrian Aichner.
+@c Copyright @copyright{} 2000-2002 Adrian Aichner.
 @title XEmacs Build Reference Manual
-@subtitle Version 1.03 (for XEmacs 21.1, 21.2), dated 2001-04-30
+@subtitle Version 2.00 (for XEmacs 21.1, 21.4, 21.5), dated 2002-03-07
 
 @author by Adrian Aichner
 @page
 @comment node-name, next,          previous, up
 @chapter Build Package
 
-This is the XEmacs Build Reference Manual, Version 1.01 (for XEmacs
-21.1, 21.2), released 2001-04-30, by @email{adrian@@xemacs.org, Adrian
-Aichner}.
+This is the XEmacs Build Reference Manual, Version 2.00 (for XEmacs
+21.1, 21.4, 21.5), dated 2002-03-07, by @email{adrian@@xemacs.org,
+Adrian Aichner}.
 
 @menu
 * Build Overview::                    Overview of build package
 
 @code{bash}, @code{csh}, @code{ksh}, @code{zsh} come to mind on
 @code{UNIX} systems; @code{Cygwin's} @code{bash}, @code{cmd.exe}, and
-@code{command.exe} for @code{Windows 95/98/NT}.
+@code{command.exe} for @code{Windows 95/98/NT/2000}.
 
 @example
 @kbd{cd @var{installation-directory}/xemacs-packages;
 @chapter Build XEmacs
 
 You may want to read through the build package info documentation first.
-It is accessed by following button.
+It is accessible via links to Info- and HTML-documentation from the
+initial *Build XEmacs* buffer, which has this:
 
 @example
-[View Build Info]
+Visit info documentation for the XEmacs build package in [XEmacs]
+or on the XEmacs website at
+[http://www.xemacs.org/Documentation/packages/html/build.html]
 @end example
 
 Global build options can be browsed next.
 [Build XEmacs From Tarballs Now]
 @end example
 
+As of build version 2.00 a check is performed whether CVS is available.
+
+The user interface to *Build XEmacs from CVS* will only be available if
+this test (cvs -v) passes.
+
+The cvs client version installed on your system will be displayed below
+following button.
+
+@example
+[Build XEmacs From CVS Now]
+@end example
+
 Finally either press the button labeled @ref{Build XEmacs From CVS}
 or @ref{Build XEmacs From Tarballs}.  Only the button labeled according
 to your choice under the @emph{build from:} menu will be active.
 appropriately set to save the buffers with @kbd{C-x C-w} (@kbd{M-x
 write-file}) under the XEmacs source directory.
 
+First you have to login to the XEmacs CVS server.
+
+Please do so by pressing following button.
+
+@example
+[CVS Login XEmacs]
+@end example
+
+If that fails, please send the message generated in the *Warnings*
+buffer to @email{cvs-admin@@xemacs.org, XEmacs CVS Administrator}.
+
 After pressing the 
 
 @example
 @node Build XEmacs With GNU Tools, Build XEmacs With Microsoft Tools, Build XEmacs From Tarballs, Top
 @comment node-name,    next,  previous,      up
 @chapter Build XEmacs With GNU Tools
-@cindex Building on UNIX
+@cindex Build on UNIX
+@cindex Build with Cygnus (now Cygwin)
+@cindex Build with Cygwin
 @cindex configure
 @cindex configure.usage
 @cindex make
 @node Build XEmacs With Microsoft Tools, Generate XEmacs Build Report, Build XEmacs With GNU Tools, Top
 @comment node-name,    next,  previous,      up
 @chapter Build XEmacs With Microsoft Tools
-@cindex Building on Windows 95/98/NT
-@cindex Building with MS Visual Studio C++
+@cindex Build on Windows 95/98/NT/2000
+@cindex Build with MS Visual Studio C++
 @cindex nmake
 @cindex cl
 @cindex config.inc
 
 XEmacs versions > 21.2-b32
 support @file{nt/config.inc} which is generated according to user
-choices made under 
+choices made under
 
 @example
-[Customize Build Make ...]
+[Browse Build Make ...]
 @end example
 
 by
 This is a GUI making use of the @code{build-report} feature provided
 with XEmacs.
 
-You have to first
+When used standalone, you have to first
 
 @example
-[Customize Build Report ...]
+[Browse Build Report ...]
 @end example
 
 to pick up the information for the XEmacs build you would like to
 generate the report for.
 
-Currently @code{build-report.el} is bundled with @code{build} to support
-XEmacs 21.1, which doesn't have the latest version.
+@c #### If you use @code{build-report} as part of the @code{build} package, you should not save any customized @code{build-report} variables, so that @code{build} can ???
 
 @node Known Problems of Build, Concept Index, Generate XEmacs Build Report, Top
 @chapter Known Problems of Build