[OE-core] [PATCH 1/1] autotools.bbclass: use relative path for acpaths whenever possible

ChenQi Qi.Chen at windriver.com
Fri Nov 23 08:31:50 UTC 2012


On 11/22/2012 08:19 AM, Saul Wold wrote:
> On 11/08/2012 09:47 PM, Qi.Chen at windriver.com wrote:
>> From: Chen Qi <Qi.Chen at windriver.com>
>>
>> When the TMPDIR is very long, say, 410 characters, aclocal would
>> fail because the argument list is too long. This patch is an effort
>> to use relative path for acpaths whenever possible, aiming at
>> making the build system work correctly when the sanity check says OK.
>>
>> With the current implementation of autoreconf, it's impossible to
>> thoroughly replace absolute path with relative path. Therefore, we
>> use relative path when there's on subdirectory to configure; otherwise,
>> we use absolute path.
>>
> Have you done a world build long path names with this patch on 1.4 and 
> does it cause any failures with autoreconf and subdirs?
>
> Sau!
>
Hi Saul,

Thank you for your suggestion.

I did do the test before I sent out the patch, but at that time I only 
used 'bitbake core-image-sato'.
However when I re-tested it yesterday with 'bitbake world', qt4-native 
configure failed.
(Sorry for my carelessness.)

The failure is not caused by the changes in autotools.bbclass.
It failed to configure because *the path is too long to be fitted into 
the static char array defined in its qconfig.cpp file*.

Below are some details:
src/corelib/global/qconfig.cpp:11:67: *error: initializer-string for 
array of chars is too long* [-fpermissive]
The statements in qconfig.cpp that caused this failure are:
static const char qt_configure_prefix_path_str       [*256* + 12] = 
"qt_prfxpath=/buildarea/qchen1/poky/build-autotools-test/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs\
/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/s\
ubs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs0/sysroots/x86_64-linux/usr";
static const char qt_configure_documentation_path_str[*256* + 12] = 
"qt_docspath=/buildarea/qchen1/poky/build-autotools-test/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs\
/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/s\
ubs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs/subs0/sysroots/x86_64-linux/usr/doc";
...


Anyway it should be fixed as part of bug#2766 (long TMPDIR problem).
Thus, I'll rework on bug#2766 and try to fix it.

However, statements in qconfig.cpp lead me to doubt about the length 
limit of TMPDIR (currently 410).
As we see in qconfig.cpp, */if the TMPDIR has chars more than 256, it 
would fail for certain./*

*I think we should re-consider the length limit for TMPDIR.*


Thanks,
Chen Qi



>
>> [YOCTO #2766]
>>
>> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>> ---
>>   meta/classes/autotools.bbclass |   14 +++++++++-----
>>   1 file changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/meta/classes/autotools.bbclass 
>> b/meta/classes/autotools.bbclass
>> index b97d74b..86d8939 100644
>> --- a/meta/classes/autotools.bbclass
>> +++ b/meta/classes/autotools.bbclass
>> @@ -123,8 +123,11 @@ autotools_do_configure() {
>>           rm -f `dirname $ac`/configure
>>           done )
>>       if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
>> +               [ -e configure.in ] && CONFIGURE_AC=configure.in || 
>> CONFIGURE_AC=configure.ac
>>           olddir=`pwd`
>>           cd ${S}
>> +        # Determine whether there's subdirs to configure
>> +        grep -q -m 1 AC_CONFIG_SUBDIRS $CONFIGURE_AC && sub_cfg=1 || 
>> sub_cfg=0
>>           # Remove any previous copy of the m4 macros
>>           rm -rf ${B}/aclocal-copy/
>>           ACLOCAL="aclocal --system-acdir=${B}/aclocal-copy/"
>> @@ -132,6 +135,11 @@ autotools_do_configure() {
>>               acpaths=
>>               for i in `find ${S} -maxdepth 2 -name \*.m4|grep -v 
>> 'aclocal.m4'| \
>>                   grep -v 'acinclude.m4' | grep -v 'aclocal-copy' | 
>> sed -e 's,\(.*/\).*$,\1,'|sort -u`; do
>> +                    # If no subdirs to configure, we use relative path
>> +                    # This is used for supporting long TMPDIR in Yocto
>> +                    if [ $sub_cfg == 0 ]; then
>> +                        i=`echo $i | sed -e 's#${S}#\.#'`
>> +                fi
>>                   acpaths="$acpaths -I $i"
>>               done
>>           else
>> @@ -161,11 +169,7 @@ autotools_do_configure() {
>>           if ! echo ${EXTRA_AUTORECONF} | grep -q "aclocal"; then
>>               rm -f aclocal.m4
>>           fi
>> -        if [ -e configure.in ]; then
>> -            CONFIGURE_AC=configure.in
>> -        else
>> -            CONFIGURE_AC=configure.ac
>> -        fi
>> +
>>           if grep "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC 
>> >/dev/null; then
>>               if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then
>>                   : do nothing -- we still have an old unmodified 
>> configure.ac
>>
>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20121123/01c09230/attachment-0002.html>


More information about the Openembedded-core mailing list