================================================================================
  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 Apache Commons Daemon release
=========================================

Review open issues in Jira.
Review open PRs on GitHub.
Update to latest commons-parent and fix any issues.

Use Java 7.

If you haven't already, add your public PGP key to 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 include:
Before tagging:
 - /RELEASE-NOTES.txt                           (version)
 - /pom.xml                                     (version & commons.release.version)
 - /src/changes/changes.xml                     (Set date)
 - /src/native/unix/man/jsvc1.xml               (Set date & version)
 - /src/native/unix/native/version.h            (version)
 - /src/native/windows/apps/prunmgr/prunmgr.h   (version)
 - /src/native/windows/apps/prunmgr/prunmgr.rc  (version x3)
 - /src/native/windows/apps/prunsrv/prunsrv.h   (version)
 - /src/native/windows/apps/prunsrv/prunsrv.rc  (version x2)
 - /src/samples/SimpleApplication.sh            (version)
 - /src/site/xdoc/binaries.xml                  (version)
Only in tag:
 - /pom.xml                                     (remove -SNAPSHOT)
 - /src/native/unix/native/version.h            (JSVC_IS_DEV_VERION 0)

Search for the text "THIS FILE IS GENERATED BY" and regenerate the generated
files.


Checkout
--------

Check out a clean copy of commons daemon from git 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 checked out
https://gitbox.apache.org/repos/asf/commons-daemon.git
to a directory named daemon. All further path names will be relative to this
directory.

If building from an existing checkout, clean the build directories:
mvn clean


Create native build scripts
---------------------------

cd /src/native/unix
sh support/buildconf.sh


Native build
------------

Build and sign the Windows binaries.
Place the signed Windows binaries in:
target/prunsrv.exe
target/prunmgr.exe
target/amd64/prunsrv.exe

Note: `nmake -f Makefile install` will place these files in the correct
      locations but they will be unsigned


Maven tasks
-----------

To deploy the Java jars to the Nexus staging repo:

mvn deploy -Prelease [-Ptest-deploy]

The test-deploy profile will deploy to target/deploy; omit for the live deploy

Note: do not use clean in the same invocation.
Remove the following artifacts and associated hashes/sigs before closing the
repo:
- tests.jar         (there are no tests, just a simple sample)
- test-sources.jar  (there are no tests, just a simple sample)
Do not remove the binary distributions since some users depend on Maven Central
to obtain these.


Updating the site
-----------------

See https://commons.apache.org/site-publish.html
