================================================================================
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
================================================================================

How to do a Tomcat Native release
=================================

Requirements
------------

Java 8
Apache Ant 1.9 or later
Apache APR 1.4.3 or later source (1.7.4 or later recommended)


Preparation
-----------

Review the open issues in Bugzilla.
Review open PRs in GitHub.

If you haven't already, add your public PGP key to KEYS.

Ensure dates and/or version numbers are up to date:
- build.properties.default
- native/build/rpm/tcnative.spec.in
- native/include/tcn_version.h
- native/os/win32/libtcnative.rc  x3
- xdocs/miscellaneous/changelog.xml

Run the release script to check the Java code is aligned with the current 9.0.x
source.
./jnirelease.sh --ver=1.2.x --with-apr=/path/to/apr/source

Switch back to the 1.2.x branch
git checkout 1.2.x

Tagging
-------

# Check clone is up to date and clean
git pull
git status

# Edit files to remove / disable dev build flags
# - build.properties.default
# - tcn_version.h

# Confirm the previous edits
git diff

# Tag (modify version as appropriate)
git commit -a -m "Tag 1.2.35"
git tag 1.2.35
git push origin 1.2.35

# Reset 1.2.x
git reset --hard HEAD~1


Create the source release
-------------------------

# Modify version as appropriate
./jnirelease.sh --ver=1.2.35 --with-apr=/path/to/apr/source

# Switch back to the 1.2.x branch
git checkout 1.2.x


Create the binary release for Windows
-------------------------------------

See native/building
