[PATCH] Byte-compile initialize-xemacs-paths, emacs-version, emacs-version>=

Aidan Kehoe kehoea at parhasard.net
Wed Jul 25 11:35:46 EDT 2007


This makes startup a little crisper for me. The list of interpreted
functions generated with 

(let (res)
  (mapatoms
   #'(lambda (sym) (if (and (fboundp sym)
                            (consp (symbol-function sym))
                            (eq 'lambda (car (symbol-function sym))))
                       (push sym res))))
  res)

which misses uncompiled macros and custom.el getters and setters, among
others.

lisp/ChangeLog addition:

2007-07-25  Aidan Kehoe  <kehoea at parhasard.net>

	* dumped-lisp.el (preloaded-file-list):
	No longer explicitly load version.el; if the constant
	initialisation happens at compile time, not dump time, something
	is seriously wrong, and byte-compiling emacs
	* paths.el (initialize-xemacs-paths): Removed.
	* setup-paths.el:
	* setup-paths.el (initialize-xemacs-paths): New.
	Moved initialize-xemacs-paths to setup-paths.el, in order that it
	be byte-compiled. 
	* update-elc.el (unbytecompiled-lisp-files):
	version.el is to be byte-compiled.
	* version.el:
	Remove information for what(1) that hasn't worked for years. 


XEmacs Trunk source patch:
Diff command:   cvs -q diff -u
Files affected: lisp/version.el
===================================================================
RCS lisp/update-elc.el
===================================================================
RCS lisp/setup-paths.el
===================================================================
RCS lisp/paths.el
===================================================================
RCS lisp/dumped-lisp.el
===================================================================
RCS

Index: lisp/dumped-lisp.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/dumped-lisp.el,v
retrieving revision 1.63
diff -u -r1.63 dumped-lisp.el
--- lisp/dumped-lisp.el	2007/07/22 22:03:31	1.63
+++ lisp/dumped-lisp.el	2007/07/25 15:10:35
@@ -32,8 +32,7 @@
        "subr" 			; load the most basic Lisp functions
        "post-gc"
        "replace" 		; match-string used in version.el.
-
-       "version.el"             ; Ignore compiled-by-mistake version.elc
+       "version"
 
        "cl"
        "cl-extra"
Index: lisp/paths.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/paths.el,v
retrieving revision 1.6
diff -u -r1.6 paths.el
--- lisp/paths.el	2001/04/12 18:21:34	1.6
+++ lisp/paths.el	2007/07/25 15:10:35
@@ -127,137 +127,6 @@
 ;; at dump time.  So we have to do contortions to make sure we don't
 ;; override values set in site-init.el.
 
