Mercurial > hg > xemacs-beta
annotate build-msw-release.sh @ 5142:f965e31a35f0
reduce lcrecord headers to 2 words, rename printing_unreadable_object
-------------------- ChangeLog entries follow: --------------------
man/ChangeLog addition:
2010-03-13 Ben Wing <ben@xemacs.org>
* internals/internals.texi (Working with Lisp Objects):
* internals/internals.texi (Writing Macros):
* internals/internals.texi (lrecords):
More rewriting to correspond with changes from
*LRECORD* to *LISP_OBJECT*.
modules/ChangeLog addition:
2010-03-13 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c (print_pgconn):
* postgresql/postgresql.c (print_pgresult):
printing_unreadable_object -> printing_unreadable_object_fmt.
2010-03-13 Ben Wing <ben@xemacs.org>
* ldap/eldap.c (print_ldap):
printing_unreadable_object -> printing_unreadable_object_fmt.
src/ChangeLog addition:
2010-03-13 Ben Wing <ben@xemacs.org>
* alloc.c (alloc_sized_lrecord_1):
* alloc.c (alloc_sized_lrecord_array):
* alloc.c (old_alloc_sized_lcrecord):
* alloc.c (disksave_object_finalization_1):
* alloc.c (mark_lcrecord_list):
* alloc.c (alloc_managed_lcrecord):
* alloc.c (free_managed_lcrecord):
* alloc.c (tick_lcrecord_stats):
* alloc.c (sweep_lcrecords_1):
* buffer.c (print_buffer):
* buffer.c (DEFVAR_BUFFER_LOCAL_1):
* casetab.c:
* casetab.c (print_case_table):
* console.c (print_console):
* console.c (DEFVAR_CONSOLE_LOCAL_1):
* data.c (print_weak_list):
* data.c (print_weak_box):
* data.c (print_ephemeron):
* data.c (ephemeron_equal):
* database.c (print_database):
* database.c (finalize_database):
* device-msw.c (sync_printer_with_devmode):
* device-msw.c (print_devmode):
* device-msw.c (finalize_devmode):
* device.c:
* device.c (print_device):
* elhash.c:
* elhash.c (print_hash_table):
* eval.c (print_subr):
* eval.c (print_multiple_value):
* event-stream.c (event_stream_resignal_wakeup):
* events.c (clear_event_resource):
* events.c (zero_event):
* events.c (print_event):
* extents.c:
* extents.c (print_extent):
* file-coding.c (print_coding_system):
* font-mgr.c:
* font-mgr.c (Ffc_init):
* frame.c:
* frame.c (print_frame):
* gc.c:
* gc.c (GC_CHECK_NOT_FREE):
* glyphs.c:
* glyphs.c (print_image_instance):
* glyphs.c (print_glyph):
* gui.c (print_gui_item):
* gui.c (copy_gui_item):
* keymap.c (print_keymap):
* keymap.c (MARKED_SLOT):
* lisp.h:
* lisp.h (struct Lisp_String):
* lisp.h (DEFUN):
* lisp.h (DEFUN_NORETURN):
* lrecord.h:
* lrecord.h (NORMAL_LISP_OBJECT_UID):
* lrecord.h (struct lrecord_header):
* lrecord.h (set_lheader_implementation):
* lrecord.h (struct old_lcrecord_header):
* lrecord.h (struct free_lcrecord_header):
* marker.c (print_marker):
* mule-charset.c:
* mule-charset.c (print_charset):
* objects.c (print_color_instance):
* objects.c (print_font_instance):
* objects.c (finalize_font_instance):
* print.c (print_cons):
* print.c (printing_unreadable_object_fmt):
* print.c (printing_unreadable_lisp_object):
* print.c (external_object_printer):
* print.c (internal_object_printer):
* print.c (debug_p4):
* print.c (ext_print_begin):
* process.c (print_process):
* rangetab.c (print_range_table):
* rangetab.c (range_table_equal):
* scrollbar.c (free_scrollbar_instance):
* specifier.c (print_specifier):
* specifier.c (finalize_specifier):
* symbols.c (guts_of_unbound_marker):
* symeval.h:
* symeval.h (DEFVAR_SYMVAL_FWD):
* tooltalk.c:
* tooltalk.c (print_tooltalk_message):
* tooltalk.c (print_tooltalk_pattern):
* ui-gtk.c (ffi_object_printer):
* ui-gtk.c (emacs_gtk_object_printer):
* ui-gtk.c (emacs_gtk_boxed_printer):
* window.c (print_window):
* window.c (free_window_mirror):
* window.c (debug_print_window):
* xemacs.def.in.in:
(1) printing_unreadable_object -> printing_unreadable_object_fmt.
(2) printing_unreadable_lcrecord -> printing_unreadable_lisp_object
and fix up so it no longer requires an lcrecord.
These previous changes eliminate most of the remaining places where
the terms `lcrecord' and `lrecord' occurred outside of specialized
code.
(3) Fairly major change: Reduce the number of words in an lcrecord
from 3 to 2. The third word consisted of a uid that duplicated the
lrecord uid, and a single free bit, which was moved into the lrecord
structure. This reduces the size of the `uid' slot from 21 bits to
20 bits. Arguably this isn't enough -- we could easily have more than
1,000,000 or so objects created in a session. The answer is
(a) It doesn't really matter if we overflow the uid field because
it's only used for debugging, to identify an object uniquely
(or pretty much so).
(b) If we cared about it overflowing and wanted to reduce this,
we could make it so that cons, string, float and certain other
frob-block types that never print out the uid simply don't
store a uid in them and don't increment the lrecord_uid_counter.
(4) In conjunction with (3), create new macro NORMAL_LISP_OBJECT_UID()
and use it to abstract out the differences between NEWGC and old-GC
in accessing the `uid' value from a "normal Lisp Object pointer".
(5) In events.c, use zero_nonsized_lisp_object() in place of custom-
written equivalent. In font-mgr.c use external_object_printer()
in place of custom-written equivalents.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Sat, 13 Mar 2010 05:38:08 -0600 |
parents | 8a653fbe5c27 |
children | 308d34e9f07d |
rev | line source |
---|---|
674 | 1 #!/bin/sh |
2 | |
4781
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
3 # Copyright (C) 2000 Andy Piper |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
4 |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
5 # This file is part of XEmacs. |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
6 |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
7 # XEmacs is free software; you can redistribute it and/or modify it |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
8 # under the terms of the GNU General Public License as published by |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
9 # the Free Software Foundation; either version 2, or (at your |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
10 # option) any later version. |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
11 |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
12 # XEmacs is distributed in the hope that it will be useful, but |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
13 # WITHOUT ANY WARRANTY; without even the implied warranty of |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
15 # General Public License for more details. |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
16 |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
17 # You should have received a copy of the GNU General Public License |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
18 # along with XEmacs; see the file COPYING. If not, write to the Free |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
19 # Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
20 # Boston, MA 02110-1301, USA. |
8a653fbe5c27
Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents:
864
diff
changeset
|
21 |
674 | 22 # This file builds the release kits for both cygwin and win32. You |
23 # must have both environments configured for it to work properly. In | |
24 # particular you must provide a suitable value for NATIVE_ZLIB_DIR. | |
25 | |
26 # configuration | |
27 NATIVE_ZLIB_DIR=/usr/local/mingw/lib | |
28 PROGRAM_FILES='c:/Program Files/XEmacs' | |
864 | 29 TMPINSTALL=/tmp/local |
674 | 30 # no configuration past this point |
31 | |
32 INSTALL= | |
33 FILES= | |
34 BUILD=1 | |
35 | |
36 for OPT in $* | |
37 do | |
38 case $OPT in | |
39 --install) INSTALL=1;; | |
40 --installonly) INSTALL=1; BUILD='';; | |
41 --help) echo "usage: build-msw-release.sh [--install]" && exit;; | |
42 --*) ;; | |
43 *) FILES="$FILES $OPT";; | |
44 esac | |
45 done | |
46 | |
47 # pick up version info | |
48 . version.sh | |
49 | |
50 # decide on names | |
51 emacs_ver=${emacs_major_version}.${emacs_minor_version}.${emacs_beta_version} | |
708 | 52 cygwin_tarball=xemacs-i686-pc-cygwin-${emacs_ver}${emacs_kit_version}.tar.gz |
53 win32_tarball=xemacs-i586-pc-win32-${emacs_ver}${emacs_kit_version}.tar.gz | |
674 | 54 |
55 DISTDIR=`pwd`/windows | |
56 | |
57 # check to see if we should build | |
58 if test "$BUILD" = "1" | |
59 then | |
60 | |
61 echo "Building the mswindows ${emacs_ver} release" | |
62 | |
63 # cleanup everything first | |
64 if [ -f Makefile ] ; then | |
65 make distclean | |
66 fi | |
67 | |
708 | 68 # nuke the dist dir. |
69 rm -rf windows | |
70 | |
71 # create a dist directory | |
72 mkdir -p windows/cygwin32 | |
73 mkdir -p windows/win32 | |
74 mkdir -p /usr/local | |
864 | 75 mkdir -p ${TMPINSTALL} |
708 | 76 |
674 | 77 # first build win32 |
78 (cd nt; | |
708 | 79 nmake -f xemacs.mak clean; |
674 | 80 nmake -f xemacs.mak) |
81 (cd "${PROGRAM_FILES}"; | |
82 rm -rf ./XEmacs-${emacs_ver}) | |
83 (cd nt; | |
84 nmake -f xemacs.mak install; | |
85 nmake -f xemacs.mak clean) | |
86 | |
87 # now build cygwin | |
88 ./configure --with-dragndrop --with-postgresql=no --with-x=no \ | |
89 --bindir=/usr/local/bin/i686-pc-cygwin --with-site-lisp=yes \ | |
90 --with-ipv6-cname=no --with-netinstall | |
91 make CFLAGS=-O3 MINGW_ZLIB_DIR=${NATIVE_ZLIB_DIR} beta | |
92 | |
93 # deal with the netinstaller | |
94 (cd netinstall; | |
95 strip setup.exe) | |
96 cp netinstall/setup.exe windows | |
97 | |
98 # the win32 tar ball needs setup.exe | |
99 cp netinstall/setup.exe \ | |
100 "${PROGRAM_FILES}"/XEmacs-${emacs_ver}/i586-pc-win32 | |
101 | |
102 # make the win32 tarball | |
103 (cd "${PROGRAM_FILES}"; | |
104 tar czvf ${DISTDIR}/win32/${win32_tarball} \ | |
105 ./XEmacs-${emacs_ver}) | |
106 | |
107 # make the tarball | |
864 | 108 make prefix=${TMPINSTALL} bindir=${TMPINSTALL}/bin/i686-pc-cygwin install |
109 (cd ${TMPINSTALL}; | |
674 | 110 tar czvf ${DISTDIR}/cygwin32/${cygwin_tarball} \ |
111 ./bin/i686-pc-cygwin \ | |
112 ./lib/xemacs-${emacs_ver} \ | |
113 ./lib/xemacs/lock \ | |
114 ./man/man1/ctags.1 \ | |
115 ./man/man1/etags.1 \ | |
116 ./man/man1/gnuattach.1 \ | |
117 ./man/man1/gnuclient.1 \ | |
118 ./man/man1/gnudoit.1 \ | |
119 ./man/man1/gnuserv.1 \ | |
864 | 120 ./man/man1/xemacs.1; |
121 rm -rf bin lib man) | |
674 | 122 |
123 # figure out the ini file. | |
124 cygwin_tarball_size=`ls -l windows/cygwin32/${cygwin_tarball} | awk '{ print $5; }'` | |
125 win32_tarball_size=`ls -l windows/win32/${win32_tarball} | awk '{ print $5; }'` | |
126 | |
127 (cd netinstall; | |
128 make CYGWIN_SIZE=${cygwin_tarball_size} \ | |
708 | 129 WIN32_SIZE=${win32_tarball_size} \ |
130 KIT_VERSION=${emacs_kit_version} setup-bin.ini ) | |
674 | 131 cp netinstall/setup-bin.ini windows |
132 | |
133 # tidy up | |
134 make distclean | |
135 | |
136 fi | |
137 # end of build | |
138 | |
139 # optionally install to the ftp site | |
140 if test "$INSTALL" != "" | |
141 then | |
142 echo "Installing the mswindows ${emacs_ver} release" | |
143 scp -r -oUser=slb -oProtocol=1 windows/* \ | |
144 ftp.xemacs.org:/pub/xemacs/windows | |
145 # update setup.ini | |
146 ssh -1 -l slb ftp.xemacs.org 'cd /pub/xemacs/windows; sh makeini.sh' | |
147 fi | |
148 |