The first result of the shiny-new dok-tidy target.
[privoxy.git] / doc / webserver / developer-manual / newrelease.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
2 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
3 <html>
4   <head>
5     <meta name="generator" content="HTML Tidy, see www.w3.org">
6     <title>
7       Releasing a New Version
8     </title>
9     <meta name="GENERATOR" content=
10     "Modular DocBook HTML Stylesheet Version 1.79">
11     <link rel="HOME" title="Privoxy Developer Manual" href="index.html">
12     <link rel="PREVIOUS" title="Testing Guidelines" href="testing.html">
13     <link rel="NEXT" title="Update the Webserver" href=
14     "webserver-update.html">
15     <link rel="STYLESHEET" type="text/css" href="../p_doc.css">
16     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
17 <style type="text/css">
18  body {
19   background-color: #EEEEEE;
20   color: #000000;
21  }
22  :link { color: #0000FF }
23  :visited { color: #840084 }
24  :active { color: #0000FF }
25  hr.c1 {text-align: left}
26 </style>
27   </head>
28   <body class="SECT1">
29     <div class="NAVHEADER">
30       <table summary="Header navigation table" width="100%" border="0"
31       cellpadding="0" cellspacing="0">
32         <tr>
33           <th colspan="3" align="center">
34             Privoxy Developer Manual
35           </th>
36         </tr>
37         <tr>
38           <td width="10%" align="left" valign="bottom">
39             <a href="testing.html" accesskey="P">Prev</a>
40           </td>
41           <td width="80%" align="center" valign="bottom">
42           </td>
43           <td width="10%" align="right" valign="bottom">
44             <a href="webserver-update.html" accesskey="N">Next</a>
45           </td>
46         </tr>
47       </table>
48       <hr width="100%" class="c1">
49     </div>
50     <div class="SECT1">
51       <h1 class="SECT1">
52         <a name="NEWRELEASE">6. Releasing a New Version</a>
53       </h1>
54       <p>
55         When we release versions of <span class="APPLICATION">Privoxy</span>,
56         our work leaves our cozy secret lab and has to work in the cold
57         RealWorld[tm]. Once it is released, there is no way to call it back,
58         so it is very important that great care is taken to ensure that
59         everything runs fine, and not to introduce problems in the very last
60         minute.
61       </p>
62       <p>
63         So when releasing a new version, please adhere exactly to the
64         procedure outlined in this chapter.
65       </p>
66       <p>
67         The following programs are required to follow this process: <tt
68         class="FILENAME">ncftpput</tt> (ncftp), <tt class="FILENAME">scp,
69         ssh</tt> (ssh), <tt class="FILENAME">gmake</tt> (GNU's version of
70         make), autoconf, cvs.
71       </p>
72       <div class="SECT2">
73         <h2 class="SECT2">
74           <a name="VERSIONNUMBERS">6.1. Version numbers</a>
75         </h2>
76         <p>
77           First you need to determine which version number the release will
78           have. <span class="APPLICATION">Privoxy</span> version numbers
79           consist of three numbers, separated by dots, like in X.Y.Z (e.g.
80           3.0.0), where:
81         </p>
82         <ul>
83           <li>
84             <p>
85               X, the version major, is rarely ever changed. It is increased
86               by one if turning a development branch into stable
87               substantially changes the functionality, user interface or
88               configuration syntax. Majors 1 and 2 were <span class=
89               "APPLICATION">Junkbuster</span>, and 3 will be the first stable
90               <span class="APPLICATION">Privoxy</span> release.
91             </p>
92           </li>
93           <li>
94             <p>
95               Y, the version minor, represents the branch within the major
96               version. At any point in time, there are two branches being
97               maintained: The stable branch, with an even minor, say, 2N, in
98               which no functionality is being added and only bug-fixes are
99               made, and 2N+1, the development branch, in which the further
100               development of <span class="APPLICATION">Privoxy</span> takes
101               place. This enables us to turn the code upside down and inside
102               out, while at the same time providing and maintaining a stable
103               version. The minor is reset to zero (and one) when the major is
104               incremented. When a development branch has matured to the point
105               where it can be turned into stable, the old stable branch 2N is
106               given up (i.e. no longer maintained), the former development
107               branch 2N+1 becomes the new stable branch 2N+2, and a new
108               development branch 2N+3 is opened.
109             </p>
110           </li>
111           <li>
112             <p>
113               Z, the point or sub version, represents a release of the
114               software within a branch. It is therefore incremented
115               immediately before each code freeze. In development branches,
116               only the even point versions correspond to actual releases,
117               while the odd ones denote the evolving state of the sources on
118               CVS in between. It follows that Z is odd on CVS in development
119               branches most of the time. There, it gets increased to an even
120               number immediately before a code freeze, and is increased to an
121               odd number again immediately thereafter. This ensures that
122               builds from CVS snapshots are easily distinguished from
123               released versions. The point version is reset to zero when the
124               minor changes.
125             </p>
126             <p>
127               Stable branches work a little differently, since there should
128               be little to no development happening in such branches.
129               Remember, only bugfixes, which presumably should have had some
130               testing before being committed. Stable branches will then have
131               their version reported as <tt class="LITERAL">0.0.0</tt>,
132               during that period between releases when changes are being
133               added. This is to denote that this code is <span class=
134               "emphasis"><i class="EMPHASIS">not for release</i></span>. Then
135               as the release nears, the version is bumped according: e.g. <tt
136               class="LITERAL">3.0.1 -&gt; 0.0.0 -&gt; 3.0.2</tt>.
137             </p>
138           </li>
139         </ul>
140
141         <p>
142           In summary, the main CVS trunk is the development branch where new
143           features are being worked on for the next stable series. This
144           should almost always be where the most activity takes place. There
145           is always at least one stable branch from the trunk, e.g now it is
146           <tt class="LITERAL">3.0</tt>, which is only used to release stable
147           versions. Once the initial *.0 release of the stable branch has
148           been done, then as a rule, only bugfixes that have had prior
149           testing should be committed to the stable branch. Once there are
150           enough bugfixes to justify a new release, the version of this
151           branch is again incremented Example: 3.0.0 -&gt; 3.0.1 -&gt; 3.0.2,
152           etc are all stable releases from within the stable branch. 3.1.x is
153           currently the main trunk, and where work on 3.2.x is taking place.
154           If any questions, please post to the devel list <span class=
155           "emphasis"><i class="EMPHASIS">before</i></span> committing to a
156           stable branch!
157         </p>
158         <p>
159           Developers should remember too that if they commit a bugfix to the
160           stable branch, this will more than likely require a separate
161           submission to the main trunk, since these are separate development
162           trees within CVS. If you are working on both, then this would
163           require at least two separate check outs (i.e main trunk, <span
164           class="emphasis"><i class="EMPHASIS">and</i></span> the stable
165           release branch, which is <tt class="LITERAL">v_3_0_branch</tt> at
166           the moment).
167         </p>
168       </div>
169       <div class="SECT2">
170         <h2 class="SECT2">
171           <a name="BEFORERELEASE">6.2. Before the Release: Freeze</a>
172         </h2>
173         <p>
174           The following <span class="emphasis"><i class="EMPHASIS">must be
175           done by one of the developers</i></span> prior to each new release.
176         </p>
177         <p>
178         </p>
179         <ul>
180           <li>
181             <p>
182               Make sure that everybody who has worked on the code in the last
183               couple of days has had a chance to yell <span class=
184               "QUOTE">"no!"</span> in case they have pending changes/fixes in
185               their pipelines. Announce the freeze so that nobody will
186               interfere with last minute changes.
187             </p>
188           </li>
189           <li>
190             <p>
191               Increment the version number (point from odd to even in
192               development branches!) in <tt class=
193               "FILENAME">configure.in</tt>. (RPM spec files will need to be
194               incremented as well.)
195             </p>
196           </li>
197           <li>
198             <p>
199               If <tt class="FILENAME">default.action</tt> has changed since
200               last release (i.e. software release or standalone actions file
201               release), bump up its version info to A.B in this line:
202             </p>
203             <p>
204             </p>
205             <table border="0" bgcolor="#E0E0E0" width="90%">
206               <tr>
207                 <td>
208 <pre class="PROGRAMLISTING">
209   {+add-header{X-Actions-File-Version: A.B} -filter -no-popups}
210 </pre>
211                 </td>
212               </tr>
213             </table>
214
215             <p>
216               Then change the version info in
217               doc/webserver/actions/index.php, line:
218               '$required_actions_file_version = "A.B";'
219             </p>
220           </li>
221           <li>
222             <p>
223               All documentation should be rebuild after the version bump.
224               Finished docs should be then be committed to CVS (for those
225               without the ability to build these). Some docs may require
226               rather obscure processing tools. <tt class=
227               "FILENAME">config</tt>, the man page (and the html version of
228               the man page), and the PDF docs fall in this category. REAMDE,
229               the man page, AUTHORS, and config should all also be committed
230               to CVS for other packagers. The formal docs should be uploaded
231               to the webserver. See the Section "Updating the webserver" in
232               this manual for details.
233             </p>
234           </li>
235           <li>
236             <p>
237               The <i class="CITETITLE">User Manual</i> is also used for
238               context sensitive help for the CGI editor. This is version
239               sensitive, so that the user will get appropriate help for
240               his/her release. So with each release a fresh version should be
241               uploaded to the webserver (this is in addition to the main <i
242               class="CITETITLE">User Manual</i> link from the main page since
243               we need to keep manuals for various versions available). The
244               CGI pages will link to something like <tt class=
245               "LITERAL">http://privoxy.org/$(VERSION)/user-manual/</tt>. This
246               will need to be updated for each new release. There is no
247               Makefile target for this at this time!!! It needs to be done
248               manually.
249             </p>
250           </li>
251           <li>
252             <p>
253               All developers should look at the <tt class=
254               "FILENAME">ChangeLog</tt> and make sure noteworthy changes are
255               referenced.
256             </p>
257           </li>
258           <li>
259             <p>
260               <span class="emphasis"><i class="EMPHASIS">Commit all files
261               that were changed in the above steps!</i></span>
262             </p>
263           </li>
264           <li>
265             <p>
266               Tag all files in CVS with the version number with <span class=
267               "QUOTE">"<b class="COMMAND">cvs tag v_X_Y_Z</b>"</span>. Don't
268               use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc.
269             </p>
270           </li>
271           <li>
272             <p>
273               If the release was in a development branch, increase the point
274               version from even to odd (X.Y.(Z+1)) again in <tt class=
275               "FILENAME">configure.in</tt> and commit your change.
276             </p>
277           </li>
278           <li>
279             <p>
280               On the webserver, copy the user manual to a new top-level
281               directory called <tt class="FILENAME">X.Y.Z</tt>. This ensures
282               that help links from the CGI pages, which have the version as a
283               prefix, will go into the right version of the manual. If this
284               is a development branch release, also symlink <tt class=
285               "FILENAME">X.Y.(Z-1)</tt> to <tt class="FILENAME">X.Y.Z</tt>
286               and <tt class="FILENAME">X.Y.(Z+1)</tt> to <tt class=
287               "FILENAME">.</tt> (i.e. dot).
288             </p>
289           </li>
290         </ul>
291       </div>
292       <div class="SECT2">
293         <h2 class="SECT2">
294           <a name="THERELEASE">6.3. Building and Releasing the Packages</a>
295         </h2>
296         <p>
297           Now the individual packages can be built and released. Note that
298           for GPL reasons the first package to be released is always the
299           source tarball.
300         </p>
301         <p>
302           For <span class="emphasis"><i class="EMPHASIS">all</i></span> types
303           of packages, including the source tarball, <span class=
304           "emphasis"><i class="EMPHASIS">you must make sure that you build
305           from clean sources by exporting the right version from CVS into an
306           empty directory</i></span> (just press return when asked for a
307           password):
308         </p>
309         <p>
310         </p>
311         <table border="0" bgcolor="#E0E0E0" width="100%">
312           <tr>
313             <td>
314 <pre class="PROGRAMLISTING">
315   mkdir dist # delete or choose different name if it already exists
316   cd dist
317   cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
318   cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current
319 </pre>
320             </td>
321           </tr>
322         </table>
323
324         <p>
325           <span class="emphasis"><i class="EMPHASIS">Do NOT change</i></span>
326           a single bit, including, but not limited to version information
327           after export from CVS. This is to make sure that all release
328           packages, and with them, all future bug reports, are based on
329           exactly the same code.
330         </p>
331         <div class="WARNING">
332           <table class="WARNING" border="1" width="100%">
333             <tr>
334               <td align="CENTER">
335                 <b>Warning</b>
336               </td>
337             </tr>
338             <tr>
339               <td align="LEFT">
340                 <p>
341                   Every significant release of Privoxy has included at least
342                   one package that either had incorrect versions of files,
343                   missing files, or incidental leftovers from a previous
344                   build process that gave unknown numbers of users headaches
345                   to try to figure out what was wrong. PLEASE, make sure you
346                   are using pristene sources, and are following the
347                   prescribed process!
348                 </p>
349               </td>
350             </tr>
351           </table>
352         </div>
353         <p>
354           Please find additional instructions for the source tarball and the
355           individual platform dependent binary packages below. And details on
356           the Sourceforge release process below that.
357         </p>
358         <div class="SECT3">
359           <h3 class="SECT3">
360             <a name="PACK-GUIDELINES">6.3.1. Note on Privoxy Packaging</a>
361           </h3>
362           <p>
363             Please keep these general guidelines in mind when putting
364             together your package. These apply to <span class="emphasis"><i
365             class="EMPHASIS">all</i></span> platforms!
366           </p>
367           <p>
368           </p>
369           <ul>
370             <li>
371               <p>
372                 <span class="APPLICATION">Privoxy</span> <span class=
373                 "emphasis"><i class="EMPHASIS">requires</i></span> write
374                 access to: all <tt class="FILENAME">*.action</tt> files, all
375                 logfiles, and the <tt class="FILENAME">trust</tt> file. You
376                 will need to determine the best way to do this for your
377                 platform.
378               </p>
379             </li>
380             <li>
381               <p>
382                 Please include up to date documentation. At a bare minimum:
383               </p>
384               <table border="0">
385                 <tbody>
386                   <tr>
387                     <td>
388                       <tt class="FILENAME">LICENSE</tt> (top-level directory)
389                     </td>
390                   </tr>
391                 </tbody>
392               </table>
393               <table border="0">
394                 <tbody>
395                   <tr>
396                     <td>
397                       <tt class="FILENAME">README</tt> (top-level directory)
398                     </td>
399                   </tr>
400                 </tbody>
401               </table>
402               <table border="0">
403                 <tbody>
404                   <tr>
405                     <td>
406                       <tt class="FILENAME">AUTHORS</tt> (top-level directory)
407                     </td>
408                   </tr>
409                 </tbody>
410               </table>
411               <table border="0">
412                 <tbody>
413                   <tr>
414                     <td>
415                       <tt class="FILENAME">man page</tt> (top-level
416                       directory, Unix-like platforms only)
417                     </td>
418                   </tr>
419                 </tbody>
420               </table>
421               <table border="0">
422                 <tbody>
423                   <tr>
424                     <td>
425                       <tt class="FILENAME">The User Manual</tt>
426                       (doc/webserver/user-manual/)
427                     </td>
428                   </tr>
429                 </tbody>
430               </table>
431               <table border="0">
432                 <tbody>
433                   <tr>
434                     <td>
435                       <tt class="FILENAME">FAQ</tt> (doc/webserver/faq/)
436                     </td>
437                   </tr>
438                 </tbody>
439               </table>
440               <p>
441                 Also suggested: <tt class="FILENAME">Developer Manual</tt>
442                 (doc/webserver/developer-manual) and <tt class=
443                 "FILENAME">ChangeLog</tt> (top-level directory). <tt class=
444                 "FILENAME">FAQ</tt> and the manuals are HTML docs. There are
445                 also text versions in <tt class="FILENAME">doc/text/</tt>
446                 which could conceivably also be included.
447               </p>
448               <p>
449                 The documentation has been designed such that the manuals are
450                 linked to each other from parallel directories, and should be
451                 packaged that way. <tt class=
452                 "FILENAME">privoxy-index.html</tt> can also be included and
453                 can serve as a focal point for docs and other links of
454                 interest (and possibly renamed to <tt class=
455                 "FILENAME">index.html</tt>). This should be one level up from
456                 the manuals. There is a link also on this page to an HTMLized
457                 version of the man page. To avoid 404 for this, it is in CVS
458                 as <tt class=
459                 "FILENAME">doc/webserver/man-page/privoxy-man-page.html</tt>,
460                 and should be included along with the manuals. There is also
461                 a css stylesheets that can be included for better
462                 presentation: <tt class="FILENAME">p_doc.css</tt>. This
463                 should be in the same directory with <tt class=
464                 "FILENAME">privoxy-index.html</tt>, (i.e. one level up from
465                 the manual directories).
466               </p>
467             </li>
468             <li>
469               <p>
470                 <tt class="FILENAME">user.action</tt> and <tt class=
471                 "FILENAME">user.filter</tt> are designed for local
472                 preferences. Make sure these do not get overwritten! <tt
473                 class="FILENAME">config</tt> should not be overwritten
474                 either. This has especially important configuration data in
475                 it. <tt class="FILENAME">trust</tt> should be left in tact as
476                 well.
477               </p>
478             </li>
479             <li>
480               <p>
481                 Other configuration files (<tt class=
482                 "FILENAME">default.action</tt> and <tt class=
483                 "FILENAME">default.filter</tt>) should be installed as the
484                 new defaults, but all previously installed configuration
485                 files should be preserved as backups. This is just good
486                 manners :-) These files are likely to change between releases
487                 and contain important new features and bug fixes.
488               </p>
489             </li>
490             <li>
491               <p>
492                 Please check platform specific notes in this doc, if you
493                 haven't done <span class="QUOTE">"Privoxy"</span> packaging
494                 before for other platform specific issues. Conversely, please
495                 add any notes that you know are important for your platform
496                 (or contact one of the doc maintainers to do this if you
497                 can't).
498               </p>
499             </li>
500             <li>
501               <p>
502                 Packagers should do a <span class="QUOTE">"clean"</span>
503                 install of their package after building it. So any previous
504                 installs should be removed first to ensure the integrity of
505                 the newly built package. Then run the package for a while to
506                 make sure there are no obvious problems, before uploading.
507               </p>
508             </li>
509           </ul>
510         </div>
511         <div class="SECT3">
512           <h3 class="SECT3">
513             <a name="NEWRELEASE-TARBALL">6.3.2. Source Tarball</a>
514           </h3>
515           <p>
516             First, <span class="emphasis"><i class="EMPHASIS">make sure that
517             you have freshly exported the right version into an empty
518             directory</i></span>. (See "Building and releasing packages"
519             above). Then run:
520           </p>
521           <p>
522           </p>
523           <table border="0" bgcolor="#E0E0E0" width="100%">
524             <tr>
525               <td>
526 <pre class="PROGRAMLISTING">
527   cd current
528   autoheader &amp;&amp; autoconf &amp;&amp; ./configure
529 </pre>
530               </td>
531             </tr>
532           </table>
533
534           <p>
535             Then do:
536           </p>
537           <p>
538           </p>
539           <table border="0" bgcolor="#E0E0E0" width="100%">
540             <tr>
541               <td>
542 <pre class="PROGRAMLISTING">
543   make tarball-dist
544 </pre>
545               </td>
546             </tr>
547           </table>
548
549           <p>
550             To upload the package to Sourceforge, simply issue
551           </p>
552           <p>
553           </p>
554           <table border="0" bgcolor="#E0E0E0" width="100%">
555             <tr>
556               <td>
557 <pre class="PROGRAMLISTING">
558   make tarball-upload
559 </pre>
560               </td>
561             </tr>
562           </table>
563
564           <p>
565             Go to the displayed URL and release the file publicly on
566             Sourceforge. For the change log field, use the relevant section
567             of the <tt class="FILENAME">ChangeLog</tt> file.
568           </p>
569         </div>
570         <div class="SECT3">
571           <h3 class="SECT3">
572             <a name="NEWRELEASE-RPM">6.3.3. SuSE, Conectiva or Red Hat
573             RPM</a>
574           </h3>
575           <p>
576             In following text, replace <tt class=
577             "REPLACEABLE"><i>dist</i></tt> with either <span class=
578             "QUOTE">"rh"</span> for Red Hat or <span class=
579             "QUOTE">"suse"</span> for SuSE.
580           </p>
581           <p>
582             First, <span class="emphasis"><i class="EMPHASIS">make sure that
583             you have freshly exported the right version into an empty
584             directory</i></span>. (See "Building and releasing packages"
585             above).
586           </p>
587           <p>
588             As the only exception to not changing anything after export from
589             CVS, now examine the file <tt class="FILENAME">privoxy-</tt><tt
590             class="REPLACEABLE"><i>dist</i></tt><tt class=
591             "FILENAME">.spec</tt> and make sure that the version information
592             and the RPM release number are correct. The RPM release numbers
593             for each version start at one. Hence it must be reset to one if
594             this is the first RPM for <tt class=
595             "REPLACEABLE"><i>dist</i></tt> which is built from version X.Y.Z.
596             Check the <a href=
597             "http://sourceforge.net/project/showfiles.php?group_id=11118"
598             target="_top">file list</a> if unsure. Else, it must be set to
599             the highest already available RPM release number for that version
600             plus one.
601           </p>
602           <p>
603             Then run:
604           </p>
605           <p>
606           </p>
607           <table border="0" bgcolor="#E0E0E0" width="100%">
608             <tr>
609               <td>
610 <pre class="PROGRAMLISTING">
611   cd current
612   autoheader &amp;&amp; autoconf &amp;&amp; ./configure
613 </pre>
614               </td>
615             </tr>
616           </table>
617
618           <p>
619             Then do
620           </p>
621           <p>
622           </p>
623           <table border="0" bgcolor="#E0E0E0" width="100%">
624             <tr>
625               <td>
626 <pre class="PROGRAMLISTING">
627   make <tt class="REPLACEABLE"><i>dist</i></tt>-dist
628 </pre>
629               </td>
630             </tr>
631           </table>
632
633           <p>
634             To upload the package to Sourceforge, simply issue
635           </p>
636           <p>
637           </p>
638           <table border="0" bgcolor="#E0E0E0" width="100%">
639             <tr>
640               <td>
641 <pre class="PROGRAMLISTING">
642   make <tt class="REPLACEABLE"><i>dist</i></tt>-upload <tt class=
643 "REPLACEABLE"><i>rpm_packagerev</i></tt>
644 </pre>
645               </td>
646             </tr>
647           </table>
648
649           <p>
650             where <tt class="REPLACEABLE"><i>rpm_packagerev</i></tt> is the
651             RPM release number as determined above. Go to the displayed URL
652             and release the file publicly on Sourceforge. Use the release
653             notes and change log from the source tarball package.
654           </p>
655         </div>
656         <div class="SECT3">
657           <h3 class="SECT3">
658             <a name="NEWRELEASE-OS2">6.3.4. OS/2</a>
659           </h3>
660           <p>
661             First, <span class="emphasis"><i class="EMPHASIS">make sure that
662             you have freshly exported the right version into an empty
663             directory</i></span>. (See "Building and releasing packages"
664             above). Then get the OS/2 Setup module:
665           </p>
666           <p>
667           </p>
668           <table border="0" bgcolor="#E0E0E0" width="100%">
669             <tr>
670               <td>
671 <pre class="PROGRAMLISTING">
672   cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co os2setup
673 </pre>
674               </td>
675             </tr>
676           </table>
677
678           <p>
679             You will need a mix of development tools. The main compilation
680             takes place with IBM Visual Age C++. Some ancillary work takes
681             place with GNU tools, available from various sources like
682             hobbes.nmsu.edu. Specificially, you will need <tt class=
683             "FILENAME">autoheader</tt>, <tt class="FILENAME">autoconf</tt>
684             and <tt class="FILENAME">sh</tt> tools. The packaging takes place
685             with WarpIN, available from various sources, including its home
686             page: <a href="http://www.xworkplace.org/" target=
687             "_top">xworkplace</a>.
688           </p>
689           <p>
690             Change directory to the <tt class="FILENAME">os2setup</tt>
691             directory. Edit the os2build.cmd file to set the final executable
692             filename. For example,
693           </p>
694           <p>
695           </p>
696           <table border="0" bgcolor="#E0E0E0" width="100%">
697             <tr>
698               <td>
699 <pre class="PROGRAMLISTING">
700   installExeName='privoxyos2_setup_X.Y.Z.exe'
701 </pre>
702               </td>
703             </tr>
704           </table>
705
706           <p>
707             Next, edit the <tt class="FILENAME">IJB.wis</tt> file so the
708             release number matches in the <tt class="FILENAME">PACKAGEID</tt>
709             section:
710           </p>
711           <p>
712           </p>
713           <table border="0" bgcolor="#E0E0E0" width="100%">
714             <tr>
715               <td>
716 <pre class="PROGRAMLISTING">
717   PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"
718 </pre>
719               </td>
720             </tr>
721           </table>
722
723           <p>
724             You're now ready to build. Run:
725           </p>
726           <p>
727           </p>
728           <table border="0" bgcolor="#E0E0E0" width="100%">
729             <tr>
730               <td>
731 <pre class="PROGRAMLISTING">
732   os2build
733 </pre>
734               </td>
735             </tr>
736           </table>
737
738           <p>
739             You will find the WarpIN-installable executable in the <tt class=
740             "FILENAME">./files</tt> directory. Upload this anonymously to <tt
741             class="FILENAME">uploads.sourceforge.net/incoming</tt>, create a
742             release for it, and you're done. Use the release notes and Change
743             Log from the source tarball package.
744           </p>
745         </div>
746         <div class="SECT3">
747           <h3 class="SECT3">
748             <a name="NEWRELEASE-SOLARIS">6.3.5. Solaris</a>
749           </h3>
750           <p>
751             Login to Sourceforge's compilefarm via ssh:
752           </p>
753           <p>
754           </p>
755           <table border="0" bgcolor="#E0E0E0" width="100%">
756             <tr>
757               <td>
758 <pre class="PROGRAMLISTING">
759   ssh cf.sourceforge.net
760 </pre>
761               </td>
762             </tr>
763           </table>
764
765           <p>
766             Choose the right operating system (not the Debian one). When
767             logged in, <span class="emphasis"><i class="EMPHASIS">make sure
768             that you have freshly exported the right version into an empty
769             directory</i></span>. (See "Building and releasing packages"
770             above). Then run:
771           </p>
772           <p>
773           </p>
774           <table border="0" bgcolor="#E0E0E0" width="100%">
775             <tr>
776               <td>
777 <pre class="PROGRAMLISTING">
778   cd current
779   autoheader &amp;&amp; autoconf &amp;&amp; ./configure
780 </pre>
781               </td>
782             </tr>
783           </table>
784
785           <p>
786             Then run
787           </p>
788           <p>
789           </p>
790           <table border="0" bgcolor="#E0E0E0" width="100%">
791             <tr>
792               <td>
793 <pre class="PROGRAMLISTING">
794   gmake solaris-dist
795 </pre>
796               </td>
797             </tr>
798           </table>
799
800           <p>
801             which creates a gzip'ed tar archive. Sadly, you cannot use <b
802             class="COMMAND">make solaris-upload</b> on the Sourceforge
803             machine (no ncftpput). You now have to manually upload the
804             archive to Sourceforge's ftp server and release the file
805             publicly. Use the release notes and Change Log from the source
806             tarball package.
807           </p>
808         </div>
809         <div class="SECT3">
810           <h3 class="SECT3">
811             <a name="NEWRELEASE-WINDOWS">6.3.6. Windows</a>
812           </h3>
813           <p>
814             You should ensure you have the latest version of Cygwin (from <a
815             href="http://www.cygwin.com/" target=
816             "_top">http://www.cygwin.com/</a>). Run the following commands
817             from within a Cygwin bash shell.
818           </p>
819           <p>
820             First, <span class="emphasis"><i class="EMPHASIS">make sure that
821             you have freshly exported the right version into an empty
822             directory</i></span>. (See "Building and releasing packages"
823             above). Then get the Windows setup module:
824           </p>
825           <p>
826           </p>
827           <table border="0" bgcolor="#E0E0E0" width="100%">
828             <tr>
829               <td>
830 <pre class="PROGRAMLISTING">
831   cvs -z3  -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co winsetup
832 </pre>
833               </td>
834             </tr>
835           </table>
836
837           <p>
838             Then you can build the package. This is fully automated, and is
839             controlled by <tt class="FILENAME">winsetup/GNUmakefile</tt>. All
840             you need to do is:
841           </p>
842           <p>
843           </p>
844           <table border="0" bgcolor="#E0E0E0" width="100%">
845             <tr>
846               <td>
847 <pre class="PROGRAMLISTING">
848   cd winsetup
849   make
850 </pre>
851               </td>
852             </tr>
853           </table>
854
855           <p>
856             Now you can manually rename <tt class=
857             "FILENAME">privoxy_setup.exe</tt> to <tt class=
858             "FILENAME">privoxy_setup_X_Y_Z.exe</tt>, and upload it to
859             SourceForge. When releasing the package on SourceForge, use the
860             release notes and Change Log from the source tarball package.
861           </p>
862         </div>
863         <div class="SECT3">
864           <h3 class="SECT3">
865             <a name="NEWRELEASE-DEBIAN">6.3.7. Debian</a>
866           </h3>
867           <p>
868             First, <span class="emphasis"><i class="EMPHASIS">make sure that
869             you have freshly exported the right version into an empty
870             directory</i></span>. (See "Building and releasing packages"
871             above). Then add a log entry to <tt class=
872             "FILENAME">debian/changelog</tt>, if it is not already there, for
873             example by running:
874           </p>
875           <p>
876           </p>
877           <table border="0" bgcolor="#E0E0E0" width="100%">
878             <tr>
879               <td>
880 <pre class="PROGRAMLISTING">
881   debchange -v 3.0.18-UNRELEASED-1 "New upstream version"
882 </pre>
883               </td>
884             </tr>
885           </table>
886
887           <p>
888             Then, run:
889           </p>
890           <p>
891           </p>
892           <table border="0" bgcolor="#E0E0E0" width="100%">
893             <tr>
894               <td>
895 <pre class="PROGRAMLISTING">
896   dpkg-buildpackage -rfakeroot -us -uc -b
897 </pre>
898               </td>
899             </tr>
900           </table>
901
902           <p>
903             This will create <tt class=
904             "FILENAME">../privoxy_3.0.18-UNRELEASED-1_i386.deb</tt> which can
905             be uploaded. To upload the package to Sourceforge, simply issue
906           </p>
907           <p>
908           </p>
909           <table border="0" bgcolor="#E0E0E0" width="100%">
910             <tr>
911               <td>
912 <pre class="PROGRAMLISTING">
913   make debian-upload
914 </pre>
915               </td>
916             </tr>
917           </table>
918         </div>
919         <div class="SECT3">
920           <h3 class="SECT3">
921             <a name="NEWRELEASE-MACOSX">6.3.8. Mac OS X</a>
922           </h3>
923           <p>
924             First, <span class="emphasis"><i class="EMPHASIS">make sure that
925             you have freshly exported the right version into an empty
926             directory</i></span>. (See "Building and releasing packages"
927             above). Then get the Mac OS X setup module:
928           </p>
929           <p>
930           </p>
931           <table border="0" bgcolor="#E0E0E0" width="100%">
932             <tr>
933               <td>
934 <pre class="PROGRAMLISTING">
935   cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co osxsetup
936 </pre>
937               </td>
938             </tr>
939           </table>
940
941           <p>
942             Then run:
943           </p>
944           <p>
945           </p>
946           <table border="0" bgcolor="#E0E0E0" width="100%">
947             <tr>
948               <td>
949 <pre class="PROGRAMLISTING">
950   cd osxsetup
951   build
952 </pre>
953               </td>
954             </tr>
955           </table>
956
957           <p>
958             This will run <tt class="FILENAME">autoheader</tt>, <tt class=
959             "FILENAME">autoconf</tt> and <tt class="FILENAME">configure</tt>
960             as well as <tt class="FILENAME">make</tt>. Finally, it will copy
961             over the necessary files to the ./osxsetup/files directory for
962             further processing by <tt class="FILENAME">PackageMaker</tt>.
963           </p>
964           <p>
965             Bring up PackageMaker with the PrivoxyPackage.pmsp definition
966             file, modify the package name to match the release, and hit the
967             "Create package" button. If you specify ./Privoxy.pkg as the
968             output package name, you can then create the distributable zip
969             file with the command:
970           </p>
971           <p>
972           </p>
973           <table border="0" bgcolor="#E0E0E0" width="100%">
974             <tr>
975               <td>
976 <pre class="PROGRAMLISTING">
977   zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
978 </pre>
979               </td>
980             </tr>
981           </table>
982
983           <p>
984             You can then upload <tt class=
985             "FILENAME">privoxyosx_setup_x.y.z.zip</tt> anonymously to <tt
986             class="FILENAME">uploads.sourceforge.net/incoming</tt>, create a
987             release for it, and you're done. Use the release notes and Change
988             Log from the source tarball package.
989           </p>
990         </div>
991         <div class="SECT3">
992           <h3 class="SECT3">
993             <a name="NEWRELEASE-FREEBSD">6.3.9. FreeBSD</a>
994           </h3>
995           <p>
996             Login to Sourceforge's compile-farm via ssh:
997           </p>
998           <p>
999           </p>
1000           <table border="0" bgcolor="#E0E0E0" width="100%">
1001             <tr>
1002               <td>
1003 <pre class="PROGRAMLISTING">
1004   ssh cf.sourceforge.net
1005 </pre>
1006               </td>
1007             </tr>
1008           </table>
1009
1010           <p>
1011             Choose the right operating system. When logged in, <span class=
1012             "emphasis"><i class="EMPHASIS">make sure that you have freshly
1013             exported the right version into an empty directory</i></span>.
1014             (See "Building and releasing packages" above). Then run:
1015           </p>
1016           <p>
1017           </p>
1018           <table border="0" bgcolor="#E0E0E0" width="100%">
1019             <tr>
1020               <td>
1021 <pre class="PROGRAMLISTING">
1022   cd current
1023   autoheader &amp;&amp; autoconf &amp;&amp; ./configure
1024 </pre>
1025               </td>
1026             </tr>
1027           </table>
1028
1029           <p>
1030             Then run:
1031           </p>
1032           <p>
1033           </p>
1034           <table border="0" bgcolor="#E0E0E0" width="100%">
1035             <tr>
1036               <td>
1037 <pre class="PROGRAMLISTING">
1038   gmake freebsd-dist
1039 </pre>
1040               </td>
1041             </tr>
1042           </table>
1043
1044           <p>
1045             which creates a gzip'ed tar archive. Sadly, you cannot use <b
1046             class="COMMAND">make freebsd-upload</b> on the Sourceforge
1047             machine (no ncftpput). You now have to manually upload the
1048             archive to Sourceforge's ftp server and release the file
1049             publicly. Use the release notes and Change Log from the source
1050             tarball package.
1051           </p>
1052         </div>
1053         <div class="SECT3">
1054           <h3 class="SECT3">
1055             <a name="NEWRELEASE-HPUX">6.3.10. HP-UX 11</a>
1056           </h3>
1057           <p>
1058             First, <span class="emphasis"><i class="EMPHASIS">make sure that
1059             you have freshly exported the right version into an empty
1060             directory</i></span>. (See "Building and releasing packages"
1061             above). Then run:
1062           </p>
1063           <p>
1064           </p>
1065           <table border="0" bgcolor="#E0E0E0" width="100%">
1066             <tr>
1067               <td>
1068 <pre class="PROGRAMLISTING">
1069   cd current
1070   autoheader &amp;&amp; autoconf &amp;&amp; ./configure
1071 </pre>
1072               </td>
1073             </tr>
1074           </table>
1075
1076           <p>
1077             Then do FIXME.
1078           </p>
1079         </div>
1080         <div class="SECT3">
1081           <h3 class="SECT3">
1082             <a name="NEWRELEASE-AMIGA">6.3.11. Amiga OS</a>
1083           </h3>
1084           <p>
1085             First, <span class="emphasis"><i class="EMPHASIS">make sure that
1086             you have freshly exported the right version into an empty
1087             directory</i></span>. (See "Building and releasing packages"
1088             above). Then run:
1089           </p>
1090           <p>
1091           </p>
1092           <table border="0" bgcolor="#E0E0E0" width="100%">
1093             <tr>
1094               <td>
1095 <pre class="PROGRAMLISTING">
1096   cd current
1097   autoheader &amp;&amp; autoconf &amp;&amp; ./configure
1098 </pre>
1099               </td>
1100             </tr>
1101           </table>
1102
1103           <p>
1104             Then do FIXME.
1105           </p>
1106         </div>
1107         <div class="SECT3">
1108           <h3 class="SECT3">
1109             <a name="NEWRELEASE-AIX">6.3.12. AIX</a>
1110           </h3>
1111           <p>
1112             Login to Sourceforge's compilefarm via ssh:
1113           </p>
1114           <p>
1115           </p>
1116           <table border="0" bgcolor="#E0E0E0" width="100%">
1117             <tr>
1118               <td>
1119 <pre class="PROGRAMLISTING">
1120   ssh cf.sourceforge.net
1121 </pre>
1122               </td>
1123             </tr>
1124           </table>
1125
1126           <p>
1127             Choose the right operating system. When logged in, <span class=
1128             "emphasis"><i class="EMPHASIS">make sure that you have freshly
1129             exported the right version into an empty directory</i></span>.
1130             (See "Building and releasing packages" above). Then run:
1131           </p>
1132           <p>
1133           </p>
1134           <table border="0" bgcolor="#E0E0E0" width="100%">
1135             <tr>
1136               <td>
1137 <pre class="PROGRAMLISTING">
1138   cd current
1139   autoheader &amp;&amp; autoconf &amp;&amp; ./configure
1140 </pre>
1141               </td>
1142             </tr>
1143           </table>
1144
1145           <p>
1146             Then run:
1147           </p>
1148           <p>
1149           </p>
1150           <table border="0" bgcolor="#E0E0E0" width="100%">
1151             <tr>
1152               <td>
1153 <pre class="PROGRAMLISTING">
1154   make aix-dist
1155 </pre>
1156               </td>
1157             </tr>
1158           </table>
1159
1160           <p>
1161             which creates a gzip'ed tar archive. Sadly, you cannot use <b
1162             class="COMMAND">make aix-upload</b> on the Sourceforge machine
1163             (no ncftpput). You now have to manually upload the archive to
1164             Sourceforge's ftp server and release the file publicly. Use the
1165             release notes and Change Log from the source tarball package.
1166           </p>
1167         </div>
1168       </div>
1169       <div class="SECT2">
1170         <h2 class="SECT2">
1171           <a name="RELEASING">6.4. Uploading and Releasing Your Package</a>
1172         </h2>
1173         <p>
1174           After the package is ready, it is time to upload it to SourceForge,
1175           and go through the release steps. The upload is done via FTP:
1176         </p>
1177         <p>
1178         </p>
1179         <ul>
1180           <li>
1181             <p>
1182               Upload to: <a href="ftp://upload.sourceforge.net/incoming"
1183               target="_top">ftp://upload.sourceforge.net/incoming</a>
1184             </p>
1185           </li>
1186           <li>
1187             <p>
1188               user: <tt class="LITERAL">anonymous</tt>
1189             </p>
1190           </li>
1191           <li>
1192             <p>
1193               password: <tt class=
1194               "LITERAL">ijbswa-developers@lists.sourceforge.net</tt>
1195             </p>
1196           </li>
1197         </ul>
1198
1199         <p>
1200           Or use the <b class="COMMAND">make</b> targets as described above.
1201         </p>
1202         <p>
1203           Once this done go to <a href=
1204           "https://sourceforge.net/project/admin/editpackages.php?group_id=11118"
1205            target=
1206           "_top">https://sourceforge.net/project/admin/editpackages.php?group_id=11118</a>,
1207           making sure you are logged in. Find your target platform in the
1208           second column, and click <tt class="LITERAL">Add Release</tt>. You
1209           will then need to create a new release for your package, using the
1210           format of <tt class="LITERAL">$VERSION ($CODE_STATUS)</tt>, e.g.
1211           <span class="emphasis"><i class="EMPHASIS">3.0.18
1212           (beta)</i></span>.
1213         </p>
1214         <p>
1215           Now just follow the prompts. Be sure to add any appropriate Release
1216           notes. You should see your freshly uploaded packages in <span
1217           class="QUOTE">"Step 2. Add Files To This Release"</span>. Check the
1218           appropriate box(es). Remember at each step to hit the <span class=
1219           "QUOTE">"Refresh/Submit"</span> buttons! You should now see your
1220           file(s) listed in Step 3. Fill out the forms with the appropriate
1221           information for your platform, being sure to hit <span class=
1222           "QUOTE">"Update"</span> for each file. If anyone is monitoring your
1223           platform, check the <span class="QUOTE">"email"</span> box at the
1224           very bottom to notify them of the new package. This should do it!
1225         </p>
1226         <p>
1227           If you have made errors, or need to make changes, you can go
1228           through essentially the same steps, but select <tt class=
1229           "LITERAL">Edit Release</tt>, instead of <tt class="LITERAL">Add
1230           Release</tt>.
1231         </p>
1232       </div>
1233       <div class="SECT2">
1234         <h2 class="SECT2">
1235           <a name="AFTERRELEASE">6.5. After the Release</a>
1236         </h2>
1237         <p>
1238           When all (or: most of the) packages have been uploaded and made
1239           available, send an email to the <a href=
1240           "mailto:ijbswa-announce@lists.sourceforge.net" target=
1241           "_top">announce mailing list</a>, Subject: "Version X.Y.Z available
1242           for download". Be sure to include the <a href=
1243           "http://sourceforge.net/project/showfiles.php?group_id=11118"
1244           target="_top">download location</a>, the release notes and the
1245           Changelog. Also, post an updated News item on the project page
1246           Sourceforge, and update the Home page and docs linked from the Home
1247           page (see below). Other news sites and release oriented sites, such
1248           as Freshmeat, should also be notified.
1249         </p>
1250       </div>
1251     </div>
1252     <div class="NAVFOOTER">
1253       <hr width="100%" class="c1">
1254       <table summary="Footer navigation table" width="100%" border="0"
1255       cellpadding="0" cellspacing="0">
1256         <tr>
1257           <td width="33%" align="left" valign="top">
1258             <a href="testing.html" accesskey="P">Prev</a>
1259           </td>
1260           <td width="34%" align="center" valign="top">
1261             <a href="index.html" accesskey="H">Home</a>
1262           </td>
1263           <td width="33%" align="right" valign="top">
1264             <a href="webserver-update.html" accesskey="N">Next</a>
1265           </td>
1266         </tr>
1267         <tr>
1268           <td width="33%" align="left" valign="top">
1269             Testing Guidelines
1270           </td>
1271           <td width="34%" align="center" valign="top">
1272             &nbsp;
1273           </td>
1274           <td width="33%" align="right" valign="top">
1275             Update the Webserver
1276           </td>
1277         </tr>
1278       </table>
1279     </div>
1280   </body>
1281 </html>
1282