-(defun initialize-xemacs-paths ()
-  "Initialize the XEmacs path variables from the environment.
-Called automatically at dump time and run time.  Do not call this.
-Will not override settings in site-init.el or site-run.el."
-  (let ((l #'(lambda (var value)
-	       (let ((origsym (intern (concat "paths-el-original-"
-					      (symbol-name var)))))
-		 (if (running-temacs-p)
-		     (progn
-		       (set var value)
-		       (set origsym value))
-		   (and (eq (symbol-value var) (symbol-value origsym))
-			(set var value)))))))
-    (funcall
-     l 'news-inews-program
-     (cond ((file-exists-p "/usr/bin/inews") "/usr/bin/inews")
-	   ((file-exists-p "/usr/local/inews") "/usr/local/inews")
-	   ((file-exists-p "/usr/local/bin/inews") "/usr/local/bin/inews")
-	   ((file-exists-p "/usr/lib/news/inews") "/usr/lib/news/inews")
-	   (t "inews")))
-
-    (funcall
-     l 'mh-progs
-     (cond ((file-directory-p "/usr/bin/mh") "/usr/bin/mh/") ;Ultrix 4.2
-	   ((file-directory-p "/usr/new/mh") "/usr/new/mh/") ;Ultrix <4.2
-	   ((file-directory-p "/usr/local/bin/mh") "/usr/local/bin/mh/")
-	   ((file-directory-p "/usr/local/mh") "/usr/local/mh/")
-	   (t "/usr/local/bin/")))
-
-    (funcall
-     l 'mh-libs
-     (cond ((file-directory-p "/usr/lib/mh") "/usr/lib/mh/") ;Ultrix 4.2
-	   ((file-directory-p "/usr/new/lib/mh")
-	    "/usr/new/lib/mh/") ;Ultrix <4.2
-	   ((file-directory-p "/usr/local/lib/mh") "/usr/local/lib/mh/")
-	   (t "/usr/local/bin/mh/")))
-
-    (funcall
-     l 'rmail-spool-directory
-     (cond ((string-match "^[^-]+-[^-]+-sco3.2v4" system-configuration)
-	    "/usr/spool/mail/")
-	   ;; On The Bull DPX/2 /usr/spool/mail is used although
-	   ;; it is usg-unix-v.
-	   ((string-match "^m68k-bull-sysv3" system-configuration)
-	    "/usr/spool/mail/")
-	   ;; SVR4 and recent BSD are said to use this.
-	   ;; Rather than trying to know precisely which systems use it,
-	   ;; let's assume this dir is never used for anything else.
-	   ((file-exists-p "/var/mail")
-	    "/var/mail/")
-	   ((memq system-type '(dgux hpux usg-unix-v unisoft-unix rtu irix))
-	    "/usr/mail/")
-	   ((memq system-type '(linux))
-	    "/var/spool/mail/")
-	   (t "/usr/spool/mail/")))
-
-    (funcall
-     l 'sendmail-program
-     (cond
-      ((file-exists-p "/usr/lib/sendmail") "/usr/lib/sendmail")
-      ((file-exists-p "/usr/sbin/sendmail") "/usr/sbin/sendmail")
-      ((file-exists-p "/usr/ucblib/sendmail") "/usr/ucblib/sendmail")
-      (t "fakemail")))		;In ../etc, to interface to /bin/mail.
-
-    (funcall
-     l 'remote-shell-program
-     (cond
-      ;; Some systems use rsh for the remote shell; others use that
-      ;; name for the restricted shell and use remsh for the remote
-      ;; shell.  Let's try to guess based on what we actually find
-      ;; out there.  The restricted shell is almost certainly in
-      ;; /bin or /usr/bin, so it's probably safe to assume that an
-      ;; rsh found elsewhere is the remote shell program.  The
-      ;; converse is not true: /usr/bin/rsh could be either one, so
-      ;; check that last.
-      ((file-exists-p "/usr/ucb/remsh") "/usr/ucb/remsh")
-      ((file-exists-p "/usr/bsd/remsh") "/usr/bsd/remsh")
-      ((file-exists-p "/bin/remsh") "/bin/remsh")
-      ((file-exists-p "/usr/bin/remsh") "/usr/bin/remsh")
-      ((file-exists-p "/usr/local/bin/remsh") "/usr/local/bin/remsh")
-      ((file-exists-p "/usr/ucb/rsh") "/usr/ucb/rsh")
-      ((file-exists-p "/usr/bsd/rsh") "/usr/bsd/rsh")
-      ((file-exists-p "/usr/local/bin/rsh") "/usr/local/bin/rsh")
-      ((file-exists-p "/usr/bin/rcmd") "/usr/bin/rcmd")
-      ((file-exists-p "/bin/rcmd") "/bin/rcmd")
-      ((file-exists-p "/bin/rsh") "/bin/rsh")
-      ((file-exists-p "/usr/bin/rsh") "/usr/bin/rsh")
-      (t "rsh")))
-
-    (funcall
-     l 'manual-program
-     ;; Solaris 2 has both of these files; prefer /usr/ucb/man
-     ;; because the other has nonstandard argument conventions.
-     (if (file-exists-p "/usr/ucb/man")
-	 "/usr/ucb/man" "/usr/bin/man"))
-
-    (funcall
-     l 'directory-abbrev-alist
-     ;; Try to match various conventions for automounter temporary
-     ;; mount points.  These temporary mount points may go away, so
-     ;; it's important that we only try to read files under the
-     ;; "advertised" mount point, rather than the temporary one, or it
-     ;; will look like files have been deleted on us.  Whoever came up
-     ;; with this design is clearly a moron of the first order, but
-     ;; now we're stuck with it, no doubt until the end of time.
-     ;;
-     ;; For best results, automounter junk should go near the front of this
-     ;; list, and other user translations should come after it.
-     ;;
-     ;; Our code handles the following empirically observed conventions:
-     ;; /net is an actual directory! (some systems are not broken!)
-     ;; /net/HOST -> /tmp_mnt/net/HOST (`standard' old Sun automounter)
-     ;; /net/HOST -> /tmp_mnt/HOST (BSDI 4.0)
-     ;; /net/HOST -> /a/HOST (Freebsd 2.2.x)
-     ;; /net/HOST -> /amd/HOST (seen in amd sample config files)
-     ;;
-     ;; If your system has a different convention, you may have to change this.
-     ;; Don't forget to send in a patch!
-     (when (file-directory-p "/net")
-       (append
-	(when (file-directory-p "/tmp_mnt")
-	  (if (file-directory-p "/tmp_mnt/net")
-	      '(("\\`/tmp_mnt/net/" . "/net/"))
-	    '(("\\`/tmp_mnt/" . "/net/"))))
-	(when (file-directory-p "/a")
-	  '(("\\`/a/" . "/net/")))
-	(when (file-directory-p "/amd")
-	  '(("\\`/amd/" . "/net/")))
-	)))
-))
-
 (if (running-temacs-p)
     (initialize-xemacs-paths))
 
Index: lisp/setup-paths.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/setup-paths.el,v
retrieving revision 1.23
diff -u -r1.23 setup-paths.el
--- lisp/setup-paths.el	2007/02/05 15:19:18	1.23
+++ lisp/setup-paths.el	2007/07/25 15:10:35
@@ -336,4 +336,136 @@
    (list data-directory)
    (packages-find-package-data-path last-package-hierarchies)))
 
