annotate README.packages @ 617:af57a77cbc92

[xemacs-hg @ 2001-06-18 07:09:50 by ben] --------------------------------------------------------------- DOCUMENTATION FIXES: --------------------------------------------------------------- eval.c: Correct documentation. elhash.c: Doc correction. --------------------------------------------------------------- LISP OBJECT CLEANUP: --------------------------------------------------------------- bytecode.h, buffer.h, casetab.h, chartab.h, console-msw.h, console.h, database.c, device.h, eldap.h, elhash.h, events.h, extents.h, faces.h, file-coding.h, frame.h, glyphs.h, gui-x.h, gui.h, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lrecord.h, lstream.h, mule-charset.h, objects.h, opaque.h, postgresql.h, process.h, rangetab.h, specifier.h, toolbar.h, tooltalk.h, ui-gtk.h: Add wrap_* to all objects (it was already there for a few of them) -- an expression to encapsulate a pointer into a Lisp object, rather than the inconvenient XSET*. "wrap" was chosen because "make" as in make_int(), make_char() is not appropriate. (It implies allocation. The issue does not exist for ints and chars because they are not allocated.) Full error checking has been added to these expressions. When used without error checking, non-union build, use of these expressions will incur no loss of efficiency. (In fact, XSET* is now defined in terms of wrap_* in a non-union build.) In a union build, you will also get no loss of efficiency provided that you have a decent optimizing compiler, and a compiler that either understands inlines or automatically inlines those particular functions. (And since people don't normally do their production builds on union, it doesn't matter.) Update the sample Lisp object definition in lrecord.h accordingly. dumper.c: Fix places in dumper that referenced wrap_object to reference its new name, wrap_pointer_1. buffer.c, bufslots.h, conslots.h, console.c, console.h, devslots.h, device.c, device.h, frame.c, frame.h, frameslots.h, window.c, window.h, winslots.h: -- Extract out the Lisp objects of `struct device' into devslots.h, just like for the other structures. -- Extract out the remaining (not copied into the window config) Lisp objects in `struct window' into winslots.h; use different macros (WINDOW_SLOT vs. WINDOW_SAVED_SLOT) to differentiate them. -- Eliminate the `dead' flag of `struct frame', since it duplicates information already available in `framemeths', and fix FRAME_LIVE_P accordingly. (Devices and consoles already work this way.) -- In *slots.h, switch to system where MARKED_SLOT is automatically undef'd at the end of the file. (Follows what winslots.h already does.) -- Update the comments at the beginning of *slots.h to be accurate. -- When making any of the above objects dead, zero it out entirely and reset all Lisp object slots to Qnil. (We were already doing this somewhat, but not consistently.) This (1) Eliminates the possibility of extra objects hanging around that ought to be GC'd, (2) Causes an immediate crash if anyone tries to access a structure in one of these objects, (3) Ensures consistent behavior wrt dead objects. dialog-msw.c: Use internal_object_printer, since this object should not escape. --------------------------------------------------------------- FIXING A CRASH THAT I HIT ONCE (AND A RELATED BAD BEHAVIOR): --------------------------------------------------------------- eval.c: Fix up some comments about the FSF implementation. Fix two nasty bugs: (1) condition_case_unwind frees the conses sitting in the catch->tag slot too quickly, resulting in a crash that I hit. (2) catches need to be unwound one at a time when calling unwind-protect code, rather than all at once at the end; otherwise, incorrect behavior can result. (A comment shows exactly how.) backtrace.h: Improve comment about FSF differences in the handler stack. --------------------------------------------------------------- FIXING A CRASH THAT I REPEATEDLY HIT WHEN USING THE MOUSE WHEEL UNDER MSWINDOWS: --------------------------------------------------------------- Basic idea: My crash is due either to a dead, non-marked, GC-collected frame inside of a window mirror, or a prematurely freed window mirror. We need to mark the Lisp objects inside of window mirrors. Tracking the lifespan of window mirrors and scrollbar instances is extremely hard, and there may well be lurking bugs where such objects are freed too soon. The only safe way to fix these problems (and it fixes both problems at once) is to make both of these structures Lisp objects. lrecord.h, emacs.c, inline.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, symsinit.h: Make scrollbar instances actual Lisp objects. Mark the window mirrors in them. inline.c needs to know about scrollbar.h now. Record the new type in lrecord.h. Fix up scrollbar-*.c appropriately. Create a hash table in scrollbar-msw.c so that the scrollbar instances stored in scrollbar HWND's are properly GC-protected. Create complex_vars_of_scrollbar_mswindows() to create the hash table at startup, and call it from emacs.c. Don't store the scrollbar instance as a property of the GTK scrollbar, as it's not used and if we did this, we'd have to separately GC-protect it in a hash table, like in MS Windows. lrecord.h, frame.h, frame.c, frameslots.h, redisplay.c, window.c, window.h: Move mark_window_mirror from redisplay.c to window.c. Make window mirrors actual Lisp objects. Tell lrecord.h about them. Change the window mirror member of struct frame from a pointer to a Lisp object, and add XWINDOW_MIRROR in appropriate places. Mark the scrollbar instances in the window mirror. redisplay.c, redisplay.h, alloc.c: Delete mark_redisplay. Don't call mark_redisplay. We now mark frame-specific structures in mark_frame. NOTE: I also deleted an extremely questionable call to update_frame_window_mirrors(). It was extremely questionable before, and now totally impossible, since it will create Lisp objects during redisplay. frame.c: Mark the scrollbar instances, which are now Lisp objects. Call mark_gutter() here, not in mark_redisplay(). gutter.c: Update comments about correct marking. --------------------------------------------------------------- ISSUES BROUGHT UP BY MARTIN: --------------------------------------------------------------- buffer.h: Put back these macros the way Steve T and I think they ought to be. I already explained in a previous changelog entry why I think these macros should be the way I'd defined them. Once again: We fix these macros so they don't care about the type of their lvalues. The non-C-string equivalents of these already function in the same way, and it's correct because it should be OK to pass in a CBufbyte *, a BufByte *, a Char_Binary *, an UChar_Binary *, etc. The whole reason for these different types is to work around errors caused by signed-vs-unsigned non-matching types. Any possible error that might be caught in a DFC macro would also be caught wherever the argument is used elsewhere. So creating multiple macro versions would add no useful error-checking and just further complicate an already complicated area. As for Martin's "ANSI aliasing" bug, XEmacs is not ANSI-aliasing clean and probably never will be. Unless the board agrees to change XEmacs in this way (and we really don't want to go down that road), this is not a bug. sound.h: Undo Martin's type change. signal.c: Fix problem identified by Martin with Linux and g++ due to non-standard declaration of setitimer(). systime.h: Update the docs for "qxe_" to point out why making the encapsulation explicit is always the right way to go. (setitimer() itself serves as an example.) For 21.4: update-elc-2.el: Correct misplaced parentheses, making lisp/mule not get recompiled.
author ben
date Mon, 18 Jun 2001 07:10:32 +0000
parents e7ef97881643
children 6728e641994e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
1 -*- Outline -*-
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
2 This file is in Outline mode. It is best viewed under XEmacs.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
3
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
4 Press C-c C-o (Ctrl+c Ctrl+o) now to see a list of headings.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
5 To expand a heading: Put the cursor on the heading and press C-c C-s
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
6 To collapse a heading: Press C-c C-d
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
7
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
8 For general XEmacs navigation tips: Press C-h t
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
9
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
10 The XEmacs Packages Quick Start Guide
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
11 -------------------------------------
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
12
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
13 This text is intended to help you get started installing a new XEmacs
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
14 and its packages from start. For details see the 'Startup Paths' and
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
15 'Packages' sections of the XEmacs info manual.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
16
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
17 * Real Real Quickstart FAQ
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
18 --------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
19
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
20 Q. Do I need to have the packages to compile XEmacs?
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
21 A. No, XEmacs will build and install just fine without any packages
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
22 installed. However, only the most basic editing functions will be
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
23 available with no packages installed, so installing packages is an
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
24 essential part of making your installed XEmacs _useful_.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
25
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
26 Q. I really liked the old way that packages were bundled and do not
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
27 want to mess with packages at all.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
28 A. You can grab all the packages at once like you used to with old
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
29 XEmacs versions, skip to the 'Sumo Tarball' section below.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
30
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 438
diff changeset
31 Q. After installing, I want XEmacs to do `foo', but when I invoke it
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 438
diff changeset
32 (or click the toolbar button or select the menu item), nothing (or
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 438
diff changeset
33 an error) happens, and it used to work.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 438
diff changeset
34 A. See the first FAQ; you may be missing a package that is essential to
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 438
diff changeset
35 you. You can either track it down and install it, or install the
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 438
diff changeset
36 `Sumo Tarball' (see the second FAQ).
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 438
diff changeset
37
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
38 * A note of caution
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
39 -------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
40
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
41 The XEmacs package system is still in its infancy. Please expect a few
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
42 minor hurdles on the way. Also neither the interface nor the structure is
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
43 set in stone. The XEmacs maintainers reserve the right to sacrifice
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
44 backwards compatibility as quirks are worked out over the coming
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
45 releases.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
46
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
47 * Some Package Theory
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
48 ---------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
49
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
50 In order to reduce the size and increase the maintainability of XEmacs,
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
51 the majority of the Elisp packages that came with previous releases
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
52 have been unbundled. They have been replaced by the package system.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
53 Each elisp add-on (or groups of them when they are small) now comes
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
54 in its own tarball that contains a small search hierarchy.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
55
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
56 You select just the ones you need. Install them by untarring them into
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
57 the right place. On startup XEmacs will find them, set up the load
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
58 path correctly, install autoloads, etc, etc.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
59
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
60 * Package hierarchies
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
61 ---------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
62
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
63 On Startup XEmacs looks for packages in so called package hierarchies.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
64 These can be specified by the 'package-path' parameter to the
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
65 'configure' script. However by default there are three system wide
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
66 hierarchies. ("$prefix" defaults to "/usr/local")
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
67
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
68 $prefix/lib/xemacs/xemacs-packages
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
69 Normal packages go here.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
70
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
71 $prefix/lib/xemacs/mule-packages
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
72 Mule packages go here and are only searched by MULE-enabled XEmacsen.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
73
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
74 $prefix/lib/xemacs/site-packages/
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
75 Local and 3rd party packages go here.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
76
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
77
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
78 * Where to get the packages
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
79 ---------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
80
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
81 Packages are available from ftp://ftp.xemacs.org/pub/xemacs/packages
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
82 and its mirrors.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
83
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
84 * How to install the packages
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
85 -----------------------------
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
86 There are a few different ways to install packages:
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
87
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
88 1. Manually, all at once, using the 'Sumo Tarball'.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
89 2. Manually, using individual package tarballs.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
90 3. Automatically, using the package tools from XEmacs.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
91
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
92 ** Manually, all at once, using the 'Sumo Tarball'
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
93 --------------------------------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
94
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
95 Those with little time, cheap connections and plenty of disk space can
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
96 install all the packages at once using the sumo tarballs.
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
97 Download the file:
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
98
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
99 xemacs-sumo.tar.gz
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
100
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
101 For an XEmacs compiled with Mule you also need:
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
102
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
103 xemacs-mule-sumo.tar.gz
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
104
333
4f79e16b1112 Import from CVS: tag r21-0-64
cvs
parents: 331
diff changeset
105 N.B. They are called 'Sumo Tarballs' for good reason. They are
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
106 currently about 19MB and 4.5MB (gzipped) respectively.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
107
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
108 Install them by:
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
109
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
110 cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
111
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
112 Or, if you have GNU tar:
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
113
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
114 cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
115
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
116 As the Sumo tarballs are not regenerated as often as the individual
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
117 packages, it is recommended that you use the automatic package tools
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
118 afterwards to pick up any recent updates.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
119
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
120 ** Manually, using individual package tarballs
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
121 ----------------------------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
122
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
123 Fetch the packages from the FTP site, CD-ROM whatever. The filenames
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
124 have the form name-<version>-pkg.tar.gz and are gzipped tar files. For
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
125 a fresh install it is sufficient to untar the file at the top of the
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
126 package hierarchy.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
127
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
128 Note: If you are upgrading packages already installed, it's best to
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
129 remove the old package first (see 'Upgrading/Removing Packages' below).
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
130
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
131 For example if we are installing the 'xemacs-base'
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
132 package (version 1.48):
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
133
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
134 mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
135 cd $prefix/lib/xemacs/xemacs-packages RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
136 gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
137
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
138 Or if you have GNU tar, the last step can be:
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
139
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
140 tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
141
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
142 For MULE related packages, it is best to untar into the mule-packages
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
143 hierarchy, i.e. for the mule-base package, version 1.37:
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
144
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
145 mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
146 cd $prefix/lib/xemacs/mule-packages RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
147 gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
148
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
149 Or if you have GNU tar, the last step can be:
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
150
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
151 tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
152
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
153
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
154 ** Automatically, using the package tools from XEmacs
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
155 -----------------------------------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
156
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
157 XEmacs comes with some tools to make the periodic updating and
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
158 installing easier. It will notice if new packages or versions are
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
159 available and will fetch them from the FTP site.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
160
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
161 Unfortunately this requires that a few packages are already in place.
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
162 You will have to install them by hand as above or use a SUMO tarball.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
163 This requirement will hopefully go away in the future. The packages
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
164 you need are:
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
165
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
166 efs - To fetch the files from the FTP site or mirrors.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
167 xemacs-base - Needed by efs.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
168
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
169 and optionally:
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
170
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
171 mule-base - Needed if you want to use XEmacs with MULE.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
172
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
173 After installing these by hand, fire up XEmacs and follow these
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
174 steps.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
175
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
176 Note: The menus in XEmacs 21.2.x and up have changed slightly, so
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
177 where I mention "Options -> Manage Packages", substitute "Tools ->
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
178 Packages".
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
179
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
180 (1) Choose a download site.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
181 - via menu: Options -> Manages Packages -> Add Download Site
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
182 - via keyb: M-x customize-variable RET package-get-remote RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
183 (put in the details of remote host and directory)
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
184
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
185 If the package tarballs _AND_ the package-index file are in a
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
186 local directory, you can: M-x pui-add-install-directory RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
187
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
188 (2) Obtain a list of packages and display the list in a buffer named
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
189 "*Packages*".
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
190 - menu: Options -> Manage Packages -> List & Install
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
191 - keyb: M-x pui-list-packages RET
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
192
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
193 XEmacs will now connect to the remote site and download the
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
194 latest package-index file. If you see an error about the
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
195 package-index entries not being PGP signed, you can safely
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
196 ignore this because PGP has not been integrated into the XEmacs
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
197 package tools yet.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
198
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
199 The resulting buffer, "*Packages*" has brief instructions at the
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
200 end of the buffer.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
201
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
202 (3) Choose the packages you wish to install.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
203 - mouse: Click button 2 on the package name.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
204 - keyb: RET on the package name
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
205
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
206 (4) Make sure you have everything you need.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
207 - menu: Packages -> Add Required
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
208 - keyb: r
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
209
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
210 XEmacs will now search for packages that are required by the
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
211 ones that you have chosen to install and offer to select
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
212 those packages also.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
213
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
214 For novices and gurus alike, this step can save your bacon.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
215 It's easy to forget to install a critical package.
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
216
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
217 (5) Download and install the packages.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
218 - menu: Packages -> Install/Remove Selected
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
219 - keyb: x
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
220
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
221 * After Installation
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
222 --------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
223
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
224 New packages can only be used by XEmacs after a restart.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
225
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
226 * Which Packages to install?
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
227 ----------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
228
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
229 This is difficult to say. When in doubt install a package. If you
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
230 administrate a big site it might be a good idea to just install
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
231 everything. A good minimal set of packages for XEmacs-latin1 would be
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
232
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
233 xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
234 edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
235 text-modes, time
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
236
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
237 If you are using the XEmacs package tools, don't forget to do:
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
238
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
239 Packages -> Add Required
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
240
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
241 To make sure you have everything that the packages you have chosen to
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
242 install need.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
243
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
244 See also '.../etc/PACKAGES' for further descriptions of the individual
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
245 packages.
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
246
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
247 * Upgrading/Removing Packages
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
248 -----------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
249
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
250 As the exact files and their locations contained in a package may
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 424
diff changeset
251 change it is recommended to remove a package first before installing a
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
252 new version. In order to facilitate removal each package contains an
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
253 pgkinfo/MANIFEST.pkgname file which list all the files belong to the
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
254 package. M-x package-admin-delete-binary-package RET can be used to
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
255 remove a package using this file.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
256
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
257 Note that the interactive package tools included with XEmacs already do
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
258 this for you.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
259
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
260 * User Package directories
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
261 --------------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
262
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
263 In addition to the system wide packages, each user can have his own
420
41dbb7a9d5f2 Import from CVS: tag r21-2-18
cvs
parents: 414
diff changeset
264 packages installed in "~/.xemacs/xemacs-packages". If you want to
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
265 install packages there using the interactive tools, you need to set
420
41dbb7a9d5f2 Import from CVS: tag r21-2-18
cvs
parents: 414
diff changeset
266 'pui-package-install-dest-dir' to "~/.xemacs/xemacs-packages"
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
267
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
268 * Site lisp/Site start
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
269 ----------------------
331
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
270
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
271 The site-packages hierarchy replaces the old 'site-lisp' directory.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
272 XEmacs no longer looks into a 'site-lisp' directly by default.
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
273 A good place to put 'site-start.el' would be in
c9ae480b1fff Import from CVS: tag r21-0-63
cvs
parents:
diff changeset
274 $prefix/lib/xemacs/site-packages/lisp/
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents: 420
diff changeset
275
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
276 * Finding the right packages
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
277 ----------------------------
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents: 420
diff changeset
278
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents: 420
diff changeset
279 If you want to find out which package contains the functionality you
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents: 420
diff changeset
280 are looking for, use M-x package-get-package-provider, and give it a
456
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
281 symbol that is likely to be in that package.
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
282
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
283 For example, if some code you want to use has a (require 'thingatpt)
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
284 in it:
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
285
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
286 M-x package-get-package-provider RET thingatpt RET
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
287
e7ef97881643 Import from CVS: tag r21-2-43
cvs
parents: 444
diff changeset
288 which will return something like: (fsf-compat "1.08").