+
+ <warning>
+ <para>
+ Every significant release of Privoxy has included at least one
+ package that either had incorrect versions of files, missing files,
+ or incidental leftovers from a previous build process that gave
+ unknown numbers of users headaches to try to figure out what was
+ wrong. PLEASE, make sure you are using pristene sources, and are
+ following the prescribed process!
+ </para>
+ </warning>
+
+ <para>
+ Please find additional instructions for the source tarball and the
+ individual platform dependent binary packages below. And details
+ on the Sourceforge release process below that.
+ </para>
+
+ <sect3 id="pack-guidelines">
+ <title>Note on Privoxy Packaging</title>
+ <para>
+ Please keep these general guidelines in mind when putting together
+ your package. These apply to <emphasis>all</emphasis> platforms!
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <application>Privoxy</application> <emphasis>requires</emphasis>
+ write access to: all <filename>*.action</filename> files, all
+ logfiles, and the <filename>trust</filename> file. You will
+ need to determine the best way to do this for your platform.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Please include up to date documentation. At a bare minimum:
+ </para>
+ <simplelist>
+ <member>
+ <filename>LICENSE</filename> (top-level directory)
+ </member>
+ </simplelist>
+ <simplelist>
+ <member>
+ <filename>README</filename> (top-level directory)
+ </member>
+ </simplelist>
+ <simplelist>
+ <member>
+ <filename>AUTHORS</filename> (top-level directory)
+ </member>
+ </simplelist>
+ <simplelist>
+ <member>
+ <filename>man page</filename> (top-level directory, Unix-like
+ platforms only)
+ </member>
+ </simplelist>
+ <simplelist>
+ <member>
+ <filename>The User Manual</filename> (doc/webserver/user-manual/)
+ </member>
+ </simplelist>
+ <simplelist>
+ <member>
+ <filename>FAQ</filename> (doc/webserver/faq/)
+ </member>
+ </simplelist>
+ <para>
+ Also suggested: <filename>Developer Manual</filename>
+ (doc/webserver/developer-manual) and <filename>ChangeLog</filename>
+ (top-level directory). <filename>FAQ</filename> and the manuals are
+ HTML docs. There are also text versions in
+ <filename>doc/text/</filename> which could conceivably also be
+ included.
+ </para>
+ <para>
+ The documentation has been designed such that the manuals are linked
+ to each other from parallel directories, and should be packaged
+ that way. <filename>privoxy-index.html</filename> can also be
+ included and can serve as a focal point for docs and other links of
+ interest (and possibly renamed to <filename>index.html</filename>).
+ This should be one level up from the manuals. There is a link also
+ on this page to an HTMLized version of the man page. To avoid 404 for
+ this, it is in Git as
+ <filename>doc/webserver/man-page/privoxy-man-page.html</filename>,
+ and should be included along with the manuals. There is also a
+ css stylesheets that can be included for better presentation:
+ <filename>p_doc.css</filename>. This should be in the same directory
+ with <filename>privoxy-index.html</filename>, (i.e. one level up from
+ the manual directories).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>user.action</filename> and <filename>user.filter</filename>
+ are designed for local preferences. Make sure these do not get overwritten!
+ <filename>config</filename> should not be overwritten either. This
+ has especially important configuration data in it.
+ <filename>trust</filename> should be left in tact as well.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Other configuration files (<filename>default.action</filename> and
+ <filename>default.filter</filename>) should be installed as the new
+ defaults, but all previously installed configuration files should be
+ preserved as backups. This is just good manners :-) These files are
+ likely to change between releases and contain important new features
+ and bug fixes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Please check platform specific notes in this doc, if you haven't
+ done <quote>Privoxy</quote> packaging before for other platform
+ specific issues. Conversely, please add any notes that you know
+ are important for your platform (or contact one of the doc
+ maintainers to do this if you can't).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Packagers should do a <quote>clean</quote> install of their
+ package after building it. So any previous installs should be
+ removed first to ensure the integrity of the newly built package.
+ Then run the package for a while to make sure there are no
+ obvious problems, before uploading.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3 id="newrelease-tarball"><title>Source Tarball</title>
+ <para>
+ First, <emphasis>make sure that you have freshly exported the right
+ version into an empty directory</emphasis>. (See "Building and releasing
+ packages" above). Then run:
+ </para>
+ <programlisting>
+ cd current
+ autoheader && autoconf && ./configure
+</programlisting>
+ <para>
+ Then do:
+ </para>
+ <programlisting>
+ make tarball-dist
+</programlisting>
+ <para>
+ To upload the package to Sourceforge, simply issue
+ </para>
+ <programlisting>
+ make tarball-upload
+</programlisting>
+ <para>
+ Go to the displayed URL and release the file publicly on Sourceforge.
+ For the change log field, use the relevant section of the
+ <filename>ChangeLog</filename> file.
+ </para>
+ </sect3>
+
+ <sect3 id="newrelease-rpm"><title>SuSE, Conectiva or Red Hat RPM</title>
+ <para>
+ In following text, replace <replaceable class="parameter">dist</replaceable>
+ with either <quote>rh</quote> for Red Hat or <quote>suse</quote> for SuSE.
+ </para>
+ <para>
+ First, <emphasis>make sure that you have freshly exported the right
+ version into an empty directory</emphasis>. (See "Building and releasing
+ packages" above).
+ </para>
+ <para>
+ As the only exception to not changing anything after export from Git,
+ now examine the file <filename>privoxy-</filename><replaceable class="parameter">dist</replaceable><filename>.spec</filename>
+ and make sure that the version information and the RPM release number are
+ correct. The RPM release numbers for each version start at one. Hence it must
+ be reset to one if this is the first RPM for
+ <replaceable class="parameter">dist</replaceable> which is built from version
+ X.Y.Z. Check the
+ <ulink url="https://sourceforge.net/projects/ijbswa/files/">file
+ list</ulink> if unsure. Else, it must be set to the highest already available RPM
+ release number for that version plus one.
+ </para>
+ <para>
+ Then run:
+ </para>
+ <programlisting>
+ cd current
+ autoheader && autoconf && ./configure
+</programlisting>
+ <para>
+ Then do
+ </para>
+ <programlisting>
+ make <replaceable class="parameter">dist</replaceable>-dist
+</programlisting>
+ <para>
+ To upload the package to Sourceforge, simply issue
+ </para>
+ <programlisting>
+ make <replaceable class="parameter">dist</replaceable>-upload <replaceable class="parameter">rpm_packagerev</replaceable>
+</programlisting>
+ <para>
+ where <replaceable class="parameter">rpm_packagerev</replaceable> is the
+ RPM release number as determined above.
+ Go to the displayed URL and release the file publicly on Sourceforge.
+ Use the release notes and change log from the source tarball package.
+ </para>
+ </sect3>
+
+ <sect3 id="newrelease-solaris"><title>Solaris</title>
+ <para>
+ Login to Sourceforge's compilefarm via ssh:
+ </para>
+ <programlisting>
+ ssh cf.sourceforge.net
+</programlisting>
+ <para>
+ Choose the right operating system (not the Debian one).
+ When logged in, <emphasis>make sure that you have freshly exported the right
+ version into an empty directory</emphasis>. (See "Building and releasing
+ packages" above). Then run:
+ </para>
+ <programlisting>
+ cd current
+ autoheader && autoconf && ./configure
+</programlisting>
+ <para>
+ Then run
+ </para>
+ <programlisting>
+ gmake solaris-dist
+</programlisting>
+ <para>
+ which creates a gzip'ed tar archive. Sadly, you cannot use <command>make
+ solaris-upload</command> on the Sourceforge machine (no ncftpput). You now have
+ to manually upload the archive to Sourceforge's ftp server and release
+ the file publicly. Use the release notes and Change Log from the
+ source tarball package.
+ </para>
+ </sect3>
+
+ <sect3 id="NEWRELEASE-WINDOWS"><title>Windows</title>
+ <!-- so annoying: docbook generated ids are UPPERCASE so
+ links to "whatever.html#idtag" DO NOT WORK!!
+ They have to be "whatever.html#IDTAG".
+ So be consistent and use uppercase on the definition.
+ -->
+ <para>
+ Note that the docbook generated files might need some hand editing,
+ so the Windows build makefile does not rebuild the docs.
+ </para>
+
+ <para>
+ First, <emphasis>make sure that you have freshly exported the right
+ version into an empty directory</emphasis>. (See "Building and releasing
+ packages" above).
+ <!-- XXX ??? are we still basing releases off a tarball???
+ -->
+ </para>
+ <para>
+ Then you can build the package. This is fully automated, and is
+ controlled by <filename>windows/GNUmakefile</filename>.
+ All you need to do is:
+ </para>
+ <programlisting>
+ cd windows
+ make
+</programlisting>
+ <para>
+ Now you can manually rename <filename>privoxy_setup.exe</filename> to
+ <filename>privoxy_setup_X.Y.Z.exe</filename>, and the <filename>build</filename>
+ directory to <filename>privoxy_X.Y.Z</filename>.
+ Create a .zip file of the newly renamed <filename>privoxy_X.Y.Z</filename> directory,
+ GPG sign the installer and zip file,
+ </para>
+ <programlisting>
+ $ gpg --armor --detach --sign <filename>privoxy_setup_X.Y.Z.exe</filename>
+ $ gpg --armor --detach --sign <filename>privoxy_X.Y.Z.zip</filename>
+</programlisting>
+ <para>
+ and upload the files to SourceForge.
+ </para>
+
+ <para>
+ When releasing the package on SourceForge, use the release notes
+ and Change Log from the source tarball package.
+ </para>
+ </sect3>
+
+ <sect3 id="newrelease-debian"><title>Debian</title>
+ <para>
+ First, <emphasis>make sure that you have freshly exported the
+ right version into an empty directory</emphasis>. (See
+ "Building and releasing packages" above). Then add a log
+ entry to <filename>debian/changelog</filename>, if it is not
+ already there, for example by running:
+ </para>
+ <programlisting>
+ debchange -v &p-version;-&p-status;-1 "New upstream version"
+</programlisting>
+ <para>
+ Then, run:
+ </para>
+ <programlisting>
+ dpkg-buildpackage -rfakeroot -us -uc -b
+</programlisting>
+ <para>
+ This will create
+ <filename>../privoxy_&p-version;-&p-status;-1_i386.deb</filename>
+ which can be uploaded. To upload the package to Sourceforge, simply
+ issue
+ </para>
+ <programlisting>
+ make debian-upload
+</programlisting>
+ </sect3>
+
+ <sect3 id="newrelease-macosx"><title>Mac OS X</title>
+ <para>
+ First, <emphasis>make sure that you have freshly exported the right
+ version into an empty directory</emphasis>. (See "Building and releasing
+ packages" above).
+ </para>
+ <para>
+ There are three modules available in the Git repository for use on Mac
+ OS X, though technically only two of them generate a release (the other
+ can be used to install from source).
+ </para>
+ <sect4 id="OS-X-OSXPackageBuilder-module">
+ <title>OSXPackageBuilder module</title>
+ <para>
+ The OSXPackageBuilder module generates OS X installer packages
+ supporting all Macs running OS X 10.4 and above. Obtain it from Git as
+ follows into a folder parallel to the exported privoxy source:
+ </para>
+ <programlisting>
+ cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co OSXPackageBuilder
+</programlisting>
+ <para>
+ The module contains complete instructions on its usage in the file
+ <filename>OS X Package Builder HOWTO.txt</filename>.
+ </para>
+ <para>
+ Once the package(s) have been generated, you can then upload them
+ directly to the Files section of the Sourceforge project in the
+ Macintosh (OS X) folder. Each new version release of Privoxy should
+ have a new subfolder created in which to store its files. Please
+ ensure that the folder contains a readme file that makes it clear
+ which package is for whichversion of OS X.
+ </para>
+ </sect4>
+ <sect4 id="OS-X-osxsetup-module">
+ <title>osxsetup module (DEPRECATED)</title>
+ <para>
+ <emphasis>This module is deprecated since the installer it generates
+ places all Privoxy files in one folder in a non-standard location, and
+ supports only Intel Macs running OS X 10.6 or higher.</emphasis>
+ </para>
+ <para>
+ Check out the module from Git as follows into a folder parallel to the
+ exported privoxy source:
+ </para>
+ <programlisting>
+ cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co osxsetup
+</programlisting>
+ <para>
+ Then run:
+ </para>
+ <programlisting>
+ cd osxsetup
+ build
+</programlisting>
+ <para>
+ This will run <filename>autoheader</filename>, <filename>autoconf</filename>
+ and <filename>configure</filename> as well as <filename>make</filename>.
+ Finally, it will copy over the necessary files to the ./osxsetup/files
+ directory for further processing by <filename>PackageMaker</filename>.
+ </para>
+ <para>
+ Bring up PackageMaker with the PrivoxyPackage.pmsp definition file,
+ modify the package name to match the release, and hit the "Create
+ package" button. If you specify ./Privoxy.pkg as the output package
+ name, you can then create the distributable zip file with the command:
+ </para>
+ <programlisting>
+ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg
+</programlisting>
+ <para>
+ You can then upload this file directly to the Files section of the
+ Sourceforge project in the Macintosh (OS X) folder. Each new version
+ release of Privoxy should have a new subfolder created in which to
+ store its files.
+ Please ensure that the folder contains a readme file that makes it
+ clear which version(s) of OS X the package supports.
+ </para>
+ </sect4>
+ <sect4 id="OS-X-macsetup-module">
+ <title>macsetup module</title>
+ <para>
+ The macsetup module is ideal if you wish to build and install Privoxy
+ from source on a single machine.
+ </para>
+ <para>
+ Check out the module from Git as follows into a folder parallel to the
+ exported privoxy source:
+ </para>
+ <programlisting>
+ cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co macsetup
+</programlisting>
+ <para>
+ The module contains complete instructions on its usage in its
+ <filename>README</filename> file. The end result will be the
+ exported version of Privoxy installed on the build machine.
+ </para>
+ </sect4>
+ </sect3>
+
+ <sect3 id="newrelease-freebsd"><title>FreeBSD</title>
+ <para>
+ Update the www/privoxy port and submit a diff upstream.
+ For details see the <ulink url="https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/">FreeBSD Porter's Handbook</ulink>.
+ </para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="releasing">
+ <title>Uploading and Releasing Your Package</title>
+ <para>
+ After the package is ready, it is time to upload it
+ to SourceForge, and go through the release steps. The upload
+ is done via FTP: