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 <<a 1653ff48bf5SDavid du Colombierhref="mailto:raph@artofcode.com">raph@artofcode.com</a>> 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 © 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