diff lisp/startup.el @ 1330:4542b72c005e

[xemacs-hg @ 2003-03-01 07:25:26 by ben] build patch Makefile.in.in: Move src deletions to src/Makefile.in.in. dump-paths.el, dumped-lisp.el: Delete. Combine stuff into setup-paths.el. find-paths.el: Removed. Make this file contain generic routines only. Move stuff to compute Emacs roots to setup-paths.el. startup.el: Removed. Move these variables into setup-paths.el. setup-paths.el, startup.el: Removed. Combine all high-level code for computing the paths into setup-paths.el. Create new function startup-find-load-path to encapsulate all logic for computing `load-path'. Eliminate invocation-directory and invocation-name parameters since there is no point (false generality) -- the code references other globals, which cannot be specified. Eliminate some code duplicated between setup-paths.el and startup.el. Clean up the debug-paths code and output load-path in addition. Add logic to paths-emacs-root-p to support separated source and build trees. loadup.el, make-docfile.el, update-elc-2.el, update-elc.el: Rewrite to allow for separated source and build trees, as may occur in MS Windows. NOTE TO BUILD HACKERS: loadup.el, make-docfile.el, update-elc.el and update-elc-2.el made two assumptions that are no longer correct: (1) The source and build trees are in the same place. (2) They can make assumptions about where `.' is. These files now compute the locations of the source and build roots at the top of the file. *ALL* constant file names or path snippets must now be made absolute using expand-file-name and one of these roots. dumped-lisp.el, packages.el: Removed. Remove some unused lists of Lisp files. packages-hardcoded-lisp (empty, in any case) moved to dumped-lisp.el. startup.el: When a compiled init file is out-of-date wrt the uncompiled version, load the uncompiled version and issue a nasty warning. update-elc-2.el: Force touching of auto-autoloads files when REBUILD_AUTOLOADS was set. update-elc.el: Fix code that checks whether dumping is necessary to check against xemacs.dmp, not xemacs.exe, when Unix and pdump. lwlib-Xm.c: Fix compile warning. README, config.inc.samp, xemacs.mak: -- Major reorganization and cleanup. -- Add support for separated build tree and source tree. -- Delete all support for X Windows building, since it's totally bit-rotten and will never be fixed up. Instruct people to use Cygwin if they want such support. make-build-dir: New script to create a skeleton build tree for use with separated build and source tree compilation. m/acorn.h, m/alliant-2800.h, m/alliant.h, m/altos.h, m/amdahl.h, m/arm.h, m/att3b.h, m/aviion.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h, m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/ews4800r.h, m/gould.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h, m/intel386.h, m/iris4d.h, m/iris5d.h, m/iris6d.h, m/irist.h, m/m68k.h, m/masscomp.h, m/mg1.h, m/mips-nec.h, m/mips-siemens.h, m/mips.h, m/nh3000.h, m/nh4000.h, m/ns32000.h, m/plexus.h, m/powerpc.h, m/sequent-ptx.h, m/sequent.h, m/sgi-challenge.h, m/stride.h, m/tad68k.h, m/targon31.h, m/tekxd88.h, m/template.h, m/tower32.h, m/tower32v3.h, m/ustation.h, m/wicat.h, m/xps100.h, data.c, doc.c, editfns.c, emacs.c, lrecord.h, ntheap.c, process-unix.c, sysdep.c, unexec.c: Delete all support for bit-rotten CANNOT_DUMP. Just use pdump. Makefile.in.in: Lots o' cleanup. Use names like LISP, SRC instead of lispdir, srcdir, for consistency with xemacs.mak and the conventions in the rest of the file. Eliminate use of ${...} in favor of $(...), to make it easier to move code between this file and xemacs.mak. Fix dependency handling wrt NEEDTODUMP to eliminate problems some people (e.g. Vin) have been seeing with non-GNU makes. Write a long section about the subtle but oh-so-important differences in dependency processing between nmake, make, and GNU make. Add unicode-encapsulate target, from xemacs.mak. chartab.c, lrecord.h: Fix crash due to attempt to free objects across dump/undump.
author ben
date Sat, 01 Mar 2003 07:25:56 +0000
parents c08a6fa181d1
children 6355bae896e3
line wrap: on
line diff
--- a/lisp/startup.el	Fri Feb 28 22:52:30 2003 +0000
+++ b/lisp/startup.el	Sat Mar 01 07:25:56 2003 +0000
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1985-1986, 1990, 1992-1997 Free Software Foundation, Inc.
 ;; Copyright (c) 1993, 1994 Sun Microsystems, Inc.
 ;; Copyright (C) 1995 Board of Trustees, University of Illinois
-;; Copyright (C) 2001, 2002 Ben Wing.
+;; Copyright (C) 2001, 2002, 2003 Ben Wing.
 
 ;; Maintainer: XEmacs Development Team
 ;; Keywords: internal, dumped
@@ -130,42 +130,6 @@
 (defconst initial-major-mode 'lisp-interaction-mode
   "Major mode command symbol to use for the initial *scratch* buffer.")
 
