Re: Cross-build issues in gdb/gnulib
Adding gnulib@ Original thread here: https://sourceware.org/ml/gdb/2015-08/msg00037.html Thanks, Pedro Alves On 08/25/2015 02:12 PM, paul_kon...@dell.com wrote: > >> On Aug 25, 2015, at 5:56 AM, Pedro Alves wrote: >> >> On 08/24/2015 10:20 PM, paul_kon...@dell.com wrote: >>> I'm running into strange problems cross-building with V7.7.1; it looks like >>> the same configure machinery is present in later versions as well. >>> >>> The problem is that the configure script in gdb/gnulib tries to run a >>> number of tests, by building and then executing "conftest". It does so >>> unconditionally, there are no checks for whether this is a cross-build, >>> specifically build = x86_64-linux, host = target = netbsd. >> >> I have no idea why configure is trying to run the test in your case, but I >> just yesterday >> updated master's gnulib copy to current upstream gnulib master. Previously >> we had >> a 2012 copy. I don't see any AC_TRY_RUN in current master, for instance, >> though I didn't check older versions. In any case, try seeing if current >> master makes >> a difference. > > I tracked down the spot in the configure sources where the problem > originates. There is no AC_TRY_RUN involved. Instead, the issue is this bit > of code in gnulib/import/m4/locale-ja.m4: > > # Test for the AIX locale name. > if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; > then > gt_cv_locale_ja=ja_JP > > The comment refers to AIX, but it is in fact executed in the "*" case of a > case statement, i.e., for everything other than Windows. The same code > pattern also appears in the two other locale-*.m4 files. > > So it looks like that code needs some sort of guard checking for cross-build, > and some sort of default action if so. I'm not particularly fluent in > configure unfortunately. > > A quick look at the latest master shows that these files are unchanged by > yesterday's update (other than copyright year). > > paul >
Re: Cross-build issues in gdb/gnulib
Pedro Alves wrote: # Test for the AIX locale name. if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP The comment refers to AIX, but it is in fact executed in the "*" case of a case statement, i.e., for everything other than Windows. The same code pattern also appears in the two other locale-*.m4 files. I'm lost. Do you have a specific Gnulib patch in mind?
Re: Cross-build issues in gdb/gnulib
> On Aug 25, 2015, at 12:58 PM, Paul Eggert wrote: > > Pedro Alves wrote: >> # Test for the AIX locale name. >>> if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; >>> then >>>gt_cv_locale_ja=ja_JP >>> >>> The comment refers to AIX, but it is in fact executed in the "*" case of a >>> case statement, i.e., for everything other than Windows. The same code >>> pattern also appears in the two other locale-*.m4 files. > > I'm lost. Do you have a specific Gnulib patch in mind? Perhaps you missed the original problem report, which is that this configure machinery doesn't take into account cross-builds. And that broke badly on a build=X86_64-linux, host=i386-netbsdelf cross-build, because Linux attempted to execute the generated conftest image (a NetBSD image). That's wrong of course, but worse yet, it got into an infinite loop, apparently the emulation is buggy. So my build got stuck. I learned about AC_RUN_IFELSE and constructed a fix with that. paul
Re: Cross-build issues in gdb/gnulib
> On Aug 25, 2015, at 12:58 PM, Paul Eggert wrote: > > Pedro Alves wrote: >> # Test for the AIX locale name. >>> if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; >>> then >>>gt_cv_locale_ja=ja_JP >>> >>> The comment refers to AIX, but it is in fact executed in the "*" case of a >>> case statement, i.e., for everything other than Windows. The same code >>> pattern also appears in the two other locale-*.m4 files. > > I'm lost. Do you have a specific Gnulib patch in mind? I didn't when I wrote that -- all I had was a diagnosis of the underlying bug. In the meantime I found an autoconf manual and constructed a fix for this issue. I'll send a patch soon, want to do some more testing. Where should the fix be sent? paul
Re: Cross-build issues in gdb/gnulib
On 08/25/2015 06:06 PM, paul_kon...@dell.com wrote: > >> On Aug 25, 2015, at 12:58 PM, Paul Eggert wrote: >> >> Pedro Alves wrote: >>> # Test for the AIX locale name. if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP The comment refers to AIX, but it is in fact executed in the "*" case of a case statement, i.e., for everything other than Windows. The same code pattern also appears in the two other locale-*.m4 files. >> >> I'm lost. Do you have a specific Gnulib patch in mind? > > I didn't when I wrote that -- all I had was a diagnosis of the underlying bug. > > In the meantime I found an autoconf manual and constructed a fix for this > issue. I'll send a patch soon, want to do some more testing. > > Where should the fix be sent? To bug-gnulib@gnu.org. I can update gdb's copy once gnulib master has it fixed. Thanks, Pedro Alves