1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
5 >Releasing a New Version</TITLE
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
10 TITLE="Privoxy Developer Manual"
11 HREF="index.html"><LINK
13 TITLE="Testing Guidelines"
14 HREF="testing.html"><LINK
16 TITLE="Update the Webserver"
17 HREF="webserver-update.html"><LINK
20 HREF="../p_doc.css"><META
21 HTTP-EQUIV="Content-Type"
23 charset=ISO-8859-1"></HEAD
34 SUMMARY="Header navigation table"
43 >Privoxy Developer Manual</TH
65 HREF="webserver-update.html"
80 >6. Releasing a New Version</A
83 > When we release versions of <SPAN
87 our work leaves our cozy secret lab and has to work in the cold
88 RealWorld[tm]. Once it is released, there is no way to call it
89 back, so it is very important that great care is taken to ensure
90 that everything runs fine, and not to introduce problems in the
94 > So when releasing a new version, please adhere exactly to the
95 procedure outlined in this chapter.
98 > The following programs are required to follow this process:
109 > (GNU's version of make), autoconf, cvs.
116 NAME="VERSIONNUMBERS"
117 >6.1. Version numbers</A
120 > First you need to determine which version number the release will have.
124 > version numbers consist of three numbers,
125 separated by dots, like in X.Y.Z (e.g. 3.0.0), where:
131 > X, the version major, is rarely ever changed. It is increased by one if
132 turning a development branch into stable substantially changes the functionality,
133 user interface or configuration syntax. Majors 1 and 2 were
137 >, and 3 will be the first stable
146 > Y, the version minor, represents the branch within the major version.
147 At any point in time, there are two branches being maintained:
148 The stable branch, with an even minor, say, 2N, in which no functionality is
149 being added and only bug-fixes are made, and 2N+1, the development branch, in
150 which the further development of <SPAN
155 This enables us to turn the code upside down and inside out, while at the same time
156 providing and maintaining a stable version.
157 The minor is reset to zero (and one) when the major is incremented. When a development
158 branch has matured to the point where it can be turned into stable, the old stable branch
159 2N is given up (i.e. no longer maintained), the former development branch 2N+1 becomes the
160 new stable branch 2N+2, and a new development branch 2N+3 is opened.
165 > Z, the point or sub version, represents a release of the software within a branch.
166 It is therefore incremented immediately before each code freeze.
167 In development branches, only the even point versions correspond to actual releases,
168 while the odd ones denote the evolving state of the sources on CVS in between.
169 It follows that Z is odd on CVS in development branches most of the time. There, it gets
170 increased to an even number immediately before a code freeze, and is increased to an odd
171 number again immediately thereafter.
172 This ensures that builds from CVS snapshots are easily distinguished from released versions.
173 The point version is reset to zero when the minor changes.
176 > Stable branches work a little differently, since there should be
177 little to no development happening in such branches. Remember,
178 only bugfixes, which presumably should have had some testing
179 before being committed. Stable branches will then have their
180 version reported as <TT
183 >, during that period
184 between releases when changes are being added. This is to denote
185 that this code is <SPAN
192 as the release nears, the version is bumped according: e.g.
195 >3.0.1 -> 0.0.0 -> 3.0.2</TT
203 > In summary, the main CVS trunk is the development branch where new
204 features are being worked on for the next stable series. This should
205 almost always be where the most activity takes place. There is always at
206 least one stable branch from the trunk, e.g now it is
210 >, which is only used to release stable versions.
211 Once the initial *.0 release of the stable branch has been done, then as a
212 rule, only bugfixes that have had prior testing should be committed to
213 the stable branch. Once there are enough bugfixes to justify a new
214 release, the version of this branch is again incremented Example: 3.0.0
215 -> 3.0.1 -> 3.0.2, etc are all stable releases from within the stable
216 branch. 3.1.x is currently the main trunk, and where work on 3.2.x is
217 taking place. If any questions, please post to the devel list
224 > committing to a stable branch!
227 > Developers should remember too that if they commit a bugfix to the stable
228 branch, this will more than likely require a separate submission to the
229 main trunk, since these are separate development trees within CVS. If you
230 are working on both, then this would require at least two separate check
231 outs (i.e main trunk, <SPAN
237 > the stable release branch,
250 >6.2. Before the Release: Freeze</A
253 > The following <SPAN
257 >must be done by one of the
260 > prior to each new release.
268 > Make sure that everybody who has worked on the code in the last
269 couple of days has had a chance to yell <SPAN
273 they have pending changes/fixes in their pipelines. Announce the
274 freeze so that nobody will interfere with last minute changes.
279 > Increment the version number (point from odd to even in development
284 will need to be incremented as well.)
292 > has changed since last
293 release (i.e. software release or standalone actions file release),
294 bump up its version info to A.B in this line:
305 CLASS="PROGRAMLISTING"
306 > {+add-header{X-Actions-File-Version: A.B} -filter -no-popups}</PRE
314 Then change the version info in doc/webserver/actions/index.php,
315 line: '$required_actions_file_version = "A.B";'
320 > All documentation should be rebuild after the version bump.
321 Finished docs should be then be committed to CVS (for those
322 without the ability to build these). Some docs may require
323 rather obscure processing tools. <TT
327 the man page (and the html version of the man page), and the PDF docs
328 fall in this category. REAMDE, the man page, AUTHORS, and config
329 should all also be committed to CVS for other packagers. The
330 formal docs should be uploaded to the webserver. See the
331 Section "Updating the webserver" in this manual for details.
339 > is also used for context
340 sensitive help for the CGI editor. This is version sensitive, so that
341 the user will get appropriate help for his/her release. So with
342 each release a fresh version should be uploaded to the webserver
343 (this is in addition to the main <I
347 link from the main page since we need to keep manuals for various
348 versions available). The CGI pages will link to something like
351 >http://privoxy.org/$(VERSION)/user-manual/</TT
353 will need to be updated for each new release. There is no Makefile
354 target for this at this time!!! It needs to be done manually.
359 > All developers should look at the <TT
363 make sure noteworthy changes are referenced.
372 >Commit all files that were changed in the above steps!</I
379 > Tag all files in CVS with the version number with
387 Don't use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc.
392 > If the release was in a development branch, increase the point version
393 from even to odd (X.Y.(Z+1)) again in <TT
402 > On the webserver, copy the user manual to a new top-level directory
406 >. This ensures that help links from the CGI
407 pages, which have the version as a prefix, will go into the right version of the manual.
408 If this is a development branch release, also symlink <TT
435 >6.3. Building and Releasing the Packages</A
438 > Now the individual packages can be built and released. Note that for
439 GPL reasons the first package to be released is always the source tarball.
448 > types of packages, including the source tarball,
453 >you must make sure that you build from clean sources by exporting
454 the right version from CVS into an empty directory</I
456 > (just press return when
457 asked for a password):
467 CLASS="PROGRAMLISTING"
468 > mkdir dist # delete or choose different name if it already exists
470 cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
471 cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current</PRE
484 > a single bit, including, but not limited to
485 version information after export from CVS. This is to make sure that
486 all release packages, and with them, all future bug reports, are based
487 on exactly the same code.
508 > Every significant release of Privoxy has included at least one
509 package that either had incorrect versions of files, missing files,
510 or incidental leftovers from a previous build process that gave
511 unknown numbers of users headaches to try to figure out what was
512 wrong. PLEASE, make sure you are using pristene sources, and are
513 following the prescribed process!
520 > Please find additional instructions for the source tarball and the
521 individual platform dependent binary packages below. And details
522 on the Sourceforge release process below that.
529 NAME="PACK-GUIDELINES"
530 >6.3.1. Note on Privoxy Packaging</A
533 > Please keep these general guidelines in mind when putting together
534 your package. These apply to <SPAN
558 write access to: all <TT
562 logfiles, and the <TT
566 need to determine the best way to do this for your platform.
571 > Please include up to date documentation. At a bare minimum:
583 > (top-level directory)
600 > (top-level directory)
617 > (top-level directory)
634 > (top-level directory, Unix-like
652 > (doc/webserver/user-manual/)
669 > (doc/webserver/faq/)
677 > Also suggested: <TT
679 >Developer Manual</TT
681 (doc/webserver/developer-manual) and <TT
685 (top-level directory). <TT
688 > and the manuals are
689 HTML docs. There are also text versions in
693 > which could conceivably also be
697 > The documentation has been designed such that the manuals are linked
698 to each other from parallel directories, and should be packaged
701 >privoxy-index.html</TT
703 included and can serve as a focal point for docs and other links of
704 interest (and possibly renamed to <TT
708 This should be one level up from the manuals. There is a link also
709 on this page to an HTMLized version of the man page. To avoid 404 for
710 this, it is in CVS as
713 >doc/webserver/man-page/privoxy-man-page.html</TT
715 and should be included along with the manuals. There is also a
716 css stylesheets that can be included for better presentation:
720 >. This should be in the same directory
723 >privoxy-index.html</TT
724 >, (i.e. one level up from
725 the manual directories).
737 are designed for local preferences. Make sure these do not get overwritten!
741 > should not be overwritten either. This
742 has especially important configuration data in it.
746 > should be left in tact as well.
751 > Other configuration files (<TT
758 >) should be installed as the new
759 defaults, but all previously installed configuration files should be
760 preserved as backups. This is just good manners :-) These files are
761 likely to change between releases and contain important new features
767 > Please check platform specific notes in this doc, if you haven't
771 > packaging before for other platform
772 specific issues. Conversely, please add any notes that you know
773 are important for your platform (or contact one of the doc
774 maintainers to do this if you can't).
779 > Packagers should do a <SPAN
783 package after building it. So any previous installs should be
784 removed first to ensure the integrity of the newly built package.
785 Then run the package for a while to make sure there are no
786 obvious problems, before uploading.
798 NAME="NEWRELEASE-TARBALL"
799 >6.3.2. Source Tarball</A
806 >make sure that you have freshly exported the right
807 version into an empty directory</I
809 >. (See "Building and releasing
810 packages" above). Then run:
820 CLASS="PROGRAMLISTING"
822 autoheader && autoconf && ./configure</PRE
839 CLASS="PROGRAMLISTING"
840 > make tarball-dist</PRE
847 > To upload the package to Sourceforge, simply issue
857 CLASS="PROGRAMLISTING"
858 > make tarball-upload</PRE
865 > Go to the displayed URL and release the file publicly on Sourceforge.
866 For the change log field, use the relevant section of the
878 NAME="NEWRELEASE-RPM"
879 >6.3.3. SuSE, Conectiva or Red Hat RPM</A
882 > In following text, replace <TT
891 > for Red Hat or <SPAN
901 >make sure that you have freshly exported the right
902 version into an empty directory</I
904 >. (See "Building and releasing
908 > As the only exception to not changing anything after export from CVS,
909 now examine the file <TT
921 and make sure that the version information and the RPM release number are
922 correct. The RPM release numbers for each version start at one. Hence it must
923 be reset to one if this is the first RPM for
929 > which is built from version
932 HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
936 > if unsure. Else, it must be set to the highest already available RPM
937 release number for that version plus one.
950 CLASS="PROGRAMLISTING"
952 autoheader && autoconf && ./configure</PRE
969 CLASS="PROGRAMLISTING"
982 > To upload the package to Sourceforge, simply issue
992 CLASS="PROGRAMLISTING"
1016 RPM release number as determined above.
1017 Go to the displayed URL and release the file publicly on Sourceforge.
1018 Use the release notes and change log from the source tarball package.
1026 NAME="NEWRELEASE-OS2"
1034 >make sure that you have freshly exported the right
1035 version into an empty directory</I
1037 >. (See "Building and releasing
1038 packages" above). Then get the OS/2 Setup module:
1048 CLASS="PROGRAMLISTING"
1049 > cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co os2setup</PRE
1056 > You will need a mix of development tools.
1057 The main compilation takes place with IBM Visual Age C++.
1058 Some ancillary work takes place with GNU tools, available from
1059 various sources like hobbes.nmsu.edu.
1060 Specificially, you will need <TT
1071 The packaging takes place with WarpIN, available from various sources, including
1073 HREF="http://www.xworkplace.org/"
1079 > Change directory to the <TT
1083 Edit the os2build.cmd file to set the final executable filename.
1094 CLASS="PROGRAMLISTING"
1095 > installExeName='privoxyos2_setup_X.Y.Z.exe'</PRE
1102 > Next, edit the <TT
1105 > file so the release number matches
1119 CLASS="PROGRAMLISTING"
1120 > PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"</PRE
1127 > You're now ready to build. Run:
1137 CLASS="PROGRAMLISTING"
1145 > You will find the WarpIN-installable executable in the
1149 > directory. Upload this anonymously to
1152 >uploads.sourceforge.net/incoming</TT
1154 for it, and you're done. Use the release notes and Change Log from the
1155 source tarball package.
1163 NAME="NEWRELEASE-SOLARIS"
1167 > Login to Sourceforge's compilefarm via ssh:
1177 CLASS="PROGRAMLISTING"
1178 > ssh cf.sourceforge.net</PRE
1185 > Choose the right operating system (not the Debian one).
1186 When logged in, <SPAN
1190 >make sure that you have freshly exported the right
1191 version into an empty directory</I
1193 >. (See "Building and releasing
1194 packages" above). Then run:
1204 CLASS="PROGRAMLISTING"
1206 autoheader && autoconf && ./configure</PRE
1223 CLASS="PROGRAMLISTING"
1224 > gmake solaris-dist</PRE
1231 > which creates a gzip'ed tar archive. Sadly, you cannot use <B
1235 > on the Sourceforge machine (no ncftpput). You now have
1236 to manually upload the archive to Sourceforge's ftp server and release
1237 the file publicly. Use the release notes and Change Log from the
1238 source tarball package.
1246 NAME="NEWRELEASE-WINDOWS"
1250 > You should ensure you have the latest version of Cygwin (from
1252 HREF="http://www.cygwin.com/"
1254 >http://www.cygwin.com/</A
1256 Run the following commands from within a Cygwin bash shell.
1263 >make sure that you have freshly exported the right
1264 version into an empty directory</I
1266 >. (See "Building and releasing
1267 packages" above). Then get the Windows setup module:
1277 CLASS="PROGRAMLISTING"
1278 > cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co winsetup</PRE
1285 > Then you can build the package. This is fully automated, and is
1288 >winsetup/GNUmakefile</TT
1290 All you need to do is:
1300 CLASS="PROGRAMLISTING"
1309 > Now you can manually rename <TT
1311 >privoxy_setup.exe</TT
1315 >privoxy_setup_X_Y_Z.exe</TT
1317 SourceForge. When releasing the package on SourceForge, use the release notes
1318 and Change Log from the source tarball package.
1326 NAME="NEWRELEASE-DEBIAN"
1334 >make sure that you have freshly exported the
1335 right version into an empty directory</I
1338 "Building and releasing packages" above). Then add a log
1341 >debian/changelog</TT
1343 already there, for example by running:
1353 CLASS="PROGRAMLISTING"
1354 > debchange -v 3.0.16-stable-1 "New upstream version"</PRE
1371 CLASS="PROGRAMLISTING"
1372 > dpkg-buildpackage -rfakeroot -us -uc -b</PRE
1382 >../privoxy_3.0.16-stable-1_i386.deb</TT
1384 which can be uploaded. To upload the package to Sourceforge, simply
1395 CLASS="PROGRAMLISTING"
1396 > make debian-upload</PRE
1408 NAME="NEWRELEASE-MACOSX"
1416 >make sure that you have freshly exported the right
1417 version into an empty directory</I
1419 >. (See "Building and releasing
1420 packages" above). Then get the Mac OS X setup module:
1430 CLASS="PROGRAMLISTING"
1431 > cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co osxsetup</PRE
1448 CLASS="PROGRAMLISTING"
1471 Finally, it will copy over the necessary files to the ./osxsetup/files directory
1472 for further processing by <TT
1478 > Bring up PackageMaker with the PrivoxyPackage.pmsp definition file, modify the package
1479 name to match the release, and hit the "Create package" button.
1480 If you specify ./Privoxy.pkg as the output package name, you can then create
1481 the distributable zip file with the command:
1491 CLASS="PROGRAMLISTING"
1492 > zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg</PRE
1499 > You can then upload <TT
1501 >privoxyosx_setup_x.y.z.zip</TT
1505 >uploads.sourceforge.net/incoming</TT
1507 create a release for it, and you're done. Use the release notes
1508 and Change Log from the source tarball package.
1516 NAME="NEWRELEASE-FREEBSD"
1520 > Login to Sourceforge's compile-farm via ssh:
1530 CLASS="PROGRAMLISTING"
1531 > ssh cf.sourceforge.net</PRE
1538 > Choose the right operating system.
1539 When logged in, <SPAN
1543 >make sure that you have freshly exported the right
1544 version into an empty directory</I
1546 >. (See "Building and releasing
1547 packages" above). Then run:
1557 CLASS="PROGRAMLISTING"
1559 autoheader && autoconf && ./configure</PRE
1576 CLASS="PROGRAMLISTING"
1577 > gmake freebsd-dist</PRE
1584 > which creates a gzip'ed tar archive. Sadly, you cannot use <B
1588 > on the Sourceforge machine (no ncftpput). You now have
1589 to manually upload the archive to Sourceforge's ftp server and release
1590 the file publicly. Use the release notes and Change Log from the
1591 source tarball package.
1599 NAME="NEWRELEASE-HPUX"
1600 >6.3.10. HP-UX 11</A
1607 >make sure that you have freshly exported the right
1608 version into an empty directory</I
1610 >. (See "Building and releasing
1611 packages" above). Then run:
1621 CLASS="PROGRAMLISTING"
1623 autoheader && autoconf && ./configure</PRE
1638 NAME="NEWRELEASE-AMIGA"
1639 >6.3.11. Amiga OS</A
1646 >make sure that you have freshly exported the right
1647 version into an empty directory</I
1649 >. (See "Building and releasing
1650 packages" above). Then run:
1660 CLASS="PROGRAMLISTING"
1662 autoheader && autoconf && ./configure</PRE
1677 NAME="NEWRELEASE-AIX"
1681 > Login to Sourceforge's compilefarm via ssh:
1691 CLASS="PROGRAMLISTING"
1692 > ssh cf.sourceforge.net</PRE
1699 > Choose the right operating system.
1700 When logged in, <SPAN
1704 >make sure that you have freshly exported the right
1705 version into an empty directory</I
1707 >. (See "Building and releasing
1708 packages" above). Then run:
1718 CLASS="PROGRAMLISTING"
1720 autoheader && autoconf && ./configure</PRE
1737 CLASS="PROGRAMLISTING"
1738 > make aix-dist</PRE
1745 > which creates a gzip'ed tar archive. Sadly, you cannot use <B
1749 > on the Sourceforge machine (no ncftpput). You now have
1750 to manually upload the archive to Sourceforge's ftp server and release
1751 the file publicly. Use the release notes and Change Log from the
1752 source tarball package.
1762 >6.4. Uploading and Releasing Your Package</A
1765 > After the package is ready, it is time to upload it
1766 to SourceForge, and go through the release steps. The upload
1776 HREF="ftp://upload.sourceforge.net/incoming"
1778 >ftp://upload.sourceforge.net/incoming</A
1794 >ijbswa-developers@lists.sourceforge.net</TT
1805 > targets as described above.
1808 > Once this done go to <A
1809 HREF="https://sourceforge.net/project/admin/editpackages.php?group_id=11118"
1811 >https://sourceforge.net/project/admin/editpackages.php?group_id=11118</A
1813 making sure you are logged in. Find your target platform in the
1814 second column, and click <TT
1818 then need to create a new release for your package, using the format
1821 >$VERSION ($CODE_STATUS)</TT
1832 > Now just follow the prompts. Be sure to add any appropriate Release
1833 notes. You should see your freshly uploaded packages in
1836 >"Step 2. Add Files To This Release"</SPAN
1838 appropriate box(es). Remember at each step to hit the
1841 >"Refresh/Submit"</SPAN
1842 > buttons! You should now see your
1843 file(s) listed in Step 3. Fill out the forms with the appropriate
1844 information for your platform, being sure to hit <SPAN
1848 for each file. If anyone is monitoring your platform, check the
1852 > box at the very bottom to notify them of
1853 the new package. This should do it!
1856 > If you have made errors, or need to make changes, you can go through
1857 essentially the same steps, but select <TT
1873 >6.5. After the Release</A
1876 > When all (or: most of the) packages have been uploaded and made available,
1877 send an email to the <A
1878 HREF="mailto:ijbswa-announce@lists.sourceforge.net"
1882 >, Subject: "Version X.Y.Z available for download". Be sure to
1885 HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
1889 >, the release notes and the Changelog. Also, post an
1890 updated News item on the project page Sourceforge, and update the Home
1891 page and docs linked from the Home page (see below). Other news sites
1892 and release oriented sites, such as Freshmeat, should also be notified.
1901 SUMMARY="Footer navigation table"
1930 HREF="webserver-update.html"
1940 >Testing Guidelines</TD
1950 >Update the Webserver</TD