base.bbclass: Enable using 'make clean' for rebuilds

When something rebuilds say due to ${baselib} changing or some
other key variable, software is often not rebuilt due to the
fact that make detects no dependency change.

By running "make clean" when these changes occur, we can at least try
and ensure the correct rebuilds happen. We use the same checksum check as
autotools to decide if things have changed or not.

(From OE-Core rev: d06f2c089e01b7c67699800a7a54a4225233da93)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2014-10-24 15:17:03 +01:00
parent 444ae98131
commit 6bd2d9d395
1 changed files with 14 additions and 1 deletions

View File

@ -216,11 +216,24 @@ python base_eventhandler() {
}
CONFIGURESTAMPFILE = "${WORKDIR}/configure.sstate"
addtask configure after do_patch
do_configure[dirs] = "${S} ${B}"
do_configure[deptask] = "do_populate_sysroot"
base_do_configure() {
:
if [ -n "${CONFIGURESTAMPFILE}" -a -e "${CONFIGURESTAMPFILE}" ]; then
if [ "`cat ${CONFIGURESTAMPFILE}`" != "${BB_TASKHASH}" ]; then
cd ${B}
if [ -e Makefile -o -e makefile -o -e GNUmakefile ]; then
${MAKE} clean
fi
find ${B} -name \*.la -delete
fi
fi
if [ -n "${CONFIGURESTAMPFILE}" ]; then
echo ${BB_TASKHASH} > ${CONFIGURESTAMPFILE}
fi
}
addtask compile after do_configure