summaryrefslogtreecommitdiff
path: root/bootstrap
diff options
context:
space:
mode:
authorChristopher Lenz <cmlenz@apache.org>2008-03-28 23:32:19 +0000
committerChristopher Lenz <cmlenz@apache.org>2008-03-28 23:32:19 +0000
commit544a38dd45f6a58d34296c6c768afd086eb2ac70 (patch)
treec84cc02340b06aae189cff0dbfaee698f273f1f5 /bootstrap
parent804cbbe033b8e7a3e8d7058aaf31bdf69ef18ac5 (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-xbootstrap325
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 $@