You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ic...@apache.org on 2021/09/02 15:35:26 UTC

svn commit: r1892819 - in /httpd/dev-tools/v2: ./ README common-lib.sh make-candidate.sh make-tars.sh

Author: icing
Date: Thu Sep  2 15:35:25 2021
New Revision: 1892819

URL: http://svn.apache.org/viewvc?rev=1892819&view=rev
Log:
Version of new release scripts that do not modify a source SVN branch until a release is accepted.
- current state runs up to the build and signed tar balls


Added:
    httpd/dev-tools/v2/
    httpd/dev-tools/v2/README
    httpd/dev-tools/v2/common-lib.sh
    httpd/dev-tools/v2/make-candidate.sh   (with props)
    httpd/dev-tools/v2/make-tars.sh   (with props)

Added: httpd/dev-tools/v2/README
URL: http://svn.apache.org/viewvc/httpd/dev-tools/v2/README?rev=1892819&view=auto
==============================================================================
--- httpd/dev-tools/v2/README (added)
+++ httpd/dev-tools/v2/README Thu Sep  2 15:35:25 2021
@@ -0,0 +1,47 @@
+version2 of release scripts
+
+WARNIGN: work in progress!
+
+Usage:
+0. A good, stable local checkout:
+  - take a local SVN checkout you have, e.g. of branches/2.4.x
+  - make sure that it builds and passes the tests for you
+  - make sure it has no local, uncomitted changes
+1. Make you local revision to a release candidate tag in SVN:
+   > cd your-checkout
+   > $BUILD_TOOLS/v2/make-candidate.sh
+  ...output what it does or finds missing
+  - fix anything it finds and run it again
+  > $BUILD_TOOLS/v2/make-candidate.sh
+  ...output what it does or finds missing
+  - until it is right
+  - there is no hurry, you work on your local revision,
+    future commits by others won't affect you
+  - if creates a copy of that revision in tags/candidate-$VERSION
+  - it modifies this tag's content with updated version numsbers,
+    dates and re-built manual pages
+  - when it runs through, it commits these changes
+  - if you want to abort, remove tags/candidate-$VERSION in SVN
+2. Make the signed tar files
+   > cd your-checkout
+   > $BUILD_TOOLS/v2/make-tars.sh
+  ...output what it does or finds missing
+  - fix anything it finds and run it again
+  - it always starts by removing previous files
+  - it's primary source is tags/candidate-$VERSION in SVN
+3. push the tars to the apache server and send a mail for testing/voting
+   TBD!
+...
+NOTE: up to here, the original source branch is not modified!
+   TBD: pushing tars, announcing, move candidate tag to release tag
+   and increment the source branch patch number.
+
+VERSION Handling
+- the scripts take the version from your local sources, if
+  you do not specify a version on the command line
+- if you specify a version on the command line, the major
+  and minor parts must match the local checkout. Otherwise
+  the scripts refuse. So, you cannot make a 2.5.7 in a checkout
+  of branches/2.4.x
+- Versions can have a suffix, as in 2.4.50-rc1, but that is
+  not really clear if we ever want to use that.

