| Submitter | Qi.Chen@windriver.com |
|---|---|
| Date | Nov. 30, 2012, 3:08 a.m. |
| Message ID | <22684c7fc852e5c43d241e760fe8e1af7095f9ff.1354084523.git.Qi.Chen@windriver.com> |
| Download | mbox | patch |
| Permalink | /patch/39927/ |
| State | New |
| Headers | show |
Comments
Hi Richard, I saw that this series of patches have been merged except this one. Is there any problem with this patch? The thing is, if we don't fix autotool.bbclass like this, building coreutils will fail with a long TMPDIR (bug#2766). I tried to build coretuils with TMPDIR of 200 char length, it failed. Thanks, Chen Qi On 11/30/2012 11:08 AM, Qi.Chen@windriver.com wrote: > From: Chen Qi<Qi.Chen@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. > > [YOCTO #2766] > > Signed-off-by: Chen Qi<Qi.Chen@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 ca981ec..ce2d264 100644 > --- a/meta/classes/autotools.bbclass > +++ b/meta/classes/autotools.bbclass > @@ -138,8 +138,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/" > @@ -147,6 +150,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 > @@ -176,11 +184,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
On Tue, 2012-12-04 at 10:57 +0800, ChenQi wrote: > Hi Richard, > > I saw that this series of patches have been merged except this one. > Is there any problem with this patch? > > The thing is, if we don't fix autotool.bbclass like this, building > coreutils will fail with a long TMPDIR (bug#2766). I tried to build > coretuils with TMPDIR of 200 char length, it failed. I know but I'm rather unhappy having the autotools code work two rather different ways depending on the number of configure scripts a project has, it all seems like a bit of a hack :( I don't like the fix but I haven't found time to propose any alternative... Cheers, Richard
On 12/04/2012 04:39 PM, Richard Purdie wrote: > On Tue, 2012-12-04 at 10:57 +0800, ChenQi wrote: >> Hi Richard, >> >> I saw that this series of patches have been merged except this one. >> Is there any problem with this patch? >> >> The thing is, if we don't fix autotool.bbclass like this, building >> coreutils will fail with a long TMPDIR (bug#2766). I tried to build >> coretuils with TMPDIR of 200 char length, it failed. > I know but I'm rather unhappy having the autotools code work two rather > different ways depending on the number of configure scripts a project > has, it all seems like a bit of a hack :( > > I don't like the fix but I haven't found time to propose any > alternative... > > Cheers, > > Richard > > OK. I see. I've tried a lot but I can't figure out a better way to do it. Hope someone could come up with a better proposal to this problem:) Thanks, Chen Qi
Patch
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass index ca981ec..ce2d264 100644 --- a/meta/classes/autotools.bbclass +++ b/meta/classes/autotools.bbclass @@ -138,8 +138,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/" @@ -147,6 +150,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 @@ -176,11 +184,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