#!/bin/sh # load common functions, compatible with local and installed script . `dirname $0`/../share/eterbuild/functions/common if [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then 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" exit 0 fi if [ "$1" = "-p" ] ; then shift PLAIN_DISTCC=distcc fi 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" 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")\" " exit fi 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" } DISTCC=$(which distcc 2>/dev/null) [ -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 COLORIFER=$(which colorifer 2>/dev/null) if false && [ -n "$COLORIFER" ] ; then export COLORIFER_NAME=g++ export COLORIFER_REDIRECT=$DISTCC DISTCC=$COLORIFER fi DISTCXX="$DISTCC" if [ "$BUILDARCH" = "x86_64" ] ; then export DISTCC_HOSTS="$(extra_to_pump_mode $DISTCC_64_HOSTS)" DISTCC_THREADS=$DISTCC_64_THREADS else export DISTCC_HOSTS="$(extra_to_pump_mode $DISTCC_64_HOSTS $DISTCC_32_HOSTS)" DISTCC_THREADS=$(($DISTCC_32_THREADS + $DISTCC_64_THREADS)) DISTCC="$DISTCC gcc -m32" DISTCXX="$DISTCXX g++ -m32" fi echo "Build on '$DISTCC_HOSTS' hosts ($BUILDARCH arch)" 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 fi cd_to_realcwd docmd $NICE time -p $PUMP make -j$DISTCC_THREADS CC="$DISTCC" CXX="$DISTCXX" "$@"