6 You are running a potentially unstable version of SXEmacs. Please do
7 not report problems with Beta SXEmacs to comp.emacs.xemacs. Report
8 them to <sxemacs-devel@sxemacs.org>, preferably with
9 'M-x report-sxemacs-bug RET'.
14 *** SXEmacs Devel Mailing List <sxemacs-devel@sxemacs.org>
15 ----------------------------------------------------------
17 If you are not subscribed to the SXEmacs Devel list you should be.
18 Currently all discussion of development issues, including bug reports
19 and coding discussion, takes place on the SXEmacs Devel mailing list.
20 Only patches and administrative actions regarding patches are sent
21 elsewhere (to the SXEmacs Patches list).
23 *** SXEmacs Patches Mailing List <sxemacs-patches@sxemacs.org>
24 --------------------------------------------------------------
26 SXEmacs Patches records proposed changes to SXEmacs, and their
27 disposition. It is open subscription, and all patches that are
28 seriously proposed for inclusion in SXEmacs should be posted here. You
29 can follow progress of your patch by subscribing to the mailing list
30 or in the archives. You will be notified of the outcome of your
31 patch, whether it will be merged into the main code base or rejected.
32 If the latter, an explanation will be given also.
34 *** SXEmacs Builds Mailing List <sxemacs-builds@sxemacs.org>
35 ------------------------------------------------------------
37 The SXEmacs Builds list is where build reports (M-x build-rpt) are
38 sent. Discussion, although not banned, is encouraged to occur on the
41 *** List Administrivia
42 ----------------------
44 In the descriptions below, the word LIST (all uppercase) is a
45 variable. Substitute "devel", "patches", or "builds" as appropriate.
47 The SXEmacs mailing lists are managed by the Mailman mailing list
48 package, and the usual Mailman commands work. Do not send mailing
49 list requests to the main address (<sxemacs-LIST@sxemacs.org>), always
50 send them to <sxemacs-LIST-request@sxemacs.org>. If you have problems
51 with the list itself, they should be brought to the attention of the
52 SXEmacs Mailing List Owner <sxemacs-LIST-owner@sxemacs.org>. All
53 public mailing lists are archived. The URL is
55 http://www.sxemacs.org/list-archives/html/sxemacs-LIST
57 Note that the sxemacs-LIST-admin address is used internally by the
58 Mailman software; it is NOT a synonym for sxemacs-LIST-request.
60 *** Managing your subscription via the Web
61 ------------------------------------------
63 Subscription, unsubscription, and options (such as digests and
64 temporarily suspending delivery) can be accomplished via the web
65 interface at <http://www.sxemacs.org/mailman/listinfo/sxemacs-LIST>.
67 *** Subscribing by e-mail
68 -------------------------
70 Send an email message to <sxemacs-LIST-request@sxemacs.org> with
71 `subscribe' (without the quotes) as the BODY of the message.
73 *** Unsubscribing by e-mail
74 ---------------------------
76 Send an email message to <sxemacs-LIST-request@sxemacs.org> with
77 `unsubscribe' (without the quotes) as the BODY of the message.
79 ** Beta Release Schedule
80 ========================
87 The best way to get problems fixed in SXEmacs is to submit good problem
88 reports, 'M-x report-sxemacs-bug RET' will help you do this (assuming
89 you have a usable SXEmacs). Since this is beta software, problems are
90 certain to exist. Please read through all of part II of the SXEmacs
91 FAQ for an overview of problem reporting. Other items which are most
94 1. Do not submit C stack backtraces without line numbers. Since it
95 is possible to compile optimized with debug information with GCC
96 it is never a good idea to compile SXEmacs without the -g flag.
97 SXEmacs runs on a variety of platforms, and often it is not
98 possible to recreate problems which afflict a specific platform.
99 The line numbers in the C stack backtrace help isolate where the
100 problem is actually occurring.
102 2. Attempt to recreate the problem starting with an invocation of
103 SXEmacs with `sxemacs -no-autoloads'. Quite often, problems are
104 due to package interdependencies, and the like. An actual bug
105 in SXEmacs should be reproducible in a default configuration
106 without loading any special packages (or the one or two specific
107 packages that cause the bug to appear). If you have trouble
108 getting anything to work at all with the above invocation, use
109 `sxemacs -vanilla' instead. If you need to load your user init
110 file or the site file to get the problem to occur, then it has
111 something to do with them, and you should try to isolate the
112 issue in those files.
114 3. A picture can be worth a thousand words. When reporting an unusual
115 display, it is generally best to capture the problem in a screen
116 dump and include that with the problem report. The easiest way to
117 get a screen dump is to use the xv program and its grab function.
118 MIME is the preferred method for making the image attachments.
120 ** Getting the Source
121 =====================
123 See the file DISTRIB in this directory. Or, inside SXEmacs, do `C-h
126 * Compiling Beta SXEmacs
127 ========================
129 SXEmacs can be built inside or outside the source tree. The thing to
130 remember if you are building outside the source tree is that if
131 configure is further away than ../ you'll have to use the
132 `--srcdir=DIR' option.
134 Some of the maintainers build in a subdirectory of the top level
135 source tree. Usually naming their build directory something like
136 `=build'. The `=' prefix will allow the directory to not get in the
137 way of the version control system (GNU/arch (tla)).
139 cd to the top level of your build tree and run the autogen.sh script
140 found in the top level source tree:
144 This will generate, among other things, the Makefile.in files and the
145 configure script. (note that you can omit this step if you are
146 building from a tarball release)
149 Next, issue an appropriate configure command. One developer uses the
150 following at the time of this writing:
156 --with-scrollbars=athena \
158 --with-clash-detection \
161 --with-experimental-features=all \
162 CFLAGS='-ggdb3 -O3 -march=athlon-xp -mtune=athlon-xp'
165 Part of the configure output is a summary that looks something
166 like the following. (this summary is also available as the file
167 'Installation' in the top directory of your build tree, and via
168 the command 'M-x describe-installation RET').
170 uname -a: Linux bastard 2.6.26-rc1-00279-g28a4acb #10 PREEMPT Fri May 9 13:44:13 EST 2008 i686 AuthenticAMD AMD Athlon(TM) XP 2600+ GNU/Linux
172 ../configure '--prefix=/usr' '--with-ent=all' '--with-ase=all' '--with-scrollbars=athena' '--with-openssl' '--with-clash-detection' '--with-pop' '--without-gpm' '--with-experimental-features=all' 'CFLAGS=-ggdb3 -O3 -march=athlon-xp -mtune=athlon-xp' --enable-ltdl-install=no
175 SXEmacs steve@sxemacs.org--2008/sxemacs--main--22.1.9--patch-141 "Edsel" configured for `athlon-pc-linux-gnu'.
178 Compilation Environment and Installation Defaults:
179 Source code location: /usr/src/sxemacs/sxemacs--main--22.1.9
180 Installation prefix: /usr
181 Arch-dependent files go to: /usr/lib/sxemacs-22.1.9/athlon-pc-linux-gnu
182 Core emodules go to: /usr/lib/sxemacs-22.1.9/athlon-pc-linux-gnu/modules
183 Core lisp files go to: /usr/share/sxemacs-22.1.9/lisp
184 Additional external data goes to: /usr/share/sxemacs-22.1.9/etc
185 Operating system description file: `s/linux.h'
186 Not using any machine description file
187 Compiler version: gcc (Bastard Compiler Collection) 4.4.0 20080511 (experimental)
188 - GCC specs file: specs.
189 - Compiler command: gcc -std=gnu99 -fgnu89-inline -ggdb3 -O3 -march=athlon-xp -mtune=athlon-xp
190 - Global CPPFLAGS: -I/usr/include
191 - Global LDFLAGS: -Wl,--export-dynamic -L/usr/lib -lbind
192 libc version: 2.7.90...
193 Relocating allocator for buffers: yes
194 GNU version of malloc: yes
195 - Using Doug Lea's new malloc from the Linux C Library.
199 - Value of $prefix is compiled into the binary.
201 - Module search path:
202 /usr/src/sxemacs/.sxemacs/athlon-pc-linux-gnu/modules
203 /usr/lib/sxemacs/athlon-pc-linux-gnu/site-modules
204 /usr/lib/sxemacs-22.1.9/athlon-pc-linux-gnu/modules
206 - Package search path:
207 ~/.sxemacs/site-packages
208 ~/.sxemacs/xemacs-packages
209 ~/.sxemacs/mule-packages
210 ~/.sxemacs/sxemacs-packages
212 /usr/share/sxemacs/site-packages
213 /usr/share/sxemacs/xemacs-packages
214 /usr/share/sxemacs/mule-packages
215 /usr/share/sxemacs/sxemacs-packages
218 Runtime Error Checking:
219 Enabled Runtime Error Checking: extents types gc malloc byte_code bufpos glyphs
220 - extents (checks on extents)
221 - types (checks on types)
222 - gc (checks on garbage collection)
223 - malloc (checks on memory allocation)
224 - byte_code (checks on byte compiled code)
225 - bufpos (checks on buffer position)
226 - glyphs (checks on glyph data)
227 Disabled Runtime Error Checking: None.
228 WARNING: ---------------------------------------------------------
229 WARNING: SXEmacs will run noticeably more slowly as a result.
230 WARNING: Error checking is on by default for SXEmacs beta releases.
231 WARNING: ---------------------------------------------------------
234 How to link external libraries: dynamic
235 Foreign Function Interface:
236 Compiling in support for FFI.
237 Enhanced Number Types:
238 Enabled Enhanced Number Types: int fpfloat indef gmp mpfr mpc pseug quatern ecm
239 - int (native integer arithmetics)
240 - fpfloat (native fixed precision floats)
241 - indef (native abstract indefinites)
242 + mpz (Arbitrary precision integers)
243 (X) GMP (GNU multiprecision library)
244 - MPFR (Multiprecision Floats with correct Rounding)
245 + complex (Complex numbers as in C/R)
246 (X) MPC (Multiprecision Complex numbers (C/R))
247 ( ) pseudoC (native Complex Numbers (C/R)) available but omitted
248 - pseudoG (native Gaussian Numbers (Z+Z))
249 - Quaternions (native Quaternions (Z+Z+Z+Z))
250 - ECM (factorisations per Elliptic Curve Method)
251 Omitted Enhanced Number Types: pseuc
252 Disabled Enhanced Number Types: None.
253 Experimental Features:
254 Enabled Experimental Features: bdwgc compre asyneq
255 - bdwgc (the Boehm-Demers-Weiser collector)
256 - compre (exhaustive caching of compiled regexps)
257 - asyneq (asynchronous event queues)
258 Disabled Experimental Features: None.
261 Compiling in support for the X window system:
262 - X Windows headers location: /usr/X11/include
263 - X Windows libraries location: /usr/X11/lib
264 - Xau (X authority) not available.
265 - Handling WM_COMMAND properly.
266 Compiling in support for the Athena widget set:
267 - Athena headers location: X11/neXtaw
268 - Athena library to link: neXtaw
269 Using Lucid menubars.
270 Using Athena scrollbars.
271 Using Athena dialog boxes.
272 Using Athena native widgets.
273 Support for toolbars.
276 Compiling in support for ncurses.
279 File-based Databases:
280 Enabled File-based Databases: berkdb gdbm
281 - berkdb (Berkeley DB support)
282 - gdbm (GNU DBM support)
283 Disabled File-based Databases: dbm*
284 Compiling in support for further database interfaces:
285 - PostgreSQL (V7 bindings).
289 Enabled Image Formats: gif xpm png jpeg tiff xface
290 - GIF (GIF image format)
291 - XPM (X PixMap image format)
292 - PNG (Portable Network Graphic format)
293 - JPEG (jpeg image format)
294 - TIFF (TIFF image format)
295 - xface (base64 encoded xbm)
296 Disabled Image Formats: None.
298 Enabled Audio Outputs: alsa ao oss pulse
299 - ALSA (kernel-based linux sound standard)
300 - ao (generic audio output layer)
301 - OSS (Open Sound System)
302 - PulseAudio (versatile audio server)
303 Disabled Audio Outputs: arts* esd* jack* nas*
304 Media Stream Handlers:
305 Enabled Media Stream Handlers: ffmpeg internal mad sndfile sox magic
306 - FFmpeg (media streams handled by ffmpeg)
307 - internal (media streams handled internally)
308 - Mad (media streams handled by mad)
309 - sndfile (media streams handled by sndfile)
310 - SoX (media streams handled by sox)
311 - magic (file/libmagic support)
312 Disabled Media Stream Handlers: None.
315 Compiling in support for OpenSSL ciphers and digests.
316 - Submodules: RAND MD HMAC CIPHER HYBRID SIGN RSA DSA EC DH PEM SSL
318 Internationalization:
319 Compiling in support for Mule (multi-lingual Emacs).
320 Compiling in support for XIM (X11R5+ I18N input method).
321 - Using raw Xlib to provide XIM support.
324 Compiling in support for POP mail retrieval.
325 Compiling in support for "file" mail spool file locking method.
328 Dynamic Shared Object Modules:
329 Enabled Dynamic Shared Object Modules: ase cl
330 - ase (algebraic structures)
331 - cl (fast Common Lisp implementation)
332 Disabled Dynamic Shared Object Modules: None.
334 Enabled Static Modules: None.
335 Disabled Static Modules: ase cl
338 Inhibiting IPv6 canonicalization at startup.
339 Using the new portable dumper.
340 Compiling in support for extra debugging code.
343 + means not requested but enabled
344 * means requested but disabled
346 No bogus options. Have a nice build :)
354 ...and you should have a working SXEmacs. You may install via the
355 normal `make install'.
357 Note to distro packagers: This release of SXEmacs supports the
358 DESTDIR Makefile variable for installing to a packaging tmp root.
360 After you have verified that you have a functional editor, fire up
361 your favorite mail program and send a build report to
362 <sxemacs-builds@sxemacs.org>.
364 Preferably this is best done from SXEmacs, following these simple steps:
366 M-x customize-group RET build-rpt RET
373 [Note: these instructions have been partly updated, but not carefully
374 reviewed in some time. Caveat tester.]
376 Starting with XEmacs 21.1, much of the functionality of XEmacs has
377 been unbundled into "the packages." For more information about the
378 package system, see the Info nodes on Packages (in the XEmacs User
379 Manual) and on Packaging (in the Lisp Reference).
381 When bootstrapping SXEmacs, you may need to manually install some
382 packages (at least sxemacs-base and efs). These packages are available
383 by FTP at <ftp://ftp.xemacs.org/pub/xemacs/packages/>.
385 That last paragraph only applies if you do _NOT_ have FFI enabled in
386 your SXEmacs, or you don't have libcurl.so installed on your system.
388 ** Binary package installation
389 ==============================
391 Prerequisite: XEmacs 21.0-b1.
393 Binary packages are complete entities that can be untarred at the top
394 level of an XEmacs package hierarchy and work at runtime. To install files
395 in this directory, run the command `M-x package-admin-add-binary-package'
396 and fill in appropriate values to the prompts.
398 Hmm, that's a bit, erm, old fashioned. Sane people will simply select
399 a package mirror site and use PUI...
403 Tools->Packages->Set Download Site-><pick>
405 Then just... M-x pui-list-packages
407 Or if you do not have any packages installed yet, M-x pui-bootstrap
409 ** Building SXEmacs and XEmacs packages from scratch
410 ====================================================
412 To build everything completely from scratch isn't hard, just time
415 *** Step 1 - grab the sources (core and packages)
417 $ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs login
418 [password: "cvs" (sans quotes)]
420 $ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs co packages
422 That gets you all the XEmacs packages.
424 $ tla register-archive http://arch.sxemacs.org/2008
426 $ tla get steve@sxemacs.org--2006/sxemacs--main--22.1.9 sxemacs
428 That puts a copy of the latest SXEmacs sources into $PWD/sxemacs/
430 *** Step 2 - build SXEmacs
433 $ ./autogen.sh (not necessary for tarball releases)
434 $ ./configure [options...]
437 (use `make build-report' if you are planning to send in a build report
442 $ make install 2>&1 | tee ,,make-install.out
445 *** Step 3 - build and install the packages
448 $ cp Local.rules.template Local.rules
450 Then edit Local.rules to suit your needs/environment
451 see: (Info-goto-node "(sxemacs)Local.rules file") for details about
454 You'll most likely want to make the following changes to Local.rules:
456 XEMACS_BINARY = sxemacs
457 XEMACS_INSTALLED_PACKAGES_ROOT = /usr/local/share/sxemacs
458 BATCH = $(VANILLA) -batch -eval '(setq stack-trace-on-error t)' -l build-rpt
467 ** Creating patches for submission
468 ==================================
472 (Info-goto-node "(sppm)Patches")
474 All patches to SXEmacs that are seriously proposed for inclusion (eg,
475 bug fixes) should be mailed to <sxemacs-patches@sxemacs.org>. Each
476 patch will be reviewed by the SXEmacs team, and will be acknowledged and
477 added to the distribution, or rejected with an explanation. Progress of
478 the patch is tracked on the SXEmacs Patches mailing list, which is open
479 subscription. If a patch is simply intended to facilitate discussion,
480 send it to the SXEmacs Devel <sxemacs-devel@sxemacs.org> list instead, a
481 Cc to SXEmacs Patches is optional, but doesn't hurt.
483 The best way to go about getting your patches included into the
484 SXEmacs code base is to create your own GNU/arch branch of SXEmacs and
485 send your commit logs/merge requests to sxemacs-patches@sxemacs.org.
486 This can easily be set up via tla hooks.
488 The rest of this section applies to the XEmacs packages.
490 Patches to XEmacs Lisp packages should be sent to the maintainer of
491 the package. If the maintainer is listed as `XEmacs Development Team'
492 patches should be sent to <xemacs-patches@xemacs.org>.
496 C-u M-x package-get-info RET PKG_NAME RET maintainer RET
498 ...will put the PKG_NAME's package maintainer's name and email address
499 at point in the current buffer.
501 Emailed patches should preferably be sent in MIME format and quoted
502 printable encoding (if necessary).
504 The simplest way to create well-formed patches is to use CVS and
505 Didier Verna's Patcher library (available as patcher.el in the
506 xemacs-devel package). Patcher is new and requires some setup, but
507 most of the core developers are now using it for their own patches.
508 Patcher also can be configured to create patches for several projects,
509 and recognize the project from the directory it is invoked in. This
510 makes it a useful general tool (as long as XEmacs-style patches are
511 accepted at your other projects, which is likely since they conform to
514 When making patches by hand, please use the `-u' option. Using
515 ordinary (context-free) diffs are notoriously prone to error, since
516 line numbers tend to change when others make changes to the same
519 An example of the `diff' usage:
521 $ diff -u OLDFILE NEWFILE
523 Each patch should be accompanied by an update to the appropriate
524 ChangeLog file. Guidelines for writing ChangeLog entries is governed
525 by the GNU coding standards. Please see
526 <http://www.gnu.org/prep/standards_toc.html> [Change Logs section]
529 Do not submit context diffs (either -c or -u) of ChangeLogs. Because
530 of the "stack" nature of ChangeLogs (new entries are always pushed on
531 the top), context diffs will fail to apply more often than they
532 succeed. Simply cutting and pasting the entry from an Emacs buffer to
533 the mail buffer (beware of tab expansion!) is probably easiest. The
534 Patcher library also will set up your ChangeLogs for you, and copy
535 them to the mail. Context-less unified diffs (-U 0) are also
538 *** Patch discussion etiquette
539 -------------------------------
541 If you intend a patch for _application_ to the sources as is, _always_
542 post it to sxemacs-patches, even if there are minor points you would
543 like to have discussed by others. Not doing so will resulting in
544 patches getting "lost". If you expect that the patch will not be
545 acceptable, but are using it to stimulate discussion, then don't post
546 to sxemacs-patches. Intermediate cases are up to your judgment;
547 unless you're sure you'll follow up with a "real" patch, better to err
548 on the side of posting to sxemacs-patches.
550 ** Large contributions
551 ======================
553 Perhaps you have a whole new mode, or a major synchronization with
554 upstream for a neglected package, or a synchronization with GNU Emacs
555 you would like to contribute. We welcome such contributions, but they
556 are likely to be relatively controversial, generate more comments and
557 requests for revision, and take longer to integrate. Please be
558 patient with the process.
560 *** Syncing with GNU Emacs and/or XEmacs
561 ----------------------------------------
563 Syncing with GNU Emacs and XEmacs is an important activity. Although
564 each version has its advantages and areas of concentration, it is very
565 desirable that common functionality share specifications and APIs.
566 When porting GNU code to SXEmacs, the following points should be given
569 o Recent GNU Emacsen cannot be built without Mule, but SXEmacs can.
570 Make sure your changes do not assume the presence of Mule.
572 o GNU Emacs nomenclature often differs from that of SXEmacs.
573 Sometimes syncing the names is desirable, other times not.
575 o GNU Emacs functionality often differs from that of SXEmacs.
576 Syncing functionality is often controversial.
578 It is important that you let other developers know that
579 synchronization has taken place, to what degree, and when. For this
580 purpose, we use comments of the form
582 /* Synched up with: FSF 21.3 by Steve Youngs */
584 /* Synched up with: XEmacs 21.4.15 by Steve Youngs */
586 in the source file itself, as the last element of the prefatory
587 material (copyright notice and commentary). Obviously the comment
588 marker needs to be changed to leading semicolons for Lisp, but
589 otherwise the format is the same.
591 Rather than dates we use the version of GNU Emacs to sync to. If the
592 synchronization is partial, add a new comment describing what has
593 actually been synched, leaving the description of the last full sync
594 in place. At each full sync, remove all previous synchronization
597 This applies to Lisp that we have broken out into packages, but
598 remains in the GNU Emacs core, as well to core Lisp in XEmacs.