diff options
| author | Christopher Lenz <cmlenz@apache.org> | 2008-03-28 23:32:19 +0000 | 
|---|---|---|
| committer | Christopher Lenz <cmlenz@apache.org> | 2008-03-28 23:32:19 +0000 | 
| commit | 544a38dd45f6a58d34296c6c768afd086eb2ac70 (patch) | |
| tree | c84cc02340b06aae189cff0dbfaee698f273f1f5 /bootstrap | |
| parent | 804cbbe033b8e7a3e8d7058aaf31bdf69ef18ac5 (diff) | |
Imported trunk.
git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@642432 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'bootstrap')
| -rwxr-xr-x | bootstrap | 325 | 
1 files changed, 325 insertions, 0 deletions
| diff --git a/bootstrap b/bootstrap new file mode 100755 index 00000000..21137381 --- /dev/null +++ b/bootstrap @@ -0,0 +1,325 @@ +#! /bin/sh -e + +# Licensed 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. + +# Bootstrap the pristine source ready for distribution. + +SCRIPT_OK=0 +SCRIPT_ERROR=1 + +CHANGELOG_PREDICATE=true + +ACINCLUDE_FILE="acinclude.m4" +ACINCLUDE_IN_FILE="acinclude.m4.in" +AC_CHECK_ICU_COMPRESSED_FILE="build-contrib/ac_check_icu.m4_2007-09-12.gz" +AUTHORS_FILE="authors.xml" +BUILD_AUX_DIRECTORY="build-aux" +CHANGELOG_FILE="ChangeLog" +CONFIG_GUESS_COMPRESSED_FILE="build-contrib/config.guess_2007-09-12.gz" +CONFIG_GUESS_FILE="build-aux/config.guess" +CONFIG_SUB_COMPRESSED_FILE="build-contrib/config.sub_2007-09-12.gz" +CONFIG_SUB_FILE="build-aux/config.sub" +COPYING_FILE="COPYING" +LICENSE_COMPRESSED_FILE="build-contrib/apache_2.txt.gz" +M4_DIRECTORY="m4" +M4_AC_CHECK_ICU_FILE="m4/ac_check_icu.m4" +REPOSITORY_URI="http://couchdb.googlecode.com/svn/trunk/" + +ACLOCAL_EXECUTABLE=$(which aclocal || true) +AUTOCONF_EXECUTABLE=$(which autoconf || true) +AUTOHEADER_EXECUTABLE=$(which autoheader || true) +AUTOMAKE_EXECUTABLE=$(which automake || true) +GLIBTOOLIZE_EXECUTABLE=$(which glibtoolize || true) +LIBTOOLIZE_EXECUTABLE=$(which libtoolize || true) +SVN_EXECUTABLE=$(which svn || true) +SVN2CL_EXECUTABLE=$(which svn2cl || true) + +basename=$(basename $0) + +extract_configuration_variable () { +    # Extract variables from the local M4 configuration. + +    variable_name=$1 +    temporary_file=$(mktemp) +    if [ $? -ne 0 ]; then +        echo "Error: Unable to create a temporary file." +        exit $SCRIPT_ERROR +    fi +    echo "changequote(\`[', \`]')" > $temporary_file +    sed "s/m4_//" < $ACINCLUDE_IN_FILE >> $temporary_file +    echo $variable_name >> $temporary_file +    m4 $temporary_file | grep -v "^$" +    rm -f $temporary_file +} + +display_version () { +    # Display version and copyright information. + +    package_name=$(extract_configuration_variable LOCAL_PACKAGE_NAME) +    version=$(extract_configuration_variable LOCAL_VERSION) +    cat << EOF +$basename - $package_name $version + +Licensed 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. +EOF +} + +display_help () { +    # Display a short description of the script's behaviour. + +    list_address=$(extract_configuration_variable LOCAL_LIST_ADDRESS) +    list_uri=$(extract_configuration_variable LOCAL_LIST_URI) +    cat << EOF +Usage: $basename [OPTION]... + +The $basename script bootstraps the pristeen source so that it can be built. + +The exit status is 0 for success or 1 for failure. + +Options: + +  -h  display a short help message and exit +  -v  display version information and exit +  -C  do not generate a ChangeLog from Subversion + +Environment variables: + +  REPOSITORY_REVISION  manual override for revision information + +Report bugs via the web at <$list_uri>. + +Report bugs via email to <$list_address>. +EOF +} + +display_error () { +    # Display a short instruction referring users to further documentation. + +    if test -n "$1"; then +        echo $1 >&2 +    fi +    echo >&2 +    echo "Try \`"$basename" -h' for more information." >&2 +    exit $SCRIPT_ERROR +} + +generate_dummy_changelog () { +    # Generate a dummy ChangLog file. + +    echo "Warning: Generating a dummy ChangeLog file." +    touch $CHANGELOG_FILE +} + +check_svn_environment () { +    # Check the Subversion environment for sanity. + +    if test -z "$SVN_EXECUTABLE"; then +        echo "Warning: Unable to find the svn command." +        return $SCRIPT_ERROR +    fi +    if test -n "$REPOSITORY_REVISION"; then +        return +    fi +    if test -n "$($SVN_EXECUTABLE info . 2> /dev/null)"; then +       SVN_CHECKOUT_BOOLEAN="true" +    fi > /dev/null +    if test "$SVN_CHECKOUT_BOOLEAN" != "true"; then +        echo "Warning: Unable to determine checkout information." +    fi +} + +generate_changelog () { +    # Generate the ChangLog file using the Subversion repository. + +    if test "$SVN_CHECKOUT_BOOLEAN" = "true"; then +        SVN2CL_COMMAND_ARGUMENT="." +    fi +    if test -n "$REPOSITORY_REVISION"; then +        SVN2CL_COMMAND_ARGUMENT="--revision $REPOSITORY_REVISION:1 $REPOSITORY_URI" +    fi +    if test -z "$SVN2CL_COMMAND_ARGUMENT"; then +        return +    fi +    if test ! -x "$SVN2CL_EXECUTABLE"; then +        echo "Warning: Unable to find the svn2cl command." +        generate_dummy_changelog +    else +        echo "Generating \`"$CHANGELOG_FILE"' (may take a while)" +        $SVN2CL_EXECUTABLE --authors=$AUTHORS_FILE $SVN2CL_COMMAND_ARGUMENT +    fi +} + +generate_acinclude () { +    # Generate the acinclude.m4 file using the Subversion repository. + +    release_code=$(sed -e "s/\[//g" -e "s/\]//g" -e "s/(//g" -e "s/)//g" \ +        < $ACINCLUDE_IN_FILE | awk "/LOCAL_VERSION_STAGE, /{print \$2}") +    repository_boolean=false +    if test -n "$REPOSITORY_REVISION" -o "$SVN_CHECKOUT_BOOLEAN" = "true"; then +        repository_boolean=true +    fi +    if test -z "$release_code" -o "$repository_boolean" = "false"; then +        sed "s/%release%//" < $ACINCLUDE_IN_FILE > $ACINCLUDE_FILE +    else +        if test "$SVN_CHECKOUT_BOOLEAN" = "true"; then +            revision_number=$($SVN_EXECUTABLE info . | \ +                awk "/Revision:/{print \$2}") +        fi +        if test -n "$REPOSITORY_REVISION"; then +            revision_number="$REPOSITORY_REVISION" +        fi +        sed "s/%release%/$revision_number/" \ +            < $ACINCLUDE_IN_FILE > $ACINCLUDE_FILE +    fi +} + +process_file_collection () { +    # Process files required to complete the bootstrap. + +    echo "Installing \`"$COPYING_FILE"'" +    gzip --decompress --stdout $LICENSE_COMPRESSED_FILE > $COPYING_FILE +    echo "Installing \`"$BUILD_AUX_DIRECTORY"'" +    mkdir -p $BUILD_AUX_DIRECTORY +    echo "Installing \`"$CONFIG_GUESS_FILE"'" +    gzip --decompress --stdout \ +        $CONFIG_GUESS_COMPRESSED_FILE > $CONFIG_GUESS_FILE +    echo "Installing \`"$CONFIG_SUB_FILE"'" +    gzip --decompress --stdout \ +        $CONFIG_SUB_COMPRESSED_FILE > $CONFIG_SUB_FILE +    echo "Installing \`"$M4_DIRECTORY"'" +    mkdir -p $M4_DIRECTORY +    echo "Installing \`"$M4_AC_CHECK_ICU_FILE"'" +    gzip --decompress --stdout \ +        $AC_CHECK_ICU_COMPRESSED_FILE > $M4_AC_CHECK_ICU_FILE +} + +run_aclocal () { +    # Run the correct version of aclocal. + +    if test -x "$ACLOCAL_EXECUTABLE"; then +        echo "Running $ACLOCAL_EXECUTABLE" +        $ACLOCAL_EXECUTABLE -I m4 +    else +        echo "Can't find aclocal" +        exit $SCRIPT_ERROR +    fi +} + +run_libtoolize () { +    # Run the correct version of libtoolize. + +    if test -x "$LIBTOOLIZE_EXECUTABLE"; then +        echo "Running $LIBTOOLIZE_EXECUTABLE" +        $LIBTOOLIZE_EXECUTABLE -f -c +    else +        if test -x "`which $GLIBTOOLIZE_EXECUTABLE`"; then +            echo "Running $GLIBTOOLIZE_EXECUTABLE" +            $GLIBTOOLIZE_EXECUTABLE -f -c +        else +            echo "Can't find libtoolize or glibtoolize" +            exit $SCRIPT_ERROR +        fi +    fi +} + +run_autoheader () { +    # Run the correct version of autoheader. + +    if test -x "$AUTOHEADER_EXECUTABLE"; then +        echo "Running $AUTOHEADER_EXECUTABLE" +        $AUTOHEADER_EXECUTABLE -f +    else +        echo "Can't find autoheader" +        exit $SCRIPT_ERROR +    fi +} + +run_automake () { +    # Run the correct version of automake. + +    AUTOMAKE_OPTION_COLLECTION="" +    if test -x "$AUTOMAKE_EXECUTABLE"; then +        echo "Running $AUTOMAKE_EXECUTABLE" +        $AUTOMAKE_EXECUTABLE -f -c -a --gnits +    else +        echo "Can't find automake" +        exit $SCRIPT_ERROR +    fi +} + +run_autoconf () { +    # Run the correct version of autoconf. + +    if test -x "$AUTOCONF_EXECUTABLE"; then +        echo "Running $AUTOCONF_EXECUTABLE" +        $AUTOCONF_EXECUTABLE -f +    else +        echo "Can't find autoconf" +        exit $SCRIPT_ERROR +    fi +} + +run_command_collection () { +    # Run commands required to complete the bootstrap. + +    run_libtoolize +    run_aclocal +    run_autoheader +    run_automake +    run_autoconf +    cat << EOF + +You have bootstrapped Apache CouchDB. Time to relax. + +Run \`./configure' to configure the source before you install. +EOF +} + +parse_script_option_list () { +    # Parse the script option list and take the appropriate action. + +    if ! argument_list=$(getopt vhC $@); then +        display_error +    fi +    eval set -- "$argument_list" +    while [ $# -gt 0 ]; do +        case "$1" in +            -v) shift; display_version; exit $SCRIPT_OK;; +            -h) shift; display_help; exit $SCRIPT_OK;; +            -C) shift; CHANGELOG_PREDICATE=false;; +            --) shift; break;; +            *) display_error "Unknown option: $1" >&2;; +        esac +    done +    cd $(dirname $0) +    process_file_collection +    check_svn_environment || true +    if test "$CHANGELOG_PREDICATE" = "true"; then +        generate_changelog +    else +        generate_dummy_changelog +    fi +    generate_acinclude +    run_command_collection +} + +parse_script_option_list $@ | 
