The package build infrastructure is fundamentally broken in an
important way. Fortunately it looks like it's easy to fix.
The fundamental breakage is that in the current definition of
BOOT_XEMACS, the PRELOADS come from the _installed_ hierarchy, not
from the source hierarchy, the way most Makefiles are written. This
is because in pre-21.5.6, there is no way to turn off the detection of
packages for load-path, even if you don't load any auto-autoloads.
This breaks "make World" in a number of places. It also means that
mutually dependent packages are not necessarily getting the proper
dependencies. To fix, we just need to move the PRELOADS to _after_
the REQUIRES. See patch below.
Now package-compile.el is loaded before anything else, it truncates
the load-path to what is specified, and points to the source tree for
packages. This that we should now be able to get rid of the `./'
prefixes and the `-eval "(setq load-path ...)"' currently uglifying
the Makefiles. AFAICT this "just works," except for some individual
package breakage that gets exposed, see below.
The current code in package-compile.el only works because
command-line-early (in startup.el) removes the first "--". I don't
know if that's the right thing for it to do.
I'll submit real patches tomorrow, after doing rm -rf
{xemacs,mule}-packages, and then make World again to make sure that
the build at least works.
Index: XEmacs.rules
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/XEmacs.rules,v
retrieving revision 1.35
diff -u -r1.35 XEmacs.rules
--- XEmacs.rules 2002/04/02 02:19:52 1.35
+++ XEmacs.rules 2002/05/01 17:07:18
@@ -108,7 +108,7 @@
endif
# Behaves like an XEmacs with the required packages setup
-BOOT_XEMACS= $(XEMACS) -no-autoloads -batch $(PRELOADS) -l $(PACKAGE_COMPILE) --
$(REQUIRES) --
+BOOT_XEMACS= $(XEMACS) -no-autoloads -batch -l $(PACKAGE_COMPILE) -- $(REQUIRES) --
$(PRELOADS)
%.elc: %.el
$(BOOT_XEMACS) -f batch-byte-compile $<
**** I'm not sure why I can define a prefix to replace an existing
**** binding in an interactive session, but you can't do it in a batch
**** xemacs. This fixes mule-base.
Index: mule-packages/mule-base/canna.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/mule-packages/mule-base/canna.el,v
retrieving revision 1.6
diff -u -r1.6 canna.el
--- mule-packages/mule-base/canna.el 1999/07/23 06:55:10 1.6
+++ mule-packages/mule-base/canna.el 2002/05/01 17:07:19
@@ -293,16 +293,20 @@
(let ((ch 0))
(while (<= ch 127)
- (define-key canna-mode-map (make-string 1 ch) 'canna-functional-insert-command)
+ (unless (= ch 27)
+ (define-key canna-mode-map (make-string 1 ch)
'canna-functional-insert-command))
(setq ch (1+ ch))))
(cond ((featurep 'xemacs)
+; (define-key canna-mode-map [escape] nil)
(define-key canna-mode-map [up] "\C-p")
(define-key canna-mode-map [(shift up)] "\C-p")
(define-key canna-mode-map [(control up)] "\C-p")
+ (define-key canna-mode-map [escape O A] "\C-p")
(define-key canna-mode-map [down] "\C-n")
(define-key canna-mode-map [(shift down)] "\C-n")
- (define-key canna-mode-map [(control down)] "\C-n")
+ (define-key canna-mode-map [(control down)] "\C-n")
+ (define-key canna-mode-map [escape O B] "\C-n")
(define-key canna-mode-map [right] "\C-f")
(define-key canna-mode-map [(shift right)] "\C-f")
(define-key canna-mode-map [(control right)] "\C-f")
@@ -334,16 +338,20 @@
(let ((ch 0))
(while (<= ch 127)
- (define-key canna-minibuffer-mode-map (make-string 1 ch)
'canna-minibuffer-insert-command)
+ (unless (= ch 27)
+ (define-key canna-minibuffer-mode-map (make-string 1 ch)
'canna-minibuffer-insert-command))
(setq ch (1+ ch))))
(cond ((featurep 'xemacs)
+; (define-key canna-mode-map [escape] nil)
(define-key canna-minibuffer-mode-map [up] "\C-p")
(define-key canna-minibuffer-mode-map [(shift up)] "\C-p")
(define-key canna-minibuffer-mode-map [(control up)] "\C-p")
+ (define-key canna-minibuffer-mode-map [escape O A] "\C-p")
(define-key canna-minibuffer-mode-map [down] "\C-n")
(define-key canna-minibuffer-mode-map [(shift down)] "\C-n")
(define-key canna-minibuffer-mode-map [(control down)] "\C-n")
+ (define-key canna-minibuffer-mode-map [escape O B] "\C-n")
(define-key canna-minibuffer-mode-map [right] "\C-f")
(define-key canna-minibuffer-mode-map [(shift right)] "\C-f")
(define-key canna-minibuffer-mode-map [(control right)] "\C-f")
**** haskell-mode is missing a REQUIRE.
Index: xemacs-packages/haskell-mode/Makefile
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/haskell-mode/Makefile,v
retrieving revision 1.6
diff -u -r1.6 Makefile
--- xemacs-packages/haskell-mode/Makefile 2002/04/29 23:14:37 1.6
+++ xemacs-packages/haskell-mode/Makefile 2002/05/01 17:08:09
@@ -22,7 +22,7 @@
MAINTAINER = Ville Skyttä <ville.skytta(a)xemacs.org>
PACKAGE = haskell-mode
PKG_TYPE = regular
-REQUIRES = dired mail-lib xemacs-base
+REQUIRES = dired mail-lib xemacs-base edit-utils
CATEGORY = standard
ELCS = haskell-decl-scan.elc haskell-doc.elc haskell-font-lock.elc \
**** JDE needs the list evaluated in PRELOADS. (Actually, I suspect
**** this can go away now. I'll try tomorrow.)
Index: xemacs-packages/jde/Makefile
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/jde/Makefile,v
retrieving revision 1.51
diff -u -r1.51 Makefile
--- xemacs-packages/jde/Makefile 2002/03/28 01:39:18 1.51
+++ xemacs-packages/jde/Makefile 2002/05/01 17:08:09
@@ -117,7 +117,7 @@
PRELOADS = -eval "(setq load-path \
(nconc load-path \
- '((expand-file-name
\"../fsf-compat/\"))))"
+ (list (expand-file-name
\"../fsf-compat/\"))))"
include ../../XEmacs.rules
**** liece is broken. This makes it build, but I don't know if it is
**** the right way to do it. Missing a PRELOAD, and we need to test
**** for non-null for certain search paths.
Index: xemacs-packages/liece/lisp/Makefile.lisp
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/liece/lisp/Makefile.lisp,v
retrieving revision 1.2
diff -u -r1.2 Makefile.lisp
--- xemacs-packages/liece/lisp/Makefile.lisp 2002/03/25 03:04:15 1.2
+++ xemacs-packages/liece/lisp/Makefile.lisp 2002/05/01 17:08:10
@@ -35,7 +35,7 @@
package:
$(XEMACS) $(FLAGS) -l ./liece-make.el -f autoload-liece \
$(PREFIX) $(LISPDIR)
- $(XEMACS) $(FLAGS) -l ./liece-make.el -f compile-liece-package \
+ $(XEMACS) $(FLAGS) -l ./liece-make.el -l advice -f compile-liece-package \
$(PACKAGEDIR)
install-package: package
Index: xemacs-packages/liece/lisp/liece-config.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/liece/lisp/liece-config.el,v
retrieving revision 1.1
diff -u -r1.1 liece-config.el
--- xemacs-packages/liece/lisp/liece-config.el 2002/03/23 05:51:22 1.1
+++ xemacs-packages/liece/lisp/liece-config.el 2002/05/01 17:08:10
@@ -85,7 +85,7 @@
(if last-package-load-path
last-packages)))
dir)
- (while (not (file-exists-p (setq dir (car dirs))))
+ (while (and dirs (not (file-exists-p (setq dir (car dirs)))))
(setq dirs (cdr dirs)) )
dir )))
Index: xemacs-packages/liece/lisp/liece-make.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/liece/lisp/liece-make.el,v
retrieving revision 1.1
diff -u -r1.1 liece-make.el
--- xemacs-packages/liece/lisp/liece-make.el 2002/03/23 05:51:30 1.1
+++ xemacs-packages/liece/lisp/liece-make.el 2002/05/01 17:08:10
@@ -145,8 +146,8 @@
(if last-package-load-path
last-packages)))
dir)
- (while (not (file-exists-p
- (setq dir (car dirs))))
+ (while (and dirs (not (file-exists-p
+ (setq dir (car dirs)))))
(setq dirs (cdr dirs)))
(defvar PACKAGEDIR dir)
(princ (format "PACKAGEDIR=%s\n" PACKAGEDIR)))))
--
Institute of Policy and Planning Sciences
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
My nostalgia for Icon makes me forget about any of the bad things. I don't
have much nostalgia for Perl, so its faults I remember. Scott Gilbert c.l.py