<?xml version="1.0" encoding="UTF-8"?>
<!--
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.

-->
<document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">

  <properties>
    <title>Apache DirectMemory Downloads</title>
    <author email="dev@directmemory.apache.org">Apache DirectMemory Documentation Team</author>
  </properties>

  <body>
    <div class="toc_container">
      <macro name="toc">
        <param name="class" value="toc"/>
      </macro>
    </div>
    
    <section name="Introduction">
      <p>Apache DirectMemory artifacts are distributed in source and binary form under the terms of the
        <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
        See the included <tt>LICENSE</tt> and <tt>NOTICE</tt> files included in each artifact for additional license 
        information.
      </p>
      <p>Use the links below to download a source distribution of Apache DirectMemory.
      It is good practice to <a href="#Verifying_Releases">verify the integrity</a> of the distribution files.</p>
    </section>

    <section name="Current Releases">
      <subsection name="${currentRelease}">
        <p>Release date: ${currentReleaseDate}</p>
        <p><a href="releases/release-notes-${currentRelease}.html">Release notes</a></p>
        <table>
          <thead>
            <tr>
              <th>Artifact</th>
              <th>Signatures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>
                <a href="http://www.apache.org/dyn/closer.cgi/directmemory/${currentRelease}/apache-directmemory-${currentRelease}-source-release.zip">apache-directmemory-${currentRelease}-source-release.zip</a>
              </td>
              <td>
                <a href="http://www.apache.org/dist/directmemory/${currentRelease}/apache-directmemory-${currentRelease}-source-release.zip.asc">asc</a>
                <a href="http://www.apache.org/dist/directmemory/${currentRelease}/apache-directmemory-${currentRelease}-source-release.zip.md5">md5</a>
                <a href="http://www.apache.org/dist/directmemory/${currentRelease}/apache-directmemory-${currentRelease}-source-release.zip.sha1">sha1</a>
              </td>
            </tr>
          </tbody>
        </table>
      </subsection>
    </section>

<!--    <section name="Older Releases">
    </section>-->

    <section name="Verifying Releases">
      <p>We strongly recommend you verify the integrity of the downloaded files with both PGP and MD5.</p>
      
      <p>The PGP signatures can be verified using <a href="http://www.pgpi.org/">PGP</a> or 
      <a href="http://www.gnupg.org/">GPG</a>. 
      First download the <a href="http://apache.org/dist/directmemory/KEYS">KEYS</a> as well as the
      <tt>*.asc</tt> signature file for the particular distribution. Make sure you get these files from the main 
      distribution directory, rather than from a mirror. Then verify the signatures using one of the following sets of
      commands:
      
        <source>$ pgpk -a KEYS
$ pgpv directmemory-*.tar.gz.asc
$ pgpv directmemory-*.zip.asc</source>
        
        <source>$ pgp -ka KEYS
$ pgp directmemory-*.tar.gz.asc
$ pgp directmemory-*.zip.asc</source>
      
        <source>$ gpg --import KEYS
$ gpg --verify directmemory-*.tar.gz.asc
$ gpg --verify directmemory-*.zip.asc</source>
       </p>
    <p>Alternatively, you can verify the MD5 signature on the files. A Unix/Linux program called  
      <code>md5</code> or 
      <code>md5sum</code> is included in most distributions.  It is also available as part of
      <a href="http://www.gnu.org/software/textutils/textutils.html">GNU Textutils</a>.
      Windows users can get binary md5 programs from these (and likely other) places:
      <ul>
        <li>
          <a href="http://www.md5summer.org/">http://www.md5summer.org/</a>
        </li>
        <li>
          <a href="http://www.fourmilab.ch/md5/">http://www.fourmilab.ch/md5/</a>
        </li>
        <li>
          <a href="http://www.pc-tools.net/win32/md5sums/">http://www.pc-tools.net/win32/md5sums/</a>
        </li>
      </ul>
    </p>
    </section>
  </body>
</document>
