dmake 2.39 KB
Newer Older
1 2 3 4 5
#!/bin/sh

# load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common

6
if [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then
7 8 9
	echo "dmake [-t] [-p] - make with distcc using (distributed build)"
	echo " -p  run in plain mode (without pump)"
	echo " -t  run test compiler via ssh for build hosts"
10 11 12
	exit 0
fi

13 14 15 16 17
if [ "$1" = "-p" ] ; then
	shift
	PLAIN_DISTCC=distcc
fi

18 19 20 21 22 23 24 25 26 27 28 29 30 31
get_quoted_list()
{
    local LIST=
    for i in $@ ; do
        LIST="$LIST$i,"
    done
    echo "$LIST"
}


if [ "$1" = "-t" ] ; then
	shift
	PDSH=$(which pdsh 2>/dev/null)
	[ -n "$PDSH" ] || fatal "Install pdsh package for test build cloud"
32
	docmd $PDSH -w$(get_quoted_list $DISTCC_64_HOSTS $DISTCC_32_HOSTS) "echo -n \"\$(g++ -v 2>&1 | tail -n1) ;  \$(distccd --version | head -n1 ) \$(ps ax | grep -v grep | grep -q distccd || echo "DISABLED")\" "
33 34 35
	exit
fi

36 37 38 39 40 41 42 43 44 45 46 47 48 49
extra_to_pump_mode()
{
    local LIST=
    if [ -n "$PLAIN_DISTCC" ] ; then
        echo "$@"
        return
    fi

    for i in $@ ; do
        LIST="$LIST $i,cpp,lzo"
    done
    echo "$LIST"
}

50
DISTCC=$(which distcc 2>/dev/null)
51 52 53 54 55 56 57 58 59
[ -n "$DISTCC" ] || fatal "Install distcc package for run distributed make via dmake"

if [ -n "$PLAIN_DISTCC" ] ; then
    PUMP=
else
    PUMP=$(which pump 2>/dev/null)
    [ -n "$PUMP" ] || fatal "Install distcc-pump package for run distributed make via dmake"
fi

60 61 62 63 64 65 66
COLORIFER=$(which colorifer 2>/dev/null)
if false && [ -n "$COLORIFER" ] ; then
    export COLORIFER_NAME=g++
    export COLORIFER_REDIRECT=$DISTCC
    DISTCC=$COLORIFER
fi

67
DISTCXX="$DISTCC"
68

69
if [ "$BUILDARCH" = "x86_64" ] ; then
70 71
    export DISTCC_HOSTS="$(extra_to_pump_mode $DISTCC_64_HOSTS)"
    DISTCC_THREADS=$DISTCC_64_THREADS
72
else
73
    export DISTCC_HOSTS="$(extra_to_pump_mode $DISTCC_64_HOSTS $DISTCC_32_HOSTS)"
74 75 76
    DISTCC_THREADS=$(($DISTCC_32_THREADS + $DISTCC_64_THREADS))
    DISTCC="$DISTCC gcc -m32"
    DISTCXX="$DISTCXX g++ -m32"
77 78
fi

79
echo "Build on '$DISTCC_HOSTS' hosts ($BUILDARCH arch)"
80

81 82 83 84 85 86 87 88 89 90 91
if [ -z "$DISTCC_HOSTS" ] || [ -z "$DISTCC_THREADS" ] ; then
    fatal "Set DISTCC_??_HOSTS and DISTCC_??_THREADS var in config"
fi

# Do not use all threads in plain mode
if [ -n "$PLAIN_DISTCC" ] ; then
    DISTCC_THREADS=$(($DISTCC_THREADS/2))
# FIXME: see lsdistcc also
#else
#    export DISTCC_POTENTIAL_HOSTS="$DISTCC_HOSTS"
#    unset DISTCC_HOSTS
92 93
fi

94
cd_to_realcwd
95
docmd $NICE time -p $PUMP make -j$DISTCC_THREADS CC="$DISTCC" CXX="$DISTCXX" "$@"