		How to do a mod_jk 1.2 release

Check out a clean copy of tomcat/connectors from subversion to
make sure you don't have any lingering configure or build files.
This will make sure that the source distribution created is clean.

We assume, that you check out to a directory tomcat-connectors.

If you haven't already, add your public PGP key to
tomcat-connectors/KEYS.

Update version numbers as needed
--------------------------------

Do a find for all the docs which include the previous version string
and replace it with the new version.  These are the docs I found which
had to be updated:

xdocs/index.xml
xdocs/news/<THISYEAR0101>.xml
native/STATUS.txt

Update the JK_VERISRELEASE define in jk/native/common/jk_version.h, here is
a svn diff that shows what I changed:

Index: native/common/jk_version.h
===================================================================
--- native/common/jk_version.h  (revision 417260)
+++ native/common/jk_version.h  (working copy)
@@ -32,7 +32,7 @@
 #define JK_VERBETA      0
 #define JK_BETASTRING   "0"
 /* set JK_VERISRELEASE to 1 when release (do not forget to commit!) */
-#define JK_VERISRELEASE 0
+#define JK_VERISRELEASE 1
 #define JK_VERRC        0
 #define JK_RCSTRING     "0"

After updating revision numbers, commit your changes to subversion.

Tag and branch tomcat-connectors in subversion
----------------------------------------------

Use the pattern below for branching and tagging the tomcat-connectors directory.

TAG=JK_{MAJOR_REVISION}_{MINOR_REVISION}_{RELEASE}

svn copy \
   https://svn.apache.org/repos/asf/tomcat/connectors/trunk/ \
   https://svn.apache.org/repos/asf/tomcat/connectors/tags/jk1.2.x/TAG/

Here is an example for mod_jk 1.2.16

svn copy \
   https://svn.apache.org/repos/asf/tomcat/connectors/trunk/ \
   https://svn.apache.org/repos/asf/tomcat/connectors/tags/jk1.2.x/JK_1_2_16/

Build the mod_jk 1.2 documentation
----------------------------------

cd tomcat-connectors/jk/xdocs
ant


Check the documentation carefully (produced in tomcat-connectors/jk/build/docs)
and copy it to people.apache.org:/x1/www/tomcat.apache.org/connectors-doc

Create the new source distribution
----------------------------------

A tool named jkrelease.sh in tomcat-connectors/jk/tools creates
a release tarball and a zip including signature files.

Upload source distribution and documentation to www.apache.org
-------------------------------------------------------------------
First update the KEYS on the server if you have added a new pgp key.

scp tomcat-connectors/KEYS to the
/www/www.apache.org/dist/tomcat/tomcat-connectors
directory on the www.apache.org server.

scp tomcat-connectors-jk-1.2.16-src.tar.gz* to 
/www/www.apache.org/dist/tomcat/tomcat-connectors/jk/source
scp tomcat-connectors-jk-1.2.16-src.zip* to   
/www/www.apache.org/dist/tomcat/tomcat-connectors/jk/source

ssh to www.apache.org and cd to the
/www/www.apache.org/dist/tomcat/tomcat-connectors/jk directory.

Remove the symlinks for current and replace them with a soft link
to the new source distribution files.

ln -s source/tomcat-connectors-jk-1.2.16-src.tar.gz tomcat-connectors-jk-src-current.tar.gz
ln -s source/tomcat-connectors-jk-1.2.16-src.tar.gz.asc tomcat-connectors-jk-src-current.tar.gz.asc
ln -s source/tomcat-connectors-jk-1.2.16-src.tar.zip tomcat-connectors-jk-src-current.zip
ln -s source/tomcat-connectors-jk-1.2.16-src.zip.asc tomcat-connectors-jk-src-current.zip.asc

Make sure the group write bit is set on all files and directories
in the jk directory.

chmod -R g+w /www/www.apache.org/dist/tomcat/tomcat-connectors/jk/

Build binaries and upload distributions to www.apache.org
--------------------------------------------------------------

Build mod_jk for a specific web server and OS.  Package it as appropriate for
the OS and sign the archive using PGP. Please include the ASF License, the
generated docs, and the tools.  Please name the distribuiton as follows:

tomcat-connectors-jk-{version}-{os-version-cpu}-{web server-version}.(tar.gz|zip)

scp the binary distribution and pgp signature file to the appropriate binaries/{os} directory.

Make sure the group write bit is on for all files you upload.

Update source for next version
------------------------------

native/STATUS.txt: Add status "in development" for new version.
native/configure.in: Update variable VERSION.
native/common/jk_version.h: Update variables JK_VERMAJOR, JK_VERMINOR, JK_VERFIX,
                            JK_VERSTRING, and JK_VERISRELEASE.
native/common/portable.h.sample: Update VERSION define.
native/iis/isapi_redirect.rc: Update JK_VERSION_STR, FILEVERSION, and PRODUCTVERSION
native/iis/installer/isapi-redirector-win32-msi.ism: Update ProductVersion.
xdocs/miscellaneous/changelog.xml: Start a new section for the new version.

Remove old release distributions from www.apache.org
----------------------------------------------------

Verify that the old versions of the source and binary distributions are
available at /www/archive.apache.org/dist/tomcat/tomcat-connector/jk .
Copy old source distributions and binaries as needed, then remove the
old source and binary distributions.

Arrange the downloads_tomcat-connectors.cgi
-------------------------------------------

Check tomcat-site out:
svn co https://svn.apache.org/repos/asf/tomcat/site site-tomcat


Arrange the file: xdocs/downloads/downloads.xml

Use ant to regenerate the corresponding html file:
docs/site/downloads/downloads_tomcat-connectors.html

Commit it after checking carefully the changes.

Connect to people.apache.org and update the tomcat.apache.org site image,
the site tomcat.apache.org should reflect the change after a while.
cd /x2/www/tomcat.apache.org/site/downloads
svn update downloads_tomcat-connectors.html

Announcements
-------------

The release distribution directories are mirrored so that the
releases can be downloaded from multiple sites.  Please wait
24 hours before sending out the announcement so that the mirrors
get a chance to get the new release distributions.

Send an email announcement to users@tomcat.apache.org,
dev@tomcat.apache.org, and announce@apache.org.