Added: httpd/dev-tools/v2/common-lib.sh
URL: http://svn.apache.org/viewvc/httpd/dev-tools/v2/common-lib.sh?rev=1892819&view=auto
==============================================================================
--- httpd/dev-tools/v2/common-lib.sh (added)
+++ httpd/dev-tools/v2/common-lib.sh Thu Sep  2 15:35:25 2021
@@ -0,0 +1,175 @@
+#!/bin/sh
+
+fail() {
+  if test -n "$*"; then
+    echo "ERROR: $*" >&2
+  fi
+  exit 1
+}
+
+warn() {
+  if test -n "$*"; then
+    echo "WARNING: $*" >&2
+  fi
+  test "$exit_on_warnings" -eq 0 || exit 1
+}
+
+is_int() {
+  x=`expr $1 + 0 2>/dev/null`
+  test "$x" = "$1"
+}
+
+# Inspect the local directory and populate
+# SVN_URL   the absolute url of the local checkout
+# SVN_BASE  the base url of the project
+# SVN_SRC   the path relative of SVN_BASE of the checkout
+# SVN_REV   the revision of the checkout
+detect_checkout() {
+  out=`svn stat 2>&1 >/dev/null`
+  test -z "$out" || fail "local directory does not seem to be a SVN checkout.\n$out"
+  out=`svn stat`
+  test -z "$out" || fail "local checkout is not clean.\n$out"
+  SVN_URL=`svn info --show-item url` || fail "unable to determine SVN url"
+  test -n "$SVN_URL" || fail "unable to determine SVN url"
+  case "$SVN_URL" in
+    */trunk)
+      SVN_BASE=`echo $SVN_URL | sed -e 's,/trunk,,'`
+      SVN_SRC=trunk
+      ;;
+    */branches/*)
+      SVN_BASE=`echo $SVN_URL | sed -e 's,/branches/.*,,'`
+      SVN_SRC=`echo $SVN_URL | sed -e 's,.*/branches/,branches/,'`
+      ;;
+    *)
+      fail "unable to detect path in $SVN_URL"
+      ;;
+  esac
+  SVN_REV=`svn info --show-item revision` || fail "unable to determine SVN revision"
+  test -n "$SVN_REV" || fail "unable to determine SVN revision"
+}
+
+# given the version input (possibly empty),
+# detect/check the version components and set variabels
+# VERSION      the full version string
+# v_major      the major integer
+# v_minor      the minor integer
+# v_patch      the patch integer
+# v_suffix     the optional suffix, e.g. 'rc1' or so
+detect_version() {
+  version=$1
+  if test -z "$version"; then
+    # determine version from local files
+    if test -f include/ap_release.h; then
+      v_major=`grep -E '#define\sAP_SERVER_MAJORVERSION_NUMBER' include/ap_release.h | awk '{print $3}'`
+      v_minor=`grep -E '#define\sAP_SERVER_MINORVERSION_NUMBER' include/ap_release.h | awk '{print $3}'`
+      v_patch=`grep -E '#define\sAP_SERVER_PATCHLEVEL_NUMBER'   include/ap_release.h | awk '{print $3}'`
+    else
+      fail "unable to determine version in local checkout"
+    fi
+  else
+    v_major=`echo $version | cut -d "." -f 1`
+    v_minor=`echo $version | cut -d "." -f 2`
+    #Not currently used in this script, but make it available. Support -alpha, -beta -rcX names here
+    v_patch=`echo $version | cut -d "." -f 3 | sed -e 's/-.*//'`
+    v_suffix=`echo $version | cut -d "." -f 3 | sed -e 's/[^-]*-//'`
+    if test "$v_suffix" = "$v_patch"; then
+      v_suffix=""
+    fi
+  fi
+
+  is_int ${v_major} || fail "version major '${v_major}' is not a number"
+  is_int ${v_minor} || fail "version minor '${v_minor}' is not a number"
+  is_int ${v_patch} || fail "version patch '${v_patch}' is not a number"
+
+  VERSION="${v_major}.${v_minor}.${v_patch}"
+  if test -n "${v_suffix}"; then
+    VERSION="${VERSION}-${v_suffix}"
+  fi
+}
+
+check_autotools() {
+  #--------------------------------------------------------------------------
+  # autoconf 2.59 or newer
+  #
+  ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|head -1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
+  if test -z "$ac_version"; then
+    echo "buildcheck: autoconf not found."
+    echo "            You need autoconf version 2.59 or newer installed."
+    exit 1
+  fi
+  IFS=.; set $ac_version; IFS=' '
+  if test "$1" = "2" -a "$2" -lt "59" || test "$1" -lt "2"; then
+    echo "buildcheck: autoconf version $ac_version found."
+    echo "            You need autoconf version 2.59 or newer installed."
+    echo "            If you have a sufficient autoconf installed, but it"
+    echo "            is not named 'autoconf', then try setting the"
+    echo "            AUTOCONF environment variable.  (See the INSTALL file"
+    echo "            for details.)"
+    exit 1
+  fi
+
+  echo "check: autoconf version $ac_version (ok)"
+
+  #--------------------------------------------------------------------------
+  # autoheader 2.53 or newer
+  #
+  ah_version=`${AUTOHEADER:-autoheader} --version 2>/dev/null|head -1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
+  if test -z "$ah_version"; then
+    echo "buildcheck: autoheader not found."
+    echo "            You need autoheader version 2.59 or newer installed."
+    exit 1
+  fi
+  IFS=.; set $ah_version; IFS=' '
+  if test "$1" = "2" -a "$2" -lt "59" || test "$1" -lt "2"; then
+    echo "buildcheck: autoheader version $ah_version found."
+    echo "            You need autoheader version 2.59 or newer installed."
+    echo "            If you have a sufficient autoheader installed, but it"
+    echo "            is not named 'autoheader', then try setting the"
+    echo "            AUTOHEADER environment variable.  (See the INSTALL file"
+    echo "            for details.)"
+    exit 1
+  fi
+
+  echo "check: autoheader version $ah_version (ok)"
+
+  #--------------------------------------------------------------------------
+  # libtool 1.4.3 or newer
+  #
+  LIBTOOL_WANTED_MAJOR=1
+  LIBTOOL_WANTED_MINOR=5
+  LIBTOOL_WANTED_PATCH=10
+  LIBTOOL_WANTED_VERSION=1.5.10
+
+  libtool=`which glibtool 2>/dev/null`
+  if test ! -x "$libtool"; then
+    libtool=`which libtool`
+  fi
+  lt_pversion=`$libtool --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//' -e 's/[- ].*//'`
+
+  if test -z "$lt_pversion"; then
+    echo "buildcheck: libtool not found."
+    echo "            You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
+    exit 1
+  fi
+  lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'`
+  IFS=.; set $lt_version; IFS=' '
+  lt_status="good"
+  if test "$1" = "$LIBTOOL_WANTED_MAJOR"; then
+     if test "$2" -lt "$LIBTOOL_WANTED_MINOR"; then
+        lt_status="bad"
+     elif test ! "$2" -gt "$LIBTOOL_WANTED_MINOR" -a \
+          ! -z "$LIBTOOL_WANTED_PATCH"; then
+         if test "$3" -lt "$LIBTOOL_WANTED_PATCH"; then
+             lt_status="bad"
+         fi
+     fi
+  fi
+  if test $lt_status != "good"; then
+    echo "buildcheck: libtool version $lt_pversion found."
+    echo "            You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
+    exit 1
+  fi
+
+  echo "check: libtool version $lt_pversion (ok)"
+
+}
\ No newline at end of file

