Mercurial > hg > xemacs-beta
comparison man/lispref/packaging.texi @ 694:561ad704dc70
[xemacs-hg @ 2001-12-15 09:16:20 by stephent]
hazmat recycling
author | stephent |
---|---|
date | Sat, 15 Dec 2001 09:16:21 +0000 |
parents | b05e2a249757 |
children | 9cea8fcd2e61 |
comparison
equal
deleted
inserted
replaced
693:b05e2a249757 | 694:561ad704dc70 |
---|---|
123 subdirectory is for use by the @xpms{} administration tools, and | 123 subdirectory is for use by the @xpms{} administration tools, and |
124 currently contains a @file{MANIFEST.@var{package-name}} file for each | 124 currently contains a @file{MANIFEST.@var{package-name}} file for each |
125 package to ensure that no cruft remains when a package is removed or | 125 package to ensure that no cruft remains when a package is removed or |
126 updated. The @file{lisp}, @file{etc}, and @file{lib-src} subdirectories | 126 updated. The @file{lisp}, @file{etc}, and @file{lib-src} subdirectories |
127 are further subdivided, with a subdirectory for each package. The | 127 are further subdivided, with a subdirectory for each package. The |
128 @file{info} and @file{man} directories obey the respective documentation | 128 @file{info} directory obeys the usual conventions. |
129 systems' conventions. @emph{I.e.}, the @file{info} directory is flat | 129 @emph{I.e.}, the @file{info} directory is flat |
130 with a(n) (optional) @file{dir} file and one (set of) info file(s) per | 130 with a(n) (optional) @file{dir} file and one (set of) info file(s) per |
131 package. The @file{man} subdirectory is divided into sections. As | 131 package. The @file{man} subdirectory typically contains documentation |
132 mentioned, this structure is used for historical reasions, and it is | 132 sources, separated by package. (It does not contain @file{man(1)} |
133 likely to change in the future. | 133 pages, as Emacs provides very few of them.) |
134 | 134 |
135 There are several standard package hierarchies, and administrators can | 135 There are several standard package hierarchies, and administrators can |
136 configure others at build time, while users can configure others at run | 136 configure others at build time, while users can configure others at run |
137 time. The standard system hierarchies are all subdirectories of an | 137 time. The standard system hierarchies are all subdirectories of an |
138 @c #### This is possibly incorrect usage of "installation root." | 138 @c #### This is possibly incorrect usage of "installation root." |
174 @samp{--package-path} option to @file{configure}, or at run-time by | 174 @samp{--package-path} option to @file{configure}, or at run-time by |
175 specifying the @code{EMACSPACKAGEPATH} environment variable. | 175 specifying the @code{EMACSPACKAGEPATH} environment variable. |
176 @xref{Packages,,,xemacs}. | 176 @xref{Packages,,,xemacs}. |
177 | 177 |
178 @c #### The following description is quite possibly inaccurate. | 178 @c #### The following description is quite possibly inaccurate. |
179 @c Arrgh, Michael! | 179 @c Please, Michael, write some specs up! |
180 The default order of search is hierarchically determined. First, the | 180 The default order of search is hierarchically determined. First, the |
181 roots are ordered. The @dfn{early} roots are the user-specific roots, | 181 roots are ordered. The @dfn{early} roots are the user-specific roots, |
182 typically @file{~/.xemacs}. The @dfn{late} roots are the system roots, | 182 typically @file{~/.xemacs}. The @dfn{late} roots are the system roots, |
183 typically @file{/usr/local/lib/xemacs-21.4.6} and | 183 typically @file{/usr/local/lib/xemacs-21.4.6} and |
184 @file{/usr/local/lib/xemacs}, in that order. All hierarchies for a | 184 @file{/usr/local/lib/xemacs}, in that order. All hierarchies for a |
417 | 417 |
418 | 418 |
419 @node The Package Release Engineer's View, , The Library Maintainer's View, Package Overview | 419 @node The Package Release Engineer's View, , The Library Maintainer's View, Package Overview |
420 @subsection The Package Release Engineer's View | 420 @subsection The Package Release Engineer's View |
421 | 421 |
422 Bu-wha-ha-ha-ha-ha! If you aren't the package release engineer, you | 422 The XEmacs Package Release Engineer is responsible for keeping the |
423 @emph{don't want to know}. If you @emph{are} the package release | 423 system coherent. The changes to @file{packages/package-compile.el} and |
424 engineer, you have my condolences. Rest (if you can get any rest) | 424 @file{packages/xemacs-packages/Makefile} required to make the package |
425 assured you are in my prayers. | 425 available to others, and for building SUMO tarballs, @emph{etc}, are |
426 | 426 done by the Package Release Engineer, not individual library |
427 To be completed. | 427 maintainers. |
428 | |
429 The Package Release Engineer also maintains assorted infrastructure for | |
430 actually making releases. These are generally available for inspection | |
431 in the @code{xemacs-builds} module in the CVS repository. | |
432 | |
433 @c #### To be completed. | |
428 | 434 |
429 | 435 |
430 @c #### The following section is lifted verbatim from the XEmacs User's | 436 @c #### The following section is lifted verbatim from the XEmacs User's |
431 @c Manual, file packages.texi. | 437 @c Manual, file packages.texi. |
432 @node Package Terminology, Building Packages, Package Overview, Packaging | 438 @node Package Terminology, Building Packages, Package Overview, Packaging |
838 requires any of your files, it must be explicitly added to the compile | 844 requires any of your files, it must be explicitly added to the compile |
839 environment or loads/requires that search load-path will fail. The | 845 environment or loads/requires that search load-path will fail. The |
840 changes that need to be made are | 846 changes that need to be made are |
841 | 847 |
842 @table @strong | 848 @table @strong |
843 @item an entry in package-directory-map | 849 @item an entry in @code{package-directory-map} |
844 This tells the @xpms{} which distribution (currently | 850 This tells the @xpms{} which distribution (currently |
845 @samp{xemacs-packages} or @samp{mule-packages}) your package is found | 851 @samp{xemacs-packages} or @samp{mule-packages}) your package is found |
846 in. It then looks in the distribution subdirectory whose name is the | 852 in. It then looks in the distribution subdirectory whose name is the |
847 same as the package's. | 853 same as the package's. |
848 | 854 |
856 @xpms{}. (Well, when you randomly change the subdirectory layout, too.) | 862 @xpms{}. (Well, when you randomly change the subdirectory layout, too.) |
857 Your changes to @file{package-compile.el} must be cleared and checked in | 863 Your changes to @file{package-compile.el} must be cleared and checked in |
858 by the XEmacs Package Release Engineer before your package will build | 864 by the XEmacs Package Release Engineer before your package will build |
859 correctly from a fresh checkout. | 865 correctly from a fresh checkout. |
860 | 866 |
861 Obviously all of this is really horrible, and would be totally | 867 This is unfortunate; it works pretty well once set up, but can cause |
862 inexcusable if I wasn't afraid the XEmacs Package Release Engineer would | 868 confusion when first building a package in the @xpms{} context. In |
863 kill me if I complained loud enough for him to hear. Maybe it will | 869 particular, if the @code{package-directory-map} entry for a required |
864 change some day.... | 870 package |
871 @c #### including the package itself? | |
872 is not found, the necessary requires will not be executed by | |
873 @file{package-compile.el}. If required functions are executed (under | |
874 @code{eval-when-compile}), they won't be found and the compile will | |
875 fail. If required function is actually a macro, the byte compiler will | |
876 not recognize that, compile a function call to the macro. This will | |
877 cause a run-time error because the byte-code interpreter does not know | |
878 how to execute macros. (Macros can always be expanded at compile-time, | |
879 and this is more efficient.) | |
880 | |
881 If your package keeps some or all Lisp code somewhere other than the top | |
882 directory, then an entry in @code{package-name-to-directory} is also | |
883 necessary, or requires will fail, leading to the problems just described. | |
865 | 884 |
866 | 885 |
867 @node package-info.in Fields, Makefile Variables, package-compile.el, Creating Packages | 886 @node package-info.in Fields, Makefile Variables, package-compile.el, Creating Packages |
868 | 887 |
869 The @file{package-info.in} structure is simply Lisp data, to be read by | 888 The @file{package-info.in} structure is simply Lisp data, to be read by |
1220 | 1239 |
1221 | 1240 |
1222 @node Issues, , Creating Packages, Packaging | 1241 @node Issues, , Creating Packages, Packaging |
1223 @section Issues | 1242 @section Issues |
1224 | 1243 |
1225 ``Issues''? Mu-wha-ha-ha! Ha-ha-ha! Honeychile, they ain't nuthin' | 1244 To be completed. |
1226 @emph{but} ``issues'' at this point. @xref{The Package Release | 1245 |
1227 Engineer's View}. | |
1228 |