# #
###############################################################################
+BUILD_SPY_FILENAME=$BASEDIR/.build_spy
+BUILD_SPY_PID=$BUILD_SPY_FILENAME.pid
+
build_spy() {
- ## Do nothing if UUID is not set
- [ -z "${UUID}" ] && return
-
- ACTION=$1; KEY=$2; shift 2
- VAL="$*"
-
- DATA="uuid=${UUID}&action=${ACTION}"
- if [ "${ACTION}" == "set" ]; then
- DATA+="&key=${KEY}&val=\"${VAL}\""
- elif [ "${ACTION}" == "error" ]; then
- ## if we send an error we append
- # the last 10 lines of $LOGFILE
- LOG=$(tail -n 10 ${LOGFILE})
- DATA+="&log=${LOG}"
+ local COMMAND
+ COMMAND=$1
+ shift 1
+ if [ "$COMMAND" = "start" ]; then
+ BASEDIR=$BASEDIR UUID=$UUID NAME=$NAME VERSION=$VERSION \
+ LOGFILE="$BASEDIR/log_${TARGET}/_build.00-buildspy.log" \
+ $BASEDIR/tools/make-buildspy &
+ elif [ "$COMMAND" = "exit" ]; then
+ echo -n "BUILDSPY_EXIT " >> $BUILD_SPY_FILENAME
+ else
+ echo -n "${COMMAND}=$* " >> $BUILD_SPY_FILENAME
fi
-
- wget -q -O /dev/null --user-agent="${NAME}BuildSpy/${VERSION}" \
- --post-data="${DATA}" \
- http://build.ipfire.org/build.py
}
build_spy_send_profile() {
- MEM_SIZE=$[ $(grep "^MemTotal:" /proc/meminfo | awk '{ print $2 }') * 1024 ]
-
- CPU_CNT=$(grep "^processor" < /proc/cpuinfo | wc -l)
- CPU_MHZ=$(grep "^cpu MHz" --max-count=1 /proc/cpuinfo | \
- awk -F': ' '{ print $2 }')
- CPU_MIPS=$[ $(grep "^bogomips" --max-count=1 /proc/cpuinfo | \
- awk '{ print $3 }' | awk -F. '{ print $1 }') * ${CPU_CNT} ]
- CPU_NAME=$(grep "^model name" --max-count=1 /proc/cpuinfo | \
- awk -F': ' '{ print $2 }')
-
- build_spy set hostname ${HOSTNAME-$(hostname -f || hostname)}
- build_spy set cpu_mhz $CPU_MHZ
- build_spy set cpu_cnt $CPU_CNT
- build_spy set cpu_mips $CPU_MIPS
- build_spy set cpu_name $CPU_NAME
- build_spy set mem_size $MEM_SIZE
- build_spy set distcc ${DISTCC_PORT-3632}
+ build_spy target ${TARGET}
+ build_spy hostname ${HOSTNAME}
+ build_spy distcc ${DISTCC_PORT-3632}
+ build_spy jobs ${DISTCC_JOBS}
+ build_spy cpu $(grep ^model\ name /proc/cpuinfo | head -n1 | \
+ awk -F: '{ print $2 }' | $BASEDIR/tools/base64)
+ build_spy machine $(uname -m)
+ build_spy toolchain "${NAME}-${TOOLCHAINVERSION}"
}
+
+if [ "$(basename $0)" == "make-buildspy" ]; then
+ if [ -f "$BUILD_SPY_PID" ]; then
+ exit 0
+ fi
+ echo $$ > $BUILD_SPY_PID
+
+ while true; do
+ DATA+=$(cat $BUILD_SPY_FILENAME 2>/dev/null || true)
+ > $BUILD_SPY_FILENAME
+
+ for command in $DATA; do
+ if [ "$command" = "BUILDSPY_EXIT" ]; then
+ BUILDSPY_EXIT=1
+ break
+ fi
+ done
+
+ if [ -n "$DATA" ] && \
+ $BASEDIR/tools/buildspy \
+ action=set uuid=$UUID $DATA >> $LOGFILE 2>&1; then
+ DATA=""
+ fi
+
+ if [ "$BUILDSPY_EXIT" = "1" ]; then
+ break
+ fi
+
+ sleep 10
+ done
+ rm -f $BUILD_SPY_FILENAME $BUILD_SPY_PID
+fi