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