+;; Called from paths.el; in here so it gets byte-compiled. 
+(defun initialize-xemacs-paths ()
+  "Initialize the XEmacs path variables from the environment.
+Called automatically at dump time and run time.  Do not call this.
+Will not override settings in site-init.el or site-run.el."
+  (let ((l #'(lambda (var value)
+	       (let ((origsym (intern (concat "paths-el-original-"
+					      (symbol-name var)))))
+		 (if (running-temacs-p)
+		     (progn
+		       (set var value)
+		       (set origsym value))
+		   (and (eq (symbol-value var) (symbol-value origsym))
+			(set var value)))))))
+    (funcall
+     l 'news-inews-program
+     (cond ((file-exists-p "/usr/bin/inews") "/usr/bin/inews")
+	   ((file-exists-p "/usr/local/inews") "/usr/local/inews")
+	   ((file-exists-p "/usr/local/bin/inews") "/usr/local/bin/inews")
+	   ((file-exists-p "/usr/lib/news/inews") "/usr/lib/news/inews")
+	   (t "inews")))
+
+    (funcall
+     l 'mh-progs
+     (cond ((file-directory-p "/usr/bin/mh") "/usr/bin/mh/") ;Ultrix 4.2
+	   ((file-directory-p "/usr/new/mh") "/usr/new/mh/") ;Ultrix <4.2
+	   ((file-directory-p "/usr/local/bin/mh") "/usr/local/bin/mh/")
+	   ((file-directory-p "/usr/local/mh") "/usr/local/mh/")
+	   (t "/usr/local/bin/")))
+
+    (funcall
+     l 'mh-libs
+     (cond ((file-directory-p "/usr/lib/mh") "/usr/lib/mh/") ;Ultrix 4.2
+	   ((file-directory-p "/usr/new/lib/mh")
+	    "/usr/new/lib/mh/") ;Ultrix <4.2
+	   ((file-directory-p "/usr/local/lib/mh") "/usr/local/lib/mh/")
+	   (t "/usr/local/bin/mh/")))
+
+    (funcall
+     l 'rmail-spool-directory
+     (cond ((string-match "^[^-]+-[^-]+-sco3.2v4" system-configuration)
+	    "/usr/spool/mail/")
+	   ;; On The Bull DPX/2 /usr/spool/mail is used although
+	   ;; it is usg-unix-v.
+	   ((string-match "^m68k-bull-sysv3" system-configuration)
+	    "/usr/spool/mail/")
+	   ;; SVR4 and recent BSD are said to use this.
+	   ;; Rather than trying to know precisely which systems use it,
+	   ;; let's assume this dir is never used for anything else.
+	   ((file-exists-p "/var/mail")
+	    "/var/mail/")
+	   ((memq system-type '(dgux hpux usg-unix-v unisoft-unix rtu irix))
+	    "/usr/mail/")
+	   ((memq system-type '(linux))
+	    "/var/spool/mail/")
+	   (t "/usr/spool/mail/")))
+
+    (funcall
+     l 'sendmail-program
+     (cond
+      ((file-exists-p "/usr/lib/sendmail") "/usr/lib/sendmail")
+      ((file-exists-p "/usr/sbin/sendmail") "/usr/sbin/sendmail")
+      ((file-exists-p "/usr/ucblib/sendmail") "/usr/ucblib/sendmail")
+      (t "fakemail")))		;In ../etc, to interface to /bin/mail.
+
+    (funcall
+     l 'remote-shell-program
+     (cond
+      ;; Some systems use rsh for the remote shell; others use that
+      ;; name for the restricted shell and use remsh for the remote
+      ;; shell.  Let's try to guess based on what we actually find
+      ;; out there.  The restricted shell is almost certainly in
+      ;; /bin or /usr/bin, so it's probably safe to assume that an
+      ;; rsh found elsewhere is the remote shell program.  The
+      ;; converse is not true: /usr/bin/rsh could be either one, so
+      ;; check that last.
+      ((file-exists-p "/usr/ucb/remsh") "/usr/ucb/remsh")
+      ((file-exists-p "/usr/bsd/remsh") "/usr/bsd/remsh")
+      ((file-exists-p "/bin/remsh") "/bin/remsh")
+      ((file-exists-p "/usr/bin/remsh") "/usr/bin/remsh")
+      ((file-exists-p "/usr/local/bin/remsh") "/usr/local/bin/remsh")
+      ((file-exists-p "/usr/ucb/rsh") "/usr/ucb/rsh")
+      ((file-exists-p "/usr/bsd/rsh") "/usr/bsd/rsh")
+      ((file-exists-p "/usr/local/bin/rsh") "/usr/local/bin/rsh")
+      ((file-exists-p "/usr/bin/rcmd") "/usr/bin/rcmd")
+      ((file-exists-p "/bin/rcmd") "/bin/rcmd")
+      ((file-exists-p "/bin/rsh") "/bin/rsh")
+      ((file-exists-p "/usr/bin/rsh") "/usr/bin/rsh")
+      (t "rsh")))
+
+    (funcall
+     l 'manual-program
+     ;; Solaris 2 has both of these files; prefer /usr/ucb/man
+     ;; because the other has nonstandard argument conventions.
+     (if (file-exists-p "/usr/ucb/man")
+	 "/usr/ucb/man" "/usr/bin/man"))
+
+    (funcall
+     l 'directory-abbrev-alist
+     ;; Try to match various conventions for automounter temporary
+     ;; mount points.  These temporary mount points may go away, so
+     ;; it's important that we only try to read files under the
+     ;; "advertised" mount point, rather than the temporary one, or it
+     ;; will look like files have been deleted on us.  Whoever came up
+     ;; with this design is clearly a moron of the first order, but
+     ;; now we're stuck with it, no doubt until the end of time.
+     ;;
+     ;; For best results, automounter junk should go near the front of this
+     ;; list, and other user translations should come after it.
+     ;;
+     ;; Our code handles the following empirically observed conventions:
+     ;; /net is an actual directory! (some systems are not broken!)
+     ;; /net/HOST -> /tmp_mnt/net/HOST (`standard' old Sun automounter)
+     ;; /net/HOST -> /tmp_mnt/HOST (BSDI 4.0)
+     ;; /net/HOST -> /a/HOST (Freebsd 2.2.x)
+     ;; /net/HOST -> /amd/HOST (seen in amd sample config files)
+     ;;
+     ;; If your system has a different convention, you may have to change this.
+     ;; Don't forget to send in a patch!
+     (when (file-directory-p "/net")
+       (append
+	(when (file-directory-p "/tmp_mnt")
+	  (if (file-directory-p "/tmp_mnt/net")
+	      '(("\\`/tmp_mnt/net/" . "/net/"))
+	    '(("\\`/tmp_mnt/" . "/net/"))))
+	(when (file-directory-p "/a")
+	  '(("\\`/a/" . "/net/")))
+	(when (file-directory-p "/amd")
+	  '(("\\`/amd/" . "/net/")))
+	)))
+))
+
 ;;; setup-paths.el ends here
Index: lisp/update-elc.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/update-elc.el,v
retrieving revision 1.36
diff -u -r1.36 update-elc.el
--- lisp/update-elc.el	2006/07/16 12:23:58	1.36
+++ lisp/update-elc.el	2007/07/25 15:10:35
@@ -117,8 +117,7 @@
   '("paths.el"
     "dumped-lisp.el"
     "dumped-pkg-lisp.el"
-    "raw-process.el"
-    "version.el")
+    "raw-process.el")
   "Lisp files that should not be byte compiled.
 Files in `additional-dump-dependencies' do not need to be listed here.")
 
Index: lisp/version.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/version.el,v
retrieving revision 1.50
diff -u -r1.50 version.el
--- lisp/version.el	2002/08/28 05:36:32	1.50
+++ lisp/version.el	2007/07/25 15:10:35
@@ -129,14 +129,6 @@
 ;;; We hope that this alias is easier for people to find.
 (define-function 'version 'emacs-version)
 
-;; Put the emacs version number into the `pure[]' array in a form that
-;; `what(1)' can extract from the executable or a core file.  We don't
-;; actually need this to be pointed to from lisp; pure objects can't
-;; be GCed.
-(concat "\n@" "(#)" (emacs-version)
-	"\n@" "(#)" "Configuration: "
-	system-configuration "\n")
-
 ;;Local variables:
 ;;version-control: never
 ;;End:

-- 
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)



More information about the XEmacs-Patches mailing list