##### About log4j 1.2

- What is log4j?
- Download
- FAQ
- Roadmap

##### Community

- Mailing Lists
- Issue Tracking
- Blog

##### Documentation

- Introduction
- JavaDoc
- Publications
- Building
- Wiki

##### Project Documentation

- Project Information
- Project Reports

##### Apache

- Home
- License
- Sponsorship
- Thanks
- Security
- Conferences

## Building Apache log4j

## Introduction

This is a detailed instruction to reproduce the log4j distribution either to verify that the release is reproducable or to prepare a hot-fix.

The log4j build is platform dependent. The best is to setup a VM using virtualbox (or similar), install Ubuntu and follow the steps here.

## Preparation of environment

### Install Sun Java 6

    $> sudo sed  's/restricted/restricted universe multiverse/' -i /etc/apt/sources.list
    $> sudo apt-get update && sudo apt-get -y update
    $> sudo apt-get install openjdk-6-jdk

### Install Maven 2, Subversion, mingw and xemacs21, openssh-server:

    $> sudo apt-get install maven2 subversion mingw32 xemacs21 openssh-server

### Copy Win32 version of jni_md.h for NTEventLogAppender.dll

    c:\>cd "\Program Files\Java\jdk_1.6.0_16\include\win32
    c:\>scp jni_md.h username@hostname:

    $> export JNI_WIN32_INCLUDE_DIR=/home/username

### Signing & Deploying

Create a local ssh key with no passphrase to enable "deployment" of site back to the local machine using scp.

    $> ssh-keygen
    $> cd ~/.ssh
    $> cat id_rsa.pub >> authorized_keys
    $> ssh localhost
    $> exit

It's important to add localhost and people.a.o to the list of permanent allowed hosts. Besides the above, this should have been runned at least once:

    $> ssh people.apache.org

If you intended to deploy jars to the repo or update the site, you need to set up ssh to use private keys to access people.apache.org and create or modify ~/.m2/settings.xml to specify user name and key location.

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
       <servers>
        <server>
          <id>logging.repo</id>
          <username>USERNAME for people.apache.org</username>
          <privateKey>/home/username/.ssh/id_rsa</privateKey>
          <passphrase></passphrase>
        </server>
       </servers>
    </settings>

You should test your ssh connection to people.apache.org and localhost before attempting a deployment like:

    $ ssh -l USERNAME people.apache.org
    $ ssh localhost

## Building release artifacts

Before you build, please make sure you have a nonblocking editor set as SVN editor. Like:

    $ export SVN_EDITOR=xemacs

Other checks:

- Please make sure changes.xml reflect all fixed issues. The release date in changes is to be set to the date the release candidate is created.
- Please update doap_log4j.rdf to reflect the correct version. Use the same release date as in changes.

The release artifacts were originally built by:

    $> svn co http://svn.apache.org/repos/asf/logging/log4j/trunk log4j
    $> cd log4j
    $> mvn package release:prepare
    $> mvn release:perform

Note: you'll be ask for a SVN tagname. Please use the following pattern: v1.2.17-RC1.

Attention: this is an non-interactive build. In some cases it is necessary to add: -Dusername=paouser -Dpassword=paopassword to the release plugin commands. This is surely not safe because your password can be seen clearly.

The release artifacts can be rebuilt by:

    $ mvn release:perform -DconnectionUrl=scm:svn:https://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_16

Building site and artifacts from a tag:

    $ svn co https://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_16
    $ cd v1_2_16
    $ mvn site assembly:assembly

TODO: the following section describes site staging. This must be altered: the staging must not happen in SVN.

The website content will automatically be staged to the ASF SVN repo by "mvn site-deploy". This phase checks out https://svn.apache.org/repos/asf/logging/site/trunk/docs/log4j/1.2 into target/site-deploy, copys the generated documentation to that directory using scp to localhost and then commits the changed content. You will be prompted for an SVN commit message using the configured SVN_EDITOR. A commit message must be entered or the site commit will be aborted.

The staged content can be tested by opening http://svn.apache.org/repos/asf/logging/site/trunk/docs/1.2/index.html, however some links may be broken due to the staged location. The staged version can be published to the main public site by executing "svn update" in /www/logging.apache.org/log4j/1.2 on people.apache.org.

## If a vote has failed

- Send a "cancel" note to the mailinglist (usually resend the vote mail with [CANCEL] in subject
- Delete the RC artifacts from:

      http://people.apache.org/builds/logging/repo/log4j/log4j/

## If a vote has passed

If a RC has passed the vote, these steps are necessary:

Rename the tag:

    $> svn mv https://svn.apache.org/repos/asf/logging/log4j/tags/log4j-1.2.17-RC1 https://svn.apache.org/repos/asf/logging/log4j/tags/log4j-1.2.17

Change the pom.xml version to the prior version number.