projects
/
awesomized
/
libmemcached
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
|
github
raw
|
patch
|
inline
| side by side (from parent 1:
f93819b
)
Update bootstrap.sh
author
Brian Aker
<brian@tangent.org>
Mon, 22 Oct 2012 07:28:27 +0000
(
03:28
-0400)
committer
Brian Aker
<brian@tangent.org>
Mon, 22 Oct 2012 07:28:27 +0000
(
03:28
-0400)
bootstrap.sh
patch
|
blob
|
history
diff --git
a/bootstrap.sh
b/bootstrap.sh
index 40b2829989f5d8de55f7f64d1194c0828168a612..00aed45aef2cb9c41157bdff096b005172cd9190 100755
(executable)
--- a/
bootstrap.sh
+++ b/
bootstrap.sh
@@
-55,13
+55,24
@@
die ()
exit 1;
}
exit 1;
}
+function nassert ()
+{
+ local param_name=\$"$1"
+ local param_value=`eval "expr \"$param_name\" "`
+
+ if [ -n "$param_value" ]; then
+ echo "$bash_source:$bash_lineno: assert($param_name) had value of "$param_value"" >&2
+ exit 1
+ fi
+}
+
function assert ()
{
local param_name=\$"$1"
local param_value=`eval "expr \"$param_name\" "`
if [ -z "$param_value" ]; then
function assert ()
{
local param_name=\$"$1"
local param_value=`eval "expr \"$param_name\" "`
if [ -z "$param_value" ]; then
- echo "$
BASH_SOURCE:$BASH_LINENO
: assert($param_name)" >&2
+ echo "$
bash_source:$bash_lineno
: assert($param_name)" >&2
exit 1
fi
}
exit 1
fi
}
@@
-343,7
+354,7
@@
pop_TESTS_ENVIRONMENT ()
fi
}
fi
}
-safe_pushd ()
+
function
safe_pushd ()
{
pushd $1 &> /dev/null ;
{
pushd $1 &> /dev/null ;
@@
-352,7
+363,7
@@
safe_pushd ()
fi
}
fi
}
-safe_popd ()
+
function
safe_popd ()
{
local directory_to_delete=`pwd`
popd &> /dev/null ;
{
local directory_to_delete=`pwd`
popd &> /dev/null ;
@@
-365,7
+376,7
@@
safe_popd ()
fi
}
fi
}
-make_valgrind ()
+
function
make_valgrind ()
{
if [[ "$VENDOR_DISTRIBUTION" == 'darwin' ]]; then
make_darwin_malloc
{
if [[ "$VENDOR_DISTRIBUTION" == 'darwin' ]]; then
make_darwin_malloc
@@
-394,8
+405,10
@@
make_valgrind ()
push_TESTS_ENVIRONMENT
push_TESTS_ENVIRONMENT
+ # If we don't have a configure, then most likely we will be missing libtool
+ assert_file 'configure'
if [[ -f 'libtool' ]]; then
if [[ -f 'libtool' ]]; then
- TESTS_ENVIRONMENT="
$LIBTOOL_COMMAND
$VALGRIND_COMMAND"
+ TESTS_ENVIRONMENT="
./libtool --mode=execute
$VALGRIND_COMMAND"
else
TESTS_ENVIRONMENT="$VALGRIND_COMMAND"
fi
else
TESTS_ENVIRONMENT="$VALGRIND_COMMAND"
fi
@@
-405,7
+418,7
@@
make_valgrind ()
pop_TESTS_ENVIRONMENT
}
pop_TESTS_ENVIRONMENT
}
-make_install_system ()
+
function
make_install_system ()
{
local INSTALL_LOCATION=$(mktemp -d /tmp/XXXXXXXXXX)
push_PREFIX_ARG $INSTALL_LOCATION
{
local INSTALL_LOCATION=$(mktemp -d /tmp/XXXXXXXXXX)
push_PREFIX_ARG $INSTALL_LOCATION
@@
-437,7
+450,7
@@
make_install_system ()
safe_popd
}
safe_popd
}
-make_darwin_malloc ()
+
function
make_darwin_malloc ()
{
run_configure_if_required
{
run_configure_if_required
@@
-455,7
+468,7
@@
make_darwin_malloc ()
MallocScribble=$old_MallocScribble
}
MallocScribble=$old_MallocScribble
}
-snapshot_check ()
+
function
snapshot_check ()
{
if [ -n "$BOOTSTRAP_SNAPSHOT_CHECK" ]; then
assert_file "$BOOTSTRAP_SNAPSHOT_CHECK" 'snapshot check failed'
{
if [ -n "$BOOTSTRAP_SNAPSHOT_CHECK" ]; then
assert_file "$BOOTSTRAP_SNAPSHOT_CHECK" 'snapshot check failed'
@@
-463,7
+476,7
@@
snapshot_check ()
}
# This will reset our environment, and make sure built files are available.
}
# This will reset our environment, and make sure built files are available.
-make_for_snapshot ()
+
function
make_for_snapshot ()
{
# Make sure it is clean
make_maintainer_clean
{
# Make sure it is clean
make_maintainer_clean
@@
-480,7
+493,7
@@
make_for_snapshot ()
}
# If we are locally testing, we should make sure the environment is setup correctly
}
# If we are locally testing, we should make sure the environment is setup correctly
-check_for_jenkins ()
+
function
check_for_jenkins ()
{
if ! $jenkins_build_environment; then
echo "Not inside of jenkins"
{
if ! $jenkins_build_environment; then
echo "Not inside of jenkins"
@@
-495,7
+508,7
@@
check_for_jenkins ()
fi
}
fi
}
-make_for_continuus_integration ()
+
function
make_for_continuus_integration ()
{
# Setup the environment if we are local
check_for_jenkins
{
# Setup the environment if we are local
check_for_jenkins
@@
-556,8
+569,7
@@
make_for_continuus_integration ()
make_install_system
;;
*)
make_install_system
;;
*)
- run_configure
- make_all
+ make_jenkins_default
;;
esac
;;
esac
@@
-566,7
+578,19
@@
make_for_continuus_integration ()
safe_popd
}
safe_popd
}
-make_gdb ()
+# The point to this test is to test bootstrap.sh itself
+function self_test ()
+{
+ # We start off with a clean env
+ make_maintainer_clean
+
+ eval "./bootstrap.sh jenkins" || die "failed 'jenkins'"
+ eval "./bootstrap.sh all" || die "failed 'all'"
+ eval "./bootstrap.sh gdb" || die "failed 'gdb'"
+ eval "./bootstrap.sh maintainer-clean" || die "failed 'maintainer-clean'"
+}
+
+function make_gdb ()
{
run_configure_if_required
{
run_configure_if_required
@@
-579,8
+603,10
@@
make_gdb ()
setup_gdb_command
fi
setup_gdb_command
fi
- if [ -f 'libtool' ]; then
- TESTS_ENVIRONMENT="$LIBTOOL_COMMAND $GDB_COMMAND"
+ # If we don't have a configure, then most likely we will be missing libtool
+ assert_file 'configure'
+ if [[ -f 'libtool' ]]; then
+ TESTS_ENVIRONMENT="./libtool --mode=execute $GDB_COMMAND"
else
TESTS_ENVIRONMENT="$GDB_COMMAND"
fi
else
TESTS_ENVIRONMENT="$GDB_COMMAND"
fi
@@
-604,7
+630,7
@@
make_gdb ()
# $1 target to compile
# $2 to die, or not to die, based on contents
# $1 target to compile
# $2 to die, or not to die, based on contents
-make_target ()
+
function
make_target ()
{
if [[ -z "$1" ]]; then
die "Programmer error, no target provided for make"
{
if [[ -z "$1" ]]; then
die "Programmer error, no target provided for make"
@@
-630,34
+656,41
@@
make_target ()
fi
}
fi
}
-make_distcheck ()
+
function
make_distcheck ()
{
make_target 'distcheck'
}
{
make_target 'distcheck'
}
-make_rpm ()
+
function
make_rpm ()
{
run_configure_if_required
make_target 'rpm'
}
{
run_configure_if_required
make_target 'rpm'
}
-make_maintainer_clean ()
+
function
make_maintainer_clean ()
{
run_configure_if_required
make_target 'maintainer-clean' 'no_error'
}
{
run_configure_if_required
make_target 'maintainer-clean' 'no_error'
}
-make_check ()
+
function
make_check ()
{
make_target 'check'
}
{
make_target 'check'
}
-
make_all
()
+
function make_jenkins_default
()
{
{
+ run_configure
make_target 'all'
}
make_target 'all'
}
-run_configure_if_required ()
+function make_default ()
+{
+ run_configure_if_required
+ make_target 'all'
+}
+
+function run_configure_if_required ()
{
run_autoreconf_if_required
{
run_autoreconf_if_required
@@
-668,7
+701,7
@@
run_configure_if_required ()
assert_file 'Makefile' 'configure did not produce a Makefile'
}
assert_file 'Makefile' 'configure did not produce a Makefile'
}
-run_autoreconf_if_required ()
+
function
run_autoreconf_if_required ()
{
if [ ! -x 'configure' ]; then
run_autoreconf
{
if [ ! -x 'configure' ]; then
run_autoreconf
@@
-677,7
+710,7
@@
run_autoreconf_if_required ()
assert_exec_file 'configure'
}
assert_exec_file 'configure'
}
-run_autoreconf ()
+
function
run_autoreconf ()
{
if [[ -z "$AUTORECONF" ]]; then
die "Programmer error, tried to call run_autoreconf () but AUTORECONF was not set"
{
if [[ -z "$AUTORECONF" ]]; then
die "Programmer error, tried to call run_autoreconf () but AUTORECONF was not set"
@@
-699,7
+732,9
@@
function run ()
parse_command_line_options ()
{
parse_command_line_options ()
{
- local SHORTOPTS=':apcmt:dv'
+ local SHORTOPTS=':apcmt:dvh'
+
+ nassert MAKE_TARGET
while getopts "$SHORTOPTS" opt; do
case $opt in
while getopts "$SHORTOPTS" opt; do
case $opt in
@@
-727,6
+762,10
@@
parse_command_line_options ()
DEBUG_OPTION=true
enable_debug
;;
DEBUG_OPTION=true
enable_debug
;;
+ h) # help
+ echo "bootstrap.sh [options] optional_target ..."
+ exit
+ ;;
v) # verbose
VERBOSE_OPTION=true
VERBOSE=true
v) # verbose
VERBOSE_OPTION=true
VERBOSE=true
@@
-742,8
+781,10
@@
parse_command_line_options ()
esac
done
esac
done
+ shift $((OPTIND-1))
+
if [ -n "$1" ]; then
if [ -n "$1" ]; then
- MAKE_TARGET="$
1
"
+ MAKE_TARGET="$
@
"
fi
}
fi
}
@@
-949,6
+990,8
@@
make_for_autoreconf ()
check_make_target()
{
case $1 in
check_make_target()
{
case $1 in
+ 'self')
+ ;;
'gdb')
;;
'clean_op')
'gdb')
;;
'clean_op')
@@
-959,7
+1002,9
@@
check_make_target()
;;
'configure')
;;
;;
'configure')
;;
- 'rpm')
+ 'distcheck')
+ ;;
+ 'check')
;;
'snapshot')
;;
;;
'snapshot')
;;
@@
-975,6
+1020,12
@@
check_make_target()
;;
'all')
;;
;;
'all')
;;
+ 'test-*')
+ ;;
+ 'valgrind-*')
+ ;;
+ 'gdb-*')
+ ;;
'dist')
;;
*)
'dist')
;;
*)
@@
-983,7
+1034,7
@@
check_make_target()
esac
}
esac
}
-bootstrap ()
+
function
bootstrap ()
{
determine_target_platform
{
determine_target_platform
@@
-992,6
+1043,10
@@
bootstrap ()
# Set up whatever we need to do to use autoreconf later
autoreconf_setup
# Set up whatever we need to do to use autoreconf later
autoreconf_setup
+ if [ -z "$MAKE_TARGET" ]; then
+ MAKE_TARGET="make_default"
+ fi
+
if $PRINT_SETUP_OPTION -o $DEBUG; then
echo
print_setup
if $PRINT_SETUP_OPTION -o $DEBUG; then
echo
print_setup
@@
-1003,11
+1058,6
@@
bootstrap ()
fi
fi
fi
fi
- # Setup LIBTOOL_COMMAND if we need it
- if [ -f 'libtool' ]; then
- LIBTOOL_COMMAND='./libtool --mode=execute'
- fi
-
# Use OLD_TESTS_ENVIRONMENT for tracking the state of the variable
local OLD_TESTS_ENVIRONMENT=
# Use OLD_TESTS_ENVIRONMENT for tracking the state of the variable
local OLD_TESTS_ENVIRONMENT=
@@
-1016,15
+1066,22
@@
bootstrap ()
push_PREFIX_ARG $PREFIX
fi
push_PREFIX_ARG $PREFIX
fi
- #
Either we run a known target (or error), or we default to "all"
- if [[ -n "$MAKE_TARGET" ]]; then
+ #
We should always have a target by this point
+ assert MAKE_TARGET
+ local MAKE_TARGET_ARRAY=($MAKE_TARGET)
+
+ for target in "${MAKE_TARGET_ARRAY[@]}"
+ do
# If we are running inside of Jenkins, we want to only run some of the possible tests
if $jenkins_build_environment; then
# If we are running inside of Jenkins, we want to only run some of the possible tests
if $jenkins_build_environment; then
- check_make_target $
MAKE_TARGET
+ check_make_target $
target
fi
fi
- case $MAKE_TARGET in
+ case $target in
+ 'self')
+ self_test
+ ;;
'gdb')
make_gdb
;;
'gdb')
make_gdb
;;
@@
-1040,6
+1097,10
@@
bootstrap ()
'configure')
run_configure
;;
'configure')
run_configure
;;
+ 'default')
+ make
+ run_configure
+ ;;
'snapshot')
make_for_snapshot
;;
'snapshot')
make_for_snapshot
;;
@@
-1054,13
+1115,10
@@
bootstrap ()
;;
*)
run_configure_if_required
;;
*)
run_configure_if_required
- make_target
$MAKE_TARGET
+ make_target
"$target"
;;
esac
;;
esac
- else
- run_configure_if_required
- make_all
- fi
+ done
}
main ()
}
main ()
@@
-1108,15
+1166,15
@@
main ()
rebuild_host_os no_output
rebuild_host_os no_output
+ parse_command_line_options $@
+
# If we are running under Jenkins we predetermine what tests we will run against
# This MAKE_TARGET can be overridden by parse_command_line_options based MAKE_TARGET changes.
# We don't want Jenkins overriding other variables, so we NULL them.
# If we are running under Jenkins we predetermine what tests we will run against
# This MAKE_TARGET can be overridden by parse_command_line_options based MAKE_TARGET changes.
# We don't want Jenkins overriding other variables, so we NULL them.
- if
$jenkins_build_environment
; then
+ if
[ -z "$MAKE_TARGET" -a $jenkins_build_environment ]
; then
MAKE_TARGET='jenkins'
fi
MAKE_TARGET='jenkins'
fi
- parse_command_line_options $@
-
bootstrap
jobs -l
bootstrap
jobs -l