[OE-core] [PATCH] autotools.bbclass: Add functionality to force a clean of ${B} when reconfiguring (and ${S} != ${B})

McClintock Matthew-B29882 B29882 at freescale.com
Tue Sep 11 19:01:25 UTC 2012


On Tue, Sep 11, 2012 at 9:22 AM, Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
> Unfortunately whilst rerunning configure and make against a project will mostly
> work there are situations where it does not correctly do the right thing.
>
> In particular, eglibc and gcc will fail out with errors where settings
> do not match a previously built configuration. It could be argued they are
> broken but the situation is what it is. There is the possibility of more subtle
> errors too.
>
> This patch adds removal of the build directory (${B}) when configure is
> rerunning, the sstate checksum for do_configure has changed and ${S} != ${B}.
> We could simply use a stamp but saving out the previous configuration checksum
> adds some data at no real overhead.
>
> If we find there are things where we want to disable this behaviour with
> CONFIGURESTAMPFILE = "" in the recipe, or users could disable it globally.
>
> [YOCTO #2774]
> [YOCTO #2848]
>
> This is particularly helpful for eglibc and gcc which use split builds by default and
> are a particular source of reconfigure type problems.
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

Is it feasible to back port this to denzil? I've encountered what I
think are similar issues reconfiguring gcc for example.

-M

> ---
> diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
> index 4c4bf87..a5997c5 100644
> --- a/meta/classes/autotools.bbclass
> +++ b/meta/classes/autotools.bbclass
> @@ -89,6 +89,27 @@ oe_runconf () {
>
>  AUTOTOOLS_AUXDIR ?= "${S}"
>
> +CONFIGURESTAMPFILE = "${WORKDIR}/configure.sstate"
> +
> +autotools_preconfigure() {
> +       if [ -n "${CONFIGURESTAMPFILE}" -a -e "${CONFIGURESTAMPFILE}" ]; then
> +               if [ "`cat ${CONFIGURESTAMPFILE}`" != "${BB_TASKHASH}" -a "${S}" != "${B}" ]; then
> +                       echo "Previously configured separate build directory detected, cleaning ${B}"
> +                       rm -rf ${B}
> +                       mkdir ${B}
> +               fi
> +       fi
> +}
> +
> +autotools_postconfigure(){
> +       if [ -n "${CONFIGURESTAMPFILE}" ]; then
> +               echo ${BB_TASKHASH} > ${CONFIGURESTAMPFILE}
> +       fi
> +}
> +
> +do_configure[prefuncs] += "autotools_preconfigure"
> +do_configure[postfuncs] += "autotools_postconfigure"
> +
>  autotools_do_configure() {
>         case ${PN} in
>         autoconf*)
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core




More information about the Openembedded-core mailing list