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
762 >) should be installed as the new
763 defaults, but all previously installed configuration files should be
764 preserved as backups. This is just good manners :-) These files are
765 likely to change between releases and contain important new features
771 > Please check platform specific notes in this doc, if you haven't
775 > packaging before for other platform
776 specific issues. Conversely, please add any notes that you know
777 are important for your platform (or contact one of the doc
778 maintainers to do this if you can't).
783 > Packagers should do a <SPAN
787 package after building it. So any previous installs should be
788 removed first to ensure the integrity of the newly built package.
789 Then run the package for a while to make sure there are no
790 obvious problems, before uploading.
802 NAME="NEWRELEASE-TARBALL"
803 >6.3.2. Source Tarball</A
810 >make sure that you have freshly exported the right
811 version into an empty directory</I
813 >. (See "Building and releasing
814 packages" above). Then run:
824 CLASS="PROGRAMLISTING"
826 autoheader && autoconf && ./configure</PRE
843 CLASS="PROGRAMLISTING"
844 > make tarball-dist</PRE
851 > To upload the package to Sourceforge, simply issue
861 CLASS="PROGRAMLISTING"
862 > make tarball-upload</PRE
869 > Go to the displayed URL and release the file publicly on Sourceforge.
870 For the change log field, use the relevant section of the
882 NAME="NEWRELEASE-RPM"
883 >6.3.3. SuSE, Conectiva or Red Hat RPM</A
886 > In following text, replace <TT
895 > for Red Hat or <SPAN
905 >make sure that you have freshly exported the right
906 version into an empty directory</I
908 >. (See "Building and releasing
912 > As the only exception to not changing anything after export from CVS,
913 now examine the file <TT
925 and make sure that the version information and the RPM release number are
926 correct. The RPM release numbers for each version start at one. Hence it must
927 be reset to one if this is the first RPM for
933 > which is built from version
936 HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
940 > if unsure. Else, it must be set to the highest already available RPM
941 release number for that version plus one.
954 CLASS="PROGRAMLISTING"
956 autoheader && autoconf && ./configure</PRE
973 CLASS="PROGRAMLISTING"
986 > To upload the package to Sourceforge, simply issue
996 CLASS="PROGRAMLISTING"
1020 RPM release number as determined above.
1021 Go to the displayed URL and release the file publicly on Sourceforge.
1022 Use the release notes and change log from the source tarball package.
1030 NAME="NEWRELEASE-OS2"
1038 >make sure that you have freshly exported the right
1039 version into an empty directory</I
1041 >. (See "Building and releasing
1042 packages" above). Then get the OS/2 Setup module:
1052 CLASS="PROGRAMLISTING"
1053 > cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co os2setup</PRE
1060 > You will need a mix of development tools.
1061 The main compilation takes place with IBM Visual Age C++.
1062 Some ancillary work takes place with GNU tools, available from
1063 various sources like hobbes.nmsu.edu.
1064 Specificially, you will need <TT
1075 The packaging takes place with WarpIN, available from various sources, including
1077 HREF="http://www.xworkplace.org/"
1083 > Change directory to the <TT
1087 Edit the os2build.cmd file to set the final executable filename.
1098 CLASS="PROGRAMLISTING"
1099 > installExeName='privoxyos2_setup_X.Y.Z.exe'</PRE
1106 > Next, edit the <TT
1109 > file so the release number matches
1123 CLASS="PROGRAMLISTING"
1124 > PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z"</PRE
1131 > You're now ready to build. Run:
1141 CLASS="PROGRAMLISTING"
1149 > You will find the WarpIN-installable executable in the
1153 > directory. Upload this anonymously to
1156 >uploads.sourceforge.net/incoming</TT
1158 for it, and you're done. Use the release notes and Change Log from the
1159 source tarball package.
1167 NAME="NEWRELEASE-SOLARIS"
1171 > Login to Sourceforge's compilefarm via ssh:
1181 CLASS="PROGRAMLISTING"
1182 > ssh cf.sourceforge.net</PRE
1189 > Choose the right operating system (not the Debian one).
1190 When logged in, <SPAN
1194 >make sure that you have freshly exported the right
1195 version into an empty directory</I
1197 >. (See "Building and releasing
1198 packages" above). Then run:
1208 CLASS="PROGRAMLISTING"
1210 autoheader && autoconf && ./configure</PRE
1227 CLASS="PROGRAMLISTING"
1228 > gmake solaris-dist</PRE
1235 > which creates a gzip'ed tar archive. Sadly, you cannot use <B
1239 > on the Sourceforge machine (no ncftpput). You now have
1240 to manually upload the archive to Sourceforge's ftp server and release
1241 the file publicly. Use the release notes and Change Log from the
1242 source tarball package.
1250 NAME="NEWRELEASE-WINDOWS"
1254 > You should ensure you have the latest version of Cygwin (from
1256 HREF="http://www.cygwin.com/"
1258 >http://www.cygwin.com/</A
1260 Run the following commands from within a Cygwin bash shell.
1267 >make sure that you have freshly exported the right
1268 version into an empty directory</I
1270 >. (See "Building and releasing
1271 packages" above). Then get the Windows setup module:
1281 CLASS="PROGRAMLISTING"
1282 > cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co winsetup</PRE
1289 > Then you can build the package. This is fully automated, and is
1292 >winsetup/GNUmakefile</TT
1294 All you need to do is:
1304 CLASS="PROGRAMLISTING"
1313 > Now you can manually rename <TT
1315 >privoxy_setup.exe</TT
1319 >privoxy_setup_X_Y_Z.exe</TT
1321 SourceForge. When releasing the package on SourceForge, use the release notes
1322 and Change Log from the source tarball package.
1330 NAME="NEWRELEASE-DEBIAN"
1338 >make sure that you have freshly exported the
1339 right version into an empty directory</I
1342 "Building and releasing packages" above). Then add a log
1345 >debian/changelog</TT
1347 already there, for example by running:
1357 CLASS="PROGRAMLISTING"
1358 > debchange -v 3.0.11-UNRELEASED-1 "New upstream version"</PRE
1375 CLASS="PROGRAMLISTING"
1376 > dpkg-buildpackage -rfakeroot -us -uc -b</PRE
1386 >../privoxy_3.0.11-UNRELEASED-1_i386.deb</TT
1388 which can be uploaded. To upload the package to Sourceforge, simply
1399 CLASS="PROGRAMLISTING"
1400 > make debian-upload</PRE
1412 NAME="NEWRELEASE-MACOSX"
1420 >make sure that you have freshly exported the right
1421 version into an empty directory</I
1423 >. (See "Building and releasing
1424 packages" above). Then get the Mac OS X setup module:
1434 CLASS="PROGRAMLISTING"
1435 > cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co osxsetup</PRE
1452 CLASS="PROGRAMLISTING"
1475 Finally, it will copy over the necessary files to the ./osxsetup/files directory
1476 for further processing by <TT
1482 > Bring up PackageMaker with the PrivoxyPackage.pmsp definition file, modify the package
1483 name to match the release, and hit the "Create package" button.
1484 If you specify ./Privoxy.pkg as the output package name, you can then create
1485 the distributable zip file with the command:
1495 CLASS="PROGRAMLISTING"
1496 > zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg</PRE
1503 > You can then upload <TT
1505 >privoxyosx_setup_x.y.z.zip</TT
1509 >uploads.sourceforge.net/incoming</TT
1511 create a release for it, and you're done. Use the release notes
1512 and Change Log from the source tarball package.
1520 NAME="NEWRELEASE-FREEBSD"
1524 > Login to Sourceforge's compile-farm via ssh:
1534 CLASS="PROGRAMLISTING"
1535 > ssh cf.sourceforge.net</PRE
1542 > Choose the right operating system.
1543 When logged in, <SPAN
1547 >make sure that you have freshly exported the right
1548 version into an empty directory</I
1550 >. (See "Building and releasing
1551 packages" above). Then run:
1561 CLASS="PROGRAMLISTING"
1563 autoheader && autoconf && ./configure</PRE
1580 CLASS="PROGRAMLISTING"
1581 > gmake freebsd-dist</PRE
1588 > which creates a gzip'ed tar archive. Sadly, you cannot use <B
1592 > on the Sourceforge machine (no ncftpput). You now have
1593 to manually upload the archive to Sourceforge's ftp server and release
1594 the file publicly. Use the release notes and Change Log from the
1595 source tarball package.
1603 NAME="NEWRELEASE-HPUX"
1604 >6.3.10. HP-UX 11</A
1611 >make sure that you have freshly exported the right
1612 version into an empty directory</I
1614 >. (See "Building and releasing
1615 packages" above). Then run:
1625 CLASS="PROGRAMLISTING"
1627 autoheader && autoconf && ./configure</PRE
1642 NAME="NEWRELEASE-AMIGA"
1643 >6.3.11. Amiga OS</A
1650 >make sure that you have freshly exported the right
1651 version into an empty directory</I
1653 >. (See "Building and releasing
1654 packages" above). Then run:
1664 CLASS="PROGRAMLISTING"
1666 autoheader && autoconf && ./configure</PRE
1681 NAME="NEWRELEASE-AIX"
1685 > Login to Sourceforge's compilefarm via ssh:
1695 CLASS="PROGRAMLISTING"
1696 > ssh cf.sourceforge.net</PRE
1703 > Choose the right operating system.
1704 When logged in, <SPAN
1708 >make sure that you have freshly exported the right
1709 version into an empty directory</I
1711 >. (See "Building and releasing
1712 packages" above). Then run:
1722 CLASS="PROGRAMLISTING"
1724 autoheader && autoconf && ./configure</PRE
1741 CLASS="PROGRAMLISTING"
1742 > make aix-dist</PRE
1749 > which creates a gzip'ed tar archive. Sadly, you cannot use <B
1753 > on the Sourceforge machine (no ncftpput). You now have
1754 to manually upload the archive to Sourceforge's ftp server and release
1755 the file publicly. Use the release notes and Change Log from the
1756 source tarball package.
1766 >6.4. Uploading and Releasing Your Package</A
1769 > After the package is ready, it is time to upload it
1770 to SourceForge, and go through the release steps. The upload
1780 HREF="ftp://upload.sourceforge.net/incoming"
1782 >ftp://upload.sourceforge.net/incoming</A
1798 >ijbswa-developers@lists.sourceforge.net</TT
1809 > targets as described above.
1812 > Once this done go to <A
1813 HREF="https://sourceforge.net/project/admin/editpackages.php?group_id=11118"
1815 >https://sourceforge.net/project/admin/editpackages.php?group_id=11118</A
1817 making sure you are logged in. Find your target platform in the
1818 second column, and click <TT
1822 then need to create a new release for your package, using the format
1825 >$VERSION ($CODE_STATUS)</TT
1836 > Now just follow the prompts. Be sure to add any appropriate Release
1837 notes. You should see your freshly uploaded packages in
1840 >"Step 2. Add Files To This Release"</SPAN
1842 appropriate box(es). Remember at each step to hit the
1845 >"Refresh/Submit"</SPAN
1846 > buttons! You should now see your
1847 file(s) listed in Step 3. Fill out the forms with the appropriate
1848 information for your platform, being sure to hit <SPAN
1852 for each file. If anyone is monitoring your platform, check the
1856 > box at the very bottom to notify them of
1857 the new package. This should do it!
1860 > If you have made errors, or need to make changes, you can go through
1861 essentially the same steps, but select <TT
1877 >6.5. After the Release</A
1880 > When all (or: most of the) packages have been uploaded and made available,
1881 send an email to the <A
1882 HREF="mailto:ijbswa-announce@lists.sourceforge.net"
1886 >, Subject: "Version X.Y.Z available for download". Be sure to
1889 HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
1893 >, the release notes and the Changelog. Also, post an
1894 updated News item on the project page Sourceforge, and update the Home
1895 page and docs linked from the Home page (see below). Other news sites
1896 and release oriented sites, such as Freshmeat, should also be notified.
1905 SUMMARY="Footer navigation table"
1934 HREF="webserver-update.html"
1944 >Testing Guidelines</TD
1954 >Update the Webserver</TD