[R pkgs] Monkey-patch make-autoload for current XEmacsen
16 years, 10 months
Stephen J. Turnbull
RECOMMEND packages
This patch monkey-patches some versions of XEmacs so that they can
handle recently added defun-like constructs in auto-autoloads
generation. It is needed to address building the recent packages tree
by existing 21.4 versions of XEmacs as well as 21.5 versions <=
21.5.28.
It does not attempt to address the bad sequencing of ede and eieio in
semantic's REQUIRES Make variable that has been causing consternation
the last few days.
If 21.4 is updated as Mike proposes, then this facility is only needed
for legacy XEmacsen. It is only invoked for packages which set the
PACKAGE_FUTURE variable in their Makefiles.
This facility was tested with XEmacs 21.4.20 on JDE, which built
successfully.
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v
retrieving revision 1.727
diff -u -U0 -r1.727 ChangeLog
--- ChangeLog 2008/02/27 22:51:32 1.727
+++ ChangeLog 2008/02/27 22:58:46
@@ -0,0 +3,7 @@
+2008-02-27 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * package-future.el: New file.
+
+ * XEmacs.rules: Document PACKAGE_FUTURE.
+ (auto-autoloads.el): Use it.
+
Index: package-future.el
===================================================================
RCS file: package-future.el
diff -N package-future.el
--- /dev/null Wed Feb 27 23:56:42 2008
+++ package-future.el Wed Feb 27 23:58:48 2008
@@ -0,0 +1,124 @@
+;;; package-future.el --- update XEmacs to deal with modern packages
+
+;; Copyright (C) 2007 Free Software Foundation, Inc.
+
+;; Author: Stephen J. Turnbull <stephen(a)xemacs.org>
+;; Maintainer: XEmacs Development Team
+;; Keywords: packages
+
+;; This file is part of the XEmacs package distribution.
+
+;; The XEmacs packages are free software; you can redistribute it and/or
+;; modify them under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or (at
+;; your option) any later version.
+
+;; The XEmacs packages are distributed in the hope that they will be
+;; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+;; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with the XEmacs packages; see the file COPYING. If not, write
+;; to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This file contains monkey-patches required to provide functionality
+;; missing in older XEmacsen but needed to build some recent packages.
+
+;; To use it, add
+;;
+;; PACKAGE_FUTURE = -l ../..package-future.el
+;;
+;; to a package's XEmacs Makefile.
+
+;; To add features to this file, ... well, be a wizard, then do wizardly
+;; things. Remember that a True Wizard avoids disturbing the Equilibrium
+;; needlessly. Carefully protect the pristine XEmacs from unneeded
+;; monkey-patches! Try to use exact tests.
+
+;;; Code:
+
+(unless (emacs-version>= 21 5 29)
+ ;; We monkeypatch the make-autoload function so it can handle recent
+ ;; packages like JDE that require extension of the class of functions
+ ;; that must generate autoloads.
+ (terpri)
+ (princ "***** WARNING: monkey-patching `make-autoload'. *****")
+ (terpri)
+ (require 'autoload)
+ (unless (boundp 'autoload-make-autoload-operators)
+ (defvar autoload-make-autoload-operators
+ '(defun define-skeleton defmacro define-derived-mode define-generic-mode
+ easy-mmode-define-minor-mode easy-mmode-define-global-mode
+ define-minor-mode defun* defmacro*)
+ "defun-like operators that use `autoload' to load the library."))
+ (fmakunbound 'make-autoload)
+ (defun make-autoload (form file)
+ "Turn FORM into an autoload or defvar for source file FILE.
+Returns nil if FORM is not a special autoload form (i.e. a function definition
+or macro definition or a defcustom)."
+ (let ((car (car-safe form)) expand)
+ (cond
+ ;; For complex cases, try again on the macro-expansion.
+ ((and (memq car '(easy-mmode-define-global-mode
+ easy-mmode-define-minor-mode define-minor-mode))
+ (setq expand (let ((load-file-name file)) (macroexpand form)))
+ (eq (car expand) 'progn)
+ (memq :autoload-end expand))
+ (let ((end (memq :autoload-end expand)))
+ ;; Cut-off anything after the :autoload-end marker.
+ (setcdr end nil)
+ (cons 'progn
+ (mapcar (lambda (form) (make-autoload form file))
+ (cdr expand)))))
+
+ ;; For special function-like operators, use the `autoload' function.
+ ((memq car autoload-make-autoload-operators)
+ (let* ((macrop (memq car '(defmacro defmacro*)))
+ (name (nth 1 form))
+ (body (nthcdr (get car 'doc-string-elt) form))
+ (doc (if (stringp (car body)) (pop body))))
+ ;; `define-generic-mode' quotes the name, so take care of that
+ (list 'autoload (if (listp name) name (list 'quote name)) file doc
+ (or (and (memq car '(define-skeleton define-derived-mode
+ define-generic-mode
+ easy-mmode-define-global-mode
+ easy-mmode-define-minor-mode
+ define-minor-mode)) t)
+ (eq (car-safe (car body)) 'interactive))
+ (if macrop (list 'quote 'macro) nil))))
+
+ ;; Convert defcustom to a simpler (and less space-consuming) defvar,
+ ;; but add some extra stuff if it uses :require.
+ ((eq car 'defcustom)
+ (let ((varname (car-safe (cdr-safe form)))
+ (init (car-safe (cdr-safe (cdr-safe form))))
+ (doc (car-safe (cdr-safe (cdr-safe (cdr-safe form)))))
+ (rest (cdr-safe (cdr-safe (cdr-safe (cdr-safe form))))))
+ (if (not (plist-get rest :require))
+ `(defvar ,varname ,init ,doc)
+ `(progn
+ (defvar ,varname ,init ,doc)
+ (custom-add-to-group ,(plist-get rest :group)
+ ',varname 'custom-variable)
+ (custom-add-load ',varname
+ ,(plist-get rest :require))))))
+ ;; Coding systems. #### Would be nice to handle the docstring here too.
+ ((memq car '(make-coding-system make-8-bit-coding-system))
+ `(autoload-coding-system ,(nth 1 form) '(load ,file)))
+ ;; nil here indicates that this is not a special autoload form.
+ (t nil)))))
+
+;;; end monkey-patches for pre-21.5.29
+
+;;; monkey-patches to provide autoloads for EIEIO object definitions
+
+(add-to-list 'autoload-make-autoload-operators 'defclass)
+(add-to-list 'autoload-make-autoload-operators 'defmethod)
+
+;;; end monkey-patches for EIEIO
+
+;;; package-future.el ends here
Index: XEmacs.rules
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/XEmacs.rules,v
retrieving revision 1.60
diff -u -r1.60 XEmacs.rules
--- XEmacs.rules 2008/02/27 22:51:31 1.60
+++ XEmacs.rules 2008/02/27 22:58:48
@@ -66,6 +66,9 @@
# PRELOADS = additional command-line arguments needed when compiling .elcs
# AUTOLOAD_PATH = subdirectory in source tree where .elcs are located (this
# is where auto-autoloads.el, etc. will be placed)
+# PACKAGE_FUTURE = -l ../../package-future.el (this file monkey-patches the
+# running xemacs with features required by certain packages that are not
+# available in older XEmacsen).
#
# Doc files (see below):
# ----------------------
@@ -489,7 +492,7 @@
$(XEMACS_BATCH_CLEAN) $(LOAD_AUTOLOADS) \
-eval "$(AUTOLOAD_PACKAGE_NAME)" \
-eval "$(AUTOLOAD_FILE)" \
- -l autoload -f batch-update-autoloads $^
+ -l autoload $(PACKAGE_FUTURE) -f batch-update-autoloads $^
@touch $(AUTOLOAD_PATH)/auto-autoloads.el
@rm -f $(AUTOLOAD_PATH)/auto-autoloads.el~
endif
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC pkgs] Minor doc patch to XEmacs.rules
16 years, 10 months
Stephen J. Turnbull
APPROVE COMMIT packages
This just documents some things not to include in
EARLY_GENERATED_LISP because they're already there.
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v
retrieving revision 1.726
diff -u -U0 -r1.726 ChangeLog
--- ChangeLog 2008/02/27 20:06:55 1.726
+++ ChangeLog 2008/02/27 22:33:15
@@ -0,0 +1,5 @@
+2008-02-27 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * XEmacs.rules (EARLY_GENERATED_LISP):
+ Document automatically included files.
+
Index: XEmacs.rules
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/XEmacs.rules,v
retrieving revision 1.59
diff -u -r1.59 XEmacs.rules
--- XEmacs.rules 2007/05/24 20:22:29 1.59
+++ XEmacs.rules 2008/02/27 22:33:16
@@ -59,7 +59,8 @@
# $(PACKAGE) in the name
# EARLY_GENERATED_LISP = additional .el files that will be generated before
# any byte-compilation (use this for autoloads-type files); rules must be
-# given to build them
+# given to build them. XEmacs.rules will automatically add auto-autoloads,
+# custom-load, and custom-defines to this list, so don't include them.
# GENERATED_LISP = additional .el files that will be generated at
# byte-compilation time; rules must be given to build them
# PRELOADS = additional command-line arguments needed when compiling .elcs
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC21.5] New icons from Dan Polansky
16 years, 10 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
These are a couple of simple icons (a boxed "X" in the style of the
splashscreen logo) that can be used on the desktop. They come as
16x16 and 32x32 PNGs, and a single MS Windows icon file in both
scales.
Note: the diff is informational as the image files are not included.
diff -r c78488d5f024 -r dee5e5a6ef33 etc/ChangeLog
--- a/etc/ChangeLog Thu Feb 21 00:37:41 2008 -0800
+++ b/etc/ChangeLog Thu Feb 21 00:48:35 2008 -0800
@@ -0,0 +1,23 @@ 2008-02-20 Stephen J. Turnbull <stephe
+2008-02-21 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * README: Add descriptions of Daniel Polansky's icons.
+
+2008-02-21 Daniel Polansky <danielpolansky(a)gmail.com>
+
+ Two images for one icon for XEmacs, one 16x16 and 32x32.
+ Also, a Microsoft Windows icon file is attached.
+ Itemized:
+ - 16x16 icon in PNG
+ - 32x32 icon in PNG
+ - Both bundled as a Microsoft Windows icon.
+
+ The images are modeled on XEmacs violet logotype, as found at
+ http://www.xemacs.org/. The images are copyright (c) 2005 by
+ Daniel Polansky, and licensed under GNU General Public Licence V2
+ or later at your option.
+
+ * xemacs-X-16.png:
+ * xemacs-X-32.png:
+ * xemacs-X.ico:
+ New files.
+
2008-02-20 Stephen J. Turnbull <stephen(a)xemacs.org>
* README: Give more accurate descriptions of image files.
diff -r c78488d5f024 -r dee5e5a6ef33 etc/README
--- a/etc/README Thu Feb 21 00:37:41 2008 -0800
+++ b/etc/README Thu Feb 21 00:48:35 2008 -0800
@@ -46,6 +46,9 @@ toolbar/ Image files for the toolbar
toolbar/ Image files for the toolbar
trash.xpm B&W garbage can icon (32x46)
unicode/ Unicode conversion tables
+xemacs-X-16.png Violet boxed X icon (16x16)
+xemacs-X-32.png Violet boxed X icon (32x32)
+xemacs-X.ico Violet boxed X icon in MS Windows format
xemacs-beta.xpm XEmacs Beta logo for splashscreen (388x145)
xemacs-enhanced.png "XEmacs-enhanced" logo (90x32)
xemacs-fe.sh XEmacs frontend driver
diff -r c78488d5f024 -r dee5e5a6ef33 etc/xemacs-X-16.png
Binary file etc/xemacs-X-16.png has changed
diff -r c78488d5f024 -r dee5e5a6ef33 etc/xemacs-X-32.png
Binary file etc/xemacs-X-32.png has changed
diff -r c78488d5f024 -r dee5e5a6ef33 etc/xemacs-X.ico
Binary file etc/xemacs-X.ico has changed
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
commit: Add Dan Polansky's icons. <87ejayxrsm.fsf@uwakimon.sk.tsukuba.ac.jp>
16 years, 10 months
Stephen Turnbull
changeset: 4429:a883e09e54f739862cc561ab2e6918e7378daaae
tag: tip
user: Stephen J. Turnbull <stephen(a)xemacs.org>
date: Wed Feb 27 08:54:25 2008 -0800
files: etc/ChangeLog etc/README etc/xemacs-X-16.png etc/xemacs-X-32.png etc/xemacs-X.ico
description:
Add Dan Polansky's icons. <87ejayxrsm.fsf(a)uwakimon.sk.tsukuba.ac.jp>
diff -r a2954f0b750711e1eb87bfcffd8881947e1656a6 -r a883e09e54f739862cc561ab2e6918e7378daaae etc/ChangeLog
--- a/etc/ChangeLog Wed Feb 27 08:38:52 2008 -0800
+++ b/etc/ChangeLog Wed Feb 27 08:54:25 2008 -0800
@@ -1,3 +1,26 @@ 2008-02-20 Stephen J. Turnbull <stephe
+2008-02-21 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * README: Add descriptions of Daniel Polansky's icons.
+
+2008-02-21 Daniel Polansky <danielpolansky(a)gmail.com>
+
+ Two images for one icon for XEmacs, one 16x16 and 32x32.
+ Also, a Microsoft Windows icon file is attached.
+ Itemized:
+ - 16x16 icon in PNG
+ - 32x32 icon in PNG
+ - Both bundled as a Microsoft Windows icon.
+
+ The images are modeled on XEmacs violet logotype, as found at
+ http://www.xemacs.org/. The images are copyright (c) 2005 by
+ Daniel Polansky, and licensed under GNU General Public Licence V2
+ or later at your option.
+
+ * xemacs-X-16.png:
+ * xemacs-X-32.png:
+ * xemacs-X.ico:
+ New files.
+
2008-02-20 Stephen J. Turnbull <stephen(a)xemacs.org>
* README: Give more accurate descriptions of image files.
diff -r a2954f0b750711e1eb87bfcffd8881947e1656a6 -r a883e09e54f739862cc561ab2e6918e7378daaae etc/README
--- a/etc/README Wed Feb 27 08:38:52 2008 -0800
+++ b/etc/README Wed Feb 27 08:54:25 2008 -0800
@@ -46,6 +46,9 @@ toolbar/ Image files for the toolbar
toolbar/ Image files for the toolbar
trash.xpm B&W garbage can icon (32x46)
unicode/ Unicode conversion tables
+xemacs-X-16.png Violet boxed X icon (16x16)
+xemacs-X-32.png Violet boxed X icon (32x32)
+xemacs-X.ico Violet boxed X icon in MS Windows format
xemacs-beta.xpm XEmacs Beta logo for splashscreen (388x145)
xemacs-enhanced.png "XEmacs-enhanced" logo (90x32)
xemacs-fe.sh XEmacs frontend driver
diff -r a2954f0b750711e1eb87bfcffd8881947e1656a6 -r a883e09e54f739862cc561ab2e6918e7378daaae etc/xemacs-X-16.png
Binary file etc/xemacs-X-16.png has changed
diff -r a2954f0b750711e1eb87bfcffd8881947e1656a6 -r a883e09e54f739862cc561ab2e6918e7378daaae etc/xemacs-X-32.png
Binary file etc/xemacs-X-32.png has changed
diff -r a2954f0b750711e1eb87bfcffd8881947e1656a6 -r a883e09e54f739862cc561ab2e6918e7378daaae etc/xemacs-X.ico
Binary file etc/xemacs-X.ico has changed
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC21.5] Improve etc/README
16 years, 10 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
Improve the descriptions of various images in etc/.
diff -r 42711a251efd -r c78488d5f024 etc/ChangeLog
--- a/etc/ChangeLog Fri Feb 15 13:11:56 2008 +0100
+++ b/etc/ChangeLog Thu Feb 21 00:37:41 2008 -0800
@@ -0,0 +1,4 @@ 2007-12-26 Stephen J. Turnbull <stephe
+2008-02-20 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * README: Give more accurate descriptions of image files.
+
diff -r 42711a251efd -r c78488d5f024 etc/README
--- a/etc/README Fri Feb 15 13:11:56 2008 +0100
+++ b/etc/README Thu Feb 21 00:37:41 2008 -0800
@@ -17,7 +17,7 @@ TUTORIAL.* Tutorials in non-English lan
TUTORIAL.* Tutorials in non-English languages
VEGETABLES XEmacs 21.5 code names
XKeysymDB X Keysym Database with Motif bindings
-cbx.png "Created by XEmacs" logo
+cbx.png "Created by XEmacs" logo (150x54 8bpp)
ctags.1 Ctags man page
custom/ Images used in Custom mode
editclient.sh Either start up XEmacs or connect to a running one
@@ -30,12 +30,12 @@ gnudoit.1 Gnudoit man page
gnudoit.1 Gnudoit man page
gnuserv.1 Gnuserv man page
gnuserv.README Original README file from gnuserv
-gray1.xbm Gray bitmap
+gray1.xbm Halftone gray bitmap (16x16)
idd/ ?
package-index.LATEST.gpg ?
photos/* Various pictures of XEmacs developers
-recycle.xpm
-recycle2.xpm Two versions of oversized Recycle cursor
+recycle.xpm Chartreuse recycle cursor (51x51)
+recycle2.xpm Chartreuse recycle cursor (32x32)
refcard.ps.gz Postscript version of XEmacs reference card
refcard.tex XEmacs reference card
sample.Xdefaults (legacy -- to be removed)
@@ -44,15 +44,15 @@ sparcworks/ Support files for Sparcwork
sparcworks/ Support files for Sparcworks
tests/ Testcases for external widget
toolbar/ Image files for the toolbar
-trash.xpm Garbage can icon
+trash.xpm B&W garbage can icon (32x46)
unicode/ Unicode conversion tables
-xemacs-beta.xpm XEmacs Beta logo
-xemacs-enhanced.png "XEmacs-enhanced" logo
+xemacs-beta.xpm XEmacs Beta logo for splashscreen (388x145)
+xemacs-enhanced.png "XEmacs-enhanced" logo (90x32)
xemacs-fe.sh XEmacs frontend driver
-xemacs-icon.xpm
-xemacs-icon2.xbm
-xemacs-icon2.xpm
-xemacs-icon3.xpm Various versions of an XEmacs WM icon
+xemacs-icon.xpm Color XE on page icon (48x48)
+xemacs-icon2.xbm B&W kitchen sink icon (50x50)
+xemacs-icon2.xpm Color kitchen sink icon (50x50)
+xemacs-icon3.xpm Grayscale X icon (48x48)
xemacs.1 XEmacs man page
-xemacs.xbm
-xemacs.xpm XEmacs logo used on the splash screen
+xemacs.xbm Half-tone XEmacs logo (266x61)
+xemacs.xpm XEmacs logo for splashscreen (388x145)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
commit: Improve etc/README.
16 years, 10 months
Stephen Turnbull
changeset: 4428:a2954f0b750711e1eb87bfcffd8881947e1656a6
tag: tip
user: Stephen J. Turnbull <stephen(a)xemacs.org>
date: Wed Feb 27 08:38:52 2008 -0800
files: etc/ChangeLog etc/README
description:
Improve etc/README.
diff -r cff4ad0ab682b75b3986d85e78722c2667599e3d -r a2954f0b750711e1eb87bfcffd8881947e1656a6 etc/ChangeLog
--- a/etc/ChangeLog Wed Feb 27 14:41:45 2008 +0900
+++ b/etc/ChangeLog Wed Feb 27 08:38:52 2008 -0800
@@ -1,3 +1,7 @@ 2007-12-26 Stephen J. Turnbull <stephe
+2008-02-20 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * README: Give more accurate descriptions of image files.
+
2007-12-26 Stephen J. Turnbull <stephen(a)xemacs.org>
* bundled-packages/README: Document restriction on --with-late-packages.
diff -r cff4ad0ab682b75b3986d85e78722c2667599e3d -r a2954f0b750711e1eb87bfcffd8881947e1656a6 etc/README
--- a/etc/README Wed Feb 27 14:41:45 2008 +0900
+++ b/etc/README Wed Feb 27 08:38:52 2008 -0800
@@ -17,7 +17,7 @@ TUTORIAL.* Tutorials in non-English lan
TUTORIAL.* Tutorials in non-English languages
VEGETABLES XEmacs 21.5 code names
XKeysymDB X Keysym Database with Motif bindings
-cbx.png "Created by XEmacs" logo
+cbx.png "Created by XEmacs" logo (150x54 8bpp)
ctags.1 Ctags man page
custom/ Images used in Custom mode
editclient.sh Either start up XEmacs or connect to a running one
@@ -30,12 +30,12 @@ gnudoit.1 Gnudoit man page
gnudoit.1 Gnudoit man page
gnuserv.1 Gnuserv man page
gnuserv.README Original README file from gnuserv
-gray1.xbm Gray bitmap
+gray1.xbm Halftone gray bitmap (16x16)
idd/ ?
package-index.LATEST.gpg ?
photos/* Various pictures of XEmacs developers
-recycle.xpm
-recycle2.xpm Two versions of oversized Recycle cursor
+recycle.xpm Chartreuse recycle cursor (51x51)
+recycle2.xpm Chartreuse recycle cursor (32x32)
refcard.ps.gz Postscript version of XEmacs reference card
refcard.tex XEmacs reference card
sample.Xdefaults (legacy -- to be removed)
@@ -44,15 +44,15 @@ sparcworks/ Support files for Sparcwork
sparcworks/ Support files for Sparcworks
tests/ Testcases for external widget
toolbar/ Image files for the toolbar
-trash.xpm Garbage can icon
+trash.xpm B&W garbage can icon (32x46)
unicode/ Unicode conversion tables
-xemacs-beta.xpm XEmacs Beta logo
-xemacs-enhanced.png "XEmacs-enhanced" logo
+xemacs-beta.xpm XEmacs Beta logo for splashscreen (388x145)
+xemacs-enhanced.png "XEmacs-enhanced" logo (90x32)
xemacs-fe.sh XEmacs frontend driver
-xemacs-icon.xpm
-xemacs-icon2.xbm
-xemacs-icon2.xpm
-xemacs-icon3.xpm Various versions of an XEmacs WM icon
+xemacs-icon.xpm Color XE on page icon (48x48)
+xemacs-icon2.xbm B&W kitchen sink icon (50x50)
+xemacs-icon2.xpm Color kitchen sink icon (50x50)
+xemacs-icon3.xpm Grayscale X icon (48x48)
xemacs.1 XEmacs man page
-xemacs.xbm
-xemacs.xpm XEmacs logo used on the splash screen
+xemacs.xbm Half-tone XEmacs logo (266x61)
+xemacs.xpm XEmacs logo for splashscreen (388x145)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
Re: overlay.el bug, incompatable overlays-in
16 years, 10 months
Stephen J. Turnbull
FKtPp writes:
> As you can see, I am not very good at english,
You get your point across; it doesn't get better than that. ;-)
> I use #'min and #'max is because I find the docstring saying that BEG
> and END could be a marker. I don't know if #'< or #'> can handle the
> comparation of a marker with a integer, but #'min and #'max announced
> they could in their docstring.
So does #'<.
> And beside this, I find another possiable way of get into error of
> "args out of range". If some bad guy or buggy program set both BEG and
> END < 1 or > (1+ (buffer-size)), boom!! I will change the code to avoid
> this...
Ah, good point. I still don't think that what are surely often logic
errors should pass like this, but if that's the way GNU does it, the
emulation may as well do so too.
Note that it needs to be (buffer-size buffer), not just (buffer-size).
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
Re: overlay.el bug, incompatable overlays-in
16 years, 10 months
Stephen J. Turnbull
It's me FKtPp ;) writes:
> Then I composed the second path, whth BEG and END limited in range [0,
> (buffer-size)], but, again, I find this even worse:
> XEmacs don't accept 0 as extend/overlay starting point, and report
> "Argment out of range"
That's right. The buffer indexing scheme is really broken, thanks to
Emacs compatibility. Buffer positions do not point at characters,
they point at insertion points between characters, plus one at each
end. It would make sense to number these 0 ... n, but no, that's not
the way it's done. Instead, they're numbered 1 ... n+1.
> (buffer-size) is 1 character less than (point-max) in a widen buffer.
> The second copy is totally broken... :'( sorry for no testing
>
> After some rethought I change the range to [1, (1+ (buffer-size))] , and
> run some code assumed would be failed if using the official XEmacs
> overlay.el.
Is this working now for your needs?
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[web] Reorganize Makefiles
16 years, 10 months
Stephen J. Turnbull
web
Will commit after sufficient time for discussion (Adrian's been
inactive recently, definitely want his opinion).
I've been having problems for a while with "make validate" in the web
tree computing the set of changed HTML files incorrectly. This turns
out to be a problem with a race between computation of the HTML
changes and actually regenerating the files: the computation generally
wins because that's done when the Makefile is read, before any
regeneration is done by the htdocs target. I've fixed this by
delegating the validation step to a submake.
I also found the many examples of Windows usage in
Local.rules.template annoying for a long time. It occurred to me that
Windows users probably find the Unixoid stuff just as annoying so I
decided to separate them into separate templates.
There was some stuff for compatibility with non-GNU Makes, but getting
the validation dependencies right requires using non-recursive
evaluation AFAICS. So there's no chance we'll ever be able to use a
less capable Make, and nuked stuff like the phone FORCE target in
favor of the .PHONY directive.
I also moved all the timestamps into a subdirectory to get rid of the
clutter.
Finally, I updated .cvsignore for these changes.
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/ChangeLog,v
retrieving revision 1.280
diff -u -U0 -r1.280 ChangeLog
--- ChangeLog 11 Feb 2008 03:36:38 -0000 1.280
+++ ChangeLog 20 Feb 2008 06:34:02 -0000
@@ -0,0 +1,16 @@
+2008-02-19 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * .cvsignore: Add .stamps, some common generated files.
+ Remove no-longer-used stamp files in top-directory.
+
+ * Local.rules.windows: New template file for use on Windows.
+
+ * Local.rules.mk:
+ * Local.rules.template:
+ * Makefile:
+ Document public targets.
+ New everything target (not quite everything, doesn't linklint).
+ Fix bug in computing changed HTML for validate target.
+ Use a .stamps directory. Reorganize stamping to use it.
+ Get rid of FORCE dependencies, since GNU Make supports .PHONY.
+
Index: .cvsignore
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/.cvsignore,v
retrieving revision 1.3
diff -u -r1.3 .cvsignore
--- .cvsignore 8 Jun 2003 23:14:41 -0000 1.3
+++ .cvsignore 20 Feb 2008 06:34:05 -0000
@@ -1,9 +1,10 @@
+*~
+*.rej
+*.orig
*.err
*.patch
Local.rules
-genpage-time-stamp
-htdocs-time-stamp
index.html
linklint
logs
-validate-time-stamp
+.stamps
Index: Local.rules.mk
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Local.rules.mk,v
retrieving revision 1.1
diff -u -r1.1 Local.rules.mk
--- Local.rules.mk 15 Mar 2003 13:07:31 -0000 1.1
+++ Local.rules.mk 20 Feb 2008 06:34:06 -0000
@@ -1,4 +1,6 @@
-# Include file for Local.rules.
+# Include file for Local.rules.
+
+# Sanity checks:
ifeq (${XEMACS_WEBSITE_BASE},)
___:= $(error XEMACS_WEBSITE_BASE not defined??)
@@ -16,3 +18,33 @@
else
$(error "$(notdir $<)" has been updated or is newer than "$(notdir $@)". Merge the changes into your "$(notdir $@)".)
endif
+
+# Default program settings for Unix.
+# DON'T CHANGE THIS FILE. Override them in Local.rules.
+# For Windows, copy Local.rules.windows to Local.rules to get some
+# reasonable defaults for windows.
+
+XEMACS=xemacs
+FLAGS=-batch -vanilla
+
+FIND=find
+MKDIR=mkdir
+
+LINKLINT=linklint
+LINKLINT_OUTDIR=linklint
+LINKLINT_CASE=
+# Ignore checking of links into the XEmacs CVS repository via ViewCVS.
+# These checks are expensive and links are correct by design.
+LINKLINT_IGNORESET=-ignore http://cvs.xemacs.org/viewcvs.cgi/XEmacs/@
+
+# mknmz command
+# used to reindex the site for namazu
+MKNMZ=mknmz
+# location of namazu index directory
+# Only www.xemacs.org is setup up for namazu indexing as of 2006-02-11.
+NAMAZU_INDEX_DIR=/web/http-xemacs/var/namazu/index
+
+TEXI2HTML = texi2html
+
+# "hidden" directory to hold timestamps
+STAMPS=.stamps
Index: Local.rules.template
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Local.rules.template,v
retrieving revision 1.9
diff -u -r1.9 Local.rules.template
--- Local.rules.template 2 Oct 2007 19:41:56 -0000 1.9
+++ Local.rules.template 20 Feb 2008 06:34:06 -0000
@@ -1,57 +1,52 @@
-# Local.rules - Site-Local definitions.
+# Local.rules - Site-Local definitions.
-# APA: This is what I use on my Windows 2000 machine:
-XEMACS=xemacs
-# XEMACS=c:/PROGRA~1/XEmacs/XEmacs-21.1.14/i386-pc-win32/xemacs.exe
-# XEMACS=/cygdrive/c/PROGRA~1/XEmacs/XEmacs-21.1.14/i386-pc-win32/xemacs.exe
-# FLAGS=-batch -q -no-site-file
-FLAGS=-batch -vanilla
-
-# APA: Windows has its own, inadequate find, use Cygwin instead!
-FIND=find
-# FIND=c:/cygwin/bin/find.exe
-
-# APA: Where to find and how to run linklint.
-LINKLINT=linklint
-# LINKLINT=perl linklint-2.3.6.d-adrian
-LINKLINT_OUTDIR=linklint
-# APA: Add -case switch on Windows to get correct filename case in
-# linklint log files. This option causes error on UNIX.
-LINKLINT_CASE=
-# LINKLINT_CASE=-case
-# APA: Ignore checking of links into the XEmacs CVS repository via ViewCVS.
-# These checks are expensive and links are correct by design.
-LINKLINT_IGNORESET=-ignore http://cvs.xemacs.org/viewcvs.cgi/XEmacs/@
-
-GENPAGE_CONF="genpage.conf"
-
-ELCS=batch-psgml-validate.elc release-mail-to-html.elc
-
-# APA: Use these definitions for GNU make
-CONTENT_FILES=$(shell $(FIND) . -path ./genpage -prune -o -name "*.content" -print)
-GENERATED_HTML_FILES=$(CONTENT_FILES:.content=.html)
-# APA: Files generated by texi2html do not need to be validated.
-HTML_FILES=$(shell $(FIND) . \( -path "./Documentation/21.5/html/*" -o -path "./Documentation/packages/html/*" -o -path "./linklint*" -o -path "./Documentation/sources/*" -prune \) -o -name "*.html" -print)
-
-# mknmz command
-# used to reindex the site for namazu
-MKNMZ=mknmz
-# location of namazu index directory
-# Only www.xemacs.org is setup up for namazu indexing as of 2006-02-11.
-NAMAZU_INDEX_DIR=/web/http-xemacs/var/namazu/index
-
-TEXI2HTML = texi2html
-# www.xemacs.org:
-# TEXI2HTML = perl /web/http-xemacs/xemacsweb/Texi2html/texi2html
-# www.sunsite.dk:
-# TEXI2HTML = perl /pack/ftp/projects/xemacs/xemacsweb/Texi2html/texi2html
-# www.us.xemacs.org:
-# TEXI2HTML = perl /home/groups/x/xe/xemacs/xemacsweb/Texi2html/texi2html
-# TANG:
-# TEXI2HTML=perl "c:/Hacking/cvs.xemacs.org/XEmacs/xemacsweb/Texi2html/texi2html"
+# This is the local rules file for *nix.
+# The default values are the same as in Local.rules.mk.
+# Copy it to Local.rules. Then make any necessary customizations,
+# and uncomment them.
+# If you are running Windows, you may find Local.rules.windows more useful.
+
+# If uncommented, this will become the default target.
+
+#default: validate
+
+# Programs and their options
+
+#XEMACS=xemacs
+#FLAGS=-batch -vanilla
+
+#FIND=find
+#MKDIR=mkdir
+
+#LINKLINT=linklint
+#LINKLINT_OUTDIR=linklint
+#LINKLINT_CASE=
+# Ignore checking of links into the XEmacs CVS repository via ViewCVS.
+# These checks are expensive and links are correct by design.
+#LINKLINT_IGNORESET=-ignore http://cvs.xemacs.org/viewcvs.cgi/XEmacs/@
+
+# mknmz command
+# used to reindex the site for namazu
+#MKNMZ=mknmz
+# location of namazu index directory
+# Only www.xemacs.org is setup up for namazu indexing as of 2006-02-11.
+#NAMAZU_INDEX_DIR=/web/http-xemacs/var/namazu/index
+
+#TEXI2HTML = texi2html
+
+# www.xemacs.org:
+#TEXI2HTML = perl /web/http-xemacs/xemacsweb/Texi2html/texi2html
+# www.sunsite.dk:
+#TEXI2HTML = perl /pack/ftp/projects/xemacs/xemacsweb/Texi2html/texi2html
+# www.us.xemacs.org:
+#TEXI2HTML = perl /home/groups/x/xe/xemacs/xemacsweb/Texi2html/texi2html
+# TANG:
+#TEXI2HTML=perl "c:/Hacking/cvs.xemacs.org/XEmacs/xemacsweb/Texi2html/texi2html"
+
+#STAMPS=.stamps
#
-# Local Variables:
-# mode: makefile
-# End:
+# Local Variables:
+# mode: makefile
+# End:
#
Index: Local.rules.windows
===================================================================
RCS file: Local.rules.windows
diff -N Local.rules.windows
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Local.rules.windows 20 Feb 2008 06:34:06 -0000
@@ -0,0 +1,66 @@
+# Local.rules - Site-Local definitions.
+
+# If uncommented, this will become the default target.
+
+#default: validate
+
+# Programs and their options
+
+# APA: This is what I use on my Windows 2000 machine:
+XEMACS=xemacs
+# XEMACS=c:/PROGRA~1/XEmacs/XEmacs-21.1.14/i386-pc-win32/xemacs.exe
+# XEMACS=/cygdrive/c/PROGRA~1/XEmacs/XEmacs-21.1.14/i386-pc-win32/xemacs.exe
+# FLAGS=-batch -q -no-site-file
+FLAGS=-batch -vanilla
+
+# APA: Windows has its own, inadequate find, use Cygwin instead!
+FIND=find
+# FIND=c:/cygwin/bin/find.exe
+MKDIR=mkdir
+
+# APA: Where to find and how to run linklint.
+LINKLINT=linklint
+# LINKLINT=perl linklint-2.3.6.d-adrian
+LINKLINT_OUTDIR=linklint
+# APA: Add -case switch on Windows to get correct filename case in
+# linklint log files. This option causes error on UNIX.
+LINKLINT_CASE=
+# LINKLINT_CASE=-case
+# APA: Ignore checking of links into the XEmacs CVS repository via ViewCVS.
+# These checks are expensive and links are correct by design.
+LINKLINT_IGNORESET=-ignore http://cvs.xemacs.org/viewcvs.cgi/XEmacs/@
+
+GENPAGE_CONF="genpage.conf"
+
+ELCS=batch-psgml-validate.elc release-mail-to-html.elc
+
+# APA: Use these definitions for GNU make
+CONTENT_FILES=$(shell $(FIND) . -path ./genpage -prune -o -name "*.content" -print)
+GENERATED_HTML_FILES=$(CONTENT_FILES:.content=.html)
+# APA: Files generated by texi2html do not need to be validated.
+HTML_FILES=$(shell $(FIND) . \( -path "./Documentation/21.5/html/*" -o -path "./Documentation/packages/html/*" -o -path "./linklint*" -o -path "./Documentation/sources/*" -prune \) -o -name "*.html" -print)
+
+# mknmz command
+# used to reindex the site for namazu
+MKNMZ=mknmz
+# location of namazu index directory
+# Only www.xemacs.org is setup up for namazu indexing as of 2006-02-11.
+NAMAZU_INDEX_DIR=/web/http-xemacs/var/namazu/index
+
+TEXI2HTML = texi2html
+# www.xemacs.org:
+# TEXI2HTML = perl /web/http-xemacs/xemacsweb/Texi2html/texi2html
+# www.sunsite.dk:
+# TEXI2HTML = perl /pack/ftp/projects/xemacs/xemacsweb/Texi2html/texi2html
+# www.us.xemacs.org:
+# TEXI2HTML = perl /home/groups/x/xe/xemacs/xemacsweb/Texi2html/texi2html
+# TANG:
+# TEXI2HTML=perl "c:/Hacking/cvs.xemacs.org/XEmacs/xemacsweb/Texi2html/texi2html"
+
+STAMPS=.stamps
+
+#
+# Local Variables:
+# mode: makefile
+# End:
+#
Index: Makefile
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Makefile,v
retrieving revision 1.57
diff -u -r1.57 Makefile
--- Makefile 17 Dec 2007 23:17:30 -0000 1.57
+++ Makefile 20 Feb 2008 06:34:06 -0000
@@ -1,50 +1,82 @@
# -*-Makefile-*- Begin of xemacsweb Makefile
#
# Adrian Aichner (APA), aichner(a)ecf.teradyne.com, Teradyne GmbH, 2000-07-29.
+# Stephen Turnbull (stephen), stephen(a)xemacs.org, 2008-02-02
#
-# xemacsweb makefile for UNIX and Windows NT,
-# requiring GNU make, available on Windows NT via Cygwin
-#
-# Please adjust definitions of CONTENT_FILES and HTML_FILES for other
-# versions of make.
+# xemacsweb makefile for UNIX and Windows NT.
+# Requires GNU make, available on Windows NT via Cygwin and MSYS.
+# (This Makefile uses immediately-expanded assignments in an essential way.)
#
# Supported targets:
-# htdocs (default): creation of .html from .content files
-# validate: validation of all .html files using XEmacs/PSGML
-# all: creation and validation
#
+# all: same as validate [default target]
+# everything: validate + namazu-re-index + Download/win32
+# validate: htdocs + validation of all .html files using XEmacs/PSGML
+# htdocs: creation of .html from .content files using genpage
+# linklint: run linklint on the tree, including remote links
+# namazu-re-index: run the namazu indexer on the tree
+# Documentation: make HTML documents from XEmacs 21.5 sources
+# Download/win32: update Win32 download information
-# Use a Local.rules file to specify what you wish to have installed
-XEMACS_WEBSITE_BASE:= $(shell pwd)
+################ Override variables in Local.rules. ################
+################ No user-serviceable parts below. ################
-all: validate
+.SUFFIXES: # Delete the default suffixes
+.SUFFIXES: .content .html .el .elc # Define our suffix list
+.PHONY: namazu-re-index linklint Documentation Download/win32
+
+XEMACS_WEBSITE_BASE:= $(shell pwd)
+
+# Prune directories where we won't find .content files
+# or HTML files requiring validation.
+
+PRUNE_GENPAGE:= -path ./genpage -prune
+PRUNE_LINKLINT:= -path "./linklint*" -prune
+PRUNE_215_TEXI:= -path ./Documentation/21.5/html -prune
+PRUNE_PKG_TEXI:= -path ./Documentation/packages/html -prune
+PRUNES:= $(PRUNE_GENPAGE) -o $(PRUNE_LINKLINT)
+PRUNES:= \( $(PRUNES) -o $(PRUNE_215_TEXI) -o $(PRUNE_PKG_TEXI) \)
+
+# Define collections of files to process.
+
+# These must be recursively-expanded variables. FIND is defined in Local.rules.
+CONTENT_FILES = $(shell $(FIND) . $(PRUNES) -o -name "*.content" -print)
+GENERATED_HTML_FILES = $(CONTENT_FILES:.content=.html)
+VALIDATE_HTML_FILES = $(shell $(FIND) . $(PRUNES) -o -name "*.html" -print)
+
+# Some prerequisites we use.
+
+GENPAGE_CONF:= "genpage.conf"
+ELCS:= batch-psgml-validate.elc release-mail-to-html.elc
+
+# Include the sanity checks and default program locations.
include Local.rules.mk
+# Include any local overrides specified by the user.
-include Local.rules
-.SUFFIXES: # Delete the default suffixes
-.SUFFIXES: .content .html .el .elc # Define our suffix list
+# Targets
-# APA: Default target (first to occur in file):
-validate: htdocs validate-time-stamp
+# Default target; must come before other targets but after Local.rules.
+all: validate
-htdocs: $(ELCS) $(GENERATED_HTML_FILES)
+everything: validate Download/win32 namazu-re-index
-$(GENERATED_HTML_FILES): htdocs-time-stamp
+validate: htdocs $(STAMPS)/validate
-# APA: Compile any lisp file for performance (a bit simple-minded, maybe).
-%.elc: %.el
- $(XEMACS) $(FLAGS) -f batch-byte-compile $<
+htdocs: $(GENERATED_HTML_FILES)
-all: Download/win32 validate namazu-re-index
+$(GENERATED_HTML_FILES): $(ELCS) $(STAMPS)/htdocs
# APA: Run linklint on the local working directory tree, including
# remote link checking (-net).
# Use -output_index site so that all files are reachable in directory
# and not hidden by index.html, which does not reference url*.html
# files.
-linklint: FORCE
- $(LINKLINT) $(LINKLINT_CASE) -docbase http://www.xemacs.org -net -limit 0 -db3 /@ -doc $(LINKLINT_OUTDIR) $(LINKLINT_IGNORESET) -output_index site -timeout 30
+linklint:
+ $(LINKLINT) $(LINKLINT_CASE) -docbase http://www.xemacs.org \
+ -net -limit 0 -db3 /@ -doc $(LINKLINT_OUTDIR) \
+ $(LINKLINT_IGNORESET) -output_index site -timeout 30
# APA: To be run after initial checkout of module.
# Create directory for commit logs.
@@ -55,7 +87,8 @@
# APA: The genpage/content/index.content is not the only dependency,
# but any improvements should go into the genpage/Makefile itself and
# be integrated with a genpage release.
-init:
+init: $(STAMPS)/init
+ rm $(STAMPS)/init
if test ! -d logs; then \
mkdir logs; \
fi;
@@ -68,12 +101,13 @@
cd genpage; $(MAKE) gp
cd Texi2html; bash configure; make
cd FAQ; $(MAKE)
+ touch $(STAMPS)/init
# APA: When contentdir and outputdir are the same then, and only then,
# genpage depends only on content files. Copying of all other files
# (from contentdir to outputdir) is not necessary in this case.
# See $(GENPAGE_CONF).
-htdocs-time-stamp: $(CONTENT_FILES) \
+$(STAMPS)/htdocs: $(STAMPS) $(CONTENT_FILES) \
template.html \
template-de.html \
template-ja.html \
@@ -85,7 +119,7 @@
Download/win32/innosetup-win32.txt \
Download/win32/installshield-win32.txt
perl ./genpage/bin/genpage -q -p $(GENPAGE_CONF) -o "."
- touch htdocs-time-stamp
+ touch $(STAMPS)/htdocs
# APA: Validate only files younger than time-stamp file created by
# previous validation
@@ -93,15 +127,26 @@
# (defun batch-psgml-validate (&optional file-or-dir)
# (defun batch-psgml-validate-file (file &optional insert-result indent)
# (defun batch-psgml-validate-buffer (&optional insert-result indent)
-validate-time-stamp: $(HTML_FILES)
+
+# stephen: $(VALIDATE_HTML_FILES) *must* be evaluated when Make creates
+# its dependency graph, so that will happen before htdocs is made in the
+# toplevel make. So we use a recursive make to ensure that htdocs has
+# already made all the needed HTML by the time the arguments to
+# batch-psgml-validate are computed.
+# The conditional is to avoid doing the find in the toplevel make.
+$(STAMPS)/validate: $(STAMPS) $(VALIDATE_HTML_FILES)
+ make real-validate SUBMAKE=validate
+ touch $(STAMPS)/validate
+ifeq ($(SUBMAKE),validate)
+real-validate: $(VALIDATE_HTML_FILES)
$(XEMACS) $(FLAGS) -l ./batch-psgml-validate.elc -f batch-psgml-validate $?
- touch validate-time-stamp
+endif
# PB: target for rebuilding the namazu index
# APA: Touch index.html for index template files to be re-generated.
# www.xemacs.org has a patched mknmz that will update index files,
# unless they are newer than the associated template.
-namazu-re-index: FORCE
+namazu-re-index:
touch index.html
if test -n "$(NAMAZU_INDEX_DIR)" -a -d "$(NAMAZU_INDEX_DIR)"; then \
$(MKNMZ) --output-dir=$(NAMAZU_INDEX_DIR) . ; \
@@ -111,15 +156,22 @@
# files. Need to remove timestamp files as well!
clean:
$(FIND) . \( -name "*.content" -o -name "*~" \) -print | perl -ne "{ chomp; s/\.content/.html/; unlink; }"
- rm -f htdocs-time-stamp
- rm -f validate-time-stamp
+ rm -f $(STAMPS)/htdocs
+ rm -f $(STAMPS)/validate
-Documentation: FORCE
+Documentation:
cd $@ && $(MAKE) TEXI2HTML="$(TEXI2HTML)" all
-Download/win32: FORCE
+Download/win32:
cd $@ && $(MAKE)
-FORCE:
+# APA: Compile any lisp file for performance (a bit simple-minded, maybe).
+%.elc: %.el
+ $(XEMACS) $(FLAGS) -f batch-byte-compile $<
+
+# Scaffolding
+
+$(STAMPS):
+ $(MKDIR) $(STAMPS)
# End of xemacsweb Makefile
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC21.5] Document "lifting to Lisp" [was: GC leak?]
16 years, 10 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
Maybe it's not the best place for it, but it sure beats offline
archives.
diff -r 42711a251efd man/ChangeLog
--- a/man/ChangeLog Fri Feb 15 13:11:56 2008 +0100
+++ b/man/ChangeLog Wed Feb 27 14:33:25 2008 +0900
@@ -0,0 +1,10 @@ 2007-12-17 Aidan Kehoe <kehoea@parhasa
+2008-02-27 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * internals/internals.texi (Discussion -- KKCC):
+ (Discussion -- Incremental Collector):
+ New nodes.
+ (Top):
+ (Discussion -- Garbage Collection):
+ (Discussion -- Pure Space):
+ Adjust pointers and menus for new nodes.
+
+ (lrecords): Remark that lcrecords are obsolete.
+
diff -r 42711a251efd man/internals/internals.texi
--- a/man/internals/internals.texi Fri Feb 15 13:11:56 2008 +0100
+++ b/man/internals/internals.texi Wed Feb 27 14:33:25 2008 +0900
@@ -740,6 +740,8 @@ Future Work Discussion
Discussion -- Garbage Collection
+* Discussion -- KKCC::
+* Discussion -- Incremental Collector::
* Discussion -- Pure Space::
* Discussion -- Hashtable-Based Marking and Cleanup::
* Discussion -- The Anti-Cons::
@@ -8551,6 +8553,9 @@ more defensive but less efficient and is
[see @file{lrecord.h}]
+@strong{This node needs updating for the ``new garbage collection
+algorithms'' (KKCC) and the ``incremental'' collector.}
+
All lrecords have at the beginning of their structure a @code{struct
lrecord_header}. This just contains a type number and some flags,
including the mark bit. All builtin type numbers are defined as
@@ -8570,6 +8575,9 @@ field used to distinguish one lcrecord f
field used to distinguish one lcrecord from another. (This field is used
only for debugging and could be removed, but the space gain is not
significant.)
+
+@strong{lcrecords are now obsolete when using the write-barrier-based
+collector.}
Simple lrecords are created using @code{ALLOCATE_FIXED_TYPE()}, just
like for other frob blocks. The only change is that the implementation
@@ -28419,12 +28427,82 @@ into the normal Future Work section.
@cindex garbage collection, discussion
@menu
+* Discussion -- KKCC::
+* Discussion -- Incremental Collector::
* Discussion -- Pure Space::
* Discussion -- Hashtable-Based Marking and Cleanup::
* Discussion -- The Anti-Cons::
@end menu
-@node Discussion -- Pure Space, Discussion -- Hashtable-Based Marking and Cleanup, Discussion -- Garbage Collection, Discussion -- Garbage Collection
+@node Discussion -- KKCC, Discussion -- Incremental Collector, Discussion -- Garbage Collection, Discussion -- Garbage Collection
+@subsection Discussion -- KKCC
+@cindex discussion, KKCC
+@cindex KKCC, discussion
+
+KKCC is the tag used for the ``new garbage collector algorithms,'' which
+are a refactoring of the garbage collector to make trying new collectors
+simpler.
+
+@node Discussion -- Incremental Collector, Discussion -- Pure Space, Discussion -- KKCC, Discussion -- Garbage Collection
+@subsection Discussion -- Incremental Collector
+@cindex discussion, Incremental Collector
+@cindex Incremental Collector, discussion
+
+The incremental collector is designed to allow better ``realtime''
+performance by not requiring a full mark and sweep pass. This also
+allows removal of most finalizers, as described in
+@samp{<vpd8x1fomdx.fsf@(a)informatik.uni-tuebingen.de>} by Marcus Crestani
+on xemacs-beta:
+
+I was able to nuke many finalizers by transforming
+separately allocated data structures to Lisp objects. Some of the
+remaining finalizers are also likely to go away, as soon as I (or
+someone else) find the time to ``lift'' the remaining, separately allocated
+objects to Lisp objects.
+
+Unfortunately, the current Lisp object layout leads to holes in the
+write barrier: Not all data structures that contain pointers to Lisp
+objects are allocated on the Lisp heap. Some Lisp objects do not carry
+all their information in the object itself. External parts are kept in
+separately allocated memory blocks that are not managed by the new Lisp
+allocator. Examples for these objects are hash tables and dynamic
+arrays, two objects that can dynamically grow and shrink. The separate
+memory blocks are not guaranteed to reside on page boundaries, and thus
+cannot be watched by the write barrier.
+
+Moreover, the separate parts can contain live pointers to other Lisp
+objects. These pointers are not covered by the write barrier and
+modifications by the client during garbage collection do escape. In
+this case, the client changes the connectivity of the reachability
+graph behind the collector's back, which eventually leads to erroneous
+collection of live objects. To solve this problem, I transformed the
+separately allocated parts to fully qualified Lisp objects that are
+managed by the allocator and thus are covered by the write barrier.
+This also removes a lot of special allocation and removal code for the
+out-sourced parts. Generally, allocating all data structures that
+contain pointers to Lisp objects on one heap makes the whole memory
+layout more consistent.
+
+A large part of the patch converts these data structures to Lisp
+objects. The conversion of an additionally allocated data structure to
+an Lisp objects includes:
+@itemize
+@item Add new object type to @samp{enum lrecord_type} in @file{lrecord.h}.
+@item Add @samp{lrecord_header} to the object's struct.
+@item Add @samp{DECLARE_RECORD()}/@samp{XFOO}/etc. below the struct definition.
+@item Add lrecord definition.
+@item Change allocation with malloc to allocation with new allocator.
+@item Add object to @samp{syms_of_*()}.
+@item Change memory description of parent object.
+@item Modify finalizer, free, or delete functions.
+@end itemize
+
+The initial motivation for this is the write barrier and the consistent
+format for all objects that may contain Lisp pointers. That we can get
+rid of finalizers this way follows naturally.
+
+
+@node Discussion -- Pure Space, Discussion -- Hashtable-Based Marking and Cleanup, Discussion -- Incremental Collector, Discussion -- Garbage Collection
@subsection Discussion -- Pure Space
@cindex discussion, pure space
@cindex pure space, discussion
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches