xref: /plan9/sys/src/cmd/gs/doc/Release.htm (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
13ff48bf5SDavid du Colombier<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
27dd7cddfSDavid du Colombier<html>
37dd7cddfSDavid du Colombier<head>
43ff48bf5SDavid du Colombier<title>How to prepare a Ghostscript release</title>
5*593dc095SDavid du Colombier<!-- $Id: Release.htm,v 1.95 2005/10/20 19:46:23 ray Exp $ -->
67dd7cddfSDavid du Colombier<!-- Originally: make.txt -->
73ff48bf5SDavid du Colombier<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
87dd7cddfSDavid du Colombier</head>
97dd7cddfSDavid du Colombier
107dd7cddfSDavid du Colombier<body>
117dd7cddfSDavid du Colombier<!-- [1.0 begin visible header] ============================================ -->
127dd7cddfSDavid du Colombier
137dd7cddfSDavid du Colombier<!-- [1.1 begin headline] ================================================== -->
147dd7cddfSDavid du Colombier
153ff48bf5SDavid du Colombier<h1>How to prepare a Ghostscript release</h1>
167dd7cddfSDavid du Colombier
177dd7cddfSDavid du Colombier<!-- [1.1 end headline] ==================================================== -->
187dd7cddfSDavid du Colombier
197dd7cddfSDavid du Colombier<!-- [1.2 begin table of contents] ========================================= -->
207dd7cddfSDavid du Colombier
217dd7cddfSDavid du Colombier<h2>Table of contents</h2>
227dd7cddfSDavid du Colombier
237dd7cddfSDavid du Colombier<blockquote><ul>
247dd7cddfSDavid du Colombier<li><a href="#Introduction">Introduction</a>
257dd7cddfSDavid du Colombier<li><a href="#Servers">Servers</a>
267dd7cddfSDavid du Colombier<ul>
277dd7cddfSDavid du Colombier<li><a href="#Development_files">Development sources and bug reports</a>
283ff48bf5SDavid du Colombier<li><a href="#Distribution">Distribution</a>
297dd7cddfSDavid du Colombier</ul>
30*593dc095SDavid du Colombier<li><a href="#Release_numbering">Release numbering</a>
317dd7cddfSDavid du Colombier<li><a href="#Making_distributions">Making distributions</a>
327dd7cddfSDavid du Colombier<ul>
337dd7cddfSDavid du Colombier<li><a href="#Preparing_source">Preparing the source code</a>
347dd7cddfSDavid du Colombier<li><a href="#Testing">Testing</a>
35*593dc095SDavid du Colombier<li><a href="#Changelog">Updating the Changelog</a>
36*593dc095SDavid du Colombier<li><a href="#Making_Tarballs">Making the source distribution</a>
377dd7cddfSDavid du Colombier<li><a href="#Testing_on_Windows">Testing on Windows</a>
38*593dc095SDavid du Colombier<li><a href="#Windows_distribution">Building the Windows distribution</a>
397dd7cddfSDavid du Colombier<li><a href="#Finishing_up">Finishing up</a>
403ff48bf5SDavid du Colombier<li><a href="#Beta_distributions">Beta distributions</a>
417dd7cddfSDavid du Colombier<li><a href="#Public_releases">Public releases</a>
423ff48bf5SDavid du Colombier</ul>
437dd7cddfSDavid du Colombier<li><a href="#After_releasing">After releasing</a>
44*593dc095SDavid du Colombier<li><a href="#GPL_releases">GPL Ghostscript releases</a>
453ff48bf5SDavid du Colombier<ul>
46*593dc095SDavid du Colombier<li><a href="#GPL_code">GPL code</a>
47*593dc095SDavid du Colombier<li><a href="#GPL_after_releasing">After releasing (GPL)</a>
487dd7cddfSDavid du Colombier</ul>
493ff48bf5SDavid du Colombier<li><a href="#Fonts">Fonts</a>
507dd7cddfSDavid du Colombier</ul></blockquote>
517dd7cddfSDavid du Colombier
527dd7cddfSDavid du Colombier<!-- [1.2 end table of contents] =========================================== -->
537dd7cddfSDavid du Colombier
547dd7cddfSDavid du Colombier<!-- [1.3 begin hint] ====================================================== -->
557dd7cddfSDavid du Colombier
567dd7cddfSDavid du Colombier<p>For other information, see the <a href="Readme.htm">Ghostscript
573ff48bf5SDavid du Colombieroverview</a> and the instructions on how to <a href="Make.htm">build
587dd7cddfSDavid du ColombierGhostscript</a>.
597dd7cddfSDavid du Colombier
607dd7cddfSDavid du Colombier<!-- [1.3 end hint] ======================================================== -->
617dd7cddfSDavid du Colombier
627dd7cddfSDavid du Colombier<hr>
637dd7cddfSDavid du Colombier
647dd7cddfSDavid du Colombier<!-- [1.0 end visible header] ============================================== -->
657dd7cddfSDavid du Colombier
667dd7cddfSDavid du Colombier<!-- [2.0 begin contents] ================================================== -->
677dd7cddfSDavid du Colombier
683ff48bf5SDavid du Colombier<h2><a name="Introduction"></a>Introduction</h2>
697dd7cddfSDavid du Colombier
707dd7cddfSDavid du Colombier<p>
713ff48bf5SDavid du ColombierThis document describes the process that artofcode LLC, the copyright holder
72*593dc095SDavid du Colombierof Ghostscript, uses for making new Ghostscript releases. Please note
73*593dc095SDavid du Colombierthat while the the license allows anyone to prepare and distribute
74*593dc095SDavid du Colombierreleases in accordance with its terms and conditions, this document is
75*593dc095SDavid du Colombierreally meant only to document the process used by artofcode LLC.
76*593dc095SDavid du ColombierHowever, the eventual purpose of this document is to describe
77*593dc095SDavid du ColombierGhostscript release procedures in enough detail that someone who knows
78*593dc095SDavid du Colombierlittle about Ghostscript but is generally familiar with the platform on
79*593dc095SDavid du Colombierwhich the procedure is being carried out can execute the procedures
80*593dc095SDavid du Colombiercorrectly. So if you add or changing anything to/in this document,
81*593dc095SDavid du Colombierbe sure to specify all command lines, file names, etc. in explicit
82*593dc095SDavid du Colombierdetail.
837dd7cddfSDavid du Colombier
847dd7cddfSDavid du Colombier<p>
85*593dc095SDavid du ColombierThe release process for the GPL and AFPL branches are similar, though
86*593dc095SDavid du Colombierthere are some differences in terms of policy and release locations. See
87*593dc095SDavid du Colombierthe section on <a href="#GPL_releases">GPL releases</a> below for
88*593dc095SDavid du Colombierinformation specific to GPL Ghostscript.
897dd7cddfSDavid du Colombier
907dd7cddfSDavid du Colombier<p>
917dd7cddfSDavid du ColombierFile names below that don't include an explicit subdirectory name are in the
927dd7cddfSDavid du Colombier<b><tt>src</tt></b> subdirectory.
937dd7cddfSDavid du Colombier
947dd7cddfSDavid du Colombier<p>
957dd7cddfSDavid du ColombierIf you do plan to make your own distribution, please be aware of some items
967dd7cddfSDavid du Colombieryou will want to change.
977dd7cddfSDavid du Colombier
987dd7cddfSDavid du Colombier<ul>
997dd7cddfSDavid du Colombier
1007dd7cddfSDavid du Colombier<li>If you make any significant changes, please edit
1017dd7cddfSDavid du Colombier<b><tt>gscdef.c</tt></b> to change <b><tt>GS_PRODUCTFAMILY</tt></b> and
102*593dc095SDavid du Colombier<b><tt>GS_PRODUCT</tt></b> from "AFPL Ghostscript" to something else,
103*593dc095SDavid du Colombierin order to avoid confusion with artofcode's releases.
1047dd7cddfSDavid du Colombier
1057dd7cddfSDavid du Colombier<li>In the same file, you may also want to edit <b><tt>GS_COPYRIGHT</tt></b>
1063ff48bf5SDavid du Colombierto add your own copyright notice (although you must not remove any
1073ff48bf5SDavid du Colombiernotice that is there).
1087dd7cddfSDavid du Colombier
1097dd7cddfSDavid du Colombier<li>You will almost certainly want to edit <b><tt>version.mak</tt></b> to
1107dd7cddfSDavid du Colombierchange the revision date, <b><tt>GS_REVISIONDATE</tt></b>.
1117dd7cddfSDavid du Colombier
112*593dc095SDavid du Colombier<li>If you want to change the release number, you must change it in all the
113*593dc095SDavid du Colombierplaces listed under <a href="#Release_numbering">"Release numbering"</a>
114*593dc095SDavid du Colombierbelow.
1157dd7cddfSDavid du Colombier
1167dd7cddfSDavid du Colombier</ul>
1177dd7cddfSDavid du Colombier
1183ff48bf5SDavid du Colombier<h2><a name="Servers"></a>Servers</h2>
1197dd7cddfSDavid du Colombier
1207dd7cddfSDavid du Colombier<p>
121*593dc095SDavid du ColombierThe GPL and AFPL Ghostscript files are maintained on sites accessible to
122*593dc095SDavid du Colombierthe public.  One specific site hosts the active CVS repository for code,
123*593dc095SDavid du Colombierdata, and documentation, and the bug report data base; several sites
124*593dc095SDavid du Colombieroffer distributions with release numbers, intended for wider
125*593dc095SDavid du Colombierdistribution.
1267dd7cddfSDavid du Colombier
1273ff48bf5SDavid du Colombier<h3><a name="Development_files"></a>Development sources and bug reports</h3>
1287dd7cddfSDavid du Colombier
1297dd7cddfSDavid du Colombier<p>
130*593dc095SDavid du ColombierThe primary repository for GPL and AFPL Ghostscript is <a
131*593dc095SDavid du Colombierhref="http://www.ghostscript.com/" class="offsite">ghostscript.com</a>.
132*593dc095SDavid du ColombierPlease check there first for any news about releases or current work,
133*593dc095SDavid du Colombierand for information about where to download ghostscript and how to
134*593dc095SDavid du Colombieraccess the mailing lists.
135*593dc095SDavid du Colombier
136*593dc095SDavid du ColombierCVS access is through <a
1373ff48bf5SDavid du Colombierhref="http://cvs.ghostscript.com/"
138*593dc095SDavid du Colombierclass="offsite">cvs.ghostscript.com</a>.
139*593dc095SDavid du Colombier
140*593dc095SDavid du Colombier<p>
141*593dc095SDavid du ColombierIt may also be helpful to
142*593dc095SDavid du Colombierread the SourceForge AFPL Ghostscript home page (<a
143*593dc095SDavid du Colombierhref="http://sourceforge.net/projects/ghostscript/"
144*593dc095SDavid du Colombierclass="offsite">http://sourceforge.net/projects/ghostscript/</a>).
1457dd7cddfSDavid du Colombier
1463ff48bf5SDavid du Colombier<h3><a name="Distribution"></a>Distribution</h3>
1477dd7cddfSDavid du Colombier
1487dd7cddfSDavid du Colombier<p>
1493ff48bf5SDavid du ColombierStable, beta, and development releases are all available from
1503ff48bf5SDavid du Colombier<blockquote>
1517dd7cddfSDavid du Colombier<a
1523ff48bf5SDavid du Colombierhref="http://sourceforge.net/project/showfiles.php?group_id=1897"
1533ff48bf5SDavid du Colombierclass="offsite">http://sourceforge.net/project/showfiles.php?group_id=1897</a>
1543ff48bf5SDavid du Colombier</blockquote>
1557dd7cddfSDavid du Colombier
1567dd7cddfSDavid du Colombier<p>
1573ff48bf5SDavid du ColombierStable releases are also distributed from
1583ff48bf5SDavid du Colombier
1593ff48bf5SDavid du Colombier<blockquote>
1607dd7cddfSDavid du Colombier<a
1613ff48bf5SDavid du Colombierhref="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/"
162*593dc095SDavid du Colombierclass="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/</a> or
163*593dc095SDavid du Colombier<br>
164*593dc095SDavid du Colombier<a
165*593dc095SDavid du Colombierhref="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gpl/"
166*593dc095SDavid du Colombierclass="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gpl/</a>
1673ff48bf5SDavid du Colombier</blockquote>
1687dd7cddfSDavid du Colombier
1697dd7cddfSDavid du Colombier<p>
1703ff48bf5SDavid du ColombierDevelopment releases are also distributed from
1717dd7cddfSDavid du Colombier
1723ff48bf5SDavid du Colombier<blockquote>
1733ff48bf5SDavid du Colombier<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/test/"
1743ff48bf5SDavid du Colombierclass="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/test/</a>
1753ff48bf5SDavid du Colombier</blockquote>
1767dd7cddfSDavid du Colombier
177*593dc095SDavid du Colombier<h2><a name="Release_numbering"></a>Release numbering</h2>
178*593dc095SDavid du Colombier
179*593dc095SDavid du Colombier<p>
180*593dc095SDavid du ColombierGhostscript uses a two-part (major.minor) release number. The second part
181*593dc095SDavid du Colombierof the release number is a 2-digit decimal fraction: it counts 00,
182*593dc095SDavid du Colombier01, 02, and so on through 99.
183*593dc095SDavid du Colombier
184*593dc095SDavid du Colombier<ul>
185*593dc095SDavid du Colombier
186*593dc095SDavid du Colombier<li>Release numbers N.0x and N.5x indicate stable versions.
187*593dc095SDavid du Colombier<li>Successive increments generally indicate bug fixes and minor enhancements.
188*593dc095SDavid du Colombier<li>Development, testing and beta releases generally begin with a minor release number that is
189*593dc095SDavid du Colombiera multiple of ten and increment from there.
190*593dc095SDavid du Colombier</ul>
191*593dc095SDavid du Colombier
192*593dc095SDavid du Colombier<p>
193*593dc095SDavid du ColombierRelease numbers appear in the following places in the Ghostscript files:
194*593dc095SDavid du Colombier
195*593dc095SDavid du Colombier<ul>
196*593dc095SDavid du Colombier
197*593dc095SDavid du Colombier<li>In <b><tt>lib/gs_init.ps</tt></b>, as an integer (release number x100) at the beginning of the
198*593dc095SDavid du Colombierfile just after the initial comment blocks.
199*593dc095SDavid du Colombier
200*593dc095SDavid du Colombier<li>In <b><tt>src/version.mak</tt></b>, split into 3 lines.
201*593dc095SDavid du Colombier
202*593dc095SDavid du Colombier<li>In <b><tt>doc/News.htm</tt></b>, in the two headers and their labels and at the very end in
203*593dc095SDavid du Colombierthe copyright footer.
204*593dc095SDavid du Colombier
205*593dc095SDavid du Colombier<li>At the foot of most documenation files. However, these are updated mechanically from the value
206*593dc095SDavid du Colombierin <b><tt>News.htm</tt></b> as part of the release process and do not need to be maintained
207*593dc095SDavid du Colombierdirectly.
208*593dc095SDavid du Colombier</ul>
209*593dc095SDavid du Colombier
210*593dc095SDavid du Colombier<h3>Before a release</h3>
211*593dc095SDavid du Colombier
212*593dc095SDavid du Colombier<p>
213*593dc095SDavid du ColombierThe current release number in the development code must be set to the desired value. The increment
214*593dc095SDavid du Colombierfrom just after the previous release (see below) is sufficient for minor updates. In the case of
215*593dc095SDavid du Colombiermajor changes or a new stable release, the number will need to be bumped; this is generally done
216*593dc095SDavid du Colombieras the first step of preparing a new release.
217*593dc095SDavid du Colombier
218*593dc095SDavid du Colombier<h3>After a release</h3>
219*593dc095SDavid du Colombier
220*593dc095SDavid du Colombier<p>
221*593dc095SDavid du ColombierAfter making a release the release number in CVS is incremented. Thus versions built
222*593dc095SDavid du Colombierfrom cvs are always marked with a future (or unused) release number to avoid confusion.
223*593dc095SDavid du Colombier
224*593dc095SDavid du Colombier<p>
225*593dc095SDavid du ColombierAdditionally, After an N.00 or N.50 stable release, a branch is made in cvs so that development
226*593dc095SDavid du Colombiercan continue independently of changes to the stable series. When this happens, the minor release
227*593dc095SDavid du Colombiernumber is incremented by 10 (or 20) on the development branch (and by 1 on the new stable branch,
228*593dc095SDavid du Colombieras above) to avoid collisions.
229*593dc095SDavid du Colombier
230*593dc095SDavid du Colombier<p>
231*593dc095SDavid du ColombierWhile incrementing the release number after making a release may seem
232*593dc095SDavid du Colombiercounter-intuitive, it ensures that, at any given time, the version
233*593dc095SDavid du Colombiernumber alone is sufficient to distinguish between the current CVS
234*593dc095SDavid du Colombierstate and a numbered release.
235*593dc095SDavid du Colombier
2363ff48bf5SDavid du Colombier<h2><a name="Making_distributions"></a>Making distributions</h2>
2377dd7cddfSDavid du Colombier
2387dd7cddfSDavid du Colombier<p>
2397dd7cddfSDavid du ColombierThis document only discusses source distributions.  Source distributions
2407dd7cddfSDavid du Colombiercurrently can only be made on Linux systems (but it probably wouldn't take
2417dd7cddfSDavid du Colombiermuch work to support other Unix systems).  Ghostscript as distributed also
2423ff48bf5SDavid du Colombieroften includes executables or other packages for the Windows and MacOS
243*593dc095SDavid du Colombierenvironments, but artofcode does not always produce these, and this document does not
2443ff48bf5SDavid du Colombierdiscuss them.  For more information about Windows packages, please contact
2453ff48bf5SDavid du Colombier<a href="mailto:bug-gswin@ghostscript.com"><tt>bug-gswin@ghostscript.com</tt></a>;
2463ff48bf5SDavid du Colombierfor more information about MacOS packages, please contact <a
2473ff48bf5SDavid du Colombierhref="mailto:mac-gs@ghostscript.com"><tt>mac-gs@ghostscript.com</tt></a>.
2487dd7cddfSDavid du Colombier
2497dd7cddfSDavid du Colombier<p>
2503ff48bf5SDavid du ColombierTo make a source distribution, you will need the scripts and data files in
251*593dc095SDavid du Colombierthe <b><tt>toolbin/</tt></b> directory. The instructions below generally
252*593dc095SDavid du Colombierassume that you're invoking the relative to the top level of the source
253*593dc095SDavid du Colombiertree.
254*593dc095SDavid du Colombier
255*593dc095SDavid du ColombierTo run the scripts, you will need reasonably current versions of Tcl,
256*593dc095SDavid du Colombierfreely available from Scriptics
257*593dc095SDavid du Colombier(<a class="offsite" href="http://www.scriptics.com"><tt>http://www.scriptics.com</tt></a>), and
2583ff48bf5SDavid du ColombierPython, freely available from <a class="offsite"
2593ff48bf5SDavid du Colombierhref="http://www.python.org"><tt>http://www.python.org</tt></a>.
2603ff48bf5SDavid du Colombier
2613ff48bf5SDavid du Colombier<p>
262*593dc095SDavid du ColombierTo update the changelogs, you'll also need a recent version of the cvs2cl perl script. If
263*593dc095SDavid du Colombiernot already installed on your system a copy can be found at
264*593dc095SDavid du Colombier<a class="offsite" href="http://www.red-bean.com/cvs2cl/cvs2cl.pl">http://www.red-bean.com/cvs2cl/cvs2cl.pl</a>.
265*593dc095SDavid du Colombier
266*593dc095SDavid du Colombier<p>
2673ff48bf5SDavid du ColombierThe instructions below also refer to some files that are deliberately
268*593dc095SDavid du Colombieromitted from the public distribution, because they are not freely
269*593dc095SDavid du Colombierredistributable. You will need to provide similar files for your
270*593dc095SDavid du Colombierenvironment.
2713ff48bf5SDavid du Colombier
2727dd7cddfSDavid du Colombier<blockquote><pre>
2733ff48bf5SDavid du Colombier<b><tt>data/*/*.ps</tt></b> (PostScript files) - needed for smoke testing
2747dd7cddfSDavid du Colombier</pre></blockquote>
2757dd7cddfSDavid du Colombier
2763ff48bf5SDavid du Colombier<h3><a name="Preparing_source"></a>Preparing the source code</h3>
2779a747e4fSDavid du Colombier
2783ff48bf5SDavid du Colombier<p>
279*593dc095SDavid du ColombierIf necessary, update the release number by incrementing it as described in
280*593dc095SDavid du Colombier<a href="#Release_numbering">Release numbering</a> above.
281*593dc095SDavid du Colombier
282*593dc095SDavid du Colombier<p>
283*593dc095SDavid du ColombierUpdate references to the date for release:
2843ff48bf5SDavid du Colombier
2853ff48bf5SDavid du Colombier<ul>
2863ff48bf5SDavid du Colombier
2873ff48bf5SDavid du Colombier<li>In <b><tt>version.mak</tt></b>, the numeric date.
2883ff48bf5SDavid du Colombier
289*593dc095SDavid du Colombier<li>In <b><tt>doc/News.htm</tt></b>, in two places, skipping the Id:
290*593dc095SDavid du Colombierline. That is, in parentheses after the <tt>VERSION X.YY</tt> heading,
291*593dc095SDavid du Colombierand in the copyright footer both the year and the release date.
292*593dc095SDavid du Colombier
293*593dc095SDavid du Colombier<li>In <b><tt>src/dwsetup.rc</tt></b> and <b><tt>src/winint.mak</tt></b>,
294*593dc095SDavid du Colombierupdate the year in the embedded copyright notice.
2953ff48bf5SDavid du Colombier
2963ff48bf5SDavid du Colombier</ul>
2973ff48bf5SDavid du Colombier
2983ff48bf5SDavid du Colombier<p>
299*593dc095SDavid du ColombierWe recommend using a UTC release date to avoid timezone skew.
300*593dc095SDavid du Colombier
301*593dc095SDavid du Colombier<p>
3023ff48bf5SDavid du ColombierAlso in <b><tt>doc/News.htm</tt></b>, update the number of the highest
3033ff48bf5SDavid du Colombierclosed bug and the list of open bugs.
3047dd7cddfSDavid du Colombier
3057dd7cddfSDavid du Colombier<p>
3067dd7cddfSDavid du ColombierCheck in <b><tt>gscdef.c</tt></b> that the definition of
3073ff48bf5SDavid du Colombier<b><tt>GS_PRODUCT</tt></b> includes the appropriate one of "DEVELOPMENT
3083ff48bf5SDavid du ColombierRELEASE", "BETA RELEASE", or neither, and does not include "CVS
3093ff48bf5SDavid du ColombierPRE-RELEASE".
3107dd7cddfSDavid du Colombier
311*593dc095SDavid du Colombier<p>Run the source-consistency checks from the test suite:
312*593dc095SDavid du Colombier
313*593dc095SDavid du Colombier<blockquote><pre>
314*593dc095SDavid du Colombiertoolbin/tests/check_all.py --gsroot=.
315*593dc095SDavid du Colombier</pre></blockquote>
316*593dc095SDavid du ColombierWhere the argument of --gsroot is the path to the top level of the
317*593dc095SDavid du Colombiersource tree. Fix any problems it indicates, and commit them to cvs.
318*593dc095SDavid du Colombier
3197dd7cddfSDavid du Colombier<p>
3207dd7cddfSDavid du ColombierCheck for patched configuration parameters, <b><tt>#define TEST</tt></b>s,
3217dd7cddfSDavid du Colombierversion/date inconsistencies, and mismatches between the working directory
3227dd7cddfSDavid du Colombierand the CVS repository by running:
3237dd7cddfSDavid du Colombier
3247dd7cddfSDavid du Colombier<blockquote><pre>
325*593dc095SDavid du Colombiertoolbin/pre.tcl
3267dd7cddfSDavid du Colombier</pre></blockquote>
3277dd7cddfSDavid du Colombier
3287dd7cddfSDavid du Colombier<p>
3297dd7cddfSDavid du ColombierThis program compares the result of various greps against a check file,
3307dd7cddfSDavid du Colombierwriting the results of grep on one output file and the differences from the
331*593dc095SDavid du Colombiercheck file on another.  See the source code for the default file names.  The
332*593dc095SDavid du Colombierimportant one is the check file,
333*593dc095SDavid du Colombier<b><tt>toolbin/pre.chk</tt></b>.  <b><tt>pre.tcl</tt></b> also verifies
334*593dc095SDavid du Colombierthat the
3357dd7cddfSDavid du Colombierright information is in the following places:
3367dd7cddfSDavid du Colombier<ul>
337*593dc095SDavid du Colombier<li>release number in <b><tt>man/*.1</tt></b>, <b><tt>doc/*.htm</tt></b>,
3387dd7cddfSDavid du Colombier<b><tt>version.mak</tt></b>, <b><tt>doc/gs-vms.hlp</tt></b>,
3397dd7cddfSDavid du Colombier<b><tt>lib/gs_init.ps</tt></b>
3407dd7cddfSDavid du Colombier<li>revision date in <b><tt>man/*.1</tt></b>, <b><tt>doc/*.htm</tt></b>,
3417dd7cddfSDavid du Colombier<b><tt>version.mak</tt></b>, <b><tt>doc/gs-vms.hlp</tt></b>
3427dd7cddfSDavid du Colombier<li>copyright year (if necessary) in <b><tt>gscdef.c</tt></b>
3433ff48bf5SDavid du Colombier<li>third-party library version number in <b><tt>*.mak</tt></b>
3447dd7cddfSDavid du Colombier</ul>
3457dd7cddfSDavid du Colombier
3467dd7cddfSDavid du Colombier<p>
3477dd7cddfSDavid du ColombierIf necessary, run
3487dd7cddfSDavid du Colombier
3497dd7cddfSDavid du Colombier<blockquote><pre>
350*593dc095SDavid du Colombiertoolbin/pre.tcl update
3517dd7cddfSDavid du Colombier</pre></blockquote>
3527dd7cddfSDavid du Colombier
3537dd7cddfSDavid du Colombier<p>
3547dd7cddfSDavid du Colombierto update the version and revision date in the doc files, and then run
3557dd7cddfSDavid du Colombier
3567dd7cddfSDavid du Colombier<blockquote><pre>
357*593dc095SDavid du Colombiertoolbin/pre.tcl
3587dd7cddfSDavid du Colombier</pre></blockquote>
3597dd7cddfSDavid du Colombier
3607dd7cddfSDavid du Colombier<p>
361*593dc095SDavid du Colombieragain. To confirm that everything is updated. You may have to commit to
362*593dc095SDavid du Colombiercvs after the update to satify the script that all the dates are
363*593dc095SDavid du Colombiercorrect.
3647dd7cddfSDavid du Colombier
3657dd7cddfSDavid du Colombier<p>
3667dd7cddfSDavid du ColombierCheck the consistency of the source code with the makefiles by
3677dd7cddfSDavid du Colombierrunning:
3687dd7cddfSDavid du Colombier
3697dd7cddfSDavid du Colombier<blockquote><pre>
3703ff48bf5SDavid du Colombiertoolbin/gsmake.tcl check
3717dd7cddfSDavid du Colombier</pre></blockquote>
3727dd7cddfSDavid du Colombier
373*593dc095SDavid du ColombierThis script assumes the top level makefile is named '<tt>makefile</tt>'.
3743ff48bf5SDavid du Colombier
3753ff48bf5SDavid du Colombier<p>
376*593dc095SDavid du ColombierFix any problems and commit to cvs.
3773ff48bf5SDavid du Colombier
3783ff48bf5SDavid du Colombier<h3><a name="Testing"></a>Testing</h3>
3793ff48bf5SDavid du Colombier
3807dd7cddfSDavid du Colombier<p>
381*593dc095SDavid du ColombierEdit your top-level the Makefile to set
3827dd7cddfSDavid du Colombier<blockquote><pre>
3837dd7cddfSDavid du ColombierFEATURE_DEVS=$(FEATURE_DEVS_ALL)
3847dd7cddfSDavid du ColombierCOMPILE_INITS=1
3857dd7cddfSDavid du Colombier</pre></blockquote>
3867dd7cddfSDavid du Colombier
3877dd7cddfSDavid du Colombier<p>
3887dd7cddfSDavid du ColombierThis will help catch compilation problems.
3897dd7cddfSDavid du Colombier
3907dd7cddfSDavid du Colombier<p>
3917dd7cddfSDavid du ColombierRun
3927dd7cddfSDavid du Colombier
3937dd7cddfSDavid du Colombier<blockquote><pre>
3947dd7cddfSDavid du Colombierrm obj/*
395*593dc095SDavid du Colombiermake -j2 &gt;&amp; make.log
3967dd7cddfSDavid du Colombier</pre></blockquote>
3977dd7cddfSDavid du Colombier
3987dd7cddfSDavid du Colombier<p>
3997dd7cddfSDavid du Colombierand look for warnings and errors in the log file.
4007dd7cddfSDavid du Colombier
4017dd7cddfSDavid du Colombier<p>
402*593dc095SDavid du ColombierDo a smoke test, updating the example paths as necessary:
4037dd7cddfSDavid du Colombier
4047dd7cddfSDavid du Colombier<blockquote><pre>
4053ff48bf5SDavid du Colombierunset GS_DEVICE GS_FONTPATH GS_LIB GS_OPTIONS
406*593dc095SDavid du Colombier./bin/gs -I./lib -I./fonts -dNOPAUSE -dBATCH toolbin/smoke.ps
407*593dc095SDavid du Colombier./bin/gs -I./lib -I./fonts -dNOPAUSE -dBATCH -sDEVICE=bitcmyk\
408*593dc095SDavid du Colombier  -sOutputFile=/dev/null -r600 -dBufferSpace=100000 toolbin/smoke.ps
4097dd7cddfSDavid du Colombier</pre></blockquote>
4107dd7cddfSDavid du Colombier
4117dd7cddfSDavid du Colombier<p>
4123ff48bf5SDavid du ColombierThis reads files named
4133ff48bf5SDavid du Colombier
4143ff48bf5SDavid du Colombier<blockquote><pre>
415*593dc095SDavid du Colombier<b><tt>data/misc/*.ps</tt></b>
416*593dc095SDavid du Colombier<b><tt>data/ps/*.ps</tt></b>
417*593dc095SDavid du Colombier<b><tt>data/psl2/*.ps</tt></b>
418*593dc095SDavid du Colombier<b><tt>data/psl3/*.ps</tt></b>
4193ff48bf5SDavid du Colombier</pre></blockquote>
4203ff48bf5SDavid du Colombier
4213ff48bf5SDavid du Colombier<p>
422*593dc095SDavid du Colombier(Edit <b><tt>toolbin/smoke.ps</tt></b> to use other test sets.)
4233ff48bf5SDavid du ColombierWatch for crashes, unusual error messages, or anomalous displayed output.
4243ff48bf5SDavid du ColombierIf there are any problems, start over from the beginning of the process.
4253ff48bf5SDavid du Colombier
4263ff48bf5SDavid du Colombier<p>
4277dd7cddfSDavid du ColombierUndo the <b><tt>FEATURE_DEVS</tt></b> and <b><tt>COMPILE_INITS</tt></b>
4287dd7cddfSDavid du Colombieredits.
4297dd7cddfSDavid du Colombier
4307dd7cddfSDavid du Colombier<p>
4317dd7cddfSDavid du ColombierRun
4327dd7cddfSDavid du Colombier
4337dd7cddfSDavid du Colombier<blockquote><pre>
4347dd7cddfSDavid du Colombiercvs commit
4357dd7cddfSDavid du Colombier</pre></blockquote>
4367dd7cddfSDavid du Colombier
4377dd7cddfSDavid du Colombier<p>
4387dd7cddfSDavid du Colombierto ensure the repository is up to date.
4397dd7cddfSDavid du Colombier
440*593dc095SDavid du Colombier<h3><a name="Changelog"></a>Updating the changelog</h3>
441*593dc095SDavid du Colombier
4427dd7cddfSDavid du Colombier<p>
443*593dc095SDavid du ColombierCreate a new changelog by running either (for the main HEAD branch)
4447dd7cddfSDavid du Colombier
4457dd7cddfSDavid du Colombier<blockquote><pre>
446*593dc095SDavid du Colombiercvs2cl.pl --utc -T --follow trunk --delta &lt;prev release tag&gt;:HEAD --xml -f doc/changelog.xml
4477dd7cddfSDavid du Colombier</pre></blockquote>
4487dd7cddfSDavid du Colombier
449*593dc095SDavid du Colombieror (for a non-HEAD branch)
450*593dc095SDavid du Colombier
451*593dc095SDavid du Colombier<blockquote><pre>
452*593dc095SDavid du Colombiercvs2cl.pl --utc -T --follow &lt;branch&gt; --delta &lt;prev release tag&gt;:&lt;branch tag&gt; --xml -f doc/changelog.xml
453*593dc095SDavid du Colombier</pre></blockquote>
454*593dc095SDavid du Colombiere.g.
455*593dc095SDavid du Colombier<blockquote>
456*593dc095SDavid du Colombier<pre>cvs2cl.pl --utc -T --follow trunk --delta gs8_00:HEAD --xml -f doc/changelog.xml</pre>
457*593dc095SDavid du Colombier</blockquote>
458*593dc095SDavid du Colombier
4597dd7cddfSDavid du Colombier<p>
4607dd7cddfSDavid du ColombierThis consolidates all the CVS logs since the previous release in a readable
461*593dc095SDavid du Colombierformat. You may also wish to pass a file mapping cvs user names to real names
462*593dc095SDavid du Colombierwith the <tt>-U</tt> option.
463*593dc095SDavid du Colombier
464*593dc095SDavid du Colombier<p>
465*593dc095SDavid du ColombierCreate the html-format changes and details documents as follows:
4663ff48bf5SDavid du Colombier
4673ff48bf5SDavid du Colombier<blockquote><pre>
468*593dc095SDavid du Colombiercd doc
469*593dc095SDavid du Colombier../toolbin/split_changelog.py changelog.xml Changes.htm Details.htm
470*593dc095SDavid du Colombiercd ..
4713ff48bf5SDavid du Colombier</pre></blockquote>
4727dd7cddfSDavid du Colombier
4737dd7cddfSDavid du Colombier<p>
474*593dc095SDavid du ColombierThe xml changelog file can now be deleted. Run
4757dd7cddfSDavid du Colombier
4767dd7cddfSDavid du Colombier<blockquote><pre>
477*593dc095SDavid du Colombiertoolbin/makehist.tcl
4787dd7cddfSDavid du Colombier</pre></blockquote>
4797dd7cddfSDavid du Colombier
4807dd7cddfSDavid du Colombier<p>
4817dd7cddfSDavid du ColombierThis updates <b><tt>doc/History#.htm</tt></b> from
482*593dc095SDavid du Colombier<b><tt>doc/News.htm</tt></b> and <b><tt>doc/Changes.htm</tt></b>.
483*593dc095SDavid du Colombier
484*593dc095SDavid du ColombierThen run
4857dd7cddfSDavid du Colombier
4867dd7cddfSDavid du Colombier<blockquote><pre>
4877dd7cddfSDavid du Colombiercvs commit
4887dd7cddfSDavid du Colombier</pre></blockquote>
4897dd7cddfSDavid du Colombier
4907dd7cddfSDavid du Colombier<p>
4913ff48bf5SDavid du Colombieragain to check in the Changes and history files.
4923ff48bf5SDavid du Colombier
493*593dc095SDavid du Colombier<h3><a name="Making_Tarballs"></a>Making the source distribution</h3>
494*593dc095SDavid du Colombier
495*593dc095SDavid du Colombier<p>
496*593dc095SDavid du ColombierFirst, tag the versions of the files in cvs with the release version
497*593dc095SDavid du Colombiernumber.
498*593dc095SDavid du Colombier
499*593dc095SDavid du Colombier<blockquote>
500*593dc095SDavid du Colombier<pre><tt>cvs tag gs#_##</tt></pre>
501*593dc095SDavid du Colombier</blockquote>
502*593dc095SDavid du Colombier
503*593dc095SDavid du ColombierIf you've already tagged this release (e.g. in making an earlier
504*593dc095SDavid du Colombierrelease candidate) you'll need to add the <tt>-r</tt> and <tt>-F</tt>
505*593dc095SDavid du Colombieroptions after 'cvs tag' to force moving the tag to the new revisions
506*593dc095SDavid du Colombierof changed files.
507*593dc095SDavid du Colombier
508*593dc095SDavid du Colombier<p>
509*593dc095SDavid du ColombierPull a fresh copy for distribution from the cvs repository:
510*593dc095SDavid du Colombier
511*593dc095SDavid du Colombier<blockquote><pre>
512*593dc095SDavid du Colombier<tt>cvs -z3 -d &lt;ghostscript cvsroot&gt; export -r gs#_## -d ghostscript-#.## gs</tt>
513*593dc095SDavid du Colombier</pre></blockquote>
514*593dc095SDavid du Colombier
515*593dc095SDavid du Colombier
516*593dc095SDavid du Colombier<p>
517*593dc095SDavid du ColombierGenerate the text versions of the README and PUBLIC documents:
518*593dc095SDavid du Colombier
519*593dc095SDavid du Colombier<blockquote>
520*593dc095SDavid du Colombier<pre><tt>cd ghostscript-#.##</tt>
521*593dc095SDavid du Colombier<tt>lynx -dump -nolist doc/Readme.htm &gt; doc/README</tt>
522*593dc095SDavid du Colombier<tt>lynx -dump -nolist doc/Public.htm &gt; doc/PUBLIC</tt></pre>
523*593dc095SDavid du Colombier</blockquote>
524*593dc095SDavid du Colombier
525*593dc095SDavid du Colombier<p>
526*593dc095SDavid du ColombierAdd copies of third-party libraries. Versions of the ijs and icc
527*593dc095SDavid du Colombierlibraries are included in Ghostscript cvs, so these are provided
528*593dc095SDavid du Colombierby the export. Source for zlib, libjpeg, and zlib are usually provided
529*593dc095SDavid du Colombierin the Windows and MacOS source releases, but not the unix tarballs.
530*593dc095SDavid du Colombier
531*593dc095SDavid du Colombier<p>
532*593dc095SDavid du ColombierDownload and unpack the latest source release of
533*593dc095SDavid du Colombier<a href="http://jbig2dec.sourceforge.net/">jbig2dec</a>, renaming the
534*593dc095SDavid du Colombierdirectory to just <tt>jbig2dec</tt> on the top level of ghostscript
535*593dc095SDavid du Colombiersource directory.
536*593dc095SDavid du Colombier
5373ff48bf5SDavid du Colombier<p>
5383ff48bf5SDavid du ColombierFor the unix source distributions only, generate the configure
5393ff48bf5SDavid du Colombierscripts. From the top level directory, run
5403ff48bf5SDavid du Colombier
541*593dc095SDavid du Colombier<blockquote><pre><tt>./autogen.sh</tt>
542*593dc095SDavid du Colombier<tt>make distclean</tt>
5433ff48bf5SDavid du Colombier</pre></blockquote>
5443ff48bf5SDavid du Colombier
5453ff48bf5SDavid du ColombierThis should create links to <tt>configure.ac</tt> and
5463ff48bf5SDavid du Colombier<tt>Makefile.in</tt> in the top level directory and
5473ff48bf5SDavid du Colombierinvoke autoconf to create the <tt>configure</tt> script.
5483ff48bf5SDavid du Colombier
5493ff48bf5SDavid du Colombier<p>
550*593dc095SDavid du ColombierAlso, run <tt>autoconf</tt> in the ijs subdir to create the configure script
551*593dc095SDavid du Colombierfor that package.
5527dd7cddfSDavid du Colombier
5537dd7cddfSDavid du Colombier<p>
554*593dc095SDavid du ColombierMove back to directory containing the distribution code and make the
555*593dc095SDavid du Colombiersource archives with:
5567dd7cddfSDavid du Colombier
5577dd7cddfSDavid du Colombier<blockquote><pre>
558*593dc095SDavid du Colombier<tt>tar cvzf ghostscript-#.##.tar.gz ghostscript-#.##/*</tt>
559*593dc095SDavid du Colombier<tt>zcat ghostscript-#.##.tar.gz | bzip2 -c > ghostscript-#.##.tar.bz2</tt>
5607dd7cddfSDavid du Colombier</pre></blockquote>
5617dd7cddfSDavid du Colombier
5627dd7cddfSDavid du Colombier<p>
5637dd7cddfSDavid du ColombierThis creates the files
5647dd7cddfSDavid du Colombier
5657dd7cddfSDavid du Colombier<blockquote><pre>
5667dd7cddfSDavid du Colombier<b><tt>ghostscript-#.##.tar.gz</tt></b> (main archive)
5677dd7cddfSDavid du Colombier<b><tt>ghostscript-#.##.tar.bz2</tt></b> (main archive)
5687dd7cddfSDavid du Colombier</pre></blockquote>
5697dd7cddfSDavid du Colombier
570*593dc095SDavid du Colombier<p>
571*593dc095SDavid du ColombierThe important issue is that the tarballs unpack into a directory
572*593dc095SDavid du Colombierof the same name, and that the code be a pristine copy without
573*593dc095SDavid du Colombierbuild or CVS housekeeping files.
574*593dc095SDavid du Colombier
575*593dc095SDavid du Colombier<p>
576*593dc095SDavid du ColombierIt is also customary to make a <tt>gs###src.zip</tt> archive for the
577*593dc095SDavid du Colombierconvenience of windows developers. See below.
578*593dc095SDavid du Colombier
5793ff48bf5SDavid du Colombier<h3><a name="Testing_on_Windows"></a>Testing on Windows</h3>
5807dd7cddfSDavid du Colombier
5817dd7cddfSDavid du Colombier<p>
5827dd7cddfSDavid du ColombierFor Windows testing, you will need, in addition to the files listed
5833ff48bf5SDavid du Colombierunder "<a href="#Preparing_source">Preparing the source</a>" above:
5847dd7cddfSDavid du Colombier<blockquote><pre>
585*593dc095SDavid du Colombier<b><tt>toolbin/makewin.tcl</tt></b>
5867dd7cddfSDavid du Colombier</pre></blockquote>
5877dd7cddfSDavid du Colombier
5887dd7cddfSDavid du Colombier<p>
5893ff48bf5SDavid du ColombierThe following procedures rely on a large number of MS-DOS batch scripts that
5903ff48bf5SDavid du Colombierare not discussed here: they are unlikely to be generally useful.
5917dd7cddfSDavid du Colombier
5927dd7cddfSDavid du Colombier<p>
5937dd7cddfSDavid du ColombierMount the Windows partition on <b><tt>/c</tt></b>, and create the
5947dd7cddfSDavid du Colombier<b><tt>/c/work</tt></b> directory if needed.
5957dd7cddfSDavid du Colombier
5967dd7cddfSDavid du Colombier<p>
5977dd7cddfSDavid du ColombierMake the zip archive of all files needed for a Windows build, and copy it to
5987dd7cddfSDavid du Colombierthe Windows partition:
5997dd7cddfSDavid du Colombier
6007dd7cddfSDavid du Colombier<blockquote><pre>
6013ff48bf5SDavid du Colombiertoolbin/makewin
6027dd7cddfSDavid du Colombiercp gs###.zip /c/work
6037dd7cddfSDavid du Colombier</pre></blockquote>
6047dd7cddfSDavid du Colombier
6057dd7cddfSDavid du Colombier<p>
6067dd7cddfSDavid du ColombierBoot into Windows.  Unpack the archive:
6077dd7cddfSDavid du Colombier
6087dd7cddfSDavid du Colombier<blockquote><pre>
6097dd7cddfSDavid du Colombiercd \work
6107dd7cddfSDavid du Colombierunzip -oq gs###.zip
6117dd7cddfSDavid du Colombiergs###
6127dd7cddfSDavid du Colombier</pre></blockquote>
6137dd7cddfSDavid du Colombier
6147dd7cddfSDavid du Colombier<p>
6157dd7cddfSDavid du ColombierThe <b><tt>gs###.bat</tt></b> script creates some necessary directories,
6167dd7cddfSDavid du Colombiersets up <b><tt>PATH</tt></b> and <b><tt>GS_LIB</tt></b> for testing, and
6173ff48bf5SDavid du Colombiermakes the <b><tt>gs#.##</tt></b> directory current.
6187dd7cddfSDavid du Colombier
6197dd7cddfSDavid du Colombier<p>
6207dd7cddfSDavid du ColombierBuild with the Borland compiler:
6217dd7cddfSDavid du Colombier
6227dd7cddfSDavid du Colombier<blockquote><pre>
6237dd7cddfSDavid du Colombierconfig bcwin32
6247dd7cddfSDavid du Colombiercopy /y /b ..\gs\makefile
6257dd7cddfSDavid du Colombiererase obj\*.*
6267dd7cddfSDavid du Colombiermake > bc.log
6277dd7cddfSDavid du Colombier</pre></blockquote>
6287dd7cddfSDavid du Colombier
6297dd7cddfSDavid du Colombier<p>
6307dd7cddfSDavid du ColombierSmoke test the executables (both <b><tt>gswin32</tt></b> and
6317dd7cddfSDavid du Colombier<b><tt>gswin32c</tt></b>), as described above for source distributions.
6327dd7cddfSDavid du ColombierThen build with the Microsoft compiler:
6337dd7cddfSDavid du Colombier
6347dd7cddfSDavid du Colombier<blockquote><pre>
6357dd7cddfSDavid du Colombierconfig msvc32
6367dd7cddfSDavid du Colombiercopy /y /b ..\gs\makefile
6377dd7cddfSDavid du Colombiererase obj\*.*
6387dd7cddfSDavid du Colombiernmake > msvc.log
6397dd7cddfSDavid du Colombier</pre></blockquote>
6407dd7cddfSDavid du Colombier
6417dd7cddfSDavid du Colombier<p>
6427dd7cddfSDavid du ColombierSmoke test these executables too.
6437dd7cddfSDavid du Colombier
6447dd7cddfSDavid du Colombier<p>
6457dd7cddfSDavid du ColombierBuilding with the Watcom compiler doesn't work, because the
6467dd7cddfSDavid du Colombier<b><tt>wmake</tt></b> or <b><tt>wmakel</tt></b> program runs out of memory.
6477dd7cddfSDavid du ColombierHowever, if it did work, this is how to do it:
6487dd7cddfSDavid du Colombier
6497dd7cddfSDavid du Colombier<blockquote><pre>
6507dd7cddfSDavid du Colombierconfig watcw32
6517dd7cddfSDavid du Colombiercopy /y /b ..\gs\makefile
6527dd7cddfSDavid du Colombiererase obj\*.*
6537dd7cddfSDavid du Colombierwmake -u > watc.log
6547dd7cddfSDavid du Colombier</pre></blockquote>
6557dd7cddfSDavid du Colombier
6567dd7cddfSDavid du Colombier<p>
6577dd7cddfSDavid du ColombierBoot back into Linux.  If testing in Windows revealed problems, edit the
6587dd7cddfSDavid du Colombiersource files as necessary, and go back to <a
6597dd7cddfSDavid du Colombierhref="#Preparing_source">"Preparing the source code."</a>
6607dd7cddfSDavid du Colombier
661*593dc095SDavid du Colombier<h3><a name="Windows_distribution"></a>Building the Windows distribution</h3>
662*593dc095SDavid du Colombier<p>
663*593dc095SDavid du ColombierExtract the sources from <b><tt>ghostscript-N.NN.tar.gz</tt></b>
664*593dc095SDavid du Colombierthen repackage in a zip file as follows:
665*593dc095SDavid du Colombier<blockquote>
666*593dc095SDavid du Colombier<b><tt>zip -r temp.zip gsN.NN/LICENSE gsN.NN/doc gsN.NN/examples
667*593dc095SDavid du Colombier  gsN.NN/icclib gsN.NN/ijs gsN.NN/jasper gsN.NN/jbig2dec gsN.NN/lib
668*593dc095SDavid du Colombier  gsN.NN/src gsN.NN/Resource</tt></b>
669*593dc095SDavid du Colombier</blockquote>
670*593dc095SDavid du ColombierUnzip converting the line endings to CRLF:
671*593dc095SDavid du Colombier<blockquote>
672*593dc095SDavid du Colombier<b><tt>unzip -a temp.zip<br>
673*593dc095SDavid du Colombierdel temp.zip</tt></b>
674*593dc095SDavid du Colombier</blockquote>
675*593dc095SDavid du ColombierThen finally zip up the sources to the distribution file:
676*593dc095SDavid du Colombier<blockquote>
677*593dc095SDavid du Colombier<b><tt>zip -9 -r -X gsNNNsrc.zip gsN.NN</tt></b>
678*593dc095SDavid du Colombier</blockquote>
679*593dc095SDavid du ColombierThis method is reasonably portable, and does not convert binary
680*593dc095SDavid du Colombierfiles such as
681*593dc095SDavid du Colombier<b><tt><a href="../examples/annots.pdf">examples/annots.pdf</a></tt></b>.
682*593dc095SDavid du Colombier<p>
683*593dc095SDavid du ColombierUnzip <b><tt>gsNNNsrc.zip</tt></b>.
684*593dc095SDavid du ColombierThe directory must be named <b><tt>gsN.NN</tt></b>.
685*593dc095SDavid du Colombier<p>
686*593dc095SDavid du ColombierExtract the AFPL fonts <b><tt>ghostscript-fonts-std-6.0.tar.gz</tt></b>
687*593dc095SDavid du Colombieror GNU fonts <b><tt>gnu-gs-fonts-std-6.0.tar.gz</tt></b>
688*593dc095SDavid du Colombierinto a directory <b><tt>fonts</tt></b> adjacent to the
689*593dc095SDavid du Colombier<b><tt>gsN.NN</tt></b> directory.
690*593dc095SDavid du ColombierThe fonts are needed in this location for building
691*593dc095SDavid du Colombierthe distribution archive later.
692*593dc095SDavid du Colombier<p>
693*593dc095SDavid du ColombierYou will need the command line Info-Zip zip program available from
694*593dc095SDavid du Colombier<a href="http://www.info-zip.org/pub/infozip/">
695*593dc095SDavid du Colombierhttp://www.info-zip.org/pub/infozip/</a>
696*593dc095SDavid du ColombierAlternatively, the command line version of WinZip
697*593dc095SDavid du Colombier(<b><tt>wzzip.exe</tt></b>) can be used by replacing the
698*593dc095SDavid du ColombierInfo-Zip command line options <b><tt>-9 -r</tt></b>
699*593dc095SDavid du Colombierwith <b><tt>-ex -P</tt></b> in
700*593dc095SDavid du Colombier<b><tt><a href="../src/winint.mak">winint.mak</a></tt></b>.
701*593dc095SDavid du Colombier<p>
702*593dc095SDavid du ColombierYou will need WinZip Self-Extractor for building the
703*593dc095SDavid du Colombierself extracting archive.  This is commercial software.
704*593dc095SDavid du ColombierYou may need to update the path <b><tt>WINZIPSE_XE</tt></b> in
705*593dc095SDavid du Colombier<b><tt><a href="../src/winint.mak">winint.mak</a></tt></b>.
706*593dc095SDavid du Colombier<p>
707*593dc095SDavid du ColombierUnzip the jpeg, libpng and zlib libraries, then make ghostscript
708*593dc095SDavid du Colombieras documented in <a href="Make.htm">Make.htm</a>.
709*593dc095SDavid du Colombier<p>
710*593dc095SDavid du ColombierRun the command <b><tt>nmake archive</tt></b>.  This builds the distribution
711*593dc095SDavid du Colombierarchive <b><tt>gsNNNw32.exe</tt></b> and an ordinary zip file
712*593dc095SDavid du Colombier<b><tt>gsNNNw32.zip</tt></b> in the parent directory.
713*593dc095SDavid du ColombierIf you do not have WinZip Self-Extractor, you can use
714*593dc095SDavid du Colombier<b><tt>nmake zip</tt></b> to make <b><tt>gsNNNw32.zip</tt></b> only.
715*593dc095SDavid du Colombier
7163ff48bf5SDavid du Colombier<h3><a name="Finishing_up"></a>Finishing up</h3>
7177dd7cddfSDavid du Colombier
7187dd7cddfSDavid du Colombier<p>
7193ff48bf5SDavid du ColombierUpload <b><tt>ghostscript-#.##.tar.*</tt></b> to SourceForge (by anonymous
720*593dc095SDavid du ColombierFTP to <b><tt>upload.sourceforge.net</tt></b>, directory
7213ff48bf5SDavid du Colombier<b><tt>/incoming</tt></b>), and then post it using the "File Release"
722*593dc095SDavid du Colombierfacility in the AFPL Ghostscript project. If this is a stable AFPL
723*593dc095SDavid du Colombierrelease put it in the <b><tt>ghostscript</tt></b> module.
724*593dc095SDavid du ColombierIf this is a GPL release, put it in the <b><tt>gs-gpl</tt></b> module.
725*593dc095SDavid du ColombierIf this is a test release or beta release, put
726*593dc095SDavid du Colombierit in the <b><tt>gs-devel</tt></b> or <b><tt>gs-beta</tt></b> module,
727*593dc095SDavid du Colombierrespectively.
728*593dc095SDavid du ColombierIf you are adding executable builds or source archives for other
729*593dc095SDavid du Colombierplatforms to an existing source release, please use the same release
730*593dc095SDavid du Colombierdate as the source release, not the current date.
7317dd7cddfSDavid du Colombier
7327dd7cddfSDavid du Colombier<p>
7337dd7cddfSDavid du ColombierIf <b><tt>doc/C-style.htm</tt></b> has changed, put it on
7343ff48bf5SDavid du Colombier<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/C-style.htm</tt></b>.
7357dd7cddfSDavid du Colombier
7363ff48bf5SDavid du Colombier<h3><a name="Beta_distributions"></a>Beta distributions</h3>
7377dd7cddfSDavid du Colombier
7387dd7cddfSDavid du Colombier<p>
7397dd7cddfSDavid du ColombierDo the steps for distributions in general.
7407dd7cddfSDavid du Colombier
7417dd7cddfSDavid du Colombier<p>
7427dd7cddfSDavid du ColombierUpload <b><tt>ghostscript-#.##.tar.*</tt></b> to
7433ff48bf5SDavid du Colombier<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/test</tt></b>.
7447dd7cddfSDavid du Colombier
7457dd7cddfSDavid du Colombier<p>
746*593dc095SDavid du ColombierSend an email announcement to the <tt>gs-test</tt> list
747*593dc095SDavid du Colombierannouncing the new release.
7487dd7cddfSDavid du Colombier
7497dd7cddfSDavid du Colombier<h3><a name="Public_releases"></a>Public releases</h3>
7507dd7cddfSDavid du Colombier
7517dd7cddfSDavid du Colombier<p>
7527dd7cddfSDavid du ColombierDo the steps for distributions in general.
7537dd7cddfSDavid du Colombier
7547dd7cddfSDavid du Colombier<p>
7553ff48bf5SDavid du ColombierCreate a directory at
7563ff48bf5SDavid du Colombier<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/gs###/</tt></b>.  In that
7573ff48bf5SDavid du Colombierdirectory, store the following files:
7583ff48bf5SDavid du Colombier
7593ff48bf5SDavid du Colombier<ul>
7603ff48bf5SDavid du Colombier
7613ff48bf5SDavid du Colombier<li>Standard distribution files:
7623ff48bf5SDavid du Colombier
7633ff48bf5SDavid du Colombier<blockquote><pre>
7643ff48bf5SDavid du Colombier<b><tt>ghostscript-#.##.tar.gz</tt></b>
7653ff48bf5SDavid du Colombier<b><tt>ghostscript-#.##.tar.bz2</tt></b>
7663ff48bf5SDavid du Colombier</pre></blockquote>
7673ff48bf5SDavid du Colombier
7683ff48bf5SDavid du Colombier<li>MS Windows source and executables:
7693ff48bf5SDavid du Colombier
7703ff48bf5SDavid du Colombier<blockquote><pre>
7713ff48bf5SDavid du Colombier<b><tt>gs###src.zip</tt></b>
7723ff48bf5SDavid du Colombier<b><tt>gs###w32.exe</tt></b>
7733ff48bf5SDavid du Colombier<b><tt>gs###w32.zip</tt></b>
7743ff48bf5SDavid du Colombier</pre></blockquote>
7753ff48bf5SDavid du Colombier
7763ff48bf5SDavid du Colombier<li>Third-party libraries, as links (upload these if not installed), where
7773ff48bf5SDavid du Colombier<b><tt>$$$</tt></b> et al. refer to the version number of the library, which
778*593dc095SDavid du Colombiershould be the latest compatible release of the library and should be
779*593dc095SDavid du Colombierconsistent with the values of and version numbers specifically listed in
780*593dc095SDavid du Colombierthe makefiles.
7813ff48bf5SDavid du Colombier
7823ff48bf5SDavid du Colombier<blockquote><pre>
7833ff48bf5SDavid du Colombier<b><tt>jpegsrc.v$$.tar.gz</tt></b> -> <b><tt>../../3rdparty/jpegsrc.v$$.tar.gz</tt></b>
7843ff48bf5SDavid du Colombier<b><tt>libpng-$.$.$.tar.gz</tt></b> -> <b><tt>../../3rdparty/libpng-$.$.$.tar.gz</tt></b>
7853ff48bf5SDavid du Colombier<b><tt>zlib-$.$.$.tar.gz</tt></b> -> <b><tt>../../3rdparty/zlib-$.$.$.tar.gz</tt></b>
7863ff48bf5SDavid du Colombier<b><tt>jpegsr$$.zip</tt></b> -> <b><tt>../../3rdparty/jpegsr$$.zip</tt></b>
7873ff48bf5SDavid du Colombier<b><tt>lpng$$$.zip</tt></b> -> <b><tt>../../3rdparty/lpng$$$.zip</tt></b>
7883ff48bf5SDavid du Colombier<b><tt>zlib$$$.zip</tt></b> -> <b><tt>../../3rdparty/zlib$$$.zip</tt></b>
7893ff48bf5SDavid du Colombier</pre></blockquote>
7903ff48bf5SDavid du Colombier
7913ff48bf5SDavid du ColombierIn any case, the names of the links in the distribution directory should reflect
7923ff48bf5SDavid du Colombierthe original name of the upstream file.
7933ff48bf5SDavid du Colombier
7943ff48bf5SDavid du Colombier<li>Fonts, where <b><tt>$.$$</tt></b> refers to the most recent version
7953ff48bf5SDavid du Colombiernumber of the fonts:
7963ff48bf5SDavid du Colombier
7973ff48bf5SDavid du Colombier<blockquote><pre>
7983ff48bf5SDavid du Colombier<b><tt>ghostscript-fonts-other-$.$.tar.gz</tt></b> -> <b><tt>../fonts/ghostscript-fonts-other-$.$.tar.gz</tt></b>
7993ff48bf5SDavid du Colombier<b><tt>ghostscript-fonts-std-$.$.tar.gz</tt></b> -> <b><tt>../fonts/ghostscript-fonts-std-$.$.tar.gz</tt></b>
8003ff48bf5SDavid du Colombier</pre></blockquote>
8013ff48bf5SDavid du Colombier
8023ff48bf5SDavid du Colombier</ul>
8033ff48bf5SDavid du Colombier
8043ff48bf5SDavid du Colombier<p>
8053ff48bf5SDavid du Colombier(Note that the link names are somewhat inconsistent: some of them retain the
8063ff48bf5SDavid du Colombierversion number of the file being referenced, and some of them use the
807*593dc095SDavid du ColombierGhostscript release number.  This is a historical artifact that might be
8083ff48bf5SDavid du Colombierchanged someday.)
8093ff48bf5SDavid du Colombier
8103ff48bf5SDavid du Colombier<p>
8117dd7cddfSDavid du ColombierE-mail the release announcement using:
8127dd7cddfSDavid du Colombier<blockquote><pre>
8137dd7cddfSDavid du ColombierTo: gs-announce
8147dd7cddfSDavid du Colombier</pre></blockquote>
8157dd7cddfSDavid du Colombier
8167dd7cddfSDavid du Colombier<p>
8173ff48bf5SDavid du ColombierEdit the Web pages in cvs and commit to reflect the new release.
8183ff48bf5SDavid du ColombierThe Wisconsin server should update automatically.
8197dd7cddfSDavid du Colombier
8203ff48bf5SDavid du Colombier<h2><a name="After_releasing"></a>After releasing</h2>
8217dd7cddfSDavid du Colombier
8227dd7cddfSDavid du Colombier<p>
823*593dc095SDavid du ColombierUpdate the release number by incrementing it as described in <a
824*593dc095SDavid du Colombierhref="#Release_numbering">Release numbering</a> above.
8253ff48bf5SDavid du Colombier
8263ff48bf5SDavid du Colombier<p>
8273ff48bf5SDavid du ColombierIn <b><tt>gscdef.c</tt></b>, edit the definition of
8283ff48bf5SDavid du Colombier<b><tt>GS_PRODUCT</tt></b> to include "CVS PRE-RELEASE".
8293ff48bf5SDavid du Colombier
8303ff48bf5SDavid du Colombier<p>
8313ff48bf5SDavid du ColombierEdit <b><tt>doc/News.htm</tt></b> to remove all the content.
8323ff48bf5SDavid du Colombier
833*593dc095SDavid du Colombier
834*593dc095SDavid du Colombier<h2><a name="GPL_releases"></a>GPL Ghostscript releases</h2>
8353ff48bf5SDavid du Colombier
8363ff48bf5SDavid du Colombier<p>
837*593dc095SDavid du Colombierartofcode LLC re-releases each stable AFPL Ghostscript branch as
838*593dc095SDavid du ColombierGPL Ghostscript (under the GNU GPL license) when the next major stable
839*593dc095SDavid du ColombierAFPL release comes out, or after one calendar year, whichever comes first.
8403ff48bf5SDavid du Colombier
841*593dc095SDavid du Colombier<h3><a name="GPL_code"></a>GPL code</h3>
8423ff48bf5SDavid du Colombier
8433ff48bf5SDavid du Colombier<p>
844*593dc095SDavid du ColombierTo make a GPL Ghostscript release from AFPL Ghostscript, update the
845*593dc095SDavid du ColombierLICENCE file to reflect the new status of the code. In general there
846*593dc095SDavid du Colombiercan be no recipe for this as it depends on the niceties of ownership and
847*593dc095SDavid du Colombierpermisison attached to each piece of code. However, a previous GPL
848*593dc095SDavid du Colombierrelease can serve as a guide.
8493ff48bf5SDavid du Colombier
8503ff48bf5SDavid du Colombier<p>
851*593dc095SDavid du ColombierThere are also generally some portions of code (usually drivers) which
852*593dc095SDavid du Colombierare limited to GPL Ghostscript only. These may want porting to the new
853*593dc095SDavid du Colombierversion before release.
8543ff48bf5SDavid du Colombier
855*593dc095SDavid du Colombier<p>Once the license change is complete and the codebase has been
856*593dc095SDavid du Colombierupdated to satifaction, follow the release process as described for AFPL
857*593dc095SDavid du ColombierGhostscript above to test and package the new version. The distribution
858*593dc095SDavid du Colombiermethods are parallel to those for the AFPL, with the GPL releases
859*593dc095SDavid du Colombiergenerally going under a separate header. For example, on the wisc
860*593dc095SDavid du Colombierftp site upload the file to
861*593dc095SDavid du Colombier<tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gpl/gs###/</tt>.
8623ff48bf5SDavid du Colombier
8633ff48bf5SDavid du Colombier
8643ff48bf5SDavid du Colombier<h2><a name="Fonts"></a>Fonts</h2>
8653ff48bf5SDavid du Colombier
8663ff48bf5SDavid du Colombier<p>
8673ff48bf5SDavid du Colombierartofcode LLC distributes a package of the base 35 PostScript fonts, and a
8683ff48bf5SDavid du Colombierpackage of other miscellaneous fonts.  As with the Ghostscript code, each
8693ff48bf5SDavid du Colombierpackage is released both with the AFPL and with the GPL; however, unlike the
8703ff48bf5SDavid du ColombierGhostscript code, artofcode releases these versions simultaneously rather
8713ff48bf5SDavid du Colombierthan with a one-version delay.
8723ff48bf5SDavid du Colombier
8733ff48bf5SDavid du Colombier<p>
8743ff48bf5SDavid du ColombierTo make the font packages, run the command
8753ff48bf5SDavid du Colombier
8763ff48bf5SDavid du Colombier<blockquote><pre>
8773ff48bf5SDavid du Colombiertoolbin/makefonts #.##
8783ff48bf5SDavid du Colombier</pre></blockquote>
8793ff48bf5SDavid du Colombier
8803ff48bf5SDavid du Colombier<p>
8813ff48bf5SDavid du ColombierThis creates the following files:
8823ff48bf5SDavid du Colombier
8833ff48bf5SDavid du Colombier<blockquote><pre>
8843ff48bf5SDavid du Colombierghostscript-fonts-std-#.##.tar.gz
8853ff48bf5SDavid du Colombierghostscript-fonts-other-#.##.tar.gz
8863ff48bf5SDavid du Colombiergnu-gs-fonts-std-#.##.tar.gz
8873ff48bf5SDavid du Colombiergnu-gs-fonts-other-#.##.tar.gz
8883ff48bf5SDavid du Colombier</pre></blockquote>
8893ff48bf5SDavid du Colombier
8903ff48bf5SDavid du Colombier<p>
8913ff48bf5SDavid du ColombierThe first two of these use the AFPL, and should be uploaded to
8923ff48bf5SDavid du Colombier<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/fonts/</tt></b>.  The other two
8933ff48bf5SDavid du Colombieruse the GPL, and should be uploaded to
894*593dc095SDavid du Colombier<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/fonts/</tt></b>.  For the GPL
895*593dc095SDavid du Colombierrelease, also see <a href="#GPL_after_releasing">"After releasing
8963ff48bf5SDavid du Colombier(GNU)"</a>.
8977dd7cddfSDavid du Colombier
8987dd7cddfSDavid du Colombier<!-- [2.0 end contents] ==================================================== -->
8997dd7cddfSDavid du Colombier
9007dd7cddfSDavid du Colombier<!-- [3.0 begin visible trailer] =========================================== -->
9017dd7cddfSDavid du Colombier<hr>
9027dd7cddfSDavid du Colombier
9033ff48bf5SDavid du Colombier<p>
904*593dc095SDavid du Colombier<small>Copyright &copy; 1999-2003 artofcode LLC. All rights
9053ff48bf5SDavid du Colombierreserved.</small>
9067dd7cddfSDavid du Colombier
9077dd7cddfSDavid du Colombier<p>
908*593dc095SDavid du ColombierThis software is provided AS-IS with no warranty, either express or
909*593dc095SDavid du Colombierimplied.
910*593dc095SDavid du Colombier
911*593dc095SDavid du ColombierThis software is distributed under license and may not be copied,
912*593dc095SDavid du Colombiermodified or distributed except as expressly authorized under the terms
913*593dc095SDavid du Colombierof the license contained in the file LICENSE in this distribution.
914*593dc095SDavid du Colombier
915*593dc095SDavid du ColombierFor more information about licensing, please refer to
916*593dc095SDavid du Colombierhttp://www.ghostscript.com/licensing/. For information on
917*593dc095SDavid du Colombiercommercial licensing, go to http://www.artifex.com/licensing/ or
918*593dc095SDavid du Colombiercontact Artifex Software, Inc., 101 Lucas Valley Road #110,
919*593dc095SDavid du ColombierSan Rafael, CA  94903, U.S.A., +1(415)492-9861.
9207dd7cddfSDavid du Colombier
9213ff48bf5SDavid du Colombier<p>
922*593dc095SDavid du Colombier<small>Ghostscript version 8.53, 20 October 2005
9237dd7cddfSDavid du Colombier
9247dd7cddfSDavid du Colombier<!-- [3.0 end visible trailer] ============================================= -->
9257dd7cddfSDavid du Colombier
9267dd7cddfSDavid du Colombier</body>
9277dd7cddfSDavid du Colombier</html>
928