Patchwork [1/1] autogen-native 5.12: fix ccache issue

login
register
mail settings
Submitter Robert Yang
Date June 21, 2012, 10:04 a.m.
Message ID <43117c408ee5a090f94b1a9638f9056d87be9077.1340272953.git.liezhi.yang@windriver.com>
Download mbox | patch
Permalink /patch/30399/
State New
Headers show

Comments

Robert Yang - June 21, 2012, 10:04 a.m.
The autogen-native built error on FC17:

ccache: failed to create /dev/null/.ccache

This is because the gcc of FC17 is a symlink to ccache, so the ccache
will always be used regardless to the user's setting, ccache uses
$HOME/.ccache as the CCACHE_DIR if it has not been set, and autogen set
HOME=/dev/null.

Assign CCACHE_DIR the default value to preven it uses $HOME/.ccache
would fix the error.

[YOCTO #2554]

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 .../autogen/autogen-native_5.12.bb                 |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
Richard Purdie - June 21, 2012, 10:49 a.m.
On Thu, 2012-06-21 at 18:04 +0800, Robert Yang wrote:
> The autogen-native built error on FC17:
> 
> ccache: failed to create /dev/null/.ccache
> 
> This is because the gcc of FC17 is a symlink to ccache, so the ccache
> will always be used regardless to the user's setting, ccache uses
> $HOME/.ccache as the CCACHE_DIR if it has not been set, and autogen set
> HOME=/dev/null.
> 
> Assign CCACHE_DIR the default value to preven it uses $HOME/.ccache
> would fix the error.
> 
> [YOCTO #2554]
> 
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> ---
>  .../autogen/autogen-native_5.12.bb                 |   20 ++++++++++++++++++++
>  1 files changed, 20 insertions(+), 0 deletions(-)
> 
> diff --git a/meta/recipes-devtools/autogen/autogen-native_5.12.bb b/meta/recipes-devtools/autogen/autogen-native_5.12.bb
> index eb3721d..e80d555 100644
> --- a/meta/recipes-devtools/autogen/autogen-native_5.12.bb
> +++ b/meta/recipes-devtools/autogen/autogen-native_5.12.bb
> @@ -28,6 +28,26 @@ inherit autotools native
>  export GUILE_LOAD_PATH = "${STAGING_DATADIR_NATIVE}/guile/2.0"
>  export GUILE_LOAD_COMPILED_PATH = "${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache"
>  
> +#
> +# The do_compile_prepend is used for fixing a build error on FC17, the
> +# gcc of FC17 is a symlink to ccache, if we don't set the CCACHE_DIR,
> +# there would be an error:
> +#
> +# ccache: failed to create /dev/null/.ccache
> +#
> +# This is because ccache uses $HOME/.ccache as the CCACHE_DIR if it has
> +# not been set, and autogen set HOME=/dev/null.
> +#
> +# Assign CCACHE_DIR the default value so that it would not use
> +# $HOME/.ccache would fix the error.
> +#
> +do_compile_prepend() {
> +	if [ "${CCACHE_DIR}" = "" ]; then
> +		export CCACHE_DISABLE=true
> +		export CCACHE_DIR=$HOME
> +	fi
> +}
> +
>  do_install_append () {
>  	create_wrapper ${D}/${bindir}/autogen \
>  		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \

Could we just set CCACHE_DISABLE ?

In fact could we just set that globally?

I'm afraid I don't like fixing this on a per recipe basis...

Cheers,

Richard
Robert Yang - June 23, 2012, 2:49 a.m.
On 06/21/2012 06:49 PM, Richard Purdie wrote:
> On Thu, 2012-06-21 at 18:04 +0800, Robert Yang wrote:
>> The autogen-native built error on FC17:
>>
>> ccache: failed to create /dev/null/.ccache
>>
>> This is because the gcc of FC17 is a symlink to ccache, so the ccache
>> will always be used regardless to the user's setting, ccache uses
>> $HOME/.ccache as the CCACHE_DIR if it has not been set, and autogen set
>> HOME=/dev/null.
>>
>> Assign CCACHE_DIR the default value to preven it uses $HOME/.ccache
>> would fix the error.
>>
>> [YOCTO #2554]
>>
>> Signed-off-by: Robert Yang<liezhi.yang@windriver.com>
>> ---
>>   .../autogen/autogen-native_5.12.bb                 |   20 ++++++++++++++++++++
>>   1 files changed, 20 insertions(+), 0 deletions(-)
>>
>> diff --git a/meta/recipes-devtools/autogen/autogen-native_5.12.bb b/meta/recipes-devtools/autogen/autogen-native_5.12.bb
>> index eb3721d..e80d555 100644
>> --- a/meta/recipes-devtools/autogen/autogen-native_5.12.bb
>> +++ b/meta/recipes-devtools/autogen/autogen-native_5.12.bb
>> @@ -28,6 +28,26 @@ inherit autotools native
>>   export GUILE_LOAD_PATH = "${STAGING_DATADIR_NATIVE}/guile/2.0"
>>   export GUILE_LOAD_COMPILED_PATH = "${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache"
>>
>> +#
>> +# The do_compile_prepend is used for fixing a build error on FC17, the
>> +# gcc of FC17 is a symlink to ccache, if we don't set the CCACHE_DIR,
>> +# there would be an error:
>> +#
>> +# ccache: failed to create /dev/null/.ccache
>> +#
>> +# This is because ccache uses $HOME/.ccache as the CCACHE_DIR if it has
>> +# not been set, and autogen set HOME=/dev/null.
>> +#
>> +# Assign CCACHE_DIR the default value so that it would not use
>> +# $HOME/.ccache would fix the error.
>> +#
>> +do_compile_prepend() {
>> +	if [ "${CCACHE_DIR}" = "" ]; then
>> +		export CCACHE_DISABLE=true
>> +		export CCACHE_DIR=$HOME
>> +	fi
>> +}
>> +
>>   do_install_append () {
>>   	create_wrapper ${D}/${bindir}/autogen \
>>   		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \
>
> Could we just set CCACHE_DISABLE ?
>

I'm afraid not, it still has the same error if we just set CCACHE_DISABLE,
this is a bug of ccache 3.1.7, it may be fixed in ccache 3.2.

> In fact could we just set that globally?
>
> I'm afraid I don't like fixing this on a per recipe basis...
>

I think that this is only needed by the recipe which set HOME=/dev/null,
the autogen-native is the only one as far as I know, yes, fix it globally
would be better (disable it explicitly if it is not enabled), I will send a V2.

// Robert

> Cheers,
>
> Richard
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>

Patch

diff --git a/meta/recipes-devtools/autogen/autogen-native_5.12.bb b/meta/recipes-devtools/autogen/autogen-native_5.12.bb
index eb3721d..e80d555 100644
--- a/meta/recipes-devtools/autogen/autogen-native_5.12.bb
+++ b/meta/recipes-devtools/autogen/autogen-native_5.12.bb
@@ -28,6 +28,26 @@  inherit autotools native
 export GUILE_LOAD_PATH = "${STAGING_DATADIR_NATIVE}/guile/2.0"
 export GUILE_LOAD_COMPILED_PATH = "${STAGING_LIBDIR_NATIVE}/guile/2.0/ccache"
 
+#
+# The do_compile_prepend is used for fixing a build error on FC17, the
+# gcc of FC17 is a symlink to ccache, if we don't set the CCACHE_DIR,
+# there would be an error:
+#
+# ccache: failed to create /dev/null/.ccache
+#
+# This is because ccache uses $HOME/.ccache as the CCACHE_DIR if it has
+# not been set, and autogen set HOME=/dev/null.
+#
+# Assign CCACHE_DIR the default value so that it would not use
+# $HOME/.ccache would fix the error.
+#
+do_compile_prepend() {
+	if [ "${CCACHE_DIR}" = "" ]; then
+		export CCACHE_DISABLE=true
+		export CCACHE_DIR=$HOME
+	fi
+}
+
 do_install_append () {
 	create_wrapper ${D}/${bindir}/autogen \
 		GUILE_LOAD_PATH=${STAGING_DATADIR_NATIVE}/guile/2.0 \