X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fupdate-elc.el;h=9dcc274f211a5620306f41c94b5b94749c9527de;hb=301dfc8345e6e814742ab291ead380b72d03f5be;hp=45b5e1dc8367af79c3ac893519ff5d0045bf4b98;hpb=2e3e3f9ee27fec50f45c282d71eaddf7c673bc56;p=chise%2Fxemacs-chise.git diff --git a/lisp/update-elc.el b/lisp/update-elc.el index 45b5e1d..9dcc274 100644 --- a/lisp/update-elc.el +++ b/lisp/update-elc.el @@ -1,8 +1,9 @@ ;;; update-elc.el --- Bytecompile out-of-date dumped files ;; Copyright (C) 1997 Free Software Foundation, Inc. -;; Copyright (C) 1996 Unknown +;; Copyright (C) 1996 Sun Microsystems, Inc. +;; Author: Ben Wing , Steven L Baur ;; Maintainer: XEmacs Development Team ;; Keywords: internal @@ -39,8 +40,7 @@ ;; (the idea here is that you can bootstrap if your .ELC files ;; are missing or badly out-of-date) -;; Currently this code gets the list of files to check passed to it from -;; src/Makefile. This must be fixed. -slb +;; See also update-elc-2.el ;;; Code: @@ -62,7 +62,8 @@ ; ;; -batch gets filtered out. ; (nthcdr 3 command-line-args)))) -(setq load-path (split-path (getenv "EMACSBOOTSTRAPLOADPATH"))) +(let ((build-root (expand-file-name ".." invocation-directory))) + (setq load-path (list (expand-file-name "lisp" build-root)))) (load "very-early-lisp" nil t) @@ -71,7 +72,7 @@ (load "setup-paths.el") (load "dump-paths.el") -(let ((autol (packages-list-autoloads))) +(let ((autol (packages-list-autoloads (concat default-directory "../lisp")))) ;; (print (prin1-to-string autol)) (while autol (let ((src (car autol))) @@ -83,8 +84,16 @@ ;; (print (prin1-to-string update-elc-files-to-compile)) -(let (preloaded-file-list site-load-packages) - (load (concat default-directory "../lisp/dumped-lisp.el")) +(let (preloaded-file-list site-load-packages need-to-dump dumped-exe) + (load (expand-file-name "../lisp/dumped-lisp.el")) + + (when (featurep 'utf-2000) + (load (expand-file-name "../lisp/utf-2000/dumped-chars.el"))) + + (setq dumped-exe + (cond ((file-exists-p "../src/xemacs.exe") "../src/xemacs.exe") + ((file-exists-p "../src/xemacs") "../src/xemacs") + (t nil))) ;; Path setup (let ((package-preloaded-file-list @@ -93,17 +102,40 @@ (setq preloaded-file-list (append package-preloaded-file-list preloaded-file-list + '("bytecomp") packages-hardcoded-lisp))) (load (concat default-directory "../site-packages") t t) (setq preloaded-file-list (append packages-hardcoded-lisp preloaded-file-list + (if (featurep 'utf-2000) + system-char-db-source-file-list) packages-useful-lisp site-load-packages)) (while preloaded-file-list (let ((arg (car preloaded-file-list))) ;; (print (prin1-to-string arg)) + + ;; now check if .el or .elc is newer than the dumped exe. + ;; if so, need to redump. + (let ((frob + (if (string-match "\\.elc?\\'" arg) + (substring arg 0 (match-beginning 0)) + arg))) + (when (and dumped-exe + (or (and (file-exists-p + (concat "../lisp/" frob ".el")) + (file-newer-than-file-p + (concat "../lisp/" frob ".el") + dumped-exe)) + (and (file-exists-p + (concat "../lisp/" frob ".elc")) + (file-newer-than-file-p + (concat "../lisp/" frob ".elc") + dumped-exe)))) + (setq need-to-dump t))) + (if (null (member (file-name-nondirectory arg) packages-unbytecompiled-lisp)) (progn @@ -123,10 +155,17 @@ (file-newer-than-file-p (concat arg ".el") (concat arg ".elc"))) (setq processed (cons (concat arg ".el") processed))))) - (setq preloaded-file-list (cdr preloaded-file-list))))) + (setq preloaded-file-list (cdr preloaded-file-list)))) + + (if need-to-dump + (condition-case nil + (write-region-internal "foo" nil "../src/NEEDTODUMP") + (file-error nil))) + + ) (setq update-elc-files-to-compile (append update-elc-files-to-compile - processed)) + (nreverse processed))) ;; (print (prin1-to-string update-elc-files-to-compile)) @@ -139,7 +178,7 @@ update-elc-files-to-compile)) (load "loadup-el.el")) (condition-case nil - (delete-file "./NOBYTECOMPILE") + (delete-file "../src/NOBYTECOMPILE") (file-error nil))) (kill-emacs)