Subject: Re: [Boost-bugs] [Boost C++ Libraries] #7212: ./b2 fails with 'import error: length of source and target rule name lists don't match!'
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2012-08-29 15:21:30
#7212: ./b2 fails with 'import error: length of source and target rule name lists
don't match!'
-------------------------------+--------------------------------------------
Reporter: anonymous | Owner: vladimir_prus
Type: Bugs | Status: new
Milestone: To Be Determined | Component: build
Version: Boost 1.51.0 | Severity: Problem
Resolution: | Keywords:
-------------------------------+--------------------------------------------
Comment (by jurko):
It would be great if some more people affected by this problem would come
back to us so we can compare their environment with Kims.
And here's a status update after doing some interactive debugging with
Kim.
The problem seems to have been introduced by some of the variable
expansion changes made between Boost library 1.49 & 1.50 releases but the
effects are ***really really wierd***. My guess is that the changed code
is somehow triggering a compiler/optimizer bug.
The problematic function in new code is expand(), located in the
function.c module. In the original 1.49 Boost library release code-base,
that function did not exist and its work seems to have been done by the
var_string() function in the variable.c module (and possibly some other
function in the later removed expand.c module - did not check).
There we have a 'while ( --i >= 0 )' loop around the middle of that
function which never seems to get entered on the target system. Weird
thing is that if we add the following code just before that while loop:
{{{
if ( --i >= 0 ) { printf( "%d\n", i ); }
++i;
}}}
Then everything works fine.
On the other hand, if we leave in the same code but without the printf()
call - then we're back to the original problem - most likely due to the
optimizer recognizing and removing the dummy code.
We still have not done the following on the target system:
- tried using the debug Boost Jam build
- collected version information (Linux/gcc/glibc)
The 'warning' problem mentioned seems to be caused by the target system's
include files (old version perhaps?) not declaring the strndup() function
unless the _GNU_SOURCE symbol is defined, but that warning existed with
Boost library 1.49 release and fixing it in the current trunk has no
effect on the initial variable expansion problem. I'll fix that by
rewriting the code to not use strndup() in the first place (will replace
it with some malloc()/strncpy() combination).
For more information on the planned expand() function changes - see the
Boost Build mailing list.
Hope this helps.
Best regards,
Jurko GospodnetiÄ
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi
/boost-build
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/7212#comment:13> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:10 UTC