annotate man/lispref/packaging.texi @ 5903:5afddd952c46

Return ratios in canonical form too, #'string-to-number src/ChangeLog addition: 2015-05-08 Aidan Kehoe <kehoea@parhasard.net> * data.c (Fstring_to_number): Canonicalise ratios in this function, as we do bignums.
author Aidan Kehoe <kehoea@parhasard.net>
date Fri, 08 May 2015 13:58:22 +0100
parents 9c17f7be0b92
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1 @c -*-texinfo-*-
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
2 @c This is part of the XEmacs Lisp Reference Manual.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
3 @c Copyright (C) 2001 Free Software Foundation, Inc.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
4 @c See the file lispref.texi for copying conditions.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
5
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
6 @setfilename ../../info/packaging.info
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
7
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
8 @c Macro to make formatting of the XEmacs pms name consistent.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
9 @c Maybe @sc looks OK in HTML? If so, condition on Info.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
10 @iftex
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
11 @set xpms XE@sc{macs} Packaging System
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
12 @end iftex
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
13 @ifnottex
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
14 @set xpms XEmacs Packaging System
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
15 @end ifnottex
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
16
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
17 @node Packaging, Lisp Data Types, Introduction, Top
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
18 @chapter The @value{xpms}
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
19 @cindex package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
20 @cindex packaging
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
21
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
22 The XEmacs distribution, starting with version 21, comes only with a
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
23 very basic set of built-in modes and libraries. Most of the libraries
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
24 that were part of the distribution of earlier versions of XEmacs are now
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
25 available separately. The user as well as the system administrator can
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
26 choose which packages to install; the actual installation process is
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
27 easy. This gives an installer the ability to tailor an XEmacs
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
28 installation for local needs with safe removal of unnecessary code.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
29
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
30 This chapter describes how to package Lisp libraries for use with the
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
31 @value{xpms}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
32
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
33 @emph{Please note carefully} that the term @dfn{package} as used in
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
34 XEmacs refers to an aggregation of Lisp code and/or data distributed as
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
35 a unit. It does not, as it does in many Lisps, refer to a way of
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
36 creating separate name spaces. XEmacs has no facility for providing
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
37 separate name spaces. (If we ever do get separate name spaces, we'll
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
38 probably regret overloading the nomenclature in this way, but it's
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
39 become established.)
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
40
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
41 @menu
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
42 Introduction:
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
43 * Package Overview:: Lisp Libraries and Packages.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
44
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
45 Packaging Lisp Libraries:
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
46 * Package Terminology:: Basic stuff.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
47 * Building Packages:: Turn packaged source into a tarball.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
48 * Makefile Targets:: Package @file{Makefile} targets
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
49 * Local.rules File:: Tell the @value{xpms} about your host.
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
50 * Creating Packages:: Tell the @value{xpms} about your package.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
51 * Documenting Packages:: Explain your package to users and hackers.
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
52 @c * History:: History of the @value{xpms}
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
53 @c * Installation:: Installing the @value{xpms} with your (X)Emacs.
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
54 @c * Configuration:: Configuring the @value{xpms} for use.
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
55 @c * Usage:: An overview of the operation of the @value{xpms}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
56 @c * Bug Reports:: Reporting Bugs and Problems
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
57 @c * Frequently Asked Questions:: Questions and answers from the mailing list.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
58
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
59 Internals and Package Release Engineering:
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
60 * Issues::
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
61 @end menu
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
62
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
63 @node Package Overview, Package Terminology, , Packaging
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
64 @chapter An overview of the @value{xpms}
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
65
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
66 The @value{xpms} is a system for administering the installation, upgrade, and
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
67 removal of Lisp libraries. For the end user, it provides facilities for
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
68 determining availability of packages and which versions at remote
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
69 sites. It will download and automatically install a package, ensuring
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
70 that any old files from previous versions of the package are removed
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
71 first. By providing a standard set of hierarchies for installation, it
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
72 makes configuration of XEmacs simpler. Furthermore, packages normally
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
73 provide ancillary auto-autoloads and custom-loads libraries, which are
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
74 automatically detected and loaded by XEmacs upon startup. This means
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
75 that once installed, all facilities of package, including autoloading
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
76 the library upon invocation of a command provided by the library and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
77 convenient configuration and customization, are automatically available
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
78 to the user. There is no need to add autoloads or keybindings to in the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
79 init file, and structured configuration of the package is available
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
80 through the Customize system even before the libraries are loaded.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
81
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
82 All of this convenience comes at a cost. The cost of administration at
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
83 the package level is negligible compared to the benefits, of course.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
84 However, the requirement that XEmacs find and load auto-autoloads and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
85 custom-loads libraries comes at a fairly large cost in startup time. In
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
86 order to reduce this cost, XEmacs imposes fairly strict conditions on
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
87 the structure of an installed package.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
88
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
89 Meeting these requirements, as well as simply providing the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
90 auto-autoloads and the information about availability and so on does
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
91 impose some costs on the library maintainer. The @value{xpms} also provides
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
92 structure and utilities to the library maintainer to make these tasks
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
93 easier. This manual documents the requirements and the tools that the
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
94 @value{xpms} provides to ensure that a package satisfies them.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
95
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
96 @menu
759
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
97 * The User View::
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
98 * The Library Maintainer View::
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
99 * The Package Release Engineer View::
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
100 @end menu
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
101
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
102
759
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
103 @node The User View, The Library Maintainer View, , Package Overview
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
104 @section The User View
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
105
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
106 @strong{N.B.} Much of the discussion in this section undoubtedly
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
107 belongs elsewhere, @ref{Packages,,,xemacs}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
108
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
109 From the user's point of view, an XEmacs binary package is simply a
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
110 standard tarball (usually gzipped) containing Lisp sources, compiled
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
111 Lisp, documentation, and possibly data files or supporting executables.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
112 The tarball is unpacked using standard tools such as GNU tar and gzip.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
113 The package system does impose certain requirements for automatic
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
114 configuration to work.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
115
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
116 Here the main consideration is that the tarball ``expects'' to be
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
117 unpacked from the top of a package hierarchy. A @dfn{package hierarchy}
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
118 is basically an image of a classic Emacs ``run-in-place'' tree, with
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
119 @file{lisp}, @file{etc}, @file{info}, @file{man}, @file{lib-src}, and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
120 @file{pkginfo} subdirectories of the top. The @file{pkginfo}
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
121 subdirectory is for use by the @value{xpms} administration tools, and
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
122 currently contains a @file{MANIFEST.@var{package-name}} file for each
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
123 package to ensure that no cruft remains when a package is removed or
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
124 updated. The @file{lisp}, @file{etc}, and @file{lib-src} subdirectories
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
125 are further subdivided, with a subdirectory for each package. The
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
126 @file{info} directory obeys the usual conventions.
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
127 @emph{I.e.}, the @file{info} directory is flat
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
128 with a(n) (optional) @file{dir} file and one (set of) info file(s) per
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
129 package. The @file{man} subdirectory typically contains documentation
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
130 sources, separated by package. (It does not contain @file{man(1)}
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
131 pages, as Emacs provides very few of them.)
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
132
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
133 There are several standard package hierarchies, and administrators can
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
134 configure others at build time, while users can configure others at run
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
135 time. The standard system hierarchies are all subdirectories of an
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
136 @c #### This is possibly incorrect usage of "installation root."
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
137 XEmacs installation root, typically @file{/usr/local/lib/xemacs/}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
138 These are the @file{xemacs-packages}, @file{mule-packages},
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
139 @file{infodock-packages}, and @file{site-packages} hierarchies. Each
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
140 has the structure described above, but the purposes differ. The
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
141 @file{xemacs-packages} is the normal place for installing ``official''
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
142 packages and many third-party libraries. Unfortunately, it is not yet
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
143 quite possible to read libraries containing international characters
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
144 with a non-Mule XEmacs, so such libraries are sequestered in the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
145 @file{mule-packages} hierarchy. Some packages are compatible only with
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
146 the Infodock development environment, and they will be installed in the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
147 @file{infodock-packages} hierarchy. The @file{site-packages} hierarchy
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
148 is for packages not distributed by XEmacs.org, typically locally
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
149 developed.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
150
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
151 Packages are in principle supposed to be XEmacs version-independent, but
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
152 if such dependencies are unavoidable, additional standard package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
153 hierarchies may be installed under version directories, @emph{e.g.}
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
154 @file{/usr/local/lib/xemacs-21.4.6/}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
155
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
156 Users who do not have sufficient privilege to install packages in the
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
157 system hierarchies may install package hierarchies under @file{~/.xemacs}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
158 At present only the @file{xemacs-packages}, @file{mule-packages}, and
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
159 @file{site-packages} hierarchies are supported, but it might make sense to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
160 extend this to support @file{infodock-packages} hierarchies in the future.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
161
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
162 The package hierarchies are not searched directly for libraries to be
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
163 loaded; this would be very costly. Instead, the hierarchies are ordered
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
164 according to certain rules, and searched for package lisp directories at
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
165 invocation. These directories are added to the general
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
166 @code{load-path}. As usual, it is @code{load-path} that is searched at
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
167 run-time. This approach is somewhat costly at initialization, but
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
168 results in a very ``clean'' @code{load-path}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
169
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
170 The order of search can be changed at build time by specifying the
3179
15139dbf89f4 [xemacs-hg @ 2005-12-27 18:50:47 by michaels]
michaels
parents: 2955
diff changeset
171 @samp{--with-user-packages} (an alias for @samp{--with-early-packages}),
15139dbf89f4 [xemacs-hg @ 2005-12-27 18:50:47 by michaels]
michaels
parents: 2955
diff changeset
172 @samp{--with-system-packages} (an alias for
15139dbf89f4 [xemacs-hg @ 2005-12-27 18:50:47 by michaels]
michaels
parents: 2955
diff changeset
173 @samp{--with-late-packages}), and @samp{--with-legacy-packages} (an
15139dbf89f4 [xemacs-hg @ 2005-12-27 18:50:47 by michaels]
michaels
parents: 2955
diff changeset
174 alias for @samp{--with-last-packages}) options to @file{configure}, or
15139dbf89f4 [xemacs-hg @ 2005-12-27 18:50:47 by michaels]
michaels
parents: 2955
diff changeset
175 at run-time by specifying the @code{EMACSEARLYPACKAGES},
15139dbf89f4 [xemacs-hg @ 2005-12-27 18:50:47 by michaels]
michaels
parents: 2955
diff changeset
176 @code{EMACSLATEPACKAGES}, @code{EMACSLASTPACKAGES} environment
15139dbf89f4 [xemacs-hg @ 2005-12-27 18:50:47 by michaels]
michaels
parents: 2955
diff changeset
177 variables. @xref{Packages,,,xemacs}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
178
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
179 @c #### The following description is quite possibly inaccurate.
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
180 @c Please, Michael, write some specs up!
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
181 The default order of search is hierarchically determined. First, the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
182 roots are ordered. The @dfn{early} roots are the user-specific roots,
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
183 typically @file{~/.xemacs}. The @dfn{late} roots are the system roots,
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
184 typically @file{/usr/local/lib/xemacs-21.4.6} and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
185 @file{/usr/local/lib/xemacs}, in that order. All hierarchies for a
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
186 given root are searched for package Lisp directories, which are appended
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
187 to @code{load-path} in the order found. Then the search proceeds to the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
188 next root, whose results will be appended to the @code{load-path}
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
189 generated by previous roots.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
190
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
191 Second, the hierarchies below each root are searched in the order
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
192 @file{site-packages}, @file{infodock-packages}, @file{mule-packages},
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
193 then @file{xemacs-packages}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
194
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
195 In each hierarchy there should be a @file{lisp} subdirectory, containing
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
196 directories named for the packages. Each package's Lisp libraries thus
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
197 are contained in a directory of the form
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
198 @var{root}/@var{hierarchy}/lisp/@var{package}/.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
199
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
200 With such a complex search algorithm, the possibility of libraries being
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
201 shadowed by another library with the same name is quite real. There are
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
202 two considerations here. First, every XEmacs package contains certain
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
203 libraries with constant names. These are
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
204
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
205 @table @file
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
206 @item _pkg.el
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
207 Lisp code to inform the package administration system about the package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
208
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
209 @item auto-autoloads.el
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
210 Lisp code to set up autoloaded functions and variables that may be
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
211 needed at load time
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
212
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
213 @item custom-load.el
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
214 definitions of configuration variables for use with the Customize
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
215 system.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
216 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
217
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
218 They are special-cased, because the way they are used prevents shadowing
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
219 from being an issue.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
220
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
221 Second, it is possible that multiple copies of some library, or
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
222 different libraries with the same name, are installed in various places
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
223 in the hierarchies. To detect such shadows, use
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
224 @code{list-load-path-shadows}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
225
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
226 Finally, note that most basic Emacs functionality, including most of the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
227 Lisp API, is implemented in Lisp libraries. Because they use internal
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
228 reserved APIs that are subject to change according the needs of the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
229 developers, these libraries are distributed with the XEmacs binary, and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
230 are called @dfn{core Lisp libraries}. Most core Lisp libraries are
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
231 ``preloaded'' into the Emacs binary and in normal usage are never
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
232 explicitly loaded. However, they can be explicitly loaded, and if so
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
233 they are searched on @code{load-path}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
234 @c #### Is this correct? It is not for C-h f, for example.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
235 Furthermore, functions such as @code{locate-library} will also search on
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
236 the @code{load-path}. The searching takes place under somewhat
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
237 different rules from those used for packaged Lisp. It is probably
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
238 easiest to think of the package hierarchy searching algorithm as
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
239 receiving a @code{load-path} initialized to the core Lisp directories.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
240
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
241
759
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
242 @node The Library Maintainer View, The Package Release Engineer View, The User View, Package Overview
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
243 @section The Library Maintainer View
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
244
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
245 From the library maintainer's viewpoint, the advantages to the @value{xpms}
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
246 stem from the convenience to the user of installation and upgrade.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
247 Since an installed package automatically registers its entry points via
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
248 autoload and its configuration variables with the Customize system,
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
249 configuration FAQs are reduced. When it's easy to upgrade, users learn
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
250 to try @samp{Tools | Packages | Update Installed Packages} before
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
251 posting a FAQ whose answer is ``long since fixed, please upgrade.''
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
252
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
253 This comes at some cost, as the library maintainer needs to arrange that
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
254 the package be installed in a directory structure that satisfies the
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
255 requirements of the @value{xpms}. Autoload cookies and defcustoms must also
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
256 be added to existing libraries. The @value{xpms} provides infrastructure to
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
257 assure that all of these annoyances need only be dealt with once. The
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
258 autoload cookies and defcustoms are beyond the scope of this chapter, but
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
259 most maintainers of modern packages are already familiar with these
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
260 mechanisms.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
261
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
262 The @value{xpms} may be divided into the @dfn{infrastructure} common to all
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
263 packages, and the package-specific @dfn{control files}. The
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
264 infrastructure supports global builds, installation, and generation of
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
265 the ``sumo'' bundles of packages, as well as generation of individual
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
266 packages. The package control files describe the structure of the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
267 package's source tree and provide administrative information.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
268
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
269 @menu
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
270 * Infrastructure:: Global Makefiles and common rules.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
271 * Control Files:: Package-specific Makefiles and administrative files.
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
272 * Obtaining:: Obtaining the @value{xpms} and required utilities.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
273 @end menu
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
274
759
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
275 @node Infrastructure, Control Files, , The Library Maintainer View
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
276 @subsection Infrastructure
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
277
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
278 In order to get the greatest benefit from the @value{xpms}, a library
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
279 maintainer should place the package sources in an appropriate place in
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
280 the XEmacs source package hierarchy, and arrange to have the source
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
281 package imported into the XEmacs CVS repository.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
282 @c #### the parenthetical remark should go to "issues."
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
283 (We realize that the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
284 latter requirement can be quite burdensome. We are working on ways to
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
285 remove this requirement, but for the present it remains necessary.) The
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
286 library maintainer must also keep sources for any packages his/her
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
287 package requires. This requirement is somewhat burdensome, but unlikely
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
288 to be relaxed because of the implementation of compilation of macros in
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
289 Emacs Lisp. Macros cannot be called by compiled Lisp (the macro
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
290 expansion, which is always known at compile time, is inlined), so the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
291 source of the macro must be loaded before compiling the called function.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
292
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
293 The source package hierarchy may be rooted anywhere. The CVS module is
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
294 called ``packages,'' so we will refer to the top directory of the source
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
295 package hierarchy as ``the @file{packages} directory.'' The
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
296 @file{packages} directory contains two source subdirectories,
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
297 @file{xemacs-packages} and @file{mule-packages} (for convenience in
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
298 segregating the packages which depend on Mule, as they will cause
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
299 load-time errors in a non-Mule XEmacs). Each subdirectory contains many
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
300 package source directories, whose internal structure is not specified.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
301 That structure is left up to the convenience of the library maintainers.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
302 The requirements on the top directory of an individual package source
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
303 tree are given below, @ref{Control Files}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
304
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
305 The @file{packages} directory contains some auxiliary Lisp libraries
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
306 used in the compilation and packaging process. The content of these
761
c35d5f033651 [xemacs-hg @ 2002-03-03 09:09:27 by adrian]
adrian
parents: 759
diff changeset
307 libraries is of interest primarily to the packaging engineers, @ref{The
c35d5f033651 [xemacs-hg @ 2002-03-03 09:09:27 by adrian]
adrian
parents: 759
diff changeset
308 Package Release Engineer View}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
309
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
310 Finally, the @file{packages}, @file{packages/xemacs-packages}, and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
311 @file{packages/mule-packages} directories contain @file{Makefile}s and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
312 include files to control the package creation process. The
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
313 @file{Makefile}s in @file{packages/xemacs-packages} and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
314 @file{packages/mule-packages} simply define the default sets of known
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
315 packages and include @file{../iterate.rules}, which implements recursive
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
316 building of all target packages.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
317
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
318 The @samp{make} infrastructure in @file{packages} includes
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
319
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
320 @table @file
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
321 @item Makefile
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
322 controls building of individual packages, local installation, and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
323 bundling of ``sumo'' tarballs
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
324
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
325 @item iterate.rules
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
326 controls recursive builds of multiple packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
327
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
328 @item meta-iterate.rules
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
329 This is used by higher-level subdirectories that do not directly
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
330 contain packages. Subdirectories directly containing packages should
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
331 use iterate.rules instead.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
332
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
333 @item XEmacs.rules
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
334 provides the rules for building and packaging. Included by all package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
335 @file{Makefile}s.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
336
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
337 @item Local.rules
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
338 provides local configuration, such as installation targets and staging
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
339 directories, as well as a number of kludges (many now obsolete) required
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
340 for building packages on the Windows platform.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
341
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
342 @item Local.rules.template
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
343 a template for Local.rules, liberally commented
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
344
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
345 @item Local.rules.mk
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
346 consistency checking for @file{Local.rules}, included by both the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
347 top-level @file{Makefile} and by @file{XEmacs.rules}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
348
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
349 @item Local.rules.inc
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
350 a file to @code{include} in package @file{Makefile}s to be able to get
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
351 at variables in @file{Local.rules} @emph{before} including
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
352 @file{XEmacs.rules}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
353
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
354 @c #### Add to "issues"
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
355 @item package-compile.el
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
356 compile environment (@emph{e.g.}, load-path) setup.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
357 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
358
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
359 Of these, only @file{Local.rules} and @file{package-compile.el} need to
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
360 be modified by the library maintainer. The changes to Local.rules
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
361 affect only your environment. This should need to be done only once
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
362 when first preparing the source environment. The necessary
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
363 modifications to @file{package-compile.el} need to be done for each
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
364 package and are discussed in the next section, @ref{Control Files}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
365
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
366
759
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
367 @node Control Files, Obtaining, Infrastructure, The Library Maintainer View
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
368 @subsection Control Files
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
369
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
370 Each package source must contain a number of control files in the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
371 top-level directory. These files in general can be created and then
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
372 ignored, except for a few variables that need to be updated when new
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
373 versions are released. In most cases even adding, renaming, and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
374 removing library source files can be handled by generic rules.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
375
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
376 The package control files include
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
377
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
378 @table @file
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
379 @item Makefile
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
380 Must set a few @file{make} variables used by the administrative
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
381 utilities, and defines a couple of package-building targets to depend on
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
382 appropriate targets defined generically in @file{XEmacs.rules}. It may
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
383 also provide various variables and rules to transform the source tree
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
384 structure into that expected by the run-time system.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
385
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
386 @item package-info.in
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
387 Provides a template for package information to be provided to the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
388 administrative utilities. Static variables that are rarely changed
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
389 (such as the package's name) are entered as literals. Some variables
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
390 are generated by the build process (build dates and MD5 checksums) and
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
391 are automatically filled in. Finally, some variables that change
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
392 irregularly (dependences and even version numbers) are set as
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
393 @file{make} variables in the @file{Makefile}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
394
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
395 @item ChangeLog
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
396 Not strictly required, but normally a ChangeLog will be added by the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
397 XEmacs package maintainer if different from the upstream maintainer.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
398
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
399 @item _pkg.el
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
400 Generated. Simply does a @code{package-provide} for the package.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
401
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
402 @item auto-autoloads.el
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
403 Generated. Read when XEmacs is initialized, and provides autoloads for
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
404 defuns and other forms in the sources that are marked with an
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
405 @dfn{autoload cookie} (@samp{;;;###autoload}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
406
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
407 @item custom-loads.el
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
408 Generated. Read when XEmacs is initialized, and informs the Customize
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
409 subsystem how to find the defcustom forms needed to create Customization
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
410 forms for the usre configuration variables of the package.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
411 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
412
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
413
759
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
414 @node Obtaining, , Control Files, The Library Maintainer View
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
415 @subsection Obtaining the @value{xpms} and Required Utilities
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
416
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
417 Currently both the infrastructure for creating XEmacs packages and the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
418 package sources themselves are available only by CVS. See
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
419 @uref{http://www.xemacs.org/Develop/cvsaccess.html} for more
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
420 intformation.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
421
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
422 The @value{xpms} currently requires GNU @file{make}, and XEmacs, to build
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
423 packages.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
424
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
425
759
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
426 @node The Package Release Engineer View, , The Library Maintainer View, Package Overview
7b0e9f17fcf0 [xemacs-hg @ 2002-02-28 03:55:16 by stephent]
stephent
parents: 752
diff changeset
427 @subsection The Package Release Engineer View
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
428
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
429 The XEmacs Package Release Engineer is responsible for keeping the
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
430 system coherent. The changes to @file{packages/package-compile.el} and
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
431 @file{packages/xemacs-packages/Makefile} required to make the package
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
432 available to others, and for building SUMO tarballs, @emph{etc}, are
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
433 done by the Package Release Engineer, not individual library
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
434 maintainers.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
435
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
436 The Package Release Engineer also maintains assorted infrastructure for
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
437 actually making releases. These are generally available for inspection
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
438 in the @code{xemacs-builds} module in the CVS repository.
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
439
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
440 @c #### To be completed.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
441
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
442
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
443 @node Package Terminology, Building Packages, Package Overview, Packaging
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
444 @comment node-name, next, previous, up
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
445 @heading Package Terminology:
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
446
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
447 @subsection Libraries and Packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
448 @cindex library
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
449 @cindex package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
450
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
451 A Lisp @dfn{library} is a single loadable file containing Lisp code. It
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
452 may be in source or byte-compiled form. A Lisp @dfn{package} is a set
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
453 of one or more libraries, usually related to each other in some way,
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
454 bundled with administrative information for convenient distribution.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
455
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
456 @subsection Package Flavors
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
457
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
458 There are two main flavors of packages.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
459
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
460 @table @strong
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
461 @item Regular Packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
462 @cindex regular package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
463 A regular package is a set of Lisp libraries design to cooperate with
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
464 one another. A very complex example is Gnus. One may not in general
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
465 safely remove any of the component libraries.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
466
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
467 @item Single-File Packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
468 @cindex single-file package
901
37e56e920ac5 [xemacs-hg @ 2002-07-05 20:35:47 by adrian]
adrian
parents: 861
diff changeset
469 A single-file package is a collection of thematically related but
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
470 otherwise independent Lisp libraries. These libraries are bundled
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
471 together for convenience of the maintainers. Usually individual
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
472 libraries may be deleted at will without any loss of functionality of
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
473 other libraries in the package. However, we would recommend that you
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
474 follow this rule of thumb: "When in doubt, don't delete". If it's
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
475 really that big a deal, request that the maintainers split the package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
476 into smaller aggregations.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
477 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
478
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
479 @subsection Package Distributions
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
480 @cindex package distributions
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
481 @cindex binary packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
482 @cindex source packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
483 XEmacs Lisp packages are distributed in two ways. @dfn{Binary packages}
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
484 are used by system administrators and end users. They are packaged in a
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
485 form convenient for direct installation into an XEmacs package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
486 hierarchy. @dfn{Source packages} are for developers and include all
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
487 files necessary for rebuilding byte-compiled lisp and creating tarballs
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
488 for distribution or installation. This is all of the package author's
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
489 source code plus all of the files necessary to build distribution
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
490 tarballs (Unix Tar format files, gzipped for space savings).
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
491 (Occasionally sources that are not relevant to XEmacs are usually
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
492 renamed to @file{file.upstream}.)
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
493
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
494 Currently, source packages are only available via CVS. See
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
495 @url{http://www.xemacs.org/Develop/cvsaccess.html} for details.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
496
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
497 The package distributions are also split according to major features
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
498 required in XEmacs to support them. At present there are @dfn{generic}
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
499 packages, which can be loaded by @emph{any} XEmacs, and @dfn{Mule}
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
500 packages, which @emph{require} Mule support or they will cause errors
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
501 when loaded. Note that there is no guarantee that a generic package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
502 will have any useful functionality in a minimally configured XEmacs. As
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
503 long as any XEmacs can successfully load the package's libraries
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
504 (perhaps given other required Lisp libraries), it will be classified as
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
505 generic. At the present time only Mule packages need be treated
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
506 specially, and even those only if they contain multibyte characters.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
507
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
508
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
509 @node Building Packages, Makefile Targets, Package Terminology, Packaging
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
510 @comment node-name, next, previous, up
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
511 @cindex building packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
512 @cindex package building
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
513 @heading Building Packages:
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
514 Currently, source packages are only available via anonymous CVS. See
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
515 @url{http://www.xemacs.org/Develop/cvsaccess.html} for details of
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
516 checking out the @file{packages} module.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
517
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
518 @subsection Prerequisites for Building Source Packages
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
519
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
520 @table @code
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
521 @item GNU cp
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
522 @item GNU install
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
523 (or a BSD compatible install program).
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
524 @item GNU make
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
525 (3.79 or later preferred).
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
526 @item makeinfo
5744
9c17f7be0b92 Require makeinfo 4.12 or later to build the info files. See xemacs-beta
Jerry James <james@xemacs.org>
parents: 5741
diff changeset
527 (4.12 from texinfo-4.12)
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
528 @item GNU tar
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
529 (or equivalent).
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
530 @item GNU gzip
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
531 (or equivalent).
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
532 @item A properly configured @file{Local.rules} file.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
533 @ref{Local.rules File}.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
534 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
535
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
536 And of course, XEmacs, 21.0 or higher.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
537
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
538 @section What You Can Do With Source Packages
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
539
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
540 The packages CVS sources are most useful for creating XEmacs package
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
541 tarballs for installation into your own XEmacs installations or for
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
542 distributing to others.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
543
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
544 It should be noted that most of the package @file{Makefile}s do
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
545 @emph{not} need to contain @emph{any} target rules. Everything is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
546 handled from the @file{XEmacs.rules} file, located in the toplevel
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
547 directory of the packages source tree.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
548
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
549
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
550 @node Makefile Targets, Local.rules File, Building Packages, Packaging
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
551 @cindex package makefile targets
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
552 @chapter @file{Makefile} targets
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
553 The following targets can be used when running @code{make} to build the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
554 packages:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
555
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
556 @table @samp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
557 @item mostlyclean
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
558 Removes any documentation files that have been processed by @TeX{}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
559
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
560 @item clean
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
561 Does a @code{mostlyclean}, plus removes generated postscript and dvi
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
562 files. Also removes any generated .elc files, along with the normal
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
563 .elc files in the package and HTML and .info files.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
564
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
565 @item distclean
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
566 Use this when preparing a distribution. It kills anything that can be
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
567 rebuilt.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
568
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
569 @item extraclean
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
570 Does a @code{distclean} and also removes any backup files (@file{*~})
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
571 and @file{core} files.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
572
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
573 @item package-info
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
574 Creates the @file{package-info} file from the @file{package-info.in} and
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
575 writes an entry in the @file{package-index} file.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
576
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
577 @item bindist
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
578 Builds the package, including any Texinfo documentation (info format),
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
579 writes an entry into the @file{package-index} file and builds a tarball
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
580 of the package. Also writes an entry into @file{setup-packages.ini}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
581 which is later used in the creation of netinstaller's @file{setup.ini}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
582
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
583 @item install
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
584 Builds and installs a package
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
585
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
586 @item install-only
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
587 Doesn't build anything, just installs it.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
588
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
589 @item autoloads
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
590 Generate the package's @file{auto-autoloads.el} file.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
591
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
592 @item binkit
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
593 Creates the directories needed for installation and copies the files
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
594 there. Basically this is an alias for @code{install-only}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
595
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
596 @item html
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
597 Builds the HTML versions of the documentation.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
598
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
599 @item compile
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
600 Does most of the work. Builds the elcs, infos at a minimum.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
601 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
602
5741
d11efddf3617 Fix texinfo constructs that are rejected by texinfo 5.x. See xemacs-patches
Jerry James <james@xemacs.org>
parents: 5402
diff changeset
603 @section The targets that most people would be interested in would be:
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
604
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
605 @itemize @bullet
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
606 @item @code{all}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
607 @item @code{bindist}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
608 @item @code{html}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
609 @item @code{install}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
610 @item @code{install-only}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
611 @item @code{clean}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
612 @item @code{distclean}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
613 @end itemize
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
614
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
615
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
616 @node Local.rules File, Creating Packages, Makefile Targets, Packaging
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
617 @comment node-name, next, previous, up
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
618 @cindex local.rules
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
619 @heading The Local.rules File:
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
620 This file in @file{packages} provides the @value{xpms} with information about
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
621 the local configuration and environment. To create @file{Local.rules},
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
622 simply copy @file{Local.rules.template} from that directory to
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
623 @file{Local.rules} and edit it to suit your needs.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
624
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
625 These are the variables in @file{Local.rules} that you may need to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
626 provide values for:
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
627
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
628 @table @samp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
629 @item XEMACS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
630 The name (and path if needed) of the XEmacs binary to use for building
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
631 the packages. The default is @code{xemacs}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
632
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
633 @item XEMACS_21_5
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
634 This will enable some, as yet, unimplemented features in XEmacs 21.5 and
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
635 above. For now leave this blank (the default) regardless of the XEmacs
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
636 version you are using.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
637
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
638 @item BUILD_WITHOUT_MULE
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
639 Set this to @samp{t} if you are using a non-Mule XEmacs. The default is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
640 that this variable is not set (blank) which means to build @emph{with}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
641 Mule.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
642
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
643 @item XEMACS_NATIVE_NT
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
644 Set this to @samp{t} if you are using a native Microsoft Windows build
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
645 of XEmacs (not a Cygwin build) to build the packages.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
646 @strong{N.B.} To Windows users, you still need the Cygwin environment to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
647 actually build the packages.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
649 @item XEMACS_INSTALLED_PACKAGES_ROOT
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
650 Set this to the root of where you want the packages to be installed.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
651 Under this directory will hang @file{xemacs-packages} and
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
652 @file{mule-packages}. See @code{NONMULE_INSTALLED_PACKAGES_ROOT} and
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
653 @code{MULE_INSTALLED_PACKAGES_ROOT}. The default for this is
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
654 @file{/usr/local/lib/xemacs}. Which may not be what you want if you are
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
655 developing XEmacs. To quote the comments in
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
656 @file{Local.rules.template}:
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
657
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
658 @quotation
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
659 If you are developing XEmacs, you probably don't want to install the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
660 packages under /usr/local, which is where the stable, released version
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
661 of XEmacs goes. Instead, we suggest a layout as described in the base
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
662 README file of recent versions of XEmacs. In a nutshell, we suggest
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
663 you put your source under /src/xemacs, and under this put the package
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
664 sources in package-src/, and the installed packages in xemacs-packages/
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
665 and mule-packages/. If you do everything this way, you might want to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
666 set things as follows:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
667
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
668 XEMACS_INSTALLED_PACKAGES_ROOT = $@{XEMACS_PACKAGES_BASE@}/..
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
669
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
670 which puts the xemacs-packages/ and mule-packages/ directories as sisters
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
671 of the package-src/ directory, and you have to tell configure the location
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
672 of the installed packages using `--package-path', something like
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
673
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
674 configure --package-path=/src/xemacs/xemacs-packages;/src/xemacs/mule-packages
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
675 @end quotation
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
676
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
677 @item symlink
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
678 The default is unset (blank). If you set this to @samp{t} then
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
679 @code{make install} will create a @dfn{symlink farm} of the installed
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
680 packages under @code{XEMACS_INSTALLED_PACKAGES_ROOT}. Obviously, for
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
681 this to work, your system has to support symbolic links. This is as
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
682 close as you can get to @dfn{running in place} for the packages.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
683
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
684 @item NONMULE_INSTALLED_PACKAGES_ROOT
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
685 This is where the non-Mule packages get installed to. The default is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
686 @file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/xemacs-packages}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
687
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
688 @item MULE_INSTALLED_PACKAGES_ROOT
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
689 This is where the Mule packages get installed to. The default is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
690 @file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/mule-packages}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
691
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
692 @item NONMULE_PACKAGES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
693 A whitespace separated list of non-Mule packages to build/install.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
694
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
695 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
696 NONMULE_PACKAGES = bbdb gnus xemacs-base prog-modes
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
697 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
698
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
699 The value for this variable can also be the symbol
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
700 @samp{xemacs-packages}, which means to build/install @emph{all} of the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
701 non-Mule packages. The default is @samp{xemacs-packages}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
702
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
703 @item MULE_PACKAGES
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
704 A whitespace separated list of Mule packages to build/install.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
705
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
706 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
707 MULE_PACKAGES = mule-base leim locale
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
708 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
709
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
710 The value for this variable can also be the symbol
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
711 @samp{mule-packages}, which means to build/install @emph{all} of the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
712 Mule packages. The default is @samp{mule-packages}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
713
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
714 @item PACKAGE_INDEX
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
715 The name of the package-index file. The default is @file{package-index}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
716 and you probably don't need to worry about changing it.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
717
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
718 @item INSTALL
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
719 The path to a BSD compatible install program. The default is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
720 @code{install -c}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
721
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
722 @item TAR
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
723 The path to GNU/tar. The default is @code{tar}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
724
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
725 @item BZIP2
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
726 The path to the bzip2 compression program. The default is unset
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
727 (blank). If this is set @file{.tar.bz2} archives will be built
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
728 @emph{in addition to} the @file{.tar.gz} archives.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
729
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
730 @item EXCLUDES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
731 For things that you @emph{don't} want to go into the package tarballs.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
732 It takes the same format as GNU/tar's @code{--exclude} option. The
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
733 default is:
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
734
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
735 @example
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
736 EXCLUDES = \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
737 --exclude 'CVS' \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
738 --exclude 'RCS' \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
739 --exclude 'SCCS' \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
740 --exclude '*~' \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
741 --exclude '*.orig' \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
742 --exclude '*.rej' \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
743 --exclude '.\#*'
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
744 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
745
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
746 @item VANILLA
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
747 Set to the XEmacs command line option that forces running in
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
748 @dfn{vanilla} mode. The default is @samp{-vanilla}. You wouldn't ever
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
749 need to alter this.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
750
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
751 @item BATCH
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
752 How to put XEmacs into @dfn{batch} mode. It also sets a couple of other
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
753 things and in the normal course of events you wouldn't need to alter
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
754 this from the default which is:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
755
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
756 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
757 BATCH = $(VANILLA) -batch -eval \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
758 '(setq stack-trace-on-error t \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
759 load-always-display-messages t \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
760 load-ignore-out-of-date-elc-files t \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
761 load-show-full-path-in-messages t)'
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
762 @end example
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
763
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
764 @item MAKEINFO
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
765 The path to @code{makeinfo}. The default is @samp{makeinfo}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
766
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
767 @item INSTALL_HTML
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
768 Set this to @samp{t} if you want to install HTML versions of the Texinfo
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
769 documentation. The default is unset (blank).
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
770
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
771 @item TEXI2HTML
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
772 The path to the program that can convert Texinfo source to HTML. The
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
773 default is @code{texi2html}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
774
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
775 @item TEXI2DVI
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
776 The path to the program that can convert Texinfo source to DVI. The
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
777 default is @code{texi2dvi}
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
778
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
779 @item DVIPS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
780 The path to the program that can convert DVI to Postscript. The default
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
781 is @code{dvips}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
782
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
783 @item TEXI2PDF
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
784 The path to the program that can convert Texinfo source to PDF format.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
785 The default is @code{texi2pdf}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
786
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
787 @item TEX
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
788 The path to @TeX{}. The default is @code{tex}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
789
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
790 @item MSGFMT
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
791 The path to msgfmt. The default is @code{msgfmt}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
792
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
793 @item RCOPY
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
794 The path to your copy command (GNU cp). The default is dependent on
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
795 whether or not @var{symlink} is set (@samp{t}).
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
796
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
797 If @var{symlink} is unset (blank), @code{RCOPY}'s default is
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
798 @code{cp -af}. If @var{symlink} is set (@samp{t}), @code{RCOPY}'s
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
799 default is @code{cp --force --recursive --symbolic-link}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
800 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
801
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
802 It should be noted that in most cases the defaults should be fine. Most
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
803 people will probably only need to alter:
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
804
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
805 @itemize @bullet
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
806 @item @code{XEMACS_INSTALLED_PACKAGES_ROOT}
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
807 @item @code{NONMULE_INSTALLED_PACKAGES_ROOT}
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
808 @item @code{MULE_INSTALLED_PACKAGES_ROOT}
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
809 @item @code{NONMULE_PACKAGES}
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
810 @item @code{MULE_PACKAGES}
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
811 @end itemize
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
812
752
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
813 @node Creating Packages, Documenting Packages, Local.rules File, Packaging
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
814 @comment node-name, next, previous, up
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
815 @cindex creating packages
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
816 @chapter Creating Packages:
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
817 Creating a package from an existing Lisp library is not very difficult.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
818
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
819 In addition to the Lisp libraries themselves, you need a
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
820 @ref{package-info.in} file and a simple @ref{Makefile}. The rest is
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
821 done by @file{XEmacs.rules}, part of the packaging system
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
822 infrastructure.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
823
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
824 @menu
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
825 * package-info.in:: package-info.in
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
826 * Makefile:: @file{Makefile}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
827 @end menu
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
828
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
829 @node package-info.in, Makefile,,Creating Packages
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
830 @chapter package-info.in
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
831 @cindex package-info.in
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
832 @cindex package-info
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
833 @file{package-info.in} contains information that gets injected into the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
834 @file{package-index} file when @code{make bindist} is run. Here is a
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
835 real world example from the xemacs-base package (a description of each
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
836 field follows the example):
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
837
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
838 @example
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
839 (xemacs-base
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
840 (standards-version 1.1
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
841 version VERSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
842 author-version AUTHOR_VERSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
843 date DATE
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
844 build-date BUILD_DATE
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
845 maintainer MAINTAINER
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
846 distribution xemacs
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
847 priority high
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
848 category CATEGORY
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
849 dump nil
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
850 description "Fundamental XEmacs support, you almost certainly need this."
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
851 filename FILENAME
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
852 md5sum MD5SUM
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
853 size SIZE
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
854 provides (add-log advice-preload advice annotations assoc case-table chistory comint-xemacs comint compile debug ebuff-menu echistory edmacro ehelp electric enriched env facemenu ffap helper imenu iso-syntax macros novice outline passwd pp regexp-opt regi ring shell skeleton sort thing time-stamp timezone tq xbm-button xpm-button)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
855 requires (REQUIRES)
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
856 type regular
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
857 ))
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
858 @end example
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
859
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
860 @subheading Description of the Fields in @file{package-info.in}:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
861 @table @samp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
862 @item NAME
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
863 The name of the package. In the case of the example it is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
864 @samp{xemacs-base}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
865
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
866 @item standards-version
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
867 Part of the internal package infrastructure, its value should always be
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
868 @samp{1.1}. Do not change this.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
869
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
870 @item version
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
871 This is the XEmacs package version number of the package. It is set
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
872 from the @file{Makefile} variable @code{VERSION}. This is something
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
873 that the XEmacs Package Release Engineer deals with so there is no need
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
874 for a package maintainer to touch it. In @file{package-info.in} just
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
875 put the place-marker, @samp{VERSION} here.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
876
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
877 @item author-version
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
878 This is the package's internal, or @samp{upstream} version number if it
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
879 has one. It is set from the @file{Makefile} variable
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
880 @code{AUTHOR_VERSION}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
881
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
882 @item date
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
883 This is the date of the last change made to the package. It is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
884 auto-generated at build time, taken from the package's toplevel
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
885 @file{ChangeLog}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
886
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
887 @item build-date
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
888 The date the package was built. It is auto-generated.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
889
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
890 @item maintainer
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
891 This is the name and email address of the package's maintainer. It is
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
892 taken from the @file{Makefile} variable @code{MAINTAINER}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
893
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
894 @item distribution
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
895 An unused field, leave as @samp{xemacs}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
896
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
897 @item priority
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
898 An unused field, can be any of @samp{high}, @samp{medium}, or
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
899 @samp{low}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
900
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
901 @item category
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
902 The @samp{category} of the package. It is taken from the
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
903 @file{Makefile} variable @code{CATEGORY} and can be either
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
904 @samp{standard} for non-Mule packages, or @samp{mule} for Mule
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
905 packages. The is also provision for @samp{unsupported} in this field
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
906 which would be for packages that XEmacs.org do not distribute.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
907
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
908 @strong{N.B.} As yet, the @value{xpms} does @emph{not} support this type of
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
909 package. It will in the future.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
910
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
911 @item dump
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
912 Unused. Always @samp{nil}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
913
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
914 @item description
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
915 A free form short description of the package.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
916
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
917 @item filename
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
918 The file name of the package's binary tarball. It is generated at build
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
919 time by @code{make bindist}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
920
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
921 @item md5sum
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
922 The MD5 message digest of the package's binary tarball. Generated at
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
923 build time by @code{make bindist}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
924
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
925 @item size
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
926 The size in bytes of the package's binary tarball. Generated at build
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
927 time.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
928
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
929 @item provides
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
930 A whitespace separated list of @emph{all} the features the package
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
931 provides. Surround the list with parens.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
932
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
933 @item requires
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
934 Taken from the @file{Makefile} variable @code{REQUIRES}. It is a list
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
935 of all the package's dependencies, including any macros and defstructs
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
936 that need to be inlined.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
937
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
938 @samp{REQUIRES} cannot be correctly computed from the calls to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
939 @code{require} in the package's library sources. @samp{REQUIRES} is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
940 used to ensure that all macro and defstruct definitions used by the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
941 package are available at build time. This is not merely a matter of
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
942 efficiency, to get the expansions inlined. In fact, it is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
943 @emph{impossible} to call a macro by name in byte-compiled Emacs Lisp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
944 code. Thus, if the macro expansion is not inlined, the call will result
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
945 in an error at run-time! Thus, packages providing libraries that would
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
946 be loaded because of autoload definitions must also be included.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
947
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
948 @item type
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
949 Can either be @samp{regular} for a regular package, or
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
950 @samp{single-file} for a single file package.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
951
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
952 @strong{N.B.} This doesn't refer to the number of lisp files in a
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
953 package. A single-file package can have multiple lisp files in it.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
954 @xref{Package Terminology}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
955 @end table
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
956
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
957 The fields in @file{package-info.in} that need to be changed directly
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
958 are:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
959
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
960 @itemize @bullet
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
961 @item NAME
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
962 @item description
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
963 @item provides
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
964 @item type
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
965 @end itemize
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
966
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
967 Everything else is either set from the appropriate @file{Makefile}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
968 variable, is auto-generated at build time, or is static.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
969
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
970 @node Makefile,,package-info.in,Creating Packages
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
971 @chapter @file{Makefile}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
972 @cindex Makefile, package
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
973 @cindex package Makefile
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
974 The @file{Makefile} is quite stylized. The idea is similar to an
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
975 @file{Imakefile} or an @code{automake} file: the complexity is hidden in
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
976 generic rules files, in this case the @file{XEmacs.rules} include file
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
977 in the top directory of the packages hierarchy.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
978
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
979 It is important to note that the XEmacs used to compile packages is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
980 the bare minimum: it is called with the @samp{-no-autoloads}. This
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
981 means that anything not dumped into XEmacs by default needs to be
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
982 specified in the @samp{REQUIRES} variable (for packaged Lisp) or in
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
983 some cases the @samp{PRELOADS} (autoloads used in libraries mentioned
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
984 in @samp{PRELOADS}).
749
9cea8fcd2e61 [xemacs-hg @ 2002-02-12 14:30:51 by stephent]
stephent
parents: 694
diff changeset
985
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
986 There isn't much to an @value{xpms} @file{Makefile}, basically it just
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
987 contains a few @file{Makefile} variables and that's it. See the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
988 example.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
989
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
990 Here is a real world example, from the @samp{build} package:
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
991
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
992 @example
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
993 # Makefile for build lisp code
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
994
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
995 # This file is part of XEmacs.
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3179
diff changeset
996 #
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3179
diff changeset
997 # XEmacs is free software: you can redistribute it and/or modify it
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
998 # under the terms of the GNU General Public License as published by the
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3179
diff changeset
999 # Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3179
diff changeset
1000 # option) any later version.
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3179
diff changeset
1001 #
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1002 # XEmacs is distributed in the hope that it will be useful, but WITHOUT
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1003 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1004 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1005 # for more details.
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3179
diff changeset
1006 #
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1007 # You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3179
diff changeset
1008 # along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1009
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1010 # For the time being, remove MULE_ELCS from the all dependencies if
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1011 # building without Mule.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1012
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1013 VERSION = 1.10
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1014 AUTHOR_VERSION = 2.02
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1015 MAINTAINER = Adrian Aichner <adrian@@xemacs.org>
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1016 PACKAGE = build
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1017 PKG_TYPE = regular
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1018 REQUIRES = xemacs-base pcl-cvs dired w3 prog-modes
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1019 CATEGORY = standard
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1020
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1021 ELCS = build.elc build-report.elc
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1022
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1023 STANDARD_DOCS = t
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1024
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1025 include ../../XEmacs.rules
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1026 @end example
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1027
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1028 Most packages don't need any more than what you see above. It is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1029 usually @emph{not} necessary to specify any special @file{Makefile}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1030 rules. Everything is handled from the @file{*.rules} files in the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1031 toplevel of the package source hierarchy.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1032
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1033 Of course, with that said, there are always exceptions to the rule. If
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1034 you think that your package will need some special @file{Makefile}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1035 hackery contact the @email{xemacs-beta@@xemacs.org, XEmacs developers}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1036 We distribute over 100 packages so the chances are good that you won't
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1037 be the first to need such hackery and it is probably already catered
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1038 for.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1039
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1040 @subheading @file{Makefile} Variables Explained:
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1041 A number of @file{make} variables are defined by the @value{xpms}. Some are
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1042 required, others are optional. Of course your @file{Makefile} may
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1043 define other variables for private use, but you should be careful not to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1044 choose names that conflict with variables defined and used by the
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1045 @value{xpms}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1046
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1047 The required variables are described in the table below.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1048 The corresponding field names for @file{package-info.in}, where
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1049 relevant, are given in parentheses.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1050
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1051 @c This is the canonical place for this information. If there is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1052 @c unnecessary duplication with package-info.in documentation, shorten
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1053 @c that and leave this full-length.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1054 @table @samp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1055 @item VERSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1056 (version)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1057 The version of the XEmacs package, a numeric literal (a decimal
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1058 fixed-point number with two-places of precision). The only person who
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1059 ever needs to touch this is the XEmacs Packages Release Engineer.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1060
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1061 @item AUTHOR_VERSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1062 (author-version)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1063 The upstream author's version, an uninterpreted literal.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1064
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1065 @item MAINTAINER
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1066 (maintainer)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1067 A literal containing the XEmacs package's maintainer and his/her email
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1068 address.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1069
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1070 @item PACKAGE
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1071 The name of the package, a literal
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1072
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1073 @item PKG_TYPE
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1074 The type of package, a literal containing either @samp{regular} for
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1075 regular packages, or @samp{single-file} for single-file packages. This
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1076 should feed the @samp{type} field in @file{package-info.in}, but
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1077 currently it doesn't.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1078
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1079 @strong{N.B.} @samp{single-file} here does @emph{not} refer to the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1080 number of lisp files in a package. @xref{Package Terminology}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1081
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1082 @item CATEGORY
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1083 (category)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1084 A literal, either @samp{standard} or @samp{mule}. The non-Mule packages
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1085 are @samp{standard} and the Mule packages are, you guessed it,
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1086 @samp{mule}. This field is used at package installation time as part of
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1087 the process of determining where a package should be installed to.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1088
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1089 @item REQUIRES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1090 (requires)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1091 A list of packages required to correctly build this package.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1092
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1093 Note that the usual form in @file{package-info.in} already has the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1094 parentheses, so the @file{make} variable should be set to a
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1095 space-separated list of package names @emph{not} enclosed in
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1096 parentheses.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1097
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1098 The list is of @emph{packages}, not @emph{libraries}, as would
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1099 ordinarily be provided to the Lisp @code{require} function.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1100
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1101 @samp{REQUIRES} cannot be correctly computed from the calls to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1102 @code{require} in the package's library sources. @samp{REQUIRES} is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1103 used to ensure that all macro and defstruct definitions used by the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1104 package are available at build time. This is not merely a matter of
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1105 efficiency, to get the expansions inlined. In fact, it is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1106 @emph{impossible} to call a macro by name in byte-compiled Emacs Lisp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1107 code. Thus, if the macro expansion is not inlined, the call will result
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1108 in an error at run-time! Thus, packages providing libraries that would
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1109 be loaded because of autoload definitions must also be included.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1110
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1111 @item ELCS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1112 The list of the byte-compiled Lisp files used by the package. These
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1113 files and their @file{.el} versions will be included in the binary
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1114 package. This variable determines which libraries will be
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1115 byte-compiled. These libraries are also deleted by @samp{make clean}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1116
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1117 Note there is no sanity-checking done on this variable. If you put
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1118 @samp{.el} files in here, they will not be compiled and they @emph{will}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1119 be deleted by @samp{make clean}. You would surely be very distressed if
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1120 that happened, so be very careful. If this variable is left empty, none
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1121 of your Lisp code will be compiled or packaged. This would be a less
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1122 than amusing surprise, too.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1123
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1124 We don't consider this a feature, of course. Please do submit code to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1125 do sanity checking to @email{xemacs-patches@@xemacs.org}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1126 @end table
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1127
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1128 Optional, but commonly used variables are explained below.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1129
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1130 @table @samp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1131 @item ELCS_1
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1132 A list of extra byte-compiled Lisp files used by the package to be
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1133 installed in a subdirectory of the package's lisp directory. The same
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1134 care should be taken with this as with @code{ELCS} in regard to
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1135 @code{make clean}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1136
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1137 @item ELCS_1_DEST
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1138 The name of the subdirectory for the @code{ELCS_1} files to be installed
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1139 to. Be sure to include @samp{$(PACKAGE)/} as part of the name.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1140
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1141 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1142 ELCS_1_DEST = $(PACKAGE)/extra
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1143 @end example
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1144
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1145 Would put the @code{ELCS_1} files for the package, @samp{foo} into
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1146 @file{xemacs-packages/lisp/foo/extra/}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1147
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1148 @item EARLY_GENERATED_LISP
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1149 For additional @file{.el} files that will be generated before any
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1150 byte-compiling happens. Use this for @samp{autoload-type} files. You
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1151 must write @file{Makefile} rules to build these files.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1152
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1153 @item GENERATED_LISP
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1154 For additional @file{.el} files that will be generated at
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1155 byte-compilation time. You must write @file{Makefile} rules to build
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1156 these files.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1157
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1158 @item PRELOADS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1159 This is used if you need to pass extra command line arguments to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1160 XEmacs to build the package. For instance, a specification for
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1161 loading libraries containing macros before compiling the Lisp in the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1162 package. This is spliced directly into the invocation of XEmacs for
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1163 byte-compilation, so it must contain the @samp{-l} flag for XEmacs:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1164
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1165 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1166 PRELOADS=-l ./apackage-macros.el -l ../bpackage/lisp/bpackage-macros.el
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1167 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1168
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1169 Preloads are loaded before @file{package-compile.el}, so the
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1170 @code{load-path} is minimal. Therefore @samp{PRELOADS} must specify a
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1171 full path to packaged Lisp. The base @code{load-path} does include the
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1172 core Lisp directory, so core libraries are found.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1173
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1174 @item AUTOLOAD_PATH
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1175 The subdirectory in the package's source tree where the @file{.el} files
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1176 reside. This is where the @file{auto-autoloads.el} file will be placed.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1177
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1178 @strong{N.B.} There is no need to use this variable if the @file{.el}
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1179 files are in the package's toplevel directory. @code{AUTOLOAD_PATH}
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1180 defaults to @samp{.}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1181
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1182 @item PACKAGE_SUPPRESS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1183 Place calls to @code{package-suppress} here to indicate Lisp libraries
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1184 that should only be available to particular versions of XEmacs. For
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1185 example:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1186
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1187 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1188 PACKAGE_SUPPRESS = \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1189 (package-suppress 'xemacs-base \"regexp-opt\" '(emacs-version>= 21 5 11)) \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1190 (package-suppress 'xemacs-base \"easy-mmode\" '(emacs-version>= 21 5 11))
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1191 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1192
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1193 @c Change this when Ben has committed the WS that implements
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1194 @c `package-suppress' --SY.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1195 @strong{N.B.} This feature has not yet been implemented in XEmacs yet.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1196 It will appear in an upcoming version of XEmacs 21.5.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1197
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1198 @item STANDARD_DOCS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1199 Set this to @samp{t} if your package's Texinfo source file is located in
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1200 the package's toplevel directory @emph{and} is named
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1201 @file{$(PACKAGE).texi}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1202
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1203 @item EXPLICIT_DOCS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1204 Use this to explicitly list Texinfo sources that @emph{aren't} in the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1205 package's toplevel directory. For example:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1206
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1207 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1208 EXPLICIT_DOCS = texi/$(PACKAGE).texi
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1209 @end example
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1210
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1211 See @code{DOCS_TXI_EXTENSION} and @code{DOCS_TEXINFO_EXTENSION} if you
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1212 don't use the @file{.texi} file extension on your Texinfo sources.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1213
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1214 @item EXTRA_TEXI_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1215 List here extra Texinfo source files needed to build your
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1216 documentation. Whatever is listed here is passed on to @code{makeinfo}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1217 as a dependency.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1218
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1219 @item EXTRA_HTML_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1220 Use this to specify extra @file{.html} files to output.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1221
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1222 @item DOCS_TEXINFO_EXTENSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1223 Set this to @samp{t} if your Texinfo source files have a @samp{.texinfo}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1224 extension.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1225
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1226 @item DOCS_TXI_EXTENSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1227 Set this to @samp{t} if your Texinfo source files have a @samp{.txi}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1228 extension.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1229
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1230 @item EXTRA_DOC_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1231 Files listed here will be installed to @file{.../man/$(PACKAGE)/}. For
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1232 example, you might want to list @TeX{} files or @file{.eps} files here.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1233
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1234 @item EXTRA_SOURCES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1235 Other files (such as extra Lisp sources or an upstream @file{Makefile})
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1236 that are normally placed in the installed Lisp directory, but not
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1237 byte-compiled. These files are @emph{preserved} by the @samp{clean}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1238 targets.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1239
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1240 @item LIBSRC_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1241 For files that need to be installed to @file{lib-src/$(PACKAGE)/}. If
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1242 the files listed here need to be built you will have to write
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1243 @file{Makefile} rules to do so.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1244
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1245 @item DATA_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1246 Any data files, such as pixmaps, READMEs, and ChangeLogs. These must be
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1247 paths relative to the root of the package's source tree. These files
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1248 will be copied to @samp{$(DATA_DEST)} for installation. Any directory
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1249 component of the path for a file will be stripped, so that the
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1250 file ends up in @samp{$(DATA_DEST)}, not in a subdiredtory.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1251
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1252 @item DATA_DEST
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1253 The directory where the files in @code{DATA_FILES} are installed to. It
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1254 is a subdirectory of the installed @file{etc/} directory. Be sure to
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1255 prefix this value with @samp{$(PACKAGE)}, for example:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1256
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1257 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1258 DATA_DEST = $(PACKAGE)/foo
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1259 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1260
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1261 Would put files into @file{.../etc/$(PACKAGE)/foo/}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1262
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1263 @item DATA_1_FILES ... DATA_35_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1264 For data files that need to go into a different directory from
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1265 @code{DATA_DEST}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1266
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1267 @item DATA_1_DEST ... DATA_35_DEST
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1268 The name of the subdirectory for files specified in
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1269 @code{DATA_@var{n}_FILES}. And like @code{DATA_DEST}, be sure to prefix
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1270 @samp{$(PACKAGE)} to the value of these variables.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1271
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1272 @item EXTRA_DEPENDENCIES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1273 For additional files to build that aren't appropriate to place in any
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1274 other @file{Makefile} variable. You will need to write @file{Makefile}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1275 rules to build these files.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1276 @end table
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1277
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1278 @section @file{package-compile.el}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1279 @cindex package-compile.el
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1280 @cindex compiling packages
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1281 The @value{xpms} does not automatically become aware of your package simply
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1282 because there is a new subtree. If any package, including your own,
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1283 requires any of your files, it must be explicitly added to the compile
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1284 environment or loads/requires that search load-path will fail. The
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1285 changes that need to be made are
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1286
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1287 @table @strong
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1288 @item an entry in @code{package-directory-map}
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1289 This tells the @value{xpms} which distribution (currently
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1290 @samp{xemacs-packages} or @samp{mule-packages}) your package is found
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1291 in. It then looks in the distribution subdirectory whose name is the
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1292 same as the package's.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1293
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1294 @item an entry in the @code{cond} in @code{package-name-to-directory}
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1295 This is optional; it is necessary only if you keep your Lisp code
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1296 somewhere other than the top-level directory of the package's source
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1297 tree, eg, in @file{packages/xemacs-packages/$(PACKAGE)/lisp}.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1298 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1299
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1300 This only needs to be done once, when the package is first added to the
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1301 @value{xpms}. (Well, when you randomly change the subdirectory layout, too.)
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1302 Your changes to @file{package-compile.el} must be cleared and checked in
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1303 by the XEmacs Package Release Engineer before your package will build
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1304 correctly from a fresh checkout.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1305
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1306 This is unfortunate; it works pretty well once set up, but can cause
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1307 confusion when first building a package in the @value{xpms} context. In
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1308 particular, if the @code{package-directory-map} entry for a required
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1309 package, including the package itself, is not found, the necessary
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1310 requires will not be executed by @file{package-compile.el}. If
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1311 required functions are executed (under @code{eval-when-compile}),
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1312 they won't be found and the compile will fail. If required function
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1313 is actually a macro, the byte compiler will not recognize that,
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1314 compile a function call to the macro. This will cause a run-time
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1315 error because the byte-code interpreter does not know how to execute
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1316 macros. (Macros can always be expanded at compile-time, and this is
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1317 more efficient.)
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1318
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1319 If your package keeps some or all Lisp code somewhere other than the top
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1320 directory, then an entry in @code{package-name-to-directory} is also
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1321 necessary, or requires will fail, leading to the problems just described.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1322
752
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1323 @node Documenting Packages, Issues, Creating Packages, Packaging
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1324 @comment node-name, next, previous, up
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1325 @cindex documenting packages
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1326 @heading Documenting Packages:
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1327
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1328 @c #### Add a documentation section to Internals, and xref here.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1329 Some random notes on documenting your package.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1330
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1331 Do write a Texinfo file. It's not that hard to do basically, and even
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1332 using the more advanced features of Texinfo soon become natural. For a
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1333 start, just grab the template @file{Samples/package.texi} from the
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1334 @value{xpms} source tree, and drop your current README into the Top node. At
752
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1335 least this way your documentation will be accessible from the standard
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1336 Info readers. Next, try to add lots of cross-referencing and logical
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1337 markup, and then node structure.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1338
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1339 Address both end users and developer issues. You may not be the
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1340 maintainer forever.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1341
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1342 If you are maintaining a package that is part of the GNU Emacs
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1343 distribution, you'll likely find that you occasionally synchronize your
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1344 package with the GNU Emacs sources. When you synch a file,
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1345 conventionally you should place a comment just above the standard
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1346 @code{;;; Code} comment that looks like this:
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1347
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1348 @example
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1349 ;; Synched with:
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1350 ;; GNU Emacs 21.1, 2002-02-08, Stephen Turnbull <stephen@@xemacs.org>
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1351 @end example
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1352
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1353 This comment is a status flag; the ChangeLog doesn't really give the
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1354 same information.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1355
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1356 Do maintain a detailed ChangeLog.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1357
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1358 @node Issues, , Documenting Packages, Packaging
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1359 @section Issues
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1360
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1361 To be completed.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1362