xref: /plan9/sys/src/cmd/gs/doc/Maintain.htm (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
13ff48bf5SDavid du Colombier<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
23ff48bf5SDavid du Colombier<html>
33ff48bf5SDavid du Colombier<head>
43ff48bf5SDavid du Colombier<title>AFPL Ghostscript maintenance procedures</title>
5*593dc095SDavid du Colombier<!-- $Id: Maintain.htm,v 1.50 2005/10/20 19:46:23 ray Exp $ -->
63ff48bf5SDavid du Colombier<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
73ff48bf5SDavid du Colombier</head>
83ff48bf5SDavid du Colombier
93ff48bf5SDavid du Colombier<body>
103ff48bf5SDavid du Colombier<!-- [1.0 begin visible header] ============================================ -->
113ff48bf5SDavid du Colombier
123ff48bf5SDavid du Colombier<!-- [1.1 begin headline] ================================================== -->
133ff48bf5SDavid du Colombier
143ff48bf5SDavid du Colombier<h1>AFPL Ghostscript maintenance procedures</h1>
153ff48bf5SDavid du Colombier
163ff48bf5SDavid du Colombier<!-- [1.1 end headline] ==================================================== -->
173ff48bf5SDavid du Colombier
183ff48bf5SDavid du Colombier<!-- [1.2 begin table of contents] ========================================= -->
193ff48bf5SDavid du Colombier
203ff48bf5SDavid du Colombier<h2>Table of contents</h2>
213ff48bf5SDavid du Colombier
223ff48bf5SDavid du Colombier<blockquote><ul>
233ff48bf5SDavid du Colombier<li><a href="#Introduction">Introduction</a>
243ff48bf5SDavid du Colombier<li><a href="#Problem_reporting">Problem reporting</a>
253ff48bf5SDavid du Colombier<ul>
263ff48bf5SDavid du Colombier<li><a href="#Uploading_test_data">Uploading test data</a>
273ff48bf5SDavid du Colombier</ul>
283ff48bf5SDavid du Colombier<li><a href="#CVS">Rules for CVS commits</a>
293ff48bf5SDavid du Colombier<li><a href="#Adding_or_removing_files">Adding or Removing Files</a>
303ff48bf5SDavid du Colombier</ul></blockquote>
313ff48bf5SDavid du Colombier
323ff48bf5SDavid du Colombier<!-- [1.2 end table of contents] =========================================== -->
333ff48bf5SDavid du Colombier
343ff48bf5SDavid du Colombier<!-- [1.3 begin hint] ====================================================== -->
353ff48bf5SDavid du Colombier
363ff48bf5SDavid du Colombier<p>For other information, see the <a href="Readme.htm">Ghostscript
373ff48bf5SDavid du Colombieroverview</a> and the instructions on how to <a href="Make.htm">build
383ff48bf5SDavid du ColombierGhostscript</a>.
393ff48bf5SDavid du Colombier
403ff48bf5SDavid du Colombier<!-- [1.3 end hint] ======================================================== -->
413ff48bf5SDavid du Colombier
423ff48bf5SDavid du Colombier<hr>
433ff48bf5SDavid du Colombier
443ff48bf5SDavid du Colombier<!-- [1.0 end visible header] ============================================== -->
453ff48bf5SDavid du Colombier
463ff48bf5SDavid du Colombier<!-- [2.0 begin contents] ================================================== -->
473ff48bf5SDavid du Colombier
483ff48bf5SDavid du Colombier<h2><a name="Introduction"></a>Introduction</h2>
493ff48bf5SDavid du Colombier
503ff48bf5SDavid du Colombier<p>
513ff48bf5SDavid du ColombierThis document describes various maintenance procedures associated with AFPL
523ff48bf5SDavid du ColombierGhostscript.  It is only meant for developers actively working on AFPL
53*593dc095SDavid du ColombierGhostscript; some parts of it are only relevant to developers who have
54*593dc095SDavid du Colombiercommit access to the source repository.
553ff48bf5SDavid du Colombier
563ff48bf5SDavid du Colombier<hr>
573ff48bf5SDavid du Colombier
583ff48bf5SDavid du Colombier<h2><a name="Problem_reporting"></a>Problem reporting</h2>
593ff48bf5SDavid du Colombier
603ff48bf5SDavid du Colombier<h3><a name="#Uploading_test_data"></a>Uploading test data</h3>
613ff48bf5SDavid du Colombier
623ff48bf5SDavid du Colombier<p>
63*593dc095SDavid du ColombierIf a test file can't be attached to the report in the public
64*593dc095SDavid du Colombierbug tracking system, put it in <tt>casper:/home/support/<bug number>/</tt>.
65*593dc095SDavid du ColombierThis is a good place to collect test files of all kinds.
663ff48bf5SDavid du Colombier
673ff48bf5SDavid du Colombier<hr>
683ff48bf5SDavid du Colombier
693ff48bf5SDavid du Colombier<h2><a name="CVS"></a>Rules for CVS Commits</h2>
703ff48bf5SDavid du Colombier
713ff48bf5SDavid du Colombier<p>
72*593dc095SDavid du ColombierThe primary repository for Ghostscript code is
73*593dc095SDavid du Colombier<a href="http://cvs.ghostscript.com" class="offsite">cvs.ghostscript.com</a>
74*593dc095SDavid du ColombierThis section describes a few rules intended to make life easier
753ff48bf5SDavid du Colombierfor people working with this code base.
763ff48bf5SDavid du Colombier
773ff48bf5SDavid du Colombier<p>
783ff48bf5SDavid du ColombierAt any given time, there are usually two active branches: a stable
793ff48bf5SDavid du Colombierbranch and a development branch. The development branch is HEAD, which
80*593dc095SDavid du Colombieris the default when doing a checkout without a -r flag. The stable
81*593dc095SDavid du Colombierbranch is tagged after the previous major release. For example:
82*593dc095SDavid du ColombierGS_8_0x, GS_7_0x, GS_6_5.
833ff48bf5SDavid du Colombier
843ff48bf5SDavid du Colombier<p>
853ff48bf5SDavid du ColombierA concise and useful document for working with CVS branches is Jeff
863ff48bf5SDavid du ColombierSemke's <a href="http://www.psc.edu/~semke/cvs_branches.html"
873ff48bf5SDavid du Colombierclass="offsite">CVS
883ff48bf5SDavid du ColombierBranch and Tag Primer</a>. A
893ff48bf5SDavid du Colombiersomewhat more detailed explanation is the <a
903ff48bf5SDavid du Colombierhref="http://www.loria.fr/~molli/cvs/doc/cvs_5.html"
913ff48bf5SDavid du Colombierclass="offsite">Branching and
923ff48bf5SDavid du Colombiermerging</a> section from the CVS documentation by Pascal Molli.
933ff48bf5SDavid du Colombier
943ff48bf5SDavid du Colombier<p>
953ff48bf5SDavid du ColombierFor new development commits, you can basically ignore the
963ff48bf5SDavid du Colombierbranches. Just commit to the HEAD branch. For bug fixes for the stable
973ff48bf5SDavid du Colombierbranch, it is your responsibility to commit to both the stable branch
98*593dc095SDavid du Colombierand, if appropriate, HEAD.
993ff48bf5SDavid du Colombier
1003ff48bf5SDavid du Colombier<p>
1013ff48bf5SDavid du ColombierWhen modifying a number of files for a single issue, please group them
1023ff48bf5SDavid du Colombiertogether as a single commit. For two separate sets of changes dealing
1033ff48bf5SDavid du Colombierwith two different issues, there should be two commits.
1043ff48bf5SDavid du Colombier
1053ff48bf5SDavid du Colombier<p>
1063ff48bf5SDavid du ColombierYou should strive not to introduce any new bugs with your
1073ff48bf5SDavid du Colombiercommit. Always make sure the code compiles before committing. Test the
1083ff48bf5SDavid du Colombierchanges with several files, including the problem file in the case of
1093ff48bf5SDavid du Colombiera bug fix, and other files that may have been affected by the
1103ff48bf5SDavid du Colombierchanges.
1113ff48bf5SDavid du Colombier
1123ff48bf5SDavid du Colombier<p>
1133ff48bf5SDavid du ColombierAlways supply a descriptive log message for your commits. These log
1143ff48bf5SDavid du Colombiermessages are used to automatically generate the <a
1153ff48bf5SDavid du Colombierhref="News.htm">News.htm</a> file and History changelogs, and are also
116*593dc095SDavid du Colombiercrucial for navigating the change history. Please try to
1173ff48bf5SDavid du Colombierkeep the style of the descriptions similar to those in the current
1183ff48bf5SDavid du ColombierHistory#.htm files.
1193ff48bf5SDavid du Colombier
1203ff48bf5SDavid du Colombier<p>
1213ff48bf5SDavid du ColombierLog messages beginning with 'Fix' are treated specially. Such messages are
1223ff48bf5SDavid du Colombierput under the "Fixes problems" heading when the History files are
1233ff48bf5SDavid du Colombiergenerated. Additionally, if the first four characters are 'Fix:' this is removed
1243ff48bf5SDavid du Colombier(i.e., "Fix: The xyz" becomes "The xyz", but "Fixes xyz" is copied unchanged).
1253ff48bf5SDavid du ColombierThis feature is intended for explicit bugfixes and should be avoided for
1263ff48bf5SDavid du Colombierenhancements or commits with long explanations.
1273ff48bf5SDavid du Colombier
1283ff48bf5SDavid du Colombier<p>
1293ff48bf5SDavid du ColombierInformation about who changed what, when, and why is maintained in the
1303ff48bf5SDavid du ColombierCVS logs. In general, a file should be a clean representation of the
1313ff48bf5SDavid du Colombiercurrent version rather than a history trail of how it got
1323ff48bf5SDavid du Colombierthere. Keeping old code around for reference is usually not necessary,
1333ff48bf5SDavid du Colombieras it is stored in the CVS diffs. When necessary, use #if / #endif, or
1343ff48bf5SDavid du Colombierdescriptive conditionals such as #ifdef OLD_CMAP_TABLES. Do not
1353ff48bf5SDavid du Colombiercomment out old code. (A very few files that are distributed separate
1363ff48bf5SDavid du Colombierfrom Ghostscript have a change log at the beginning, which should be
1373ff48bf5SDavid du Colombiermaintained: currently, only ansiknr.c and md5.[ch].)
1383ff48bf5SDavid du Colombier
1393ff48bf5SDavid du Colombier<p>
1403ff48bf5SDavid du ColombierAdditionally, if your patch removes a feature, changes an interface or
1413ff48bf5SDavid du Colombierotherwise creates an incompatibility with the last release, you
1423ff48bf5SDavid du Colombiermust add an entry to the "Incompatible changes" section of <tt>News.htm</tt>
1433ff48bf5SDavid du Colombieras this information can only be generated manually.
1443ff48bf5SDavid du ColombierThis admonition applies to api changes that might
1453ff48bf5SDavid du Colombieraffect other developers as well as user issues like switch behavior.
1463ff48bf5SDavid du ColombierUpon release, the accumulated incompatible changes will be moved to the
1473ff48bf5SDavid du Colombierrelevant History file, and the News collection in cvs will be wiped clean
1483ff48bf5SDavid du Colombierfor the next version.
1493ff48bf5SDavid du Colombier
1503ff48bf5SDavid du Colombier<p>
151*593dc095SDavid du ColombierAll patches should be reviewed before being committed. Please email your
1523ff48bf5SDavid du Colombierpatch to <a
1533ff48bf5SDavid du Colombierhref="mailto:gs-code-review@ghostscript.com">gs-code-review@ghostscript.com</a>.
1543ff48bf5SDavid du ColombierMake sure to include your commit comment and any other information
1553ff48bf5SDavid du Colombierthat would be helpful for the review. Also, please identify which
156*593dc095SDavid du Colombierbranches the patch is intended for. The code review list is also
157*593dc095SDavid du Colombiera good place to put extensive documentation on changes (motivation and
158*593dc095SDavid du Colombierassociated reasoning for example) that are too verbose for the cvs
159*593dc095SDavid du Colombierchangelog.
1603ff48bf5SDavid du Colombier
1613ff48bf5SDavid du Colombier<p>
1623ff48bf5SDavid du ColombierIf you are not an employee or consultant of Artifex or artofcode, then
1633ff48bf5SDavid du Colombierwe need a copyright assignment form so we can incorporate your
1643ff48bf5SDavid du Colombierchanges. Please email Raph Levien &lt;<a
1653ff48bf5SDavid du Colombierhref="mailto:raph@artofcode.com">raph@artofcode.com</a>&gt; and
1663ff48bf5SDavid du Colombierinclude your snailmail address for a hardcopy assignment form.
1673ff48bf5SDavid du Colombier
1683ff48bf5SDavid du Colombier<h2><a name="Adding_or_removing_files"></a>Adding or removing files</h2>
1693ff48bf5SDavid du Colombier
1703ff48bf5SDavid du Colombier<p>
1713ff48bf5SDavid du ColombierWhen adding or removing files, don't forget to invoke <b><tt>cvs
1723ff48bf5SDavid du Colombieradd</tt></b> or <b><tt>cvs rm</tt></b>.
1733ff48bf5SDavid du Colombier
1743ff48bf5SDavid du Colombier<p>
1753ff48bf5SDavid du ColombierWhen adding files, update the file roadmap in
1763ff48bf5SDavid du Colombier<b><tt>doc/Develop.htm</tt></b>.
1773ff48bf5SDavid du Colombier
1783ff48bf5SDavid du Colombier<p>
1793ff48bf5SDavid du ColombierWhen adding or removing files other than .c or .h: If the files will be
1803ff48bf5SDavid du Colombierused at runtime, check the install list in <b><tt>unixinst.mak</tt></b>.
1813ff48bf5SDavid du Colombier
1823ff48bf5SDavid du Colombier<p>
1833ff48bf5SDavid du ColombierWhen adding .c files, update the relevant <b><tt>.mak</tt></b> file
1843ff48bf5SDavid du Colombier(usually <b><tt>devs.mak</tt></b>, <b><tt>int.mak</tt></b>, or
1853ff48bf5SDavid du Colombier<b><tt>lib.mak</tt></b>).
1863ff48bf5SDavid du Colombier
1873ff48bf5SDavid du Colombier<p>
1883ff48bf5SDavid du ColombierWhen adding new documentation, add a link to <tt>doc/Readme.htm</tt> and
1893ff48bf5SDavid du Colombiera short blurb describing the contents of the file.
1903ff48bf5SDavid du Colombier
1913ff48bf5SDavid du Colombier<p>
1923ff48bf5SDavid du ColombierWhen adding or changing fonts, update <b><tt>lib/Fontmap.GS</tt></b>,
1933ff48bf5SDavid du Colombier<b><tt>fonts.mak</tt></b>, and possibly the compiled fonts in
1943ff48bf5SDavid du Colombier<b><tt>gs.mak</tt></b> and the examples in
1953ff48bf5SDavid du Colombier<b><tt>doc/Fonts.htm</tt></b>.
1963ff48bf5SDavid du Colombier
1973ff48bf5SDavid du Colombier<p>
1983ff48bf5SDavid du ColombierWhen adding .ps files, update <b><tt>doc/Psfiles.htm</tt></b>.
1993ff48bf5SDavid du Colombier
2003ff48bf5SDavid du Colombier<p>
2013ff48bf5SDavid du ColombierLikewise, you will want to delete any references for a file you
2023ff48bf5SDavid du Colombierremove from Ghostscript.
2033ff48bf5SDavid du Colombier
2043ff48bf5SDavid du Colombier<!-- [2.0 end contents] ==================================================== -->
2053ff48bf5SDavid du Colombier
2063ff48bf5SDavid du Colombier<!-- [3.0 begin visible trailer] =========================================== -->
2073ff48bf5SDavid du Colombier<hr>
2083ff48bf5SDavid du Colombier
2093ff48bf5SDavid du Colombier<p>
210*593dc095SDavid du Colombier<small>Copyright &copy; 2000-2002 artofcode LLC.
2113ff48bf5SDavid du ColombierAll rights reserved.</small>
2123ff48bf5SDavid du Colombier
2133ff48bf5SDavid du Colombier<p>
214*593dc095SDavid du ColombierThis software is provided AS-IS with no warranty, either express or
215*593dc095SDavid du Colombierimplied.
216*593dc095SDavid du Colombier
217*593dc095SDavid du ColombierThis software is distributed under license and may not be copied,
218*593dc095SDavid du Colombiermodified or distributed except as expressly authorized under the terms
219*593dc095SDavid du Colombierof the license contained in the file LICENSE in this distribution.
220*593dc095SDavid du Colombier
221*593dc095SDavid du ColombierFor more information about licensing, please refer to
222*593dc095SDavid du Colombierhttp://www.ghostscript.com/licensing/. For information on
223*593dc095SDavid du Colombiercommercial licensing, go to http://www.artifex.com/licensing/ or
224*593dc095SDavid du Colombiercontact Artifex Software, Inc., 101 Lucas Valley Road #110,
225*593dc095SDavid du ColombierSan Rafael, CA  94903, U.S.A., +1(415)492-9861.
2263ff48bf5SDavid du Colombier
2273ff48bf5SDavid du Colombier<p>
228*593dc095SDavid du Colombier<small>Ghostscript version 8.53, 20 October 2005
2293ff48bf5SDavid du Colombier
2303ff48bf5SDavid du Colombier<!-- [3.0 end visible trailer] ============================================= -->
2313ff48bf5SDavid du Colombier
2323ff48bf5SDavid du Colombier</body>
2333ff48bf5SDavid du Colombier</html>
234