-(defvar emacs-roots nil
-  "List of plausible roots of the XEmacs hierarchy.")
-
-(defvar emacs-data-roots nil
-  "List of plausible data roots of the XEmacs hierarchy.")
-
-(defvar user-init-directory-base ".xemacs"
-  "Base of directory where user-installed init files may go.")
-
-(defvar user-init-directory
-  (file-name-as-directory
-   (paths-construct-path (list "~" user-init-directory-base)))
-  "Directory where user-installed init files may go.")
-
-(defvar user-init-file-base "init.el"
-  "Default name of the user init file if uncompiled.
-This should be used for migration purposes only.")
-
-(defvar user-init-file-base-list '("init.elc" "init.el")
-  "List of allowed init files in the user's init directory.
-The first one found takes precedence.")
-
-(defvar user-home-init-file-base-list
-  (append '(".emacs.elc" ".emacs.el" ".emacs")
-	  (and (eq system-type 'windows-nt)
-	       '("_emacs.elc" "_emacs.el" "_emacs")))
-  "List of allowed init files in the user's home directory.
-The first one found takes precedence.")
-
-(defvar load-home-init-file nil
-  "Non-nil if XEmacs should load the init file from the home directory.
-Otherwise, XEmacs will offer migration to the init directory.")
-
-(defvar load-user-init-file-p t
-  "Non-nil if XEmacs should load the user's init file.")
-
 ;; #### called `site-run-file' in FSFmacs
 
 (defvar site-start-file "site-start"
@@ -514,33 +478,11 @@
     (initialize-xemacs-paths)
 
     (startup-set-invocation-environment)
-
-    (let ((debug-paths (or debug-paths
-			   (and (getenv "EMACSDEBUGPATHS")
-				t))))
-
-      (setq emacs-roots (paths-find-emacs-roots invocation-directory
-						invocation-name
-						#'paths-emacs-root-p))
-      (setq emacs-data-roots (paths-find-emacs-roots invocation-directory
-						     invocation-name
-						     #'paths-emacs-data-root-p))
-
-      (if debug-paths
-	  (princ (format "emacs-roots:\n%S\n" emacs-roots)
-		 'external-debugging-output))
-
-      (if (null emacs-roots)
-	  (startup-find-roots-warning))
-      (startup-setup-paths emacs-roots emacs-data-roots
-			   user-init-directory
-			   (cond (inhibit-all-packages t)
-				 (inhibit-early-packages '(early))
-				 (t nil))
-			   inhibit-site-lisp
-			   debug-paths
-			   nil)
-      (startup-setup-paths-warning))
+    (startup-setup-paths (cond (inhibit-all-packages t)
+			       (inhibit-early-packages '(early))
+			       (t nil))
+			 nil)
+    (startup-setup-paths-warning)
 
     ;; Either we need to inhibit messages from do_autoloads, or this
     ;; should go into (command-line) after the initialization of the
@@ -798,24 +740,42 @@
 	    (setq term (substring term 0 hyphend))
 	  (setq term nil))))))
 
+(defun find-init-file-1 (dir base-list)
+  (catch 'found
+    (dolist (file base-list)
+      (let ((expanded (expand-file-name file dir)))
+	  (if (string-match "el$" expanded)
+	      (let* ((elc (concat expanded "c"))
+		     (el-ok (file-readable-p expanded))
+		     (elc-ok (file-readable-p elc)))
+		(cond
+		 ((and el-ok elc-ok (file-newer-than-file-p expanded elc))
+		  (lwarn 'initialization 'warning
+		    "\
+The compiled initialization file `%s' exists
+but is out-of-date with respect to the uncompiled initialization
+file `%s'.  XEmacs will load the uncompiled
+version.  You should correct the problem as soon as possible by
+loading the uncompiled version and compiling it using
+`M-x byte-compile-file' (or `Lisp->Byte-Compile This File' on
+the menubar)."
+		    elc expanded)
+		  (throw 'found expanded))
+		 (elc-ok (throw 'found elc))
+		 (el-ok (throw 'found expanded))))
+	    (when (file-readable-p 
+		   (when (file-readable-p expanded)
+		     (throw 'found expanded)))))))))
+
 (defun find-user-init-directory-init-file (&optional init-directory)
   "Determine the user's init file if in the init directory."
-  (let ((init-directory (or init-directory user-init-directory)))
-    (catch 'found
-      (dolist (file user-init-file-base-list)
-	(let ((expanded (expand-file-name file init-directory)))
-	  (when (file-readable-p expanded)
-	    (throw 'found expanded)))))))
+  (find-init-file-1 (or init-directory user-init-directory)
+		    user-init-file-base-list))
 
 (defun find-user-home-directory-init-file (&optional home-directory)
   "Determine the user's init file if in the home directory."
-  (let ((home-directory (or home-directory "~")))
-    (catch 'found
-      (dolist (file user-home-init-file-base-list)
-	(let ((expanded (expand-file-name file home-directory)))
-	  (when (file-readable-p expanded)
-	    (throw 'found expanded))))
-      nil)))
+  (find-init-file-1 (or home-directory "~")
+		    user-home-init-file-base-list))
 
 (defun find-user-init-file (&optional init-directory home-directory)
   "Determine the user's init file."
@@ -1388,18 +1348,6 @@
 	;; don't let /tmp_mnt/... get into the load-path or exec-path.
 	(abbreviate-file-name invocation-directory)))
 
-(defun startup-find-roots-warning ()
-  (save-excursion
-    (set-buffer (get-buffer-create " *warning-tmp*"))
-    (erase-buffer)
-    (buffer-disable-undo (current-buffer))
-
-    (insert "Couldn't find an obvious default for the root of the\n"
-	    "XEmacs hierarchy.")
-
-    (princ "\nWARNING:\n" 'external-debugging-output)
-    (princ (buffer-string) 'external-debugging-output)))
-
 (defun startup-setup-paths-warning ()
   (let ((warnings '()))
     (cond