428
|
1 -*- mode:outline -*-
|
|
2
|
|
3 * Introduction
|
|
4 ==============
|
|
5
|
743
|
6 You are running a potentially unstable version of XEmacs. Please do
|
|
7 not report problems with Beta XEmacs to comp.emacs.xemacs. Report
|
|
8 them to xemacs-beta@xemacs.org.
|
428
|
9
|
743
|
10 ** Mailing Lists
|
|
11 ================
|
|
12
|
|
13 *** XEmacs Beta Mailing List
|
|
14 ----------------------------
|
428
|
15
|
743
|
16 If you are not subscribed to the XEmacs beta list you should be.
|
|
17 Currently all discussion of development issues, including bug reports
|
|
18 and coding discussion, takes place on the XEmacs Beta mailing list.
|
|
19 Only patches and administrative actions regarding patches are sent
|
|
20 elsewhere (to the XEmacs Patches list).
|
|
21
|
|
22 ** XEmacs Patches Mailing List
|
|
23 ==============================
|
428
|
24
|
743
|
25 XEmacs Patches records proposed changes to XEmacs, and their
|
|
26 disposition. It is open subscription, but only patches and actions by
|
|
27 members of the XEmacs Review Board should be posted to this list. You
|
|
28 can follow progress of your patch by subscribing to the mailing list
|
|
29 or in the archives.
|
|
30
|
|
31 ** List Administrivia
|
|
32 =====================
|
428
|
33
|
743
|
34 In the descriptions below, the word LIST (all uppercase) is a
|
|
35 variable. Substitute "beta" or "patches" as appropriate (to get
|
|
36 "xemacs-beta" as the mailbox for the XEmacs Beta mailing list, or
|
|
37 http://www.xemacs.org/Lists/#xemacs-beta for its URL).
|
428
|
38
|
743
|
39 The XEmacs mailing lists are managed by the Mailman mailing list
|
|
40 package, and the usual Mailman commands work. Do not send mailing
|
|
41 list requests to the main address (xemacs-LIST@xemacs.org), always
|
|
42 send them to xemacs-LIST-request@xemacs.org. If you have problems
|
|
43 with the list itself, they should be brought to the attention of the
|
|
44 XEmacs Mailing List manager <list-manager@xemacs.org> (the same
|
|
45 mailbox, "list-manager", for all lists). All public mailing lists
|
|
46 have searchable archives. The URL is
|
|
47
|
|
48 http://list-archive.xemacs.org/xemacs-LIST
|
428
|
49
|
743
|
50 *** Managing your subscription via the Web
|
|
51 ------------------------------------------
|
|
52
|
|
53 Subscription, unsubscription, and options (such as digests and
|
|
54 temporarily suspending delivery) can be accomplished via the web
|
|
55 interface at http://www.xemacs.org/Lists/#xemacs-LIST.
|
428
|
56
|
743
|
57 *** Subscribing by e-mail
|
|
58 -------------------------
|
|
59
|
|
60 Send an email message to xemacs-LIST-request@xemacs.org with
|
|
61 `subscribe' (without the quotes) as the BODY of the message.
|
428
|
62
|
743
|
63 *** Unsubscribing by e-mail
|
|
64 ---------------------------
|
|
65
|
|
66 Send an email message to xemacs-LIST-request@xemacs.org with
|
|
67 `unsubscribe' (without the quotes) as the BODY of the message.
|
428
|
68
|
|
69 ** Beta Release Schedule
|
|
70 ========================
|
|
71
|
743
|
72 Betas are now released rather sporadically. We would like to achieve
|
|
73 a weekly release schedule, but personnel availability does not
|
|
74 permit. For access to the most recent code, use CVS (see
|
|
75 http://www.xemacs.org/Develop/cvsaccess.html for more information).
|
|
76 If you have need for FTP access, please let us know. It will make it
|
|
77 more likely that we release betas more often.
|
428
|
78
|
|
79 ** Reporting Problems
|
|
80 =====================
|
|
81
|
|
82 The best way to get problems fixed in XEmacs is to submit good problem
|
|
83 reports. Since this is beta software, problems are certain to exist.
|
|
84 Please read through all of part II of the XEmacs FAQ for an overview
|
|
85 of problem reporting. Other items which are most important are:
|
|
86
|
|
87 1. Do not submit C stack backtraces without line numbers. Since it
|
|
88 is possible to compile optimized with debug information with GCC
|
|
89 it is never a good idea to compile XEmacs without the -g flag.
|
|
90 XEmacs runs on a variety of platforms, and often it is not
|
|
91 possible to recreate problems which afflict a specific platform.
|
|
92 The line numbers in the C stack backtrace help isolate where the
|
|
93 problem is actually occurring.
|
|
94
|
|
95 2. Attempt to recreate the problem starting with an invocation of
|
743
|
96 XEmacs with `xemacs -q -no-site-file -no-autoloads'. Quite often,
|
|
97 problems are due to package interdependencies, and the like. An
|
|
98 actual bug in XEmacs should be reproducible in a default
|
|
99 configuration without loading any special packages (or the one or
|
|
100 two specific packages that cause the bug to appear). If you have
|
|
101 trouble getting anything to work at all with the above invocation,
|
|
102 use `xemacs -q -no-site-file' instead. If you need to load your
|
|
103 user init file or the site file to get the problem to occur, then
|
|
104 it has something to do with them, and you should try to isolate
|
|
105 the issue in those files.
|
428
|
106
|
|
107 3. A picture can be worth a thousand words. When reporting an
|
|
108 unusual display, it is generally best to capture the problem in a
|
|
109 screen dump and include that with the problem report. The easiest
|
|
110 way to get a screen dump is to use the xv program and its grab
|
|
111 function. Save the image as a GIF to keep bandwidth requirements
|
|
112 down without loss of information. MIME is the preferred method
|
|
113 for making the image attachments.
|
|
114
|
|
115 ** Getting the Source
|
|
116 =====================
|
|
117
|
|
118 In addition to the normal tar distribution, XEmacs source is now
|
743
|
119 available via CVS. Please see
|
|
120
|
|
121 http://www.xemacs.org/Develop/cvsaccess.html
|
428
|
122
|
|
123 * Compiling Beta XEmacs
|
|
124 =======================
|
|
125
|
|
126 ** Building an XEmacs from patches
|
|
127 ==================================
|
|
128
|
|
129 All beta releases of XEmacs are included with patches from the
|
|
130 previous version in an attempt to keep bandwidth requirements down.
|
|
131 Patches should be applied with the GNU patch program in something like
|
|
132 the following. Let's say you're upgrading XEmacs 20.15-beta10 to
|
|
133 XEmacs 20.15-beta11 and you have a full unmodified XEmacs 20.15-beta10
|
|
134 source tree to work with. Cd to the top level directory and issue the
|
|
135 shell command:
|
|
136
|
|
137 $ gunzip -c /tmp/xemacs-20.15-b10-20.15-b11.patch.gz | patch -p1
|
|
138
|
|
139 After patching, check to see that no patches were missed by doing
|
|
140 $ find . -name \*.rej -print
|
|
141
|
|
142 Any rejections should be treated as serious problems to be resolved
|
|
143 before building XEmacs.
|
|
144
|
|
145 After seeing that there were no rejections, issue the commands
|
|
146
|
|
147 $ ./config.status --recheck
|
|
148 $ make beta
|
|
149
|
|
150 and go play minesweep for a while on an older XEmacs while the binary
|
|
151 is rebuilt.
|
|
152
|
|
153 ** Building XEmacs from a full distribution
|
|
154 ==============================================
|
|
155
|
|
156 Locate a convenient place where you have at least 100MB of free space
|
|
157 and issue the command
|
|
158
|
|
159 $ gunzip -c /tmp/xemacs-20.15-b11.tar.gz | tar xvf -
|
|
160
|
|
161 (or simply `tar zxvf /tmp/xemacs-20.15-b11.tar.gz' if you use GNU tar).
|
|
162
|
|
163 cd to the top level directory and issue an appropriate configure
|
|
164 command. One maintainer uses the following at the time of this
|
|
165 writing:
|
|
166
|
|
167 ./configure \
|
|
168 --cflags="-mpentium -march=pentium -O6 -g -fno-peep-spills" \
|
|
169 --error-checking=all --debug=yes \
|
|
170 --with-scrollbars=athena3d --with-dialogs=athena3d \
|
|
171 --with-mule --with-xfs --with-xim=xlib
|
|
172
|
743
|
173 Part of the configure output is a summary that looks something like
|
|
174 the following. (In XEmacs 21.1 and later, this summary is also
|
|
175 available as the file Installation in the top directory of your build
|
|
176 tree, and via the command M-x describe-installation.)
|
428
|
177
|
|
178 uname -a: Linux altair.xemacs.org 2.0.32 #2 Sun Nov 16 18:52:14 PST 1997 i586
|
|
179
|
|
180 ./configure '--cflags=-mpentium -march=pentium -O6 -g -fno-peep-spills' '--error-checking=all' '--debug=yes' '--with-scrollbars=athena3d' '--with-dialogs=athena3d' '--with-mule' '--with-xfs' '--with-xim=xlib'
|
|
181
|
|
182
|
|
183 XEmacs 21.0-b34 "Oberhasli-pre2" configured for `i586-pc-linux'.
|
|
184
|
|
185 Where should the build process find the source code? /home/xemacs/xemacs-20.0
|
|
186 What installation prefix should install use? /usr/local
|
|
187 What operating system and machine description files should XEmacs use?
|
|
188 `s/linux.h' and `m/intel386.h'
|
|
189 What compiler should XEmacs be built with? gcc -mpentium -march=pentium -O6 -g -fno-peep-spills
|
|
190 Should XEmacs use the GNU version of malloc? yes
|
|
191 (Using Doug Lea's new malloc from the GNU C Library.)
|
|
192 Should XEmacs use the relocating allocator for buffers? yes
|
|
193 What window system should XEmacs use? x11
|
|
194 Where do we find X Windows header files? /usr/X11/include
|
|
195 Where do we find X Windows libraries? /usr/X11/lib
|
|
196 Compiling in support for XAUTH.
|
|
197 Compiling in support for XPM images.
|
|
198 Compiling in support for X-Face message headers.
|
|
199 Compiling in support for GIF image conversion.
|
|
200 Compiling in support for JPEG image conversion.
|
|
201 Compiling in support for PNG image conversion.
|
|
202 Compiling in support for TIFF image conversion.
|
|
203 Compiling in native sound support.
|
|
204 Compiling in support for Berkeley DB.
|
|
205 Compiling in support for GNU DBM.
|
|
206 Compiling in support for ncurses.
|
|
207 Compiling in support for GPM (General Purpose Mouse).
|
|
208 Compiling in Mule (multi-lingual) support.
|
|
209 Compiling in XIM (X11R5+ I18N input method) support.
|
|
210 Using raw Xlib to provide XIM support.
|
|
211 Using XFontSet to provide bilingual menubar.
|
|
212 Compiling in support for Canna on Mule.
|
|
213 Compiling in support for the WNN input method on Mule.
|
|
214 Using WNN version 6.
|
|
215 Compiling in support for OffiX.
|
|
216 Compiling in support for proper session-management.
|
|
217 Using Lucid menubars.
|
|
218 Using Athena-3d scrollbars.
|
|
219 Using Athena-3d dialog boxes.
|
|
220 Compiling in DLL support.
|
|
221 movemail will use "dot-locking" for locking mail spool files.
|
|
222 Using Lisp_Objects with minimal tagbits.
|
|
223 Compiling in extra code for debugging.
|
|
224 Compiling in code for checking XEmacs memory usage.
|
|
225 WARNING: ---------------------------------------------------------
|
|
226 WARNING: Compiling in support for runtime error checking.
|
|
227 WARNING: XEmacs will run noticeably more slowly as a result.
|
|
228 WARNING: Error checking is on by default for XEmacs beta releases.
|
|
229 WARNING: ---------------------------------------------------------
|
|
230
|
|
231
|
|
232
|
|
233 Then type `make' and you should have a working XEmacs.
|
|
234
|
|
235 After you have verified that you have a functional editor, fire up
|
|
236 your favorite mail program and send a build report to
|
649
|
237 xemacs-build-reports@xemacs.org.
|
|
238
|
|
239 Preferrably this is done from XEmacs, following these simple steps:
|
|
240
|
|
241 M-x customize-group RET build-report RET
|
|
242 M-x build-report RET
|
|
243
|
|
244 See also
|
|
245 http://www.xemacs.org/Releases/Public-21.2/tester.html#reporting
|
|
246
|
|
247 If you create the report manually by other means, here is what the
|
|
248 build report should include:
|
428
|
249
|
|
250 1. Your hardware configuration (OS version, etc.)
|
|
251
|
|
252 2. Version numbers of software in use (X11 version, system library
|
|
253 versions if appropriate, graphics library versions if appropriate).
|
|
254 If you're on a system like Linux, include all the version numbers
|
|
255 you can because chances are it makes a difference.
|
|
256
|
|
257 3. The options given to configure
|
|
258
|
|
259 4. The configuration report illustrated above
|
|
260
|
|
261 For convenience all of the above items are placed in a file called
|
|
262 `Installation' in the top level build directory. They are also
|
|
263 available by performing M-x describe-installation inside XEmacs.
|
|
264
|
|
265 5. Any other unusual items you feel should be brought to the attention
|
|
266 of the developers.
|
|
267
|
743
|
268
|
|
269 * Patching XEmacs
|
|
270 =================
|
|
271
|
428
|
272 ** Creating patches for submission
|
|
273 ==================================
|
|
274
|
|
275 Patches to XEmacs should be mailed to <xemacs-patches@xemacs.org>.
|
|
276 Each patch will be reviewed by the patches review board, and will be
|
743
|
277 acknowledged and added to the distribution, or rejected with an
|
|
278 explanation. Progress of the patch is tracked on the XEmacs Patches
|
|
279 mailing list, which is open subscription.
|
428
|
280
|
|
281 Patches to XEmacs Lisp packages should be sent to the maintainer of
|
|
282 the package. If the maintainer is listed as `XEmacs Development Team'
|
|
283 patches should be sent to <xemacs-patches@xemacs.org>.
|
|
284
|
|
285 Emailed patches should preferably be sent in MIME format and quoted
|
|
286 printable encoding (if necessary).
|
|
287
|
743
|
288 The simplest way to create well-formed patches is to use CVS and
|
|
289 Didier Verna's Patcher library (available as patcher.el in the
|
|
290 xemacs-devel package). Patcher is new and requires some setup, but
|
|
291 most of the core developers are now using it for their own patches.
|
|
292 Patcher also can be configured to create patches for several projects,
|
|
293 and recognize the project from the directory it is invoked in. This
|
|
294 makes it a useful general tool (as long as XEmacs-style patches are
|
|
295 accepted at your other projects, which is likely since they conform to
|
|
296 the GNU standards).
|
|
297
|
|
298 When making patches by hand, please use the `-u' option, or if your
|
|
299 diff doesn't support it, `-c'. Using ordinary (context-free) diffs
|
|
300 are notoriously prone to error, since line numbers tend to change when
|
428
|
301 others make changes to the same source file.
|
|
302
|
|
303 An example of the `diff' usage:
|
|
304
|
|
305 $ diff -u OLDFILE NEWFILE
|
|
306
|
|
307 -or-
|
|
308
|
|
309 $ diff -c OLDFILE NEWFILE
|
|
310
|
|
311 Also, it is helpful if you create the patch in the top level of the
|
|
312 XEmacs source directory:
|
|
313
|
|
314 $ cp -p lwlib/xlwmenu.c lwlib/xlwmenu.c.orig
|
|
315 hack, hack, hack....
|
|
316 $ diff -u lwlib/xlwmenu.c.orig lwlib/xlwmenu.c
|
|
317
|
|
318 Also note that if you cut & paste from an xterm to an XEmacs mail buffer
|
|
319 you will probably lose due to tab expansion. The best thing to do is
|
|
320 to use an XEmacs shell buffer to run the diff commands, or ...
|
|
321 M-x cd to the appropriate directory, and issue the command `C-u M-!' from
|
|
322 within XEmacs.
|
|
323
|
|
324 Patches should be as single-minded as possible. Mammoth patches can
|
|
325 be very difficult to place into the right slot. They are much easier
|
|
326 to deal with when broken down into functional or conceptual chunks.
|
|
327 The patches submitted by Kyle Jones and Hrvoje Niksic are stellar
|
|
328 examples of how to Do The Right Thing.
|
|
329
|
743
|
330 Each patch should be accompanied by an update to the appropriate
|
|
331 ChangeLog file. Guidelines for writing ChangeLog entries is governed
|
|
332 by the GNU coding standards. Please see
|
|
333 http://www.gnu.org/prep/standards_toc.html [Change Logs section]
|
|
334 for details.
|
|
335
|
|
336 Do not submit context diffs (either -c or -u) of ChangeLogs. Because
|
|
337 of the "stack" nature of ChangeLogs (new entries are always pushed on
|
|
338 the top), context diffs will fail to apply more often than they
|
|
339 succeed. Simply cutting and pasting the entry from an Emacs buffer to
|
|
340 the mail buffer (beware of tab expansion!) is probably easiest. The
|
|
341 Patcher library also will set up your ChangeLogs for you, and copy
|
|
342 them to the mail. Contextless unified diffs (-U 0) are also
|
|
343 acceptable but perhaps more trouble than they are worth.
|
428
|
344
|
743
|
345 *** Patch discussion etiquette
|
|
346 -------------------------------
|
428
|
347
|
743
|
348 If you intend a patch for _application_ to the sources as is, _always_
|
|
349 post it to xemacs-patches, even if there are minor points you would
|
|
350 like to have discussed by others. Not doing so will resulting in
|
|
351 patches getting "lost". If you expect that the patch will not be
|
|
352 acceptable, but are using it to stimulate discussion, then don't post
|
|
353 to xemacs-patches. Intermediate cases are up to your judgement;
|
|
354 unless you're sure you'll follow up with a "real" patch, better to err
|
|
355 on the side of posting to xemacs-patches.
|
|
356
|
|
357 Discussion of the _content_ of the patch (ie responses to reviewer
|
|
358 comments beyond "that's right, ok, I'll do it your way") should _always_
|
|
359 be posted to xemacs-beta. (We may split xemacs-beta into code
|
|
360 discussion and stuff that is more relevant to non-developer testers at
|
|
361 some point, but at this point xemacs-beta is the correct place for
|
|
362 this.)
|
428
|
363
|
743
|
364 If discussion results in a bright idea and you come up with a new
|
|
365 patch, normally you should post it to both mailing lists. The people
|
|
366 discussing on XEmacs Beta will want to know the outcome of the thread,
|
|
367 and you need to submit to XEmacs Patches as the "list of record."
|
428
|
368
|
743
|
369 If the old patch has been applied to CVS, then just submit the new one
|
|
370 as usual. If it has not been applied, then it is best to submit a new
|
|
371 patch against CVS. If possible do this as a reply to the original
|
|
372 patch post, or something following it in the thread. (The point is to
|
|
373 get the original patch post's Message-ID in your References header.)
|
|
374 In this case, also use the keyword SUPERCEDES in the Subject header to
|
|
375 indicate that the old patch is no longer valid, and that this one
|
|
376 replaces it.
|
|
377
|
|
378 These rules will result in a fair number of cross posts, but we don't
|
|
379 yet have a better way to handle that.
|
|
380
|
|
381 Note: Developers should never post to xemacs-patches unless there is a
|
|
382 patch in the post. We plan to enforce this with an automatic filter.
|
428
|
383
|
743
|
384 The exceptions are administrative. If you have commit authorization,
|
|
385 then post a short COMMIT notice to xemacs-patches when you commit to
|
|
386 CVS. Members of the Review Board will also post short notices of
|
|
387 administrative action (APPROVE, VETO, QUERY, etc) to xemacs-patches.
|
|
388
|
|
389 * Packages
|
|
390 ====================================
|
|
391
|
|
392 [Note: these instructions have been partly updated, but not carefully
|
|
393 reviewed in some time. Caveat tester.]
|
428
|
394
|
743
|
395 Starting with XEmacs 21.1, much of the functionality of XEmacs has
|
|
396 been unbundled into "the packages." For more information about the
|
|
397 package system, see the Info nodes on Packages (in the XEmacs User
|
|
398 Manual) and on Packaging (in the Lisp Reference).
|
|
399
|
|
400 When bootstrapping XEmacs, you may need to manually install some
|
|
401 packages (at least xemacs-base and efs). These packages are available
|
|
402 by FTP at ftp://ftp.xemacs.org/pub/xemacs/packages/.
|
|
403
|
|
404 ** Binary package installation
|
428
|
405 ================================================
|
|
406
|
|
407 Prerequisite: XEmacs 21.0-b1.
|
|
408
|
|
409 Binary packages are complete entities that can be untarred at the top
|
|
410 level of an XEmacs package hierarchy and work at runtime. To install files
|
|
411 in this directory, run the command `M-x package-admin-add-binary-package'
|
|
412 and fill in appropriate values to the prompts.
|
|
413
|
|
414 ** Manual procedures for package management
|
|
415 ===========================================
|
|
416
|
|
417 Prerequisite: XEmacs 21.0
|
|
418
|
|
419 When adding and deleting files from a lisp directory the
|
|
420 auto-autoloads.el (global symbols) and custom-load.el (Customization
|
|
421 groups) must be kept in synch. Assuming one is manipulating a
|
|
422 directory called `lisp-utils', the command to rebuild the
|
|
423 auto-autoloads.el file is:
|
|
424
|
743
|
425 xemacs -vanilla -batch -l autoload -f batch-update-directory lisp-utils
|
428
|
426
|
|
427 The command to rebuild the custom-load.el file is:
|
|
428
|
743
|
429 xemacs -vanilla -batch -l cus-dep -f Custom-make-dependencies lisp-utils
|
428
|
430
|
|
431 To bytecompile both of these files the command is:
|
|
432
|
743
|
433 xemacs -vanilla -batch -f batch-byte-compile \
|
440
|
434 lisp-utils/auto-autoloads.el lisp-utils/custom-load.el
|
428
|
435
|
|
436 ** Building XEmacs and XEmacs packages from scratch
|
|
437 ===================================================
|
|
438
|
|
439 To build everything completely from scratch (not a high priority as a
|
|
440 design goal), the following procedure should work. (I don't recommend
|
|
441 building this way).
|
|
442
|
|
443 *** Phase 1 -- Get a minimal XEmacs binary with mule to build the package
|
|
444 lisp with.
|
|
445
|
|
446 **** Grab a mule-base tarball and install it into a newly created package
|
|
447 directory.
|
|
448
|
|
449 **** Configure XEmacs with mule and a package-path including the
|
|
450 directory created above.
|
|
451
|
|
452 **** Do a `make dist' to build an XEmacs binary.
|
|
453
|
|
454 *** Phase 2 -- Build and install the package lisp.
|
|
455
|
|
456 **** Modify XEmacs.rules for local paths and the XEmacs binary created in
|
|
457 Phase 1.
|
|
458
|
|
459 **** Do a make from the top level package lisp source directory.[1]
|
|
460
|
|
461 **** Do `make bindist's on all the packages you wish to install and
|
|
462 remove the byproduct .tar.gz's.
|
|
463
|
|
464 *** Phase 3 -- If necessary, redump XEmacs
|
|
465 with the packages that require dump-time support and install it.
|
|
466
|
|
467 **** Reconfigure without Mule if you don't wish a Mule-ish XEmacs, and
|
|
468 rebuild XEmacs.
|
|
469
|
|
470 - or -
|
|
471
|
|
472 **** rm lib-src/DOC src/xemacs; make
|
|
473
|
|
474 **** Install or run in-place.
|
|
475
|
|
476 Note that this is in essence what `make all-elc' has always done.
|