444
+ − 1 @c This is part of the XEmacs manual.
+ − 2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
+ − 3 @c See file xemacs.texi for copying conditions.
+ − 4 @node Packages, Basic, Startup Paths, Top
428
+ − 5 @comment node-name, next, previous, up
+ − 6
+ − 7 @section Packages
+ − 8 @cindex packages
+ − 9
+ − 10 The XEmacs 21 distribution comes only with a very basic set of
+ − 11 built-in modes and packages. Most of the packages that were part of
+ − 12 the distribution of earlier versions of XEmacs are now available
+ − 13 separately. The installer as well as the user can choose which
+ − 14 packages to install; the actual installation process is easy.
+ − 15 This gives an installer the ability to tailor an XEmacs installation for
+ − 16 local needs with safe removal of unnecessary code.
+ − 17
+ − 18 @menu
+ − 19 * Package Terminology:: Understanding different kinds of packages.
458
+ − 20 * Installing Packages:: How to install packages.
+ − 21 * Building Packages:: Building packages from CVS sources.
462
+ − 22 * Local.rules File:: This is an important file that you must create.
448
+ − 23 * Creating Packages:: The basics.
458
+ − 24 * Available Packages:: A brief directory of packaged LISP.
428
+ − 25 @end menu
+ − 26
458
+ − 27 @node Package Terminology, Installing Packages, , Packages
428
+ − 28 @comment node-name, next, previous, up
458
+ − 29 @heading Package Terminology:
428
+ − 30 @subsection Package Flavors
+ − 31
+ − 32 There are two main flavors of packages.
+ − 33
+ − 34 @itemize @bullet
+ − 35 @item Regular Packages
+ − 36 @cindex regular packages
+ − 37 A regular package is one in which multiple files are involved and one
+ − 38 may not in general safely remove any of them.
+ − 39
+ − 40 @item Single-File Packages
+ − 41 @cindex single-file packages
+ − 42 A single-file package is an aggregate collection of thematically
+ − 43 related but otherwise independent lisp files. These files are bundled
+ − 44 together for download convenience and individual files may be deleted at
458
+ − 45 will without any loss of functionality. However, we would recommend
+ − 46 that you follow this rule of thumb: "When in doubt, don't delete".
428
+ − 47 @end itemize
+ − 48
+ − 49 @subsection Package Distributions
458
+ − 50 @cindex package distributions
428
+ − 51 XEmacs Lisp packages are distributed in two ways, depending on the
458
+ − 52 intended use. Binary Packages are for installers and end-users that can
428
+ − 53 be installed directly into an XEmacs package directory. Source Packages
+ − 54 are for developers and include all files necessary for rebuilding
+ − 55 bytecompiled lisp and creating tarballs for distribution.
+ − 56
+ − 57 @subsection Binary Packages
+ − 58 @cindex binary packages
+ − 59 Binary packages may be installed directly into an XEmacs package
+ − 60 hierarchy.
+ − 61
+ − 62 @subsection Source Packages
+ − 63 @cindex source packages
+ − 64 Source packages contain all of the Package author's (where appropriate
+ − 65 in regular packages) source code plus all of the files necessary to
+ − 66 build distribution tarballs (Unix Tar format files, gzipped for space
+ − 67 savings).
+ − 68
458
+ − 69 Currently, source packages are only available via CVS. See
+ − 70 @url{http://cvs.xemacs.org/} for details.
+ − 71 @node Installing Packages, Building Packages, Package Terminology, Packages
428
+ − 72 @comment node-name, next, previous, up
458
+ − 73 @cindex installing packages
+ − 74 @cindex install
+ − 75 @heading Installing Packages:
428
+ − 76 @subsection Getting Started
+ − 77
+ − 78 When you first download XEmacs 21, you will usually first grab the
+ − 79 @dfn{core distribution},
+ − 80 @cindex core distribution
+ − 81 a file called
458
+ − 82 @file{xemacs-21.x.x.tar.gz}. (Replace the @t{21.x.x} by the current version
428
+ − 83 number.) The core distribution contains the sources of XEmacs and a
+ − 84 minimal set of Emacs Lisp files, which are in the subdirectory named
+ − 85 @file{lisp}. This subdirectory used to contain all Emacs Lisp files
+ − 86 distributed with XEmacs. Now, to conserve disk space, most
+ − 87 non-essential packages were made optional.
+ − 88
+ − 89 @subsection Choosing the Packages You Need
458
+ − 90 @cindex choosing packages
+ − 91 The @ref{Available Packages} can currently be found in the same ftp directory
428
+ − 92 where you grabbed the core distribution from, and are located in the
458
+ − 93 subdirectory @file{packages}. Package file names follow
428
+ − 94 the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
+ − 95
+ − 96 If you have EFS @ref{(EFS)}, packages can be installed over the network.
+ − 97 Alternatively, if you have copies of the packages locally, you can
+ − 98 install packages from a local disk or CDROM.
+ − 99
+ − 100 The file @file{etc/PACKAGES} in the core distribution contains a list of
458
+ − 101 the @ref{Available Packages} at the time of the XEmacs release. Packages are
428
+ − 102 also listed on the @code{Options} menu under:
+ − 103
+ − 104 @example
462
+ − 105 Options->Customize->Emacs->Packages
428
+ − 106 @end example
+ − 107
+ − 108 However, don't select any of these menu picks unless you actually want
+ − 109 to install the given package (and have properly configured your system
+ − 110 to do so).
+ − 111
+ − 112 You can also get a list of available packages, and whether or not they
+ − 113 are installed, using the visual package browser and installer. You can
+ − 114 access it via the menus:
+ − 115
+ − 116 @example
462
+ − 117 Options->Manage Packages->List & Install
428
+ − 118 @end example
+ − 119
+ − 120 Or, you can get to it via the keyboard:
+ − 121
+ − 122 @example
+ − 123 M-x pui-list-packages
+ − 124 @end example
+ − 125
+ − 126 Hint to system administrators of multi-user systems: it might be a good
+ − 127 idea to install all packages and not interfere with the wishes of your
+ − 128 users.
+ − 129
+ − 130 If you can't find which package provides the feature you require, try
+ − 131 using the @code{package-get-package-provider} function. Eg., if you know
+ − 132 that you need @code{thingatpt}, type:
+ − 133
+ − 134 @example
+ − 135 M-x package-get-package-provider RET thingatpt
+ − 136 @end example
+ − 137
458
+ − 138 which will return something like (fsf-compat "1.08"). You can the use
428
+ − 139 one of the methods above for installing the package you want.
+ − 140
+ − 141 @subsection XEmacs and Installing Packages
+ − 142
458
+ − 143 There are three main ways to install packages:
+ − 144
+ − 145 @menu
+ − 146 * Sumo:: All at once, using the 'Sumo Tarball'.
+ − 147 * Manually:: Using individual package tarballs.
+ − 148 * Automatically:: Using the package tools from XEmacs.
+ − 149 * Which Packages:: Which packages to install.
+ − 150 * Removing Packages:: Removing packages.
+ − 151 @end menu
+ − 152
+ − 153 But regardless of the method you use to install packages, they can only
+ − 154 be used by XEmacs after a restart.
+ − 155
+ − 156 @node Sumo, Manually, ,Installing Packages
+ − 157 @comment node-name, next, previous, up
+ − 158 @cindex sumo package install
+ − 159 @heading Installing the Sumo Packages:
+ − 160 Those with little time, cheap connections and plenty of disk space can
+ − 161 install all the packages at once using the sumo tarballs.
+ − 162 Download the file: @file{xemacs-sumo.tar.gz}
+ − 163
+ − 164 For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
+ − 165
+ − 166 N.B. They are called 'Sumo Tarballs' for good reason. They are
+ − 167 currently about 19MB and 4.5MB (gzipped) respectively.
+ − 168
+ − 169 Install them by:
+ − 170
+ − 171 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
+ − 172
+ − 173 Or, if you have GNU tar:
+ − 174
+ − 175 @code{cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
+ − 176
+ − 177 As the Sumo tarballs are not regenerated as often as the individual
+ − 178 packages, it is recommended that you use the automatic package tools
+ − 179 afterwards to pick up any recent updates.
+ − 180
+ − 181 @node Manually, Automatically, Sumo, Installing Packages
+ − 182 @comment node-name, next, previous, up
+ − 183 @cindex manual package install
+ − 184 @heading Manual Package Installation:
+ − 185 Fetch the packages from the FTP site, CD-ROM whatever. The filenames
+ − 186 have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
+ − 187 a fresh install it is sufficient to untar the file at the top of the
+ − 188 package hierarchy.
+ − 189
+ − 190 Note: If you are upgrading packages already installed, it's best to
+ − 191 remove the old package first @ref{Removing Packages}.
+ − 192
+ − 193 For example if we are installing the @file{xemacs-base}
+ − 194 package (version 1.48):
428
+ − 195
+ − 196 @example
458
+ − 197 mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+ − 198 cd $prefix/lib/xemacs/xemacs-packages RET
+ − 199 gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
442
+ − 200
458
+ − 201 Or if you have GNU tar, the last step can be:
428
+ − 202
458
+ − 203 tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
428
+ − 204 @end example
+ − 205
458
+ − 206 For MULE related packages, it is best to untar into the mule-packages
+ − 207 hierarchy, i.e. for the @file{mule-base} package, version 1.37:
+ − 208
+ − 209 @example
+ − 210 mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+ − 211 cd $prefix/lib/xemacs/mule-packages RET
+ − 212 gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+ − 213
+ − 214 Or if you have GNU tar, the last step can be:
+ − 215
+ − 216 tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
+ − 217 @end example
428
+ − 218
458
+ − 219 @node Automatically, Which Packages ,Manually, Installing Packages
+ − 220 @comment node-name, next, previous, up
+ − 221 @cindex automatic package install
+ − 222 @cindex package tools
+ − 223 @heading Automatic Package Installation:
+ − 224 XEmacs comes with some tools to make the periodic updating and
+ − 225 installing easier. It will notice if new packages or versions are
+ − 226 available and will fetch them from the FTP site.
428
+ − 227
458
+ − 228 Unfortunately this requires that a few packages are already in place.
+ − 229 You will have to install them by hand as above or use a SUMO tarball.
+ − 230 This requirement will hopefully go away in the future. The packages
+ − 231 you need are:
428
+ − 232
+ − 233 @example
458
+ − 234 efs - To fetch the files from the FTP site or mirrors.
+ − 235 xemacs-base - Needed by efs.
+ − 236
+ − 237 and optionally:
+ − 238
+ − 239 mule-base - Needed if you want to use XEmacs with MULE.
428
+ − 240 @end example
+ − 241
458
+ − 242 After installing these by hand, fire up XEmacs and follow these
+ − 243 steps.
+ − 244
+ − 245 Note: The menus in XEmacs 21.2.x and up have changed slightly, so
+ − 246 where I mention "Options -> Manage Packages", substitute "Tools ->
+ − 247 Packages".
+ − 248
+ − 249 @enumerate 1
+ − 250 @item Choose a download site.
+ − 251 via menu: Options -> Manages Packages -> Add Download Site
+ − 252 via keyb: @code{M-x customize-variable RET package-get-remote RET}
+ − 253 (put in the details of remote host and directory)
428
+ − 254
458
+ − 255 If the package tarballs _AND_ the package-index file are in a
+ − 256 local directory, you can: @code{M-x pui-add-install-directory RET}
+ − 257
+ − 258 @item Obtain a list of packages and display the list in a buffer named
+ − 259 @file{*Packages*}.
+ − 260 menu: Options -> Manage Packages -> List & Install
+ − 261 keyb: @code{M-x pui-list-packages RET}
+ − 262
+ − 263 XEmacs will now connect to the remote site and download the
+ − 264 latest package-index file. If you see an error about the
+ − 265 package-index entries not being PGP signed, you can safely
+ − 266 ignore this because PGP has not been integrated into the XEmacs
+ − 267 package tools yet.
428
+ − 268
+ − 269 The visual package browser will then display a list of all packages.
+ − 270 Help information will be displayed at the very bottom of the buffer; you
+ − 271 may have to scroll down to see it. You can also press @kbd{?} to get
+ − 272 the same help. From this buffer, you can tell the package status by the
+ − 273 character in the first column:
+ − 274
+ − 275 @table @kbd
+ − 276 @item -
+ − 277 The package has not been installed.
+ − 278 @item *
+ − 279 The package has been installed, but a newer version is available. The
+ − 280 current version is out-of-date.
+ − 281 @item +
+ − 282 The package has been marked for installation/update.
+ − 283 @end table
+ − 284
+ − 285 If there is no character in the first column, the package has been
+ − 286 installed and is up-to-date.
+ − 287
+ − 288 From here, you can select or unselect packages for installation using
+ − 289 the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from
+ − 290 the (Popup) Menu.
+ − 291 Once you've finished selecting the packages, you can
+ − 292 press the @kbd{x} key (or use the menu) to actually install the
+ − 293 packages. Note that you will have to restart XEmacs for XEmacs to
+ − 294 recognize any new packages.
+ − 295
+ − 296 Key summary:
+ − 297
+ − 298 @table @kbd
+ − 299 @item ?
+ − 300 Display simple help.
+ − 301 @item @key{RET}
+ − 302 @itemx @key{Mouse-2}
+ − 303 Toggle between selecting and unselecting a package for installation.
+ − 304 @item x
+ − 305 Install selected packages.
+ − 306 @item @key{SPC}
+ − 307 View, in the minibuffer, additional information about the package, such
+ − 308 as the package date (not the build date) and the package author. Moving
+ − 309 the mouse over a package name will also do the same thing.
+ − 310 @item v
+ − 311 Toggle between verbose and non-verbose package display.
+ − 312 @item g
+ − 313 Refresh the package display.
+ − 314 @item q
+ − 315 Kill the package buffer.
+ − 316 @end table
+ − 317
+ − 318 Moving the mouse over a package will also cause additional information
+ − 319 about the package to be displayed in the minibuffer.
+ − 320
+ − 321
458
+ − 322 @item Choose the packages you wish to install.
+ − 323 mouse: Click button 2 on the package name.
+ − 324 keyb: @kbd{RET} on the package name
+ − 325
+ − 326 @item Make sure you have everything you need.
+ − 327 menu: Packages -> Add Required
+ − 328 keyb: @kbd{r}
428
+ − 329
458
+ − 330 XEmacs will now search for packages that are required by the
+ − 331 ones that you have chosen to install and offer to select
+ − 332 those packages also.
428
+ − 333
458
+ − 334 For novices and gurus alike, this step can save your bacon.
+ − 335 It's easy to forget to install a critical package.
428
+ − 336
458
+ − 337 @item Download and install the packages.
+ − 338 menu: Packages -> Install/Remove Selected
+ − 339 keyb: @kbd{x}
+ − 340 @end enumerate
428
+ − 341
+ − 342 You can also install packages using a semi-manual interface:
+ − 343
+ − 344 @example
+ − 345 M-x package-get-all <return>
+ − 346 @end example
+ − 347
+ − 348 Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
458
+ − 349 will search for the latest version and install it and any packages that
428
+ − 350 it depends upon.
+ − 351
458
+ − 352 @node Which Packages, Removing Packages, Automatically, Installing Packages
+ − 353 @comment node-name, next, previous, up
+ − 354 @cindex which packages
+ − 355 @cindex choosing packages
+ − 356 @heading Which Packages to Install:
+ − 357 This is difficult to say. When in doubt install a package. If you
+ − 358 administrate a big site it might be a good idea to just install
+ − 359 everything. A good minimal set of packages for XEmacs-latin1 would be
428
+ − 360
458
+ − 361 xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+ − 362 edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+ − 363 text-modes, time
428
+ − 364
458
+ − 365 If you are using the XEmacs package tools, don't forget to do:
428
+ − 366
458
+ − 367 Packages -> Add Required
428
+ − 368
458
+ − 369 To make sure you have everything that the packages you have chosen to
+ − 370 install need.
+ − 371
+ − 372 See also @ref{Available Packages} for further descriptions of the individual
+ − 373 packages.
428
+ − 374
458
+ − 375 @node Removing Packages, ,Which Packages, Installing Packages
+ − 376 @comment node-name, next, previous, up
+ − 377 @cindex removing packages
+ − 378 @cindex deleting packages
+ − 379 @heading Removing Packages:
+ − 380 Because the exact files and their locations contained in a package may
+ − 381 change it is recommended to remove a package first before installing a
+ − 382 new version. In order to facilitate removal each package contains an
+ − 383 @file{pgkinfo/MANIFEST.pkgname} file which list all the files belonging
+ − 384 to the package.
428
+ − 385
458
+ − 386 No need to panic, you don't have to go through the
+ − 387 @file{pkinfo/MANIFEST.pkgname} and manually delete the files. Instead, use
+ − 388 @code{M-x package-admin-delete-binary-package RET}.
428
+ − 389
458
+ − 390 Note that the interactive package tools included with XEmacs already do
+ − 391 this for you.
428
+ − 392
458
+ − 393 @node Building Packages, Local.rules File, Installing Packages, Packages
428
+ − 394 @comment node-name, next, previous, up
458
+ − 395 @cindex building packages
+ − 396 @cindex package building
+ − 397 @heading Building Packages:
+ − 398 Currently, source packages are only available via anonymous CVS. See
+ − 399 @url{http://cvs.xemacs.org/} for details of checking out the
+ − 400 @file{xemacs-packages} module.
428
+ − 401
+ − 402 @subsection Prerequisites for Building Source Packages
+ − 403
458
+ − 404 @table @code
+ − 405 @item GNU cp
462
+ − 406 @item GNU install
458
+ − 407 (or a BSD compatible install program).
+ − 408 @item GNU make
+ − 409 (3.75 or later preferred).
+ − 410 @item makeinfo
+ − 411 (1.68 from texinfo-3.11 or later required).
+ − 412 @item GNU tar
+ − 413 (or equivalent).
+ − 414 @item GNU gzip
+ − 415 (or equivalent).
+ − 416 @item A properly configured @file{Local.rules} file.
+ − 417 @ref{Local.rules File}.
+ − 418 @end table
+ − 419 And of course, XEmacs 21.0 or higher.
428
+ − 420
+ − 421 @subsection What You Can Do With Source Packages
+ − 422
458
+ − 423 The packages CVS sources are most useful for creating XEmacs package
+ − 424 tarballs for installation into your own XEmacs installations or for
428
+ − 425 distributing to others.
+ − 426
+ − 427 Supported operations from @file{make} are:
+ − 428
+ − 429 @table @code
+ − 430 @item all
+ − 431 Bytecompile all files, build and bytecompile byproduct files like
+ − 432 @file{auto-autoloads.el} and @file{custom-load.el}. Create info version
+ − 433 of TeXinfo documentation if present.
+ − 434
458
+ − 435 @item bindist
+ − 436 Does a @code{make all} as well as create a binary package tarball in the
+ − 437 staging directory.
+ − 438
+ − 439 @item install
+ − 440 Bytecompile all files, build and bytecompile byproduct files like
+ − 441 @file{auto-autoloads.el} and @file{custom-load.el}. Create info version
+ − 442 of TeXinfo documentation if present. And install everything into the
+ − 443 staging directory.
+ − 444
428
+ − 445 @item srckit
448
+ − 446 Usually aliased to @code{srckit-std}. This does a @code{make
428
+ − 447 distclean} and creates a package source tarball in the staging
+ − 448 directory. This is generally only of use for package maintainers.
+ − 449
+ − 450 @item binkit
+ − 451 May be aliased to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
+ − 452 @code{binkit-sourcedata}, or
+ − 453 @code{binkit-sourcedatainfo}. @code{sourceonly} indicates there is
+ − 454 nothing to install in a data directory or info directory.
+ − 455 @code{sourceinfo} indicates that source and info files are to be
+ − 456 installed. @code{sourcedata} indicates that source and etc (data) files
+ − 457 are to be installed. @code{sourcedatainfo} indicates source, etc
+ − 458 (data), and info files are to be installed. A few packages have needs
+ − 459 beyond the basic templates so this is not yet complete.
+ − 460
+ − 461 @item dist
+ − 462 Runs the rules @code{srckit} followed by @code{binkit}. This is
+ − 463 primarily of use by XEmacs maintainers producing files for distribution.
+ − 464
458
+ − 465 @item clean
+ − 466 Remove all built files except @file{auto-autoloads.el} and @file{custom-load.el}.
+ − 467
+ − 468 @item distclean
+ − 469 Remove all created files.
428
+ − 470 @end table
444
+ − 471
458
+ − 472 @node Local.rules File, Creating Packages, Building Packages, Packages
448
+ − 473 @comment node-name, next, previous, up
458
+ − 474 @cindex local.rules
+ − 475 @heading The Local.rules File:
+ − 476 This file is used when building and installing packages from source. In
+ − 477 the top level of the CVS module, @file{xemacs-packages}, contains the
+ − 478 file, @file{Local.rules.template}. Simply copy that to
+ − 479 @file{Local.rules} and edit it to suit your needs.
448
+ − 480
458
+ − 481 These are the variables in 'Local.rules' that you will need to
+ − 482 address.
+ − 483
+ − 484 @table @var
+ − 485 @item symlink =
+ − 486 Set this to 't' if you want to do a "run in place".
+ − 487 Setting this doesn't work well with 'make bindist'
+ − 488
+ − 489 @item XEMACS_PACKAGES =
+ − 490 This is where you set the normal packages that you
+ − 491 want to install. eg:
+ − 492 @example
+ − 493 XEMACS_PACKAGES = libs/xemacs-base comm/bbdb
+ − 494 @end example
+ − 495
+ − 496 @item XEMACS_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Packages
+ − 497 Set this to where you want normal packages to be
+ − 498 installed to.
+ − 499
+ − 500 @item PACKAGE_INDEX = package-index
+ − 501 If you want the package-index file to have a different
+ − 502 name, change this.
+ − 503
+ − 504 @item BUILD_WITHOUT_MULE =
+ − 505 Building from CVS defaults to building the Mule
+ − 506 packages. Set this to 't' if you don't want/have Mule
+ − 507
+ − 508 @item MULE_PACKAGES =
+ − 509 Same as for 'XEMACS_PACKAGES' except you list the Mule
+ − 510 packages you want to install here. eg:
+ − 511 @example
+ − 512 MULE_PACKAGES = mule/mule-base mule/skk
+ − 513 @end example
+ − 514
+ − 515 @item MULE_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Mule-Packages
+ − 516 Set this to where you want Mule packages installed
+ − 517 to. Note: 'make bindist' does not use this variable.
+ − 518
+ − 519 @item XEMACS = xemacs
+ − 520 If your XEmacs isn't in your path, change this.
+ − 521
+ − 522 @item XEMACS_NATIVE_NT =
+ − 523 Set this to 't' if you are building on WinNT.
+ − 524
+ − 525 @item INSTALL = install -c
+ − 526 The path to your BSD compatible install program.
+ − 527
+ − 528 @item TAR = tar
+ − 529 The path to your tar program
+ − 530
+ − 531 @item BZIP2 =
+ − 532 If you want bzip2 tarballs, set this.
+ − 533
+ − 534 @item MAKEINFO = makeinfo
+ − 535 The path to your makeinfo program
+ − 536 @end table
+ − 537
+ − 538
+ − 539 @node Creating Packages, Available Packages, Local.rules File, Packages
+ − 540 @comment node-name, next, previous, up
+ − 541 @cindex creating packages
+ − 542 @heading Creating Packages:
448
+ − 543 Creating a package from an existing Lisp library is not very difficult.
+ − 544
+ − 545 In addition to the Lisp libraries themselves, you need a
+ − 546 @file{package-info.in} file and a simple @file{Makefile}. The rest is
+ − 547 done by @file{XEmacs.rules}, part of the packaging system
+ − 548 infrastructure.
+ − 549
+ − 550 @file{package-info.in} contains a single Lisp form like this:
+ − 551
+ − 552 @example
+ − 553 (name ; your package's name
+ − 554 (standards-version 1.1
+ − 555 version VERSION
+ − 556 author-version AUTHOR_VERSION
+ − 557 date DATE
+ − 558 build-date BUILD_DATE
+ − 559 maintainer MAINTAINER
+ − 560 distribution xemacs ; change to "mule" if MULE is needed
+ − 561 priority high
+ − 562 category CATEGORY
+ − 563 dump nil
+ − 564 description "description" ; a one-line description string
+ − 565 filename FILENAME
+ − 566 md5sum MD5SUM
+ − 567 size SIZE
+ − 568 provides (feature1 feature2) ; one for every `provides' form
+ − 569 requires (REQUIRES)
+ − 570 type regular
+ − 571 ))
+ − 572 @end example
+ − 573
+ − 574 You must fill in the four commented lines. The value of @code{name} is
+ − 575 the name of your package as an unquoted symbol. Normally it is the name
+ − 576 of the main Lisp file or principal feature provided. The allowed values
+ − 577 for distribution are @code{xemacs} and @code{mule}. Write them as
+ − 578 unquoted symbols. The @code{description} is a quoted Lisp string; use
+ − 579 the usual conventions. The value for @code{provides} is a list of
+ − 580 feature symbols (written unquoted). All of the features provided by
+ − 581 libraries in your package should be elements of this list. Implementing
+ − 582 an automatic method for generating the @file{provides} line is
+ − 583 desirable, but as yet undone.
+ − 584
+ − 585 The variables in upper-case are references to variables set in the
+ − 586 @file{Makefile} or automatically generated. Do not change them; they
+ − 587 are automatically filled in by the build process.
+ − 588
+ − 589 The remaining lines refer to implementation constants
+ − 590 (@code{standards-version}), or features that are unimplemented or have
+ − 591 been removed (@code{priority} and @code{dump}). The @code{type} line is
+ − 592 not normally relevant to external maintainers; the alternate value is
+ − 593 @code{single-file}, which refers to packages consed up out of a number
+ − 594 of single-file libraries that are more or less thematically related. An
+ − 595 example is @code{prog-modes}. Single-file packages are basically for
+ − 596 administrative convenience, and new packages should generally be created
+ − 597 as regular packages.
+ − 598
+ − 599 The @file{Makefile} is quite stylized. The idea is similar to an
+ − 600 @file{Imakefile} or an @code{automake} file: the complexity is hidden in
+ − 601 generic rules files, in this case the @file{XEmacs.rules} include file
+ − 602 in the top directory of the packages hierarchy. Although a number of
+ − 603 facilities are available for complex libraries, most simple packages'
+ − 604 @file{Makefile}s contain a copyright notice, a few variable definitions,
+ − 605 an include for @file{XEmacs.rules}, and a couple of standard targets.
+ − 606
+ − 607 The first few @code{make} variables defined are @code{VERSION},
+ − 608 @code{AUTHOR_VERSION}, @code{MAINTAINER}, @code{PACKAGE},
+ − 609 @code{PKG_TYPE}, @code{REQUIRES}, and @code{CATEGORY}. All but one were
+ − 610 described in the description of @file{package-info.in}. The last is an
462
+ − 611 administrative grouping. Current categories include @code{comm},
448
+ − 612 @code{games}, @code{libs}, @code{mule}, @code{oa}, @code{os},
+ − 613 @code{prog}, and @code{wp}. @ref{Available Packages}, for a list of
+ − 614 categories.
+ − 615
+ − 616 Next, define the variable @code{ELCS}. This contains the list of the
+ − 617 byte-compiled Lisp files used by the package. These files and their
+ − 618 @file{.el} versions will be included in the binary package. If there
+ − 619 are other files (such as extra Lisp sources or an upstream
+ − 620 @file{Makefile}) that are normally placed in the installed Lisp
+ − 621 directory, but not byte-compiled, they can be listed as the value of
+ − 622 @code{EXTRA_SOURCES}.
+ − 623
+ − 624 The include is simply
+ − 625 @example
+ − 626 include ../../XEmacs.rules
+ − 627 @end example
+ − 628
+ − 629 The standard targets follow. These are
+ − 630
+ − 631 @example
+ − 632 all:: $(ELCS) auto-autoloads.elc
+ − 633
+ − 634 srckit: srckit-alias
+ − 635
+ − 636 binkit: binkit-alias
+ − 637 @end example
+ − 638
+ − 639 Other targets (such as Texinfo sources) may need to be added as
+ − 640 dependencies for the @code{all} target. Dependencies for @code{srckit}
+ − 641 and @code{binkit} (that is, values for @var{srckit-alias} and
+ − 642 @var{binkit-alias}) are defined in @file{XEmacs.rules}. The most useful
+ − 643 of these values are given in the following table.
+ − 644
+ − 645 @table @var
+ − 646 @item srckit-alias
+ − 647 Usually set to @code{srckit-std}.
+ − 648
+ − 649 @item binkit-alias
+ − 650 May be set to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
+ − 651 @code{binkit-sourcedata}, or
+ − 652 @code{binkit-sourcedatainfo}. @code{sourceonly} indicates there is
+ − 653 nothing to install in a data directory or info directory.
+ − 654 @code{sourceinfo} indicates that source and info files are to be
+ − 655 installed. @code{sourcedata} indicates that source and etc (data) files
+ − 656 are to be installed. @code{sourcedatainfo} indicates source, etc
+ − 657 (data), and info files are to be installed.
+ − 658 @end table
+ − 659
+ − 660 Data files include things like pixmaps for a package-specific toolbar,
+ − 661 and are normally installed in @file{etc/@var{PACKAGE_NAME}}. A few
+ − 662 packages have needs beyond the basic templates. See @file{XEmacs.rules}
+ − 663 or a future revision of this manual for details.
+ − 664
+ − 665 @node Available Packages, , Creating Packages, Packages
444
+ − 666 @comment node-name, next, previous, up
458
+ − 667 @cindex available packages
+ − 668 @cindex packages
+ − 669 @heading Available Packages:
+ − 670 This section lists the Lisp packages that are currently available from
+ − 671 xemacs.org and it's mirrors. If a particular package that you are
+ − 672 looking for isn't here, please send a message to the
+ − 673 @email{xemacs-beta@@xemacs.org, XEmacs Beta list}.
444
+ − 674
458
+ − 675 This data is up-to-date as of January 17, 2001.
444
+ − 676
+ − 677 @subsection Library Packages (libs)
+ − 678
+ − 679 These packages are required to build and support most of the rest of
+ − 680 XEmacs. By design, xemacs-base is a `regular' package. Use restraint
+ − 681 when adding new files there as it is required by almost everything.
+ − 682
+ − 683 @table @file
+ − 684 @item Sun
+ − 685 Support for Sparcworks.
+ − 686
+ − 687 @item apel
+ − 688 A Portable Emacs Library. Used by XEmacs MIME support.
+ − 689
+ − 690 @item dired
+ − 691 The DIRectory EDitor is for manipulating, and running commands on
+ − 692 files in a directory.
+ − 693
458
+ − 694 @item edebug
+ − 695 A Lisp debugger.
+ − 696
444
+ − 697 @item efs
+ − 698 Treat files on remote systems the same as local files.
+ − 699
458
+ − 700 @item elib
+ − 701 Portable Emacs Lisp utilities library.
+ − 702
+ − 703 @item fsf-compat
+ − 704 FSF Emacs compatibility files.
+ − 705
444
+ − 706 @item mail-lib
+ − 707 Fundamental lisp files for providing email support.
+ − 708
458
+ − 709 @item sounds-au
+ − 710 XEmacs Sun sound files.
+ − 711
+ − 712 @item sounds-wav
+ − 713 XEmacs Microsoft sound files.
+ − 714
444
+ − 715 @item tooltalk
+ − 716 Support for building with Tooltalk.
+ − 717
+ − 718 @item xemacs-base
+ − 719 Fundamental XEmacs support. Install this unless you wish a totally
+ − 720 naked XEmacs.
+ − 721
+ − 722 @item xemacs-devel
+ − 723 XEmacs Lisp developer support. This package contains utilities for
+ − 724 supporting Lisp development. It is a single-file package so it may be
+ − 725 tailored.
+ − 726 @end table
+ − 727
+ − 728 @subsection Communications Packages (comm)
+ − 729
+ − 730 These packages provide support for various communications, primarily
+ − 731 email and usenet.
+ − 732
+ − 733 @table @file
458
+ − 734 @item bbdb
+ − 735 The Big Brother Data Base
+ − 736
+ − 737 @item eicq
+ − 738 ICQ Client developed and tested on Linux x86;
+ − 739 only supported on that platform
+ − 740
+ − 741 @item eudc
+ − 742 Emacs Unified Directory Client (LDAP, PH).
+ − 743
444
+ − 744 @item footnote
+ − 745 Footnoting in mail message editing modes.
+ − 746
+ − 747 @item gnats
+ − 748 XEmacs bug reports.
+ − 749
+ − 750 @item gnus
+ − 751 The Gnus Newsreader and Mailreader.
+ − 752
+ − 753 @item mailcrypt
+ − 754 Support for messaging encryption with PGP.
+ − 755
458
+ − 756 @item mew
+ − 757 Messaging in an Emacs World.
+ − 758
444
+ − 759 @item mh-e
+ − 760 Front end support for MH.
+ − 761
+ − 762 @item net-utils
+ − 763 Miscellaneous Networking Utilities. This is a single-file package and
+ − 764 files may be deleted at will.
+ − 765
+ − 766 @item rmail
+ − 767 An obsolete Emacs mailer. If you do not already use it don't start.
+ − 768
+ − 769 @item supercite
+ − 770 An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders.
+ − 771
+ − 772 @item tm
458
+ − 773 Emacs MIME support. Not needed for Gnus >= 5.8.0
444
+ − 774
+ − 775 @item vm
+ − 776 An Emacs mailer.
+ − 777
+ − 778 @item w3
+ − 779 A Web browser.
458
+ − 780
+ − 781 @item zenirc
+ − 782 ZENIRC IRC Client.
444
+ − 783 @end table
+ − 784
+ − 785 @subsection Games and Amusements (games)
+ − 786
458
+ − 787 All work and no play...
+ − 788
444
+ − 789 @table @file
+ − 790 @item cookie
+ − 791 Spook and Yow (Zippy quotes).
+ − 792
+ − 793 @item games
+ − 794 Tetris, Sokoban, and Snake.
+ − 795
+ − 796 @item mine
+ − 797 Minehunt.
+ − 798
+ − 799 @item misc-games
+ − 800 Other amusements and diversions.
+ − 801 @end table
+ − 802
+ − 803 @subsection Mule Support (mule)
+ − 804
458
+ − 805 MULti-lingual Enhancement. Support for world scripts such as
+ − 806 Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
+ − 807 To use these packages your XEmacs must be compiled with Mule
+ − 808 support.
+ − 809
444
+ − 810 @table @file
458
+ − 811 @item edict
+ − 812 Lisp Interface to EDICT, Kanji Dictionary.
+ − 813
444
+ − 814 @item egg-its
+ − 815 Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to
+ − 816 XEmacs build.
+ − 817
+ − 818 @item leim
+ − 819 Quail. Used for everything other than English and Japanese.
+ − 820
+ − 821 @item locale
+ − 822 Used for localized menubars (French and Japanese) and localized splash
+ − 823 screens (Japanese).
+ − 824
458
+ − 825 @item lookup
+ − 826 Dictionary support. (This isn't an English dictionary program)
+ − 827
444
+ − 828 @item mule-base
+ − 829 Basic Mule support. Must be installed prior to building with Mule.
+ − 830
+ − 831 @item skk
+ − 832 Another Japanese Language Input Method. Can be used without a
+ − 833 separate process running as a dictionary server.
+ − 834 @end table
+ − 835
+ − 836 @subsection Productivity Packages (oa)
+ − 837
458
+ − 838 Things to make life a little easier.
+ − 839
444
+ − 840 @table @file
458
+ − 841 @item calc
+ − 842 Emacs calculator.
+ − 843
444
+ − 844 @item calendar
+ − 845 Calendar and diary support.
+ − 846
+ − 847 @item edit-utils
+ − 848 Single file lisp packages for various XEmacs goodies. Load this and
+ − 849 weed out the junk you don't want.
+ − 850
+ − 851 @item forms
458
+ − 852 Forms editing support (obsolete, use the built-in Widget instead).
444
+ − 853
+ − 854 @item frame-icon
+ − 855 Provide a WM icon based on major mode.
+ − 856
+ − 857 @item hm--html-menus
+ − 858 HTML editing.
+ − 859
+ − 860 @item ispell
+ − 861 Spell-checking with ispell.
+ − 862
+ − 863 @item pc
+ − 864 PC style interface emulation.
+ − 865
+ − 866 @item psgml
+ − 867 Validated HTML/SGML editing.
+ − 868
+ − 869 @item sgml
+ − 870 SGML/Linuxdoc-SGML editing.
+ − 871
+ − 872 @item slider
+ − 873 User interface tool.
+ − 874
+ − 875 @item speedbar
458
+ − 876 Provides a separate frame with convenient references.
444
+ − 877
+ − 878 @item strokes
+ − 879 Mouse enhancement utility.
+ − 880
+ − 881 @item text-modes
+ − 882 Various single file lisp packages for editing text files.
+ − 883
+ − 884 @item time
+ − 885 Display time & date on the modeline.
+ − 886 @end table
+ − 887
+ − 888 @subsection Operating System Utilities (os)
+ − 889
458
+ − 890 Tools for working with the operating system.
+ − 891
444
+ − 892 @table @file
458
+ − 893 @item eshell
+ − 894 Command shell implemented entirely in Emacs Lisp.
+ − 895
444
+ − 896 @item eterm
+ − 897 Terminal emulator.
+ − 898
+ − 899 @item igrep
+ − 900 Enhanced front-end for Grep.
+ − 901
+ − 902 @item ilisp
+ − 903 Front-end for Inferior Lisp.
+ − 904
+ − 905 @item os-utils
+ − 906 Miscellaneous single-file O/S utilities, for printing, archiving,
+ − 907 compression, remote shells, etc.
+ − 908
458
+ − 909 @item pcomplete
+ − 910 Provides programmatic completion.
+ − 911
+ − 912 @item ps-print-nomule
+ − 913 Old, but no-Mule safe ps-print.
+ − 914
444
+ − 915 @item view-process
+ − 916 A Unix process browsing tool.
+ − 917 @end table
+ − 918
+ − 919 @subsection Program Editing Support (prog)
+ − 920
458
+ − 921 XEmacs supports a multitude of programming languages. These
+ − 922 packages will help your coding.
+ − 923
444
+ − 924 @table @file
+ − 925 @item ada
+ − 926 Ada language support.
+ − 927
+ − 928 @item c-support
+ − 929 Basic single-file add-ons for editing C code.
+ − 930
+ − 931 @item cc-mode
+ − 932 C, C++ and Java language support.
+ − 933
+ − 934 @item debug
+ − 935 GUD, gdb, dbx debugging support.
+ − 936
+ − 937 @item ediff
+ − 938 Interface over patch.
+ − 939
+ − 940 @item emerge
+ − 941 Another interface over patch.
+ − 942
458
+ − 943 @item idlwave
+ − 944 Editing and Shell mode for the Interactive Data Language.
+ − 945
+ − 946 @item jde
+ − 947 Java language and development support.
+ − 948
444
+ − 949 @item pcl-cvs
+ − 950 CVS frontend.
+ − 951
+ − 952 @item prog-modes
458
+ − 953 Miscellaneous single-file lisp files for various programming languages.
444
+ − 954
+ − 955 @item scheme
+ − 956 Front-end support for Inferior Scheme.
+ − 957
458
+ − 958 @item semantic
+ − 959 Semantic bovinator.
+ − 960
444
+ − 961 @item sh-script
+ − 962 Support for editing shell scripts.
+ − 963
+ − 964 @item vc
458
+ − 965 Version Control for Free systems.
444
+ − 966
+ − 967 @item vc-cc
458
+ − 968 Version Control for ClearCase. This package will shortly be
+ − 969 replaced with clearcase.el
444
+ − 970
+ − 971 @item vhdl
+ − 972 Support for VHDL.
+ − 973 @end table
+ − 974
+ − 975 @subsection Word Processing (wp)
+ − 976
458
+ − 977 Working with text.
+ − 978
444
+ − 979 @table @file
+ − 980 @item auctex
+ − 981 Basic TeX/LaTeX support.
+ − 982
+ − 983 @item crisp
+ − 984 Crisp/Brief emulation.
+ − 985
+ − 986 @item edt
+ − 987 DEC EDIT/EDT emulation.
+ − 988
458
+ − 989 @item reftex
+ − 990 Emacs support for LaTeX cross-references, citations.
+ − 991
444
+ − 992 @item texinfo
+ − 993 XEmacs TeXinfo support.
+ − 994
+ − 995 @item textools
+ − 996 Single-file TeX support.
+ − 997
+ − 998 @item tpu
+ − 999 DEC EDIT/TPU support.
+ − 1000
+ − 1001 @item viper
+ − 1002 VI emulation support.
+ − 1003 @end table
+ − 1004