X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=bootstrap.sh;h=1c2beff215d86e4ee8f10beeac949978c534e5e2;hb=2502dd7301613f0c8e278b10df139bb412fad928;hp=b9b6a02f14d3f87c12a552c4fef4f323de964a4b;hpb=7b7d9b168eab9d1753d6b72de17f98975df97986;p=m6w6%2Flibmemcached diff --git a/bootstrap.sh b/bootstrap.sh index b9b6a02f..1c2beff2 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -151,7 +151,8 @@ function rebuild_host_os () fi } -# Valid values are: darwin,fedora,rhel,ubuntu +# Validate the distribution name, or toss an erro +# values: darwin,fedora,rhel,ubuntu,debian,opensuse function set_VENDOR_DISTRIBUTION () { local dist=`echo "$1" | tr '[A-Z]' '[a-z]'` @@ -165,9 +166,15 @@ function set_VENDOR_DISTRIBUTION () rhel) VENDOR_DISTRIBUTION='rhel' ;; + debian) + VENDOR_DISTRIBUTION='debian' + ;; ubuntu) VENDOR_DISTRIBUTION='ubuntu' ;; + suse) + VENDOR_DISTRIBUTION='opensuse' + ;; opensuse) VENDOR_DISTRIBUTION='opensuse' ;; @@ -177,21 +184,49 @@ function set_VENDOR_DISTRIBUTION () esac } +# Validate a Vendor's release name/number function set_VENDOR_RELEASE () { local release=`echo "$1" | tr '[A-Z]' '[a-z]'` case "$VENDOR_DISTRIBUTION" in darwin) - VENDOR_RELEASE='mountain' + case "$VENDOR_DISTRIBUTION" in + 10.6*) + VENDOR_RELEASE='snow_leopard' + ;; + 10.7*) + VENDOR_RELEASE='mountain' + ;; + mountain) + VENDOR_RELEASE='mountain' + ;; + 10.8*) + VENDOR_RELEASE='mountain_lion' + ;; + *) + VENDOR_RELEASE='unknown' + ;; + esac ;; fedora) VENDOR_RELEASE="$release" + if [[ "x$VENDOR_RELEASE" == '18' ]]; then + VENDOR_RELEASE='sphericalcow' + fi ;; rhel) VENDOR_RELEASE="$release" ;; + debian) + VENDOR_RELEASE="$release" + ;; ubuntu) VENDOR_RELEASE="$release" + if [[ "x$VENDOR_RELEASE" == 'x12.04' ]]; then + VENDOR_RELEASE="precise" + elif [[ "x$VENDOR_RELEASE" == 'x12.10' ]]; then + VENDOR_RELEASE="quantal" + fi ;; opensuse) VENDOR_RELEASE="$release" @@ -206,7 +241,7 @@ function set_VENDOR_RELEASE () } -# Valid values are: apple, redhat, centos, canonical +# Valid values are: apple, redhat, centos, canonical, oracle, suse function set_VENDOR () { local vendor=`echo "$1" | tr '[A-Z]' '[a-z]'` @@ -218,12 +253,30 @@ function set_VENDOR () redhat) VENDOR='redhat' ;; + fedora) + VENDOR='redhat' + ;; + redhat-release-server-*) + VENDOR='redhat' + ;; + enterprise-release-*) + VENDOR='oracle' + ;; centos) VENDOR='centos' ;; canonical) VENDOR='canonical' ;; + ubuntu) + VENDOR='canonical' + ;; + debian) + VENDOR='debian' + ;; + opensuse) + VENDOR='suse' + ;; suse) VENDOR='suse' ;; @@ -234,6 +287,27 @@ function set_VENDOR () set_VENDOR_DISTRIBUTION $2 set_VENDOR_RELEASE $3 + + # Set which vendor/versions we trust for autoreconf + case $VENDOR_DISTRIBUTION in + fedora) + if [[ "x$VENDOR_RELEASE" == 'x18' ]]; then + AUTORECONF_REBUILD_HOST=true + elif [[ "x$VENDOR_RELEASE" == 'xsphericalcow' ]]; then + AUTORECONF_REBUILD_HOST=true + elif [[ "x$VENDOR_RELEASE" == 'x19' ]]; then + AUTORECONF_REBUILD_HOST=true + fi + ;; + canonical) + if [[ "x$VENDOR_RELEASE" == 'xprecise' ]]; then + AUTORECONF_REBUILD_HOST=true + elif [[ "x$VENDOR_RELEASE" == 'xquantal' ]]; then + AUTORECONF_REBUILD_HOST=true + fi + ;; + esac + } function determine_target_platform () @@ -242,14 +316,14 @@ function determine_target_platform () UNAME_KERNEL=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_KERNEL_RELEASE=`(uname -r) 2>/dev/null` || UNAME_KERNEL_RELEASE=unknown - if [[ $(uname) == 'Darwin' ]]; then + if [[ -x '/usr/bin/sw_vers' ]]; then + local _VERSION=`/usr/bin/sw_vers -productVersion` + set_VENDOR 'apple' 'darwin' $_VERSION + elif [[ $(uname) == 'Darwin' ]]; then set_VENDOR 'apple' 'darwin' 'mountain' elif [[ -f '/etc/fedora-release' ]]; then local fedora_version=`cat /etc/fedora-release | awk ' { print $3 } '` set_VENDOR 'redhat' 'fedora' $fedora_version - if [[ "x$VENDOR_RELEASE" == 'x17' ]]; then - AUTORECONF_REBUILD_HOST=true - fi elif [[ -f '/etc/centos-release' ]]; then local centos_version=`cat /etc/centos-release | awk ' { print $7 } '` set_VENDOR 'centos' 'rhel' $centos_version @@ -259,14 +333,18 @@ function determine_target_platform () set_VENDOR 'suse' $suse_distribution $suse_version elif [[ -f '/etc/redhat-release' ]]; then local rhel_version=`cat /etc/redhat-release | awk ' { print $7 } '` - set_VENDOR 'redhat' 'rhel' $rhel_version + local _vendor=`rpm -qf /etc/redhat-release` + set_VENDOR $_vendor 'rhel' $rhel_version + elif [[ -f '/etc/os-release' ]]; then + source '/etc/os-release' + set_VENDOR $ID $ID $VERSION_ID + elif [[ -x '/usr/bin/lsb_release' ]]; then + local _ID=`/usr/bin/lsb_release -s -i` + local _VERSION=`/usr/bin/lsb_release -s -r` + set_VENDOR $_ID $_ID $_VERSION_ID elif [[ -f '/etc/lsb-release' ]]; then - local debian_DISTRIB_ID=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= ' { print $2 } '` - local debian_version=`cat /etc/lsb-release | grep DISTRIB_CODENAME | awk -F= ' { print $2 } '` - set_VENDOR 'canonical' $debian_DISTRIB_ID $debian_version - if [[ "x$VENDOR_RELEASE" == 'xprecise' ]]; then - AUTORECONF_REBUILD_HOST=true - fi + source '/etc/lsb-release' + set_VENDOR 'canonical' $DISTRIB_ID $DISTRIB_CODENAME fi rebuild_host_os @@ -996,6 +1074,13 @@ function run_configure_if_required () assert_file 'Makefile' 'configure did not produce a Makefile' } +function run_make_maintainer_clean_if_possible () +{ + if [ -f 'Makefile' ]; then + make_maintainer_clean + fi +} + function run_autoreconf_if_required () { if [ ! -x 'configure' ]; then @@ -1003,6 +1088,7 @@ function run_autoreconf_if_required () fi assert_exec_file 'configure' + bash -n configure } function run_autoreconf () @@ -1398,18 +1484,21 @@ function check_make_target() ;; 'clang-analyzer') ;; - 'test-*') + test-*) ;; - 'valgrind-*') + valgrind-*) ;; - 'gdb-*') + gdb-*) ;; 'dist') ;; *) - die "Unknown MAKE_TARGET option: $1" + echo "Matched default" + return 1 ;; esac + + return 0 } function bootstrap () @@ -1457,8 +1546,14 @@ function bootstrap () # 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 $target + ret=$? + if [ $ret -ne 0 ]; then + die "Unknown MAKE_TARGET option: $target" + fi fi + local snapshot_run=false + case $target in 'self') self_test @@ -1516,6 +1611,7 @@ function bootstrap () ;; 'snapshot') make_for_snapshot + snapshot_run=true ;; 'rpm') make_rpm @@ -1534,6 +1630,13 @@ function bootstrap () make_target "$target" ;; esac + + if $jenkins_build_environment; then + if ! $snapshot_run; then + run_make_maintainer_clean_if_possible + fi + fi + done } @@ -1602,7 +1705,16 @@ function main () # We don't want Jenkins overriding other variables, so we NULL them. if [ -z "$MAKE_TARGET" ]; then if $jenkins_build_environment; then - MAKE_TARGET='jenkins' + if [[ -n "$label" ]]; then + check_make_target $label + if [ $? -eq 0 ]; then + MAKE_TARGET="$label" + fi + fi + + if [ -z "$MAKE_TARGET" ]; then + MAKE_TARGET='jenkins' + fi fi fi