[build][regression] Problems when trying to run automated regression tests for MSVC-7.1
Hi, Since Boost 1.55 minimum requirements include Visual C++ 2003. Since currently there is no regression report for this compiler, I'm trying to follow the steps detailed here and try to fill the gap: http://www.boost.org/development/running_regression_tests.html All the source code is downloaded, my user-config.jam only contains "using msvc ;" but it seems that Boost.Build continues to be broken for MSVC-7.1: <output> notice: Loading user-config configuration file 'user-config.jam' from 'C:/Users/igaztanaga'. notice: [msvc-cfg] msvc-7.1 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe' notice: will use 'C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe' for msvc, condition <toolset>msvc-7.1 C:/boost/develop/boost_bb/src/tools\msvc.jam:1072: in configure-really *** argument error * rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup : default-global-setup-options : default-setup ) * called with: ( 7.1 : C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin : C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7 : <command>C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe : i386 : : x86 : vcvars32.bat ) * missing argument global-setup C:/boost/develop/boost_bb/src/tools\msvc.jam:798:see definition of rule 'generate-setup-cmd' being called C:/boost/develop/boost_bb/src/tools\msvc.jam:201: in configure C:/boost/develop/boost_bb/src/tools\msvc.jam:153: in msvc.init C:/boost/develop/boost_bb/src/build\toolset.jam:43: in using C:\Users\igaztanaga\user-config.jam:49: in modules.load c:/boost/develop/boost_bb/src\build-system.jam:249: in load-config c:/boost/develop/boost_bb/src\build-system.jam:389: in load-configuration-files c:/boost/develop/boost_bb/src\build-system.jam:524: in load C:\boost\develop\boost_bb\src/kernel\modules.jam:295: in import C:\boost\develop\boost_bb\src/kernel/bootstrap.jam:139: in boost-build C:\boost\develop\boost_regression\boost-build.jam:57: in module scope </output> I can't figure out what's wrong in msvc.jam. Comments on that file suggest that MSVC-7.1 should be supported although it seems that since MSVC-8.0 the configuration script architecture changed. I'd be glad if any Boost.Build expert could have a look at this issue. Many thanks, Ion PS: Full output for command... python run.py --runner=igaztanaga --toolsets=msvc-7.1 --tag=develop --incremental --libraries=move --have-source > output.txt ...attached.
On 29-Sep-15 10:54 PM, Ion Gaztañaga wrote:
Hi,
Since Boost 1.55 minimum requirements include Visual C++ 2003. Since currently there is no regression report for this compiler, I'm trying to follow the steps detailed here and try to fill the gap:
http://www.boost.org/development/running_regression_tests.html
All the source code is downloaded, my user-config.jam only contains "using msvc ;" but it seems that Boost.Build continues to be broken for MSVC-7.1:
<output>
notice: Loading user-config configuration file 'user-config.jam' from 'C:/Users/igaztanaga'. notice: [msvc-cfg] msvc-7.1 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe' notice: will use 'C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe' for msvc, condition <toolset>msvc-7.1 C:/boost/develop/boost_bb/src/tools\msvc.jam:1072: in configure-really *** argument error * rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup : default-global-setup-options : default-setup ) * called with: ( 7.1 : C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin : C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7 : <command>C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe : i386 : : x86 : vcvars32.bat ) * missing argument global-setup
Ion, does the following patch (which basically makes global-setup argument optional), help? It seems the code of that function is already handling lack of global setup script (=vcvarsall.bat), but the signature does not. --- src/tools/msvc.jam +++ src/tools/msvc.jam @@ -793,10 +793,10 @@ actions write-setup-script # Local helper rule to create the vcvars setup command for given architecture # and options. # -local rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup : default-global-setup-options : default-setup ) +local rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup ? : default-global-setup-options : default-setup ) {
On 02/10/2015 20:19, Vladimir Prus wrote:
Ion,
does the following patch (which basically makes global-setup argument optional), help? It seems the code of that function is already handling lack of global setup script (=vcvarsall.bat), but the signature does not.
--- src/tools/msvc.jam +++ src/tools/msvc.jam @@ -793,10 +793,10 @@ actions write-setup-script # Local helper rule to create the vcvars setup command for given architecture # and options. # -local rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup : default-global-setup-options : default-setup ) +local rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup ? : default-global-setup-options : default-setup ) { Thanks. I tried that before, unfortunately a new error happened:
C:/boost/develop/boost_bb/src/tools\msvc.jam:834: in generate-setup-cmd *** argument error * rule maybe-rewrite-setup ( toolset : setup-script : setup-options : version : rewrite-setup ? ) * called with: ( msvc : : : 7.1 : ) * missing argument setup-script C:/boost/develop/boost_bb/src/tools\msvc.jam:746:see definition of rule 'maybe-rewrite-setup' being called C:/boost/develop/boost_bb/src/tools\msvc.jam:1072: in configure-really C:/boost/develop/boost_bb/src/tools\msvc.jam:201: in configure C:/boost/develop/boost_bb/src/tools\msvc.jam:153: in msvc.init C:/boost/develop/boost_bb/src/build\toolset.jam:43: in using C:\Users\igaztanaga\user-config.jam:49: in modules.load It seems that "maybe-rewrite-setup" does not support an optional "setup-script" argument, and the call to rewrite is not prepared for MSVC-7.1. I can't figure out what "$(setup:J=" ")" argument tries to do. I commented the line 834 as it seems to be an optimization for MSVC >= 10.0 and the process goes further. The build starts but it seems that hardlinks are not properly done and the compiler does not found includes. But the toolset seems ok now. So avoid the optimization for MSVC 7.1 seems a quick workaround as calling 7.1's vcvars32.bat is very quick. I've done a patch that makes the 1.59 boost package version compatible with MSVC 7.1 and a simple "using msvc ;" line in user-config.jam (before this I had to specify the vcvars32.bat path in user-config.jam), patch attached. Best, Ion
On 02-Oct-15 11:05 PM, Ion Gaztañaga wrote:
On 02/10/2015 20:19, Vladimir Prus wrote:
Ion,
does the following patch (which basically makes global-setup argument optional), help? It seems the code of that function is already handling lack of global setup script (=vcvarsall.bat), but the signature does not.
--- src/tools/msvc.jam +++ src/tools/msvc.jam @@ -793,10 +793,10 @@ actions write-setup-script # Local helper rule to create the vcvars setup command for given architecture # and options. # -local rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup : default-global-setup-options : default-setup ) +local rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup ? : default-global-setup-options : default-setup ) { Thanks. I tried that before, unfortunately a new error happened:
C:/boost/develop/boost_bb/src/tools\msvc.jam:834: in generate-setup-cmd *** argument error * rule maybe-rewrite-setup ( toolset : setup-script : setup-options : version : rewrite-setup ? ) * called with: ( msvc : : : 7.1 : ) * missing argument setup-script C:/boost/develop/boost_bb/src/tools\msvc.jam:746:see definition of rule 'maybe-rewrite-setup' being called C:/boost/develop/boost_bb/src/tools\msvc.jam:1072: in configure-really C:/boost/develop/boost_bb/src/tools\msvc.jam:201: in configure C:/boost/develop/boost_bb/src/tools\msvc.jam:153: in msvc.init C:/boost/develop/boost_bb/src/build\toolset.jam:43: in using C:\Users\igaztanaga\user-config.jam:49: in modules.load
It seems that "maybe-rewrite-setup" does not support an optional "setup-script" argument, and the call to rewrite is not prepared for MSVC-7.1. I can't figure out what "$(setup:J=" ")" argument tries to do.
I commented the line 834 as it seems to be an optimization for MSVC >= 10.0 and the process goes further. The build starts but it seems that hardlinks are not properly done and the compiler does not found includes. But the toolset seems ok now. So avoid the optimization for MSVC 7.1 seems a quick workaround as calling 7.1's vcvars32.bat is very quick.
$(setup:J=" ") is basically what " ".join(setup) is in Python - it joins all elements of a list with a separator. If that ends up empty, it means we failed to find setup script MSVC 7.1 at all. It might explain not finding includes. Could you find the line a bit above that reads: setup = [ locate-default-setup $(command) : $(parent) : $(default-setup) ] ; and add ECHO "locate-default-setup $(command:E=) : $(parent:E=) : $(default-setup:E=) -> $(setup:E=) " ; after it and see what that outputs? We might want to move this to boost-build@lists.boost.org though, as it's becoming rather detailed discussion. - Volodya
[Last post on Developer's list, CC'ing Build list] On 03/10/2015 9:24, Vladimir Prus wrote:
$(setup:J=" ") is basically what " ".join(setup) is in Python - it joins all elements of a list with a separator.
If that ends up empty, it means we failed to find setup script MSVC 7.1 at all. It might explain not finding includes.
With the patch that avoids "maybe-rewrite-setup" patch, regression was fine. I started again from a clean repo, includes were found (I guess hardlinks were not properly generated) and my report was generated. Search for runner "igaztanaga" in http://www.boost.org/development/tests/develop/developer/move.html so the problem seems to be related to "maybe-rewrite-setup".
Could you find the line a bit above that reads:
setup = [ locate-default-setup $(command) : $(parent) : $(default-setup) ] ;
and add
ECHO "locate-default-setup $(command:E=) : $(parent:E=) : $(default-setup:E=) -> $(setup:E=) " ;
after it and see what that outputs?
Here we go: locate-default-setup C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin : C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7 : vcvars32.bat -> C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat locate-default-setup C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin : C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7 : vcvarsx86_amd64.bat -> C:/Data/Libs/boost/tools/build/src/tools\msvc.jam:838: in generate-setup-cmd *** argument error * rule maybe-rewrite-setup ( toolset : setup-script : setup-options : version : rewrite-setup ? ) * called with: ( msvc : : : 7.1 : ) * missing argument setup-script C:/Data/Libs/boost/tools/build/src/tools\msvc.jam:746:see definition of rule 'maybe-rewrite-setup' being called C:/Data/Libs/boost/tools/build/src/tools\msvc.jam:1077: in configure-really C:/Data/Libs/boost/tools/build/src/tools\msvc.jam:201: in configure C:/Data/Libs/boost/tools/build/src/tools\msvc.jam:153: in msvc.init C:/Data/Libs/boost/tools/build/src/build\toolset.jam:43: in toolset.using C:/Data/Libs/boost/tools/build/src\build-system.jam:461: in process-explicit-toolset-requests C:/Data/Libs/boost/tools/build/src\build-system.jam:527: in load C:\Data\Libs\boost\tools\build\src/kernel\modules.jam:295: in import C:\Data\Libs\boost\tools\build\src/kernel/bootstrap.jam:139: in boost-build C:\Data\Libs\boost\boost-build.jam:17: in module scope
We might want to move this to boost-build@lists.boost.org though, as it's becoming rather detailed discussion.
Yes. I tried to subscribe before posting here but got no reply. I've just checked the gmail spam folder and the reply seems to there. So this would be the last post on Developer's list. Thanks, Ion
participants (2)
-
Ion Gaztañaga
-
Vladimir Prus