Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
<html>
3
<head>
4
<title>How to prepare a Ghostscript release</title>
5
<!-- $Id: Release.htm,v 1.95 2005/10/20 19:46:23 ray Exp $ -->
6
<!-- Originally: make.txt -->
7
<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
8
</head>
9
 
10
<body>
11
<!-- [1.0 begin visible header] ============================================ -->
12
 
13
<!-- [1.1 begin headline] ================================================== -->
14
 
15
<h1>How to prepare a Ghostscript release</h1>
16
 
17
<!-- [1.1 end headline] ==================================================== -->
18
 
19
<!-- [1.2 begin table of contents] ========================================= -->
20
 
21
<h2>Table of contents</h2>
22
 
23
<blockquote><ul>
24
<li><a href="#Introduction">Introduction</a>
25
<li><a href="#Servers">Servers</a>
26
<ul>
27
<li><a href="#Development_files">Development sources and bug reports</a>
28
<li><a href="#Distribution">Distribution</a>
29
</ul>
30
<li><a href="#Release_numbering">Release numbering</a>
31
<li><a href="#Making_distributions">Making distributions</a>
32
<ul>
33
<li><a href="#Preparing_source">Preparing the source code</a>
34
<li><a href="#Testing">Testing</a>
35
<li><a href="#Changelog">Updating the Changelog</a>
36
<li><a href="#Making_Tarballs">Making the source distribution</a>
37
<li><a href="#Testing_on_Windows">Testing on Windows</a>
38
<li><a href="#Windows_distribution">Building the Windows distribution</a>
39
<li><a href="#Finishing_up">Finishing up</a>
40
<li><a href="#Beta_distributions">Beta distributions</a>
41
<li><a href="#Public_releases">Public releases</a>
42
</ul>
43
<li><a href="#After_releasing">After releasing</a>
44
<li><a href="#GPL_releases">GPL Ghostscript releases</a>
45
<ul>
46
<li><a href="#GPL_code">GPL code</a>
47
<li><a href="#GPL_after_releasing">After releasing (GPL)</a>
48
</ul>
49
<li><a href="#Fonts">Fonts</a>
50
</ul></blockquote>
51
 
52
<!-- [1.2 end table of contents] =========================================== -->
53
 
54
<!-- [1.3 begin hint] ====================================================== -->
55
 
56
<p>For other information, see the <a href="Readme.htm">Ghostscript
57
overview</a> and the instructions on how to <a href="Make.htm">build
58
Ghostscript</a>.
59
 
60
<!-- [1.3 end hint] ======================================================== -->
61
 
62
<hr>
63
 
64
<!-- [1.0 end visible header] ============================================== -->
65
 
66
<!-- [2.0 begin contents] ================================================== -->
67
 
68
<h2><a name="Introduction"></a>Introduction</h2>
69
 
70
<p>
71
This document describes the process that artofcode LLC, the copyright holder
72
of Ghostscript, uses for making new Ghostscript releases. Please note
73
that while the the license allows anyone to prepare and distribute
74
releases in accordance with its terms and conditions, this document is
75
really meant only to document the process used by artofcode LLC.
76
However, the eventual purpose of this document is to describe
77
Ghostscript release procedures in enough detail that someone who knows
78
little about Ghostscript but is generally familiar with the platform on
79
which the procedure is being carried out can execute the procedures
80
correctly. So if you add or changing anything to/in this document,
81
be sure to specify all command lines, file names, etc. in explicit
82
detail.
83
 
84
<p>
85
The release process for the GPL and AFPL branches are similar, though
86
there are some differences in terms of policy and release locations. See
87
the section on <a href="#GPL_releases">GPL releases</a> below for
88
information specific to GPL Ghostscript.
89
 
90
<p>
91
File names below that don't include an explicit subdirectory name are in the
92
<b><tt>src</tt></b> subdirectory.
93
 
94
<p>
95
If you do plan to make your own distribution, please be aware of some items
96
you will want to change.
97
 
98
<ul>
99
 
100
<li>If you make any significant changes, please edit
101
<b><tt>gscdef.c</tt></b> to change <b><tt>GS_PRODUCTFAMILY</tt></b> and
102
<b><tt>GS_PRODUCT</tt></b> from "AFPL Ghostscript" to something else,
103
in order to avoid confusion with artofcode's releases.
104
 
105
<li>In the same file, you may also want to edit <b><tt>GS_COPYRIGHT</tt></b>
106
to add your own copyright notice (although you must not remove any
107
notice that is there).
108
 
109
<li>You will almost certainly want to edit <b><tt>version.mak</tt></b> to
110
change the revision date, <b><tt>GS_REVISIONDATE</tt></b>.
111
 