Added: httpd/dev-tools/v2/make-candidate.sh
URL: http://svn.apache.org/viewvc/httpd/dev-tools/v2/make-candidate.sh?rev=1892819&view=auto
==============================================================================
--- httpd/dev-tools/v2/make-candidate.sh (added)
+++ httpd/dev-tools/v2/make-candidate.sh Thu Sep  2 15:35:25 2021
@@ -0,0 +1,139 @@
+#!/bin/sh
+
+# Create a release candidate for voting in a svn checkout
+#
+# USAGE: make-candidate.sh [version]
+# EXAMPLE: make-candidate.sh 2.4.49
+#
+# This script is called in a built svn checkout of the branch for which
+# a release candidate shall be made:
+# @version       the version identifier, major.minor.patch, to use. If not given
+#                it will determine the version from the local sources
+#
+# Environment:
+# name         default
+
+#Useful for debugging
+#set -x
+
+#Bail when non-zero return codes are encountered
+set -e
+
+current_year=`date +%Y`
+
+exit_on_warnings=0
+
+usage () {
+    cat <<EOF 1>&2
+usage: $0 [version]
+  create a release candidate in local SVN checkout. With
+    version    in format 'm.n.p' the semantic version is major, minor and patch number.
+
+WARNING: The directory './dist/release-\${version}' will be purged if it exists
+EOF
+  exit 1
+}
+
+source `dirname $0`/common-lib.sh
+
+detect_checkout
+detect_version $1
+
+PROJECT=`basename $SVN_BASE`
+SVN_DEST="tags/candidate-${VERSION}"
+DIST_DIR="dist/candidate-${VERSION}"
+
+cat <<EOF
+creating release candidate:
+  PROJECT: $PROJECT
+  VERSION: $VERSION
+  URL: $SVN_URL
+  SOURCE: $SVN_SRC@$SVN_REV
+  DEST: $SVN_DEST
+  LOCAL: $DIST_DIR
+EOF
+
+if test -f include/ap_release.h; then
+  if ! grep -e "^#define *AP_SERVER_MAJORVERSION_NUMBER *${v_major}\$" include/ap_release.h >/dev/null 2>&1;then
+    fail "AP_SERVER_MAJORVERSION_NUMBER does not match expected ${v_major}"
+  fi
+  if ! grep -e "^#define *AP_SERVER_MINORVERSION_NUMBER *${v_minor}\$" include/ap_release.h >/dev/null 2>&1;then
+    fail "AP_SERVER_MINORVERSION_NUMBER does not match expected ${v_minor}"
+  fi
+fi
+
+if test -d changes-entries; then
+  if test "$(ls -A changes-entries)"; then
+    warn "the 'changes-entries' directory should be empty."\
+      "Run 'make update-changes' and commit changes."
+  fi
+fi
+
+if svn ls "$SVN_BASE/$SVN_DEST" >/dev/null 2>&1; then
+  warn "release candidate tag already exists at $SVN_DEST"
+else
+  echo "creating candidate tag: $SVN_DEST"
+  svn cp -m "Tag $SVN_SRC@$SVN_REV as $VERSION" "$SVN_BASE/$SVN_SRC@$SVN_REV" "$SVN_BASE/$SVN_DEST"
+  rm -rf "$DIST_DIR"
+fi
+
+if test ! -d "$DIST_DIR"; then
+  mkdir -p `dirname "$DIST_DIR"`
+  svn checkout -q "$SVN_BASE/$SVN_DEST" "$DIST_DIR"
+else
+  echo "updating existing checkout in $DIST_DIR"
+  svn update "$DIST_DIR"
+fi
+
+pushd "$DIST_DIR" >/dev/null
+
+if test -f include/ap_release.h; then
+  # Set AP_SERVER_DEVBUILD_BOOLEAN to 0 in include/ap_release.h.
+  echo "setting patch version and DEVBUILD in include/ap_release.h"
+  perl -pi -e 's/(#define\s+AP_SERVER_DEVBUILD_BOOLEAN\s+)\d/${1}0/g' include/ap_release.h
+  if ! grep -e '^#define *AP_SERVER_DEVBUILD_BOOLEAN *0$' include/ap_release.h >/dev/null 2>&1;then
+    fail "implementing change to set AP_SERVER_DEVBUILD_BOOLEAN to 0 failed"
+  fi
+  # Set AP_SERVER_PATCHLEVEL_NUMBER to 0 in include/ap_release.h.
+  perl -pi -e 's/(#define\s+AP_SERVER_PATCHLEVEL_NUMBER\s+)\d*/${1}'${v_patch}'/g' include/ap_release.h
+  if ! grep -e "^#define *AP_SERVER_PATCHLEVEL_NUMBER *${v_patch}\$" include/ap_release.h >/dev/null 2>&1;then
+    fail "setting of AP_SERVER_PATCHLEVEL_NUMBER did not return expected value of ${v_patch}"
+  fi
+fi
+
+if test -f docs/manual/style/version.ent; then
+  # Set ENTITY httpd.patch in docs/manual/style/version.ent.
+  echo "setting patch version in docs/manual/style/version.ent"
+  perl -pi -e 's/(.*ENTITY httpd.patch ")(\d+)(.*)/${1}'${v_patch}'${3}/g' docs/manual/style/version.ent
+  if ! grep -e "ENTITY *httpd.patch *\"${v_patch}\"" docs/manual/style/version.ent >/dev/null 2>&1;then
+    fail "setting of ENTITY httpd.patch did not return expected value of ${v_patch}"
+  fi
+fi
+
+# Ensure the Copyright date reflects the current year
+for src in NOTICE docs/manual/style/xsl/common.xsl; do
+  if test -f "$src"; then
+    perl -pi -e "s/Copyright \d+ The Apache Software Foundation./Copyright $current_year The Apache Software Foundation./g" "$src"
+  fi
+done
+
+if test -d docs/manual; then
+  # Execute ./build.sh all convmap to ensure that the documentation transformations are up to date.
+  echo "rebuilding manuals"
+  pushd docs/manual >/dev/null
+  #See http://httpd.apache.org/docs-project/docsformat.html for these instructions
+  svn checkout https://svn.apache.org/repos/asf/httpd/docs-build/trunk build
+  pushd build >/dev/null
+  ./build.sh all convmap
+  ./build.sh validate-xml
+  ./build.sh validate-xhtml
+  popd >/dev/null
+  rm -rf build
+  popd >/dev/null
+fi
+
+popd >/dev/null
+
+echo "committing candidate changes"
+svn commit -m "Post $version tag updates" "$DIST_DIR"
+echo "release candidate sources created in $SVN_DEST"

