annotate man/lispref/packaging.texi @ 5044:e84a30b0e4a2

remove duplicative code in change_frame_size() -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-15 Ben Wing <ben@xemacs.org> * frame.c (change_frame_size_1): Simplify the logic in this function. (1) Don't allow 0 as the value of height or width. The old code that tried to allow this was totally broken, anyway, so obviously this never happens any more. (2) Don't duplicate the code in frame_conversion_internal() that converts displayable pixel size to total pixel size -- just call that function.
author Ben Wing <ben@xemacs.org>
date Mon, 15 Feb 2010 22:58:10 -0600
parents 15139dbf89f4
children 308d34e9f07d
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
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
527 (4.2 from texinfo-4.2)
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
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
603 @subsection The targets that most people would be interested in would be:
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.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
996
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
997 # XEmacs is free software; you can redistribute it and/or modify it
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
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
999 # Free Software Foundation; either version 2, or (at your option) any
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1000 # later version.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1001
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.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1006
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
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1008 # along with XEmacs; see the file COPYING. If not, write to
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1009 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1010 # Boston, MA 02111-1307, USA.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1011
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1012 # 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
1013 # building without Mule.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1014
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1015 VERSION = 1.10
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1016 AUTHOR_VERSION = 2.02
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1017 MAINTAINER = Adrian Aichner <adrian@@xemacs.org>
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1018 PACKAGE = build
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1019 PKG_TYPE = regular
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1020 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
1021 CATEGORY = standard
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1022
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1023 ELCS = build.elc build-report.elc
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1024
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1025 STANDARD_DOCS = t
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1026
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1027 include ../../XEmacs.rules
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1028 @end example
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1029
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1030 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
1031 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
1032 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
1033 toplevel of the package source hierarchy.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1034
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1035 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
1036 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
1037 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
1038 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
1039 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
1040 for.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1041
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1042 @subheading @file{Makefile} Variables Explained:
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1043 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
1044 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
1045 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
1046 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
1047 @value{xpms}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1048
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1049 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
1050 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
1051 relevant, are given in parentheses.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1052
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1053 @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
1054 @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
1055 @c that and leave this full-length.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1056 @table @samp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1057 @item VERSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1058 (version)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1059 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
1060 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
1061 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
1062
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1063 @item AUTHOR_VERSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1064 (author-version)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1065 The upstream author's version, an uninterpreted literal.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1066
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1067 @item MAINTAINER
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1068 (maintainer)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1069 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
1070 address.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1071
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1072 @item PACKAGE
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1073 The name of the package, a literal
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1074
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1075 @item PKG_TYPE
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1076 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
1077 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
1078 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
1079 currently it doesn't.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1080
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1081 @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
1082 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
1083
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1084 @item CATEGORY
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1085 (category)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1086 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
1087 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
1088 @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
1089 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
1090
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1091 @item REQUIRES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1092 (requires)
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1093 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
1094
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1095 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
1096 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
1097 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
1098 parentheses.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1099
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1100 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
1101 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
1102
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1103 @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
1104 @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
1105 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
1106 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
1107 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
1108 @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
1109 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
1110 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
1111 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
1112
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1113 @item ELCS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1114 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
1115 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
1116 package. This variable determines which libraries will be
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1117 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
1118
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1119 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
1120 @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
1121 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
1122 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
1123 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
1124 than amusing surprise, too.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1125
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1126 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
1127 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
1128 @end table
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 Optional, but commonly used variables are explained below.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1131
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1132 @table @samp
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1133 @item ELCS_1
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1134 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
1135 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
1136 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
1137 @code{make clean}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1138
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1139 @item ELCS_1_DEST
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1140 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
1141 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
1142
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1143 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1144 ELCS_1_DEST = $(PACKAGE)/extra
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1145 @end example
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1146
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1147 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
1148 @file{xemacs-packages/lisp/foo/extra/}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1149
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1150 @item EARLY_GENERATED_LISP
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1151 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
1152 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
1153 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
1154
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1155 @item GENERATED_LISP
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1156 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
1157 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
1158 these files.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1159
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1160 @item PRELOADS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1161 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
1162 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
1163 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
1164 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
1165 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
1166
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1167 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1168 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
1169 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1170
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1171 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
1172 @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
1173 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
1174 core Lisp directory, so core libraries are found.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1175
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1176 @item AUTOLOAD_PATH
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1177 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
1178 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
1179
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1180 @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
1181 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
1182 defaults to @samp{.}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1183
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1184 @item PACKAGE_SUPPRESS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1185 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
1186 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
1187 example:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1188
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1189 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1190 PACKAGE_SUPPRESS = \
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1191 (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
1192 (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
1193 @end example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1194
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1195 @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
1196 @c `package-suppress' --SY.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1197 @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
1198 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
1199
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1200 @item STANDARD_DOCS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1201 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
1202 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
1203 @file{$(PACKAGE).texi}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1204
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1205 @item EXPLICIT_DOCS
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1206 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
1207 package's toplevel directory. For example:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1208
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1209 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1210 EXPLICIT_DOCS = texi/$(PACKAGE).texi
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1211 @end example
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1212
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1213 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
1214 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
1215
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1216 @item EXTRA_TEXI_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1217 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
1218 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
1219 as a dependency.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1220
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1221 @item EXTRA_HTML_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1222 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
1223
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1224 @item DOCS_TEXINFO_EXTENSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1225 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
1226 extension.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1227
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1228 @item DOCS_TXI_EXTENSION
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1229 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
1230 extension.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1231
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1232 @item EXTRA_DOC_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1233 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
1234 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
1235
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1236 @item EXTRA_SOURCES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1237 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
1238 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
1239 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
1240 targets.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1241
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1242 @item LIBSRC_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1243 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
1244 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
1245 @file{Makefile} rules to do so.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1246
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1247 @item DATA_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1248 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
1249 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
1250 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
1251 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
1252 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
1253
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1254 @item DATA_DEST
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1255 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
1256 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
1257 prefix this value with @samp{$(PACKAGE)}, for example:
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1258
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1259 @example
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1260 DATA_DEST = $(PACKAGE)/foo
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1261 @end example
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 Would put files into @file{.../etc/$(PACKAGE)/foo/}.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1264
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1265 @item DATA_1_FILES ... DATA_35_FILES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1266 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
1267 @code{DATA_DEST}.
1648
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1268
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1269 @item DATA_1_DEST ... DATA_35_DEST
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 1648
diff changeset
1270 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
1271 @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
1272 @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
1273
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1274 @item EXTRA_DEPENDENCIES
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1275 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
1276 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
1277 rules to build these files.
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1278 @end table
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1279
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1280 @section @file{package-compile.el}
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1281 @cindex package-compile.el
712931b4b71d [xemacs-hg @ 2003-08-27 18:06:54 by youngs]
youngs
parents: 1613
diff changeset
1282 @cindex compiling packages
2955
4d269e525e21 [xemacs-hg @ 2005-09-26 22:18:59 by adrian]
adrian
parents: 1738
diff changeset
1283 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
1284 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
1285 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
1286 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
1287 changes that need to be made are
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1288
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1289 @table @strong
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1290 @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
1291 This tells the @value{xpms} which distribution (currently
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1292 @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
1293 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
1294 same as the package's.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1295
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1296 @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
1297 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
1298 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
1299 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
1300 @end table
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1301
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1302 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
1303 @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
1304 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
1305 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
1306 correctly from a fresh checkout.
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1307
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1308 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
1309 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
1310 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
1311 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
1312 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
1313 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
1314 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
1315 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
1316 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
1317 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
1318 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
1319 more efficient.)
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1320
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1321 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
1322 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
1323 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
1324
752
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1325 @node Documenting Packages, Issues, Creating Packages, Packaging
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1326 @comment node-name, next, previous, up
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1327 @cindex documenting packages
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1328 @heading Documenting Packages:
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1329
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1330 @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
1331 Some random notes on documenting your package.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1332
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1333 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
1334 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
1335 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
1336 @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
1337 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
1338 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
1339 markup, and then node structure.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1340
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1341 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
1342 maintainer forever.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1343
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1344 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
1345 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
1346 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
1347 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
1348 @code{;;; Code} comment that looks like this:
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1349
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1350 @example
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1351 ;; Synched with:
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1352 ;; 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
1353 @end example
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1354
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1355 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
1356 same information.
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 Do maintain a detailed ChangeLog.
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1359
5d60b99c1ded [xemacs-hg @ 2002-02-13 13:06:44 by stephent]
stephent
parents: 749
diff changeset
1360 @node Issues, , Documenting Packages, Packaging
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1361 @section Issues
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1362
694
561ad704dc70 [xemacs-hg @ 2001-12-15 09:16:20 by stephent]
stephent
parents: 693
diff changeset
1363 To be completed.
693
b05e2a249757 [xemacs-hg @ 2001-12-14 07:50:06 by stephent]
stephent
parents:
diff changeset
1364