112
<li>If you want to change the release number, you must change it in all the
113
places listed under <a href="#Release_numbering">"Release numbering"</a>
114
below.
115
 
116
</ul>
117
 
118
<h2><a name="Servers"></a>Servers</h2>
119
 
120
<p>
121
The GPL and AFPL Ghostscript files are maintained on sites accessible to
122
the public.  One specific site hosts the active CVS repository for code,
123
data, and documentation, and the bug report data base; several sites
124
offer distributions with release numbers, intended for wider
125
distribution.
126
 
127
<h3><a name="Development_files"></a>Development sources and bug reports</h3>
128
 
129
<p>
130
The primary repository for GPL and AFPL Ghostscript is <a
131
href="http://www.ghostscript.com/" class="offsite">ghostscript.com</a>.
132
Please check there first for any news about releases or current work,
133
and for information about where to download ghostscript and how to
134
access the mailing lists.
135
 
136
CVS access is through <a
137
href="http://cvs.ghostscript.com/"
138
class="offsite">cvs.ghostscript.com</a>.
139
 
140
<p>
141
It may also be helpful to
142
read the SourceForge AFPL Ghostscript home page (<a
143
href="http://sourceforge.net/projects/ghostscript/" 
144
class="offsite">http://sourceforge.net/projects/ghostscript/</a>).
145
 
146
<h3><a name="Distribution"></a>Distribution</h3>
147
 
148
<p>
149
Stable, beta, and development releases are all available from
150
<blockquote>
151
<a
152
href="http://sourceforge.net/project/showfiles.php?group_id=1897" 
153
class="offsite">http://sourceforge.net/project/showfiles.php?group_id=1897</a>
154
</blockquote>
155
 
156
<p>
157
Stable releases are also distributed from
158
 
159
<blockquote>
160
<a
161
href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/" 
162
class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/</a> or
163
<br>
164
<a
165
href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gpl/" 
166
class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gpl/</a>
167
</blockquote>
168
 
169
<p>
170
Development releases are also distributed from
171
 
172
<blockquote>
173
<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/test/" 
174
class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/test/</a>
175
</blockquote>
176
 
177
<h2><a name="Release_numbering"></a>Release numbering</h2>
178
 
179
<p>
180
Ghostscript uses a two-part (major.minor) release number. The second part
181
of the release number is a 2-digit decimal fraction: it counts 00,
182
01, 02, and so on through 99.
183
 
184
<ul>
185
 
186
<li>Release numbers N.0x and N.5x indicate stable versions.
187
<li>Successive increments generally indicate bug fixes and minor enhancements. 
188
<li>Development, testing and beta releases generally begin with a minor release number that is
189
a multiple of ten and increment from there.
190
</ul>
191
 
192
<p>
193
Release numbers appear in the following places in the Ghostscript files:
194
 
195
<ul>
196
 
197
<li>In <b><tt>lib/gs_init.ps</tt></b>, as an integer (release number x100) at the beginning of the
198
file just after the initial comment blocks.
199
 
200
<li>In <b><tt>src/version.mak</tt></b>, split into 3 lines.
201
 
202
<li>In <b><tt>doc/News.htm</tt></b>, in the two headers and their labels and at the very end in
203
the copyright footer.
204
 
205
<li>At the foot of most documenation files. However, these are updated mechanically from the value
206
in <b><tt>News.htm</tt></b> as part of the release process and do not need to be maintained
207
directly.
208
</ul>
209
 
210
<h3>Before a release</h3>
211
 
212
<p>
213
The current release number in the development code must be set to the desired value. The increment
214
from just after the previous release (see below) is sufficient for minor updates. In the case of
215
major changes or a new stable release, the number will need to be bumped; this is generally done
216
as the first step of preparing a new release.
217
 
218
<h3>After a release</h3>
219
 
220
<p>
221
After making a release the release number in CVS is incremented. Thus versions built
222
from cvs are always marked with a future (or unused) release number to avoid confusion.
223
 
224
<p>
225
Additionally, After an N.00 or N.50 stable release, a branch is made in cvs so that development 
226
can continue independently of changes to the stable series. When this happens, the minor release
227
number is incremented by 10 (or 20) on the development branch (and by 1 on the new stable branch,
228
as above) to avoid collisions.
229
 
230
<p>
231
While incrementing the release number after making a release may seem
232
counter-intuitive, it ensures that, at any given time, the version
233
number alone is sufficient to distinguish between the current CVS
234
state and a numbered release.
235
 
236
<h2><a name="Making_distributions"></a>Making distributions</h2>
237
 
238
<p>
239
This document only discusses source distributions.  Source distributions
240
currently can only be made on Linux systems (but it probably wouldn't take
241
much work to support other Unix systems).  Ghostscript as distributed also
242
often includes executables or other packages for the Windows and MacOS
243
environments, but artofcode does not always produce these, and this document does not
244
discuss them.  For more information about Windows packages, please contact
245
<a href="mailto:bug-gswin@ghostscript.com"><tt>bug-gswin@ghostscript.com</tt></a>;
246
for more information about MacOS packages, please contact <a
247
href="mailto:mac-gs@ghostscript.com"><tt>mac-gs@ghostscript.com</tt></a>.
248
 
249
<p>
250
To make a source distribution, you will need the scripts and data files in
251
the <b><tt>toolbin/</tt></b> directory. The instructions below generally
252
assume that you're invoking the relative to the top level of the source 
253
tree.
254
 
255
To run the scripts, you will need reasonably current versions of Tcl,
256
freely available from Scriptics 
257
(<a class="offsite" href="http://www.scriptics.com"><tt>http://www.scriptics.com</tt></a>), and
258
Python, freely available from <a class="offsite"
259
href="http://www.python.org"><tt>http://www.python.org</tt></a>.
260
 
261
<p>
262
To update the changelogs, you'll also need a recent version of the cvs2cl perl script. If
263
not already installed on your system a copy can be found at
264
<a class="offsite" href="http://www.red-bean.com/cvs2cl/cvs2cl.pl">http://www.red-bean.com/cvs2cl/cvs2cl.pl</a>.
265
 
266
<p>
267
The instructions below also refer to some files that are deliberately
268
omitted from the public distribution, because they are not freely
269
redistributable. You will need to provide similar files for your
270
environment.
271
 
272
<blockquote><pre>
273
<b><tt>data/*/*.ps</tt></b> (PostScript files) - needed for smoke testing
274
</pre></blockquote>
275
 
276
<h3><a name="Preparing_source"></a>Preparing the source code</h3>
277
 
278
<p>
279
If necessary, update the release number by incrementing it as described in
280
<a href="#Release_numbering">Release numbering</a> above.
281
 
282
<p>
283
Update references to the date for release:
284
 
285
<ul>
286
 
287
<li>In <b><tt>version.mak</tt></b>, the numeric date.
288
 
289
<li>In <b><tt>doc/News.htm</tt></b>, in two places, skipping the Id:
290
line. That is, in parentheses after the <tt>VERSION X.YY</tt> heading,
291
and in the copyright footer both the year and the release date.
292
 
293
<li>In <b><tt>src/dwsetup.rc</tt></b> and <b><tt>src/winint.mak</tt></b>,
294
update the year in the embedded copyright notice.
295
 
296
</ul>
297
 
298
<p>
299
We recommend using a UTC release date to avoid timezone skew.
300
 
301
<p>
302
Also in <b><tt>doc/News.htm</tt></b>, update the number of the highest
303
closed bug and the list of open bugs.
304
 
305
<p>
306
Check in <b><tt>gscdef.c</tt></b> that the definition of
307
<b><tt>GS_PRODUCT</tt></b> includes the appropriate one of "DEVELOPMENT
308
RELEASE", "BETA RELEASE", or neither, and does not include "CVS
309
PRE-RELEASE".
310
 
311
<p>Run the source-consistency checks from the test suite:
312
 
313
<blockquote><pre>
314
toolbin/tests/check_all.py --gsroot=.
315
</pre></blockquote>
316
Where the argument of --gsroot is the path to the top level of the
317
source tree. Fix any problems it indicates, and commit them to cvs.
318
 
319
<p>
320
Check for patched configuration parameters, <b><tt>#define TEST</tt></b>s,
321
version/date inconsistencies, and mismatches between the working directory
322
and the CVS repository by running:
323
 
324
<blockquote><pre>
325
toolbin/pre.tcl
326
</pre></blockquote>
327
 
328
<p>
329
This program compares the result of various greps against a check file,
330
writing the results of grep on one output file and the differences from the
331
check file on another.  See the source code for the default file names.  The
332
important one is the check file,
333
<b><tt>toolbin/pre.chk</tt></b>.  <b><tt>pre.tcl</tt></b> also verifies
334
that the
335
right information is in the following places:
336
<ul>
337
<li>release number in <b><tt>man/*.1</tt></b>, <b><tt>doc/*.htm</tt></b>,
338
<b><tt>version.mak</tt></b>, <b><tt>doc/gs-vms.hlp</tt></b>,
339
<b><tt>lib/gs_init.ps</tt></b>
340
<li>revision date in <b><tt>man/*.1</tt></b>, <b><tt>doc/*.htm</tt></b>,
341
<b><tt>version.mak</tt></b>, <b><tt>doc/gs-vms.hlp</tt></b>
342
<li>copyright year (if necessary) in <b><tt>gscdef.c</tt></b>
343
<li>third-party library version number in <b><tt>*.mak</tt></b>
344
</ul>
345
 
346
<p>
347
If necessary, run
348
 
349
<blockquote><pre>
350
toolbin/pre.tcl update
351
</pre></blockquote>
352
 
353
<p>
354
to update the version and revision date in the doc files, and then run
355
 
356
<blockquote><pre>
357
toolbin/pre.tcl
358
</pre></blockquote>
359
 
360
<p>
361
again. To confirm that everything is updated. You may have to commit to
362
cvs after the update to satify the script that all the dates are
363
correct.
364
 
365
<p>
366
Check the consistency of the source code with the makefiles by
367
running:
368
 
369
<blockquote><pre>
370
toolbin/gsmake.tcl check
371
</pre></blockquote>
372
 
373
This script assumes the top level makefile is named '<tt>makefile</tt>'.
374
 
375
<p>
376
Fix any problems and commit to cvs.
377
 
378
<h3><a name="Testing"></a>Testing</h3>
379
 
380
<p>
381
Edit your top-level the Makefile to set
382
<blockquote><pre>
383
FEATURE_DEVS=$(FEATURE_DEVS_ALL)
384
COMPILE_INITS=1
385
</pre></blockquote>
386
 
387
<p>
388
This will help catch compilation problems.
389
 
390
<p>
391
Run
392
 
393
<blockquote><pre>
394
rm obj/*
395
make -j2 &gt;&amp; make.log
396
</pre></blockquote>
397
 
398
<p>
399
and look for warnings and errors in the log file.
400
 
401
<p>
402
Do a smoke test, updating the example paths as necessary:
403
 
404
<blockquote><pre>
405
unset GS_DEVICE GS_FONTPATH GS_LIB GS_OPTIONS
406
./bin/gs -I./lib -I./fonts -dNOPAUSE -dBATCH toolbin/smoke.ps
407
./bin/gs -I./lib -I./fonts -dNOPAUSE -dBATCH -sDEVICE=bitcmyk\
408
  -sOutputFile=/dev/null -r600 -dBufferSpace=100000 toolbin/smoke.ps
409
</pre></blockquote>
410
 
411
<p>
412
This reads files named
413
 
414
<blockquote><pre>
415
<b><tt>data/misc/*.ps</tt></b>
416
<b><tt>data/ps/*.ps</tt></b>
417
<b><tt>data/psl2/*.ps</tt></b>
418
<b><tt>data/psl3/*.ps</tt></b>
419
</pre></blockquote>
420
 
421
<p>
422
(Edit <b><tt>toolbin/smoke.ps</tt></b> to use other test sets.)
423
Watch for crashes, unusual error messages, or anomalous displayed output.
424
If there are any problems, start over from the beginning of the process.
425
 
426
<p>
427
Undo the <b><tt>FEATURE_DEVS</tt></b> and <b><tt>COMPILE_INITS</tt></b>
428
edits.
429
 
430
<p>
431
Run
432
 
433
<blockquote><pre>
434
cvs commit
435
</pre></blockquote>
436
 
437
<p>
438
to ensure the repository is up to date.
439
 
440
<h3><a name="Changelog"></a>Updating the changelog</h3>
441
 
442
<p>
443
Create a new changelog by running either (for the main HEAD branch)
444
 
445
<blockquote><pre>
446
cvs2cl.pl --utc -T --follow trunk --delta &lt;prev release tag&gt;:HEAD --xml -f doc/changelog.xml
447
</pre></blockquote>
448
 
449
or (for a non-HEAD branch)
450
 
451
<blockquote><pre>
452
cvs2cl.pl --utc -T --follow &lt;branch&gt; --delta &lt;prev release tag&gt;:&lt;branch tag&gt; --xml -f doc/changelog.xml
453
</pre></blockquote>
454
e.g.
455
<blockquote>
456
<pre>cvs2cl.pl --utc -T --follow trunk --delta gs8_00:HEAD --xml -f doc/changelog.xml</pre>
457
</blockquote>
458
 
459
<p>
460
This consolidates all the CVS logs since the previous release in a readable
461
format. You may also wish to pass a file mapping cvs user names to real names
462
with the <tt>-U</tt> option.
463
 
464
<p>
465
Create the html-format changes and details documents as follows:
466
 
467
<blockquote><pre>
468
cd doc
469
../toolbin/split_changelog.py changelog.xml Changes.htm Details.htm
470
cd ..
471
</pre></blockquote>
472
 
473
<p>
474
The xml changelog file can now be deleted. Run
475
 
476
<blockquote><pre>
477
toolbin/makehist.tcl
478
</pre></blockquote>
479
 
480
<p>
481
This updates <b><tt>doc/History#.htm</tt></b> from
482
<b><tt>doc/News.htm</tt></b> and <b><tt>doc/Changes.htm</tt></b>.
483
 
484
Then run
485
 
486
<blockquote><pre>
487
cvs commit
488
</pre></blockquote>
489
 
490
<p>
491
again to check in the Changes and history files.
492
 
493
<h3><a name="Making_Tarballs"></a>Making the source distribution</h3>
494
 
495
<p>
496
First, tag the versions of the files in cvs with the release version
497
number.
498
 
499
<blockquote>
500
<pre><tt>cvs tag gs#_##</tt></pre>
501
</blockquote>
502
 
503
If you've already tagged this release (e.g. in making an earlier
504
release candidate) you'll need to add the <tt>-r</tt> and <tt>-F</tt>
505
options after 'cvs tag' to force moving the tag to the new revisions
506
of changed files.
507
 
508
<p>
509
Pull a fresh copy for distribution from the cvs repository:
510
 
511
<blockquote><pre>
512
<tt>cvs -z3 -d &lt;ghostscript cvsroot&gt; export -r gs#_## -d ghostscript-#.## gs</tt>
513
</pre></blockquote>
514
 
515
 
516
<p>
517
Generate the text versions of the README and PUBLIC documents:
518
 
519
<blockquote>
520
<pre><tt>cd ghostscript-#.##</tt>
521
<tt>lynx -dump -nolist doc/Readme.htm &gt; doc/README</tt>
522
<tt>lynx -dump -nolist doc/Public.htm &gt; doc/PUBLIC</tt></pre>
523
</blockquote>
524
 
525
<p>
526
Add copies of third-party libraries. Versions of the ijs and icc 
527
libraries are included in Ghostscript cvs, so these are provided
528
by the export. Source for zlib, libjpeg, and zlib are usually provided
529
in the Windows and MacOS source releases, but not the unix tarballs.
530
 
531
<p>
532
Download and unpack the latest source release of 
533
<a href="http://jbig2dec.sourceforge.net/">jbig2dec</a>, renaming the 
534
directory to just <tt>jbig2dec</tt> on the top level of ghostscript 
535
source directory.
536
 
537
<p>
538
For the unix source distributions only, generate the configure
539
scripts. From the top level directory, run 
540
 
541
<blockquote><pre><tt>./autogen.sh</tt>
542
<tt>make distclean</tt>
543
</pre></blockquote>
544
 
545
This should create links to <tt>configure.ac</tt> and
546
<tt>Makefile.in</tt> in the top level directory and
547
invoke autoconf to create the <tt>configure</tt> script.
548
 
549
<p>
550
Also, run <tt>autoconf</tt> in the ijs subdir to create the configure script
551
for that package.
552
 
553
<p>
554
Move back to directory containing the distribution code and make the
555
source archives with:
556
 
557
<blockquote><pre>
558
<tt>tar cvzf ghostscript-#.##.tar.gz ghostscript-#.##/*</tt>
559
<tt>zcat ghostscript-#.##.tar.gz | bzip2 -c > ghostscript-#.##.tar.bz2</tt>
560
</pre></blockquote>
561
 
562
<p>
563
This creates the files
564
 
565
<blockquote><pre>
566
<b><tt>ghostscript-#.##.tar.gz</tt></b> (main archive)
567
<b><tt>ghostscript-#.##.tar.bz2</tt></b> (main archive)
568
</pre></blockquote>
569
 
570
<p>
571
The important issue is that the tarballs unpack into a directory
572
of the same name, and that the code be a pristine copy without
573
build or CVS housekeeping files.
574
 
575
<p>
576
It is also customary to make a <tt>gs###src.zip</tt> archive for the
577
convenience of windows developers. See below.
578
 
579
<h3><a name="Testing_on_Windows"></a>Testing on Windows</h3>
580
 
581
<p>
582
For Windows testing, you will need, in addition to the files listed
583
under "<a href="#Preparing_source">Preparing the source</a>" above:
584
<blockquote><pre>
585
<b><tt>toolbin/makewin.tcl</tt></b>
586
</pre></blockquote>
587
 
588
<p>
589
The following procedures rely on a large number of MS-DOS batch scripts that
590
are not discussed here: they are unlikely to be generally useful.
591
 
592
<p>
593
Mount the Windows partition on <b><tt>/c</tt></b>, and create the
594
<b><tt>/c/work</tt></b> directory if needed.
595
 
596
<p>
597
Make the zip archive of all files needed for a Windows build, and copy it to
598
the Windows partition:
599
 
600
<blockquote><pre>
601
toolbin/makewin
602
cp gs###.zip /c/work
603
</pre></blockquote>
604
 
605
<p>
606
Boot into Windows.  Unpack the archive:
607
 
608
<blockquote><pre>
609
cd \work
610
unzip -oq gs###.zip
611
gs###
612
</pre></blockquote>
613
 
614
<p>
615
The <b><tt>gs###.bat</tt></b> script creates some necessary directories,
616
sets up <b><tt>PATH</tt></b> and <b><tt>GS_LIB</tt></b> for testing, and
617
makes the <b><tt>gs#.##</tt></b> directory current.
618
 
619
<p>
620
Build with the Borland compiler:
621
 
622
<blockquote><pre>
623
config bcwin32
624
copy /y /b ..\gs\makefile
625
erase obj\*.*
626
make > bc.log
627
</pre></blockquote>
628
 
629
<p>
630
Smoke test the executables (both <b><tt>gswin32</tt></b> and
631
<b><tt>gswin32c</tt></b>), as described above for source distributions.
632
Then build with the Microsoft compiler:
633
 
634
<blockquote><pre>
635
config msvc32
636
copy /y /b ..\gs\makefile
637
erase obj\*.*
638
nmake > msvc.log
639
</pre></blockquote>
640
 
641
<p>
642
Smoke test these executables too.
643
 
644
<p>
645
Building with the Watcom compiler doesn't work, because the
646
<b><tt>wmake</tt></b> or <b><tt>wmakel</tt></b> program runs out of memory.
647
However, if it did work, this is how to do it:
648
 
649
<blockquote><pre>
650
config watcw32
651
copy /y /b ..\gs\makefile
652
erase obj\*.*
653
wmake -u > watc.log
654
</pre></blockquote>
655
 
656
<p>
657
Boot back into Linux.  If testing in Windows revealed problems, edit the
658
source files as necessary, and go back to <a
659
href="#Preparing_source">"Preparing the source code."</a>
660
 
661
<h3><a name="Windows_distribution"></a>Building the Windows distribution</h3>
662
<p>
663
Extract the sources from <b><tt>ghostscript-N.NN.tar.gz</tt></b>
664
then repackage in a zip file as follows:
665
<blockquote>
666
<b><tt>zip -r temp.zip gsN.NN/LICENSE gsN.NN/doc gsN.NN/examples 
667
  gsN.NN/icclib gsN.NN/ijs gsN.NN/jasper gsN.NN/jbig2dec gsN.NN/lib 
668
  gsN.NN/src gsN.NN/Resource</tt></b>
669
</blockquote>
670
Unzip converting the line endings to CRLF:
671
<blockquote>
672
<b><tt>unzip -a temp.zip<br>
673
del temp.zip</tt></b>
674
</blockquote>
675
Then finally zip up the sources to the distribution file:
676
<blockquote>
677
<b><tt>zip -9 -r -X gsNNNsrc.zip gsN.NN</tt></b>
678
</blockquote>
679
This method is reasonably portable, and does not convert binary
680
files such as
681
<b><tt><a href="../examples/annots.pdf">examples/annots.pdf</a></tt></b>.
682
<p>
683
Unzip <b><tt>gsNNNsrc.zip</tt></b>.  
684
The directory must be named <b><tt>gsN.NN</tt></b>.
685
<p>
686
Extract the AFPL fonts <b><tt>ghostscript-fonts-std-6.0.tar.gz</tt></b>
687
or GNU fonts <b><tt>gnu-gs-fonts-std-6.0.tar.gz</tt></b>
688
into a directory <b><tt>fonts</tt></b> adjacent to the 
689
<b><tt>gsN.NN</tt></b> directory.  
690
The fonts are needed in this location for building 
691
the distribution archive later.
692
<p>
693
You will need the command line Info-Zip zip program available from
694
<a href="http://www.info-zip.org/pub/infozip/">
695
http://www.info-zip.org/pub/infozip/</a> 
696
Alternatively, the command line version of WinZip 
697
(<b><tt>wzzip.exe</tt></b>) can be used by replacing the 
698
Info-Zip command line options <b><tt>-9 -r</tt></b>
699
with <b><tt>-ex -P</tt></b> in
700
<b><tt><a href="../src/winint.mak">winint.mak</a></tt></b>.
701
<p>
702
You will need WinZip Self-Extractor for building the
703
self extracting archive.  This is commercial software.
704
You may need to update the path <b><tt>WINZIPSE_XE</tt></b> in 
705
<b><tt><a href="../src/winint.mak">winint.mak</a></tt></b>.
706
<p>
707
Unzip the jpeg, libpng and zlib libraries, then make ghostscript
708
as documented in <a href="Make.htm">Make.htm</a>.
709
<p>
710
Run the command <b><tt>nmake archive</tt></b>.  This builds the distribution
711
archive <b><tt>gsNNNw32.exe</tt></b> and an ordinary zip file
712
<b><tt>gsNNNw32.zip</tt></b> in the parent directory.
713
If you do not have WinZip Self-Extractor, you can use
714
<b><tt>nmake zip</tt></b> to make <b><tt>gsNNNw32.zip</tt></b> only. 
715
 
716
<h3><a name="Finishing_up"></a>Finishing up</h3>
717
 
718
<p>
719
Upload <b><tt>ghostscript-#.##.tar.*</tt></b> to SourceForge (by anonymous
720
FTP to <b><tt>upload.sourceforge.net</tt></b>, directory
721
<b><tt>/incoming</tt></b>), and then post it using the "File Release"
722
facility in the AFPL Ghostscript project. If this is a stable AFPL
723
release put it in the <b><tt>ghostscript</tt></b> module.
724
If this is a GPL release, put it in the <b><tt>gs-gpl</tt></b> module.
725
If this is a test release or beta release, put
726
it in the <b><tt>gs-devel</tt></b> or <b><tt>gs-beta</tt></b> module,
727
respectively. 
728
If you are adding executable builds or source archives for other
729
platforms to an existing source release, please use the same release
730
date as the source release, not the current date.
731
 
732
<p>
733
If <b><tt>doc/C-style.htm</tt></b> has changed, put it on
734
<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/C-style.htm</tt></b>.
735
 
736
<h3><a name="Beta_distributions"></a>Beta distributions</h3>
737
 
738
<p>
739
Do the steps for distributions in general.
740
 
741
<p>
742
Upload <b><tt>ghostscript-#.##.tar.*</tt></b> to
743
<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/test</tt></b>.
744
 
745
<p>
746
Send an email announcement to the <tt>gs-test</tt> list
747
announcing the new release.
748
 
749
<h3><a name="Public_releases"></a>Public releases</h3>
750
 
751
<p>
752
Do the steps for distributions in general.
753
 
754
<p>
755
Create a directory at
756
<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/gs###/</tt></b>.  In that
757
directory, store the following files:
758
 
759
<ul>
760
 
761
<li>Standard distribution files:
762
 
763
<blockquote><pre>
764
<b><tt>ghostscript-#.##.tar.gz</tt></b>
765
<b><tt>ghostscript-#.##.tar.bz2</tt></b>
766
</pre></blockquote>
767
 
768
<li>MS Windows source and executables:
769
 
770
<blockquote><pre>
771
<b><tt>gs###src.zip</tt></b>
772
<b><tt>gs###w32.exe</tt></b>
773
<b><tt>gs###w32.zip</tt></b>
774
</pre></blockquote>
775
 
776
<li>Third-party libraries, as links (upload these if not installed), where
777
<b><tt>$$$</tt></b> et al. refer to the version number of the library, which
778
should be the latest compatible release of the library and should be 
779
consistent with the values of and version numbers specifically listed in
780
the makefiles.
781
 
782
<blockquote><pre>
783
<b><tt>jpegsrc.v$$.tar.gz</tt></b> -> <b><tt>../../3rdparty/jpegsrc.v$$.tar.gz</tt></b>
784
<b><tt>libpng-$.$.$.tar.gz</tt></b> -> <b><tt>../../3rdparty/libpng-$.$.$.tar.gz</tt></b>
785
<b><tt>zlib-$.$.$.tar.gz</tt></b> -> <b><tt>../../3rdparty/zlib-$.$.$.tar.gz</tt></b>
786
<b><tt>jpegsr$$.zip</tt></b> -> <b><tt>../../3rdparty/jpegsr$$.zip</tt></b>
787
<b><tt>lpng$$$.zip</tt></b> -> <b><tt>../../3rdparty/lpng$$$.zip</tt></b>
788
<b><tt>zlib$$$.zip</tt></b> -> <b><tt>../../3rdparty/zlib$$$.zip</tt></b>
789
</pre></blockquote>
790
 
791
In any case, the names of the links in the distribution directory should reflect
792
the original name of the upstream file.
793
 
794
<li>Fonts, where <b><tt>$.$$</tt></b> refers to the most recent version
795
number of the fonts:
796
 
797
<blockquote><pre>
798
<b><tt>ghostscript-fonts-other-$.$.tar.gz</tt></b> -> <b><tt>../fonts/ghostscript-fonts-other-$.$.tar.gz</tt></b>
799
<b><tt>ghostscript-fonts-std-$.$.tar.gz</tt></b> -> <b><tt>../fonts/ghostscript-fonts-std-$.$.tar.gz</tt></b>
800
</pre></blockquote>
801
 
802
</ul>
803
 
804
<p>
805
(Note that the link names are somewhat inconsistent: some of them retain the
806
version number of the file being referenced, and some of them use the
807
Ghostscript release number.  This is a historical artifact that might be
808
changed someday.)
809
 
810
<p>
811
E-mail the release announcement using:
812
<blockquote><pre>
813
To: gs-announce
814
</pre></blockquote>
815
 
816
<p>
817
Edit the Web pages in cvs and commit to reflect the new release.
818
The Wisconsin server should update automatically.
819
 
820
<h2><a name="After_releasing"></a>After releasing</h2>
821
 
822
<p>
823
Update the release number by incrementing it as described in <a
824
href="#Release_numbering">Release numbering</a> above.
825
 
826
<p>
827
In <b><tt>gscdef.c</tt></b>, edit the definition of
828
<b><tt>GS_PRODUCT</tt></b> to include "CVS PRE-RELEASE".
829
 
830
<p>
831
Edit <b><tt>doc/News.htm</tt></b> to remove all the content.
832
 
833
 
834
<h2><a name="GPL_releases"></a>GPL Ghostscript releases</h2>
835
 
836
<p>
837
artofcode LLC re-releases each stable AFPL Ghostscript branch as
838
GPL Ghostscript (under the GNU GPL license) when the next major stable
839
AFPL release comes out, or after one calendar year, whichever comes first.
840
 
841
<h3><a name="GPL_code"></a>GPL code</h3>
842
 
843
<p>
844
To make a GPL Ghostscript release from AFPL Ghostscript, update the
845
LICENCE file to reflect the new status of the code. In general there
846
can be no recipe for this as it depends on the niceties of ownership and
847
permisison attached to each piece of code. However, a previous GPL
848
release can serve as a guide.
849
 
850
<p>
851
There are also generally some portions of code (usually drivers) which
852
are limited to GPL Ghostscript only. These may want porting to the new
853
version before release.
854
 
855
<p>Once the license change is complete and the codebase has been
856
updated to satifaction, follow the release process as described for AFPL
857
Ghostscript above to test and package the new version. The distribution
858
methods are parallel to those for the AFPL, with the GPL releases
859
generally going under a separate header. For example, on the wisc
860
ftp site upload the file to 
861
<tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gpl/gs###/</tt>.
862
 
863
 
864
<h2><a name="Fonts"></a>Fonts</h2>
865
 
866
<p>
867
artofcode LLC distributes a package of the base 35 PostScript fonts, and a
868
package of other miscellaneous fonts.  As with the Ghostscript code, each
869
package is released both with the AFPL and with the GPL; however, unlike the
870
Ghostscript code, artofcode releases these versions simultaneously rather
871
than with a one-version delay.
872
 
873
<p>
874
To make the font packages, run the command
875
 
876
<blockquote><pre>
877
toolbin/makefonts #.##
878
</pre></blockquote>
879
 
880
<p>
881
This creates the following files:
882
 
883
<blockquote><pre>
884
ghostscript-fonts-std-#.##.tar.gz
885
ghostscript-fonts-other-#.##.tar.gz
886
gnu-gs-fonts-std-#.##.tar.gz
887
gnu-gs-fonts-other-#.##.tar.gz
888
</pre></blockquote>
889
 
890
<p>
891
The first two of these use the AFPL, and should be uploaded to
892
<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/fonts/</tt></b>.  The other two
893
use the GPL, and should be uploaded to
894
<b><tt>ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/fonts/</tt></b>.  For the GPL
895
release, also see <a href="#GPL_after_releasing">"After releasing
896
(GNU)"</a>.
897
 
898
<!-- [2.0 end contents] ==================================================== -->
899
 
900
<!-- [3.0 begin visible trailer] =========================================== -->
901
<hr>
902
 
903
<p>
904
<small>Copyright &copy; 1999-2003 artofcode LLC. All rights 
905
reserved.</small>
906
 
907
<p>
908
This software is provided AS-IS with no warranty, either express or
909
implied.
910
 
911
This software is distributed under license and may not be copied,
912
modified or distributed except as expressly authorized under the terms
913
of the license contained in the file LICENSE in this distribution.
914
 
915
For more information about licensing, please refer to
916
http://www.ghostscript.com/licensing/. For information on
917
commercial licensing, go to http://www.artifex.com/licensing/ or
918
contact Artifex Software, Inc., 101 Lucas Valley Road #110,
919
San Rafael, CA  94903, U.S.A., +1(415)492-9861.
920
 
921
<p>
922
<small>Ghostscript version 8.53, 20 October 2005
923
 
924
<!-- [3.0 end visible trailer] ============================================= -->
925
 
926
</body>
927
</html>