Propchange: httpd/dev-tools/v2/make-candidate.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: httpd/dev-tools/v2/make-tars.sh
URL: http://svn.apache.org/viewvc/httpd/dev-tools/v2/make-tars.sh?rev=1892819&view=auto
==============================================================================
--- httpd/dev-tools/v2/make-tars.sh (added)
+++ httpd/dev-tools/v2/make-tars.sh Thu Sep  2 15:35:25 2021
@@ -0,0 +1,232 @@
+#!/bin/sh
+
+# Create the release tars from a svn candidate tag
+#
+# USAGE: make-tars.sh [version [dir]]
+# EXAMPLE: make-tars.sh 2.4.49 ./dist
+#
+# Create the tar files for a release candidate svn tag
+# @version       the version identifier, major.minor.patch, to use. If not given
+#                it will determine the version from the local sources
+# @dir           directory to create the tars and exports in
+#
+# Environment:
+# name         default
+
+#Useful for debugging
+#set -x
+
+#Bail when non-zero return codes are encountered
+set -e
+
+usage () {
+    cat <<EOF 1>&2
+usage: $0 [version [signing-user]]
+  create the release tars from a SVN candidate. With
+    version        in format 'm.n.p(-suffix)?' the semantic version is major, minor and patch number.
+    signing-user   the gpg2/gpg/pgp identity used for signing the tarballs
+EOF
+  exit 1
+}
+
+source `dirname $0`/common-lib.sh
+
+
+detect_checkout
+detect_version $1
+signing_user=$2
+
+PROJECT=`basename $SVN_BASE`
+SVN_DEST="tags/candidate-${VERSION}"
+DIST_DIR="dist"
+
+cat <<EOF
+creating release tars:
+  PROJECT: $PROJECT
+  VERSION: $VERSION
+  CANDIDATE: $SVN_BASE/$SVN_DEST
+  LOCAL: $DIST_DIR
+EOF
+
+if ! svn ls "$SVN_BASE/$SVN_DEST" >/dev/null 2>&1; then
+  fail "release candidate does not exist in SVN: $SVN_DEST"
+fi
+
+# we run buildconf on the export, check that we have usable autotools
+check_autotools
+
+if ! test -d "$DIST_DIR"; then
+  mkdir -p "$DIST_DIR"
+fi
+
+EXP_DIRNAME="${PROJECT}-${VERSION}"
+EXP_PATH="${DIST_DIR}/${EXP_DIRNAME}"
+echo "exporting $SVN_DEST to $EXP_PATH"
+rm -rf "${EXP_PATH}"
+svn export "$SVN_BASE/$SVN_DEST" "${EXP_PATH}" > /dev/null
+
+case "$PROJECT" in
+  httpd)
+    run_buildconf=1
+    apr_in_srclib=1      # add apr source to srclib
+    separate_deps=1      # release dependencies as separate tar
+    apr_tag=""           # define to override using latest
+    apu_tag=""           # define to override using latest
+    case "${v_major}.${v_minor}" in
+      2.4)
+        ;;
+      2.5)
+        ;;
+      *)
+        warn "'$PROJECT' dependencies undefined for ${v_major}.${v_minor}"
+        ;;
+    esac
+    ;;
+  *)
+    warn "'$PROJECT' is an unknown project."
+    ;;
+esac
+
+if test "$apr_in_srclib" = 1; then
+  if test -z "$apr_tag" -o -z "$apu_tag"; then
+    if ! curl --version >/dev/null 2>&1;then
+      fail "curl must be available to retrieve the latest apr versions."
+    fi
+
+    if test "`echo 'test-1.2.3' | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+'`" != "1.2.3";then
+      fail "your system must support 'grep -o' to retrieve the latest apr versions."
+    fi
+  fi
+
+  SVNHOST=svn.apache.org
+  download_url="https://apr.apache.org/download.cgi"
+  echo "Determining latest APR and APU versions from $download_url..."
+
+  if test -z "$apr_tag"; then
+    apr_tag=`curl -s $download_url | grep 'APR [0-9].*is the best available version' | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+'`
+    if test -z "$apr_tag"; then
+      fail "failed to determine latest APR version from $download_url"
+    else
+      echo "  APR: $apr_tag"
+    fi
+  fi
+
+  if test -z "$apu_tag"; then
+    apu_tag=`curl -s $download_url | grep 'APR-util [0-9].*is the best available version' | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+'`
+    if test -z "$apu_tag"; then
+      fail "failed to determine latest APR version from $download_url"
+    else
+      echo "  APU: $apu_tag"
+    fi
+  fi
+
+  echo "Starting SVN export of apr-${apr_tag} to ${EXP_PATH}/srclib ..."
+  svn export https://${SVNHOST}/repos/asf/apr/apr/tags/${apr_tag} "${EXP_PATH}"/srclib/apr > /dev/null || exit 1
+  echo "Starting SVN export of apr-util-${apu_tag} to ${EXP_PATH}/srclib ..."
+  svn export https://${SVNHOST}/repos/asf/apr/apr-util/tags/${apu_tag} "${EXP_PATH}"/srclib/apr-util > /dev/null || exit 1
+fi
+
+pushd "${DIST_DIR}" > /dev/null
+
+echo "Preparing export for being built..."
+find "${EXP_DIRNAME}" -name autom4te*.cache | xargs rm -rf
+find "${EXP_DIRNAME}" -name STATUS | xargs rm -rf
+if test "$run_buildconf" = 1; then
+  pushd "${EXP_DIRNAME}" > /dev/null
+  ./buildconf || fail
+  find . -name autom4te*.cache | xargs rm -rf
+  popd > /dev/null
+fi
+
+echo " - fixup the timestamps preventing remake of generated files."
+if test -f "${EXP_DIRNAME}/modules/ssl/ssl_expr_parse.y"; then
+    echo " - found ssl expression parser"
+    touch "${EXP_DIRNAME}"/modules/ssl/ssl_expr_parse.c
+    touch "${EXP_DIRNAME}"/modules/ssl/ssl_expr_parse.h
+    touch "${EXP_DIRNAME}"/modules/ssl/ssl_expr_scan.c
+elif test -f "${EXP_DIRNAME}/server/util_expr_parse.y"; then
+    echo " - found generic expression parser"
+    touch "${EXP_DIRNAME}"/server/util_expr_parse.c
+    touch "${EXP_DIRNAME}"/server/util_expr_parse.h
+    touch "${EXP_DIRNAME}"/server/util_expr_scan.c
+else
+    echo " - found no expression parser!"
+fi
+
+echo " - removing Manual Source Files."
+find "${EXP_DIRNAME}"/docs/manual -name \*.xml -o -name \*.xml.\* | xargs rm -rf
+find "${EXP_DIRNAME}"/docs/manual -name \*.xsl -o -name \*.xsl.\* | xargs rm -rf
+
+echo "Building the tarball, .gz, and .bz2 files ..."
+rm -f "${EXP_DIRNAME}"*.tar.*
+
+if test "${separate_deps}" = 1; then
+    echo " - moving dependencies to their own tarballs"
+    DESP_PATH="${EXP_DIRNAME}-deps"
+    rm -rf "${DESP_PATH}"
+    mkdir -p "${DESP_PATH}"/${EXP_DIRNAME}/srclib
+    mv "${EXP_DIRNAME}/srclib/apr" "${DESP_PATH}/${EXP_DIRNAME}/srclib"
+    mv "${EXP_DIRNAME}/srclib/apr-util" "${DESP_PATH}/${EXP_DIRNAME}/srclib"
+    tar -C "${DESP_PATH}" -cf ${EXP_DIRNAME}-deps.tar "${EXP_DIRNAME}"
+    gzip -9 --to-stdout "${EXP_DIRNAME}-deps.tar" > "${EXP_DIRNAME}-deps.tar.gz"
+    bzip2 -9 "${EXP_DIRNAME}-deps.tar"
+fi
+
+echo " - building ${PROJECT} tarballs"
+tar cf "${EXP_DIRNAME}".tar "${EXP_DIRNAME}"
+gzip -9 --to-stdout "${EXP_DIRNAME}".tar > "${EXP_DIRNAME}".tar.gz
+bzip2 -9 "${EXP_DIRNAME}".tar
+
+if ! openssl version >/dev/null; then
+  fail "unable to find 'openssl' in path"
+fi
+for file in "${EXP_DIRNAME}"*.tar.*; do
+  echo " - building checksum files for ${file}"
+  openssl md5 ${file} | sed -e 's#^MD5(\(.*\))= \([0-9a-f]*\)$#\2 *\1#' > ${file}.md5
+  openssl sha1 ${file} | sed -e 's#^SHA1(\(.*\))= \([0-9a-f]*\)$#\2 *\1#' > ${file}.sha1
+  openssl sha256 ${file} | sed -e 's#^SHA256(\(.*\))= \([0-9a-f]*\)$#\2 *\1#' > ${file}.sha256
+  openssl sha512 ${file} | sed -e 's#^SHA512(\(.*\))= \([0-9a-f]*\)$#\2 *\1#' > ${file}.sha512
+done
+
+echo "Cleaning up and signing the files ..."
+echo ""
+
+# check for executables
+gpg2="`which gpg2 2> /dev/null | head -1`"
+gpg="`which gpg 2> /dev/null | head -1`"
+pgp="`which pgp 2> /dev/null | head -1`"
+
+# there are 3 possible ways to sign, check in preference
+if test -x "${gpg2}"; then
+  if test -z "${signing_user}"; then
+    args="--default-key"
+  else
+    args="-u ${signing_user}"
+  fi
+  for file in "${EXP_DIRNAME}"*.tar.*; do
+    echo " - gpg2: creating asc signature file for ${file} ..."
+    ${gpg2} --armor ${args} --detach-sign ${file}
+  done
+elif test -x "${gpg}"; then
+  args=""
+  if test -n "${signing_user}"; then
+    args="-u ${signing_useruser}"
+  fi
+  for file in "${EXP_DIRNAME}"*.tar.*; do
+    echo " - gpg: creating asc signature file for ${file} ..."
+    ${gpg} --armor ${args} --detach-sign ${file}
+  done
+elif test -x "${pgp}"; then
+  args=""
+  if test -n "${signing_user}"; then
+    args="-u ${signing_user}"
+  fi
+  for file in "${EXP_DIRNAME}"*.tar.*; do
+    echo " - pgp: creating asc signature file for ${file} ..."
+    ${pgp} -sba ${file} ${args}
+  done
+else
+  warn "neither PGP nor GnuPG found! Not signing release!"
+fi
+
+popd > /dev/null
\ No newline at end of file

Propchange: httpd/dev-tools/v2/make-tars.sh
------------------------------------------------------------------------------
    svn:executable = *