Repost: [Serialization] Build Fails for --layout=System, 1.33.1, vc-8_0 toolset, Win XP
Hi, This is a repost and is directed to Robert Ramey, since the serialization library is his baby and I assume he wrote the build configuration code for it. I got no reply the first time, and I really need to be able to build this way. I am having problems building Boost 1.33.1 under Windows XP for the vc-8_0 toolset. My problems seem to come from a bug in the build of the serialization library. The attached zip file contains information from 2 builds. One of them succeeds and the other fails. The difference between them is that the failed build includes "--layout=system" on the bjam command line, while the successful build does not. In both cases, the build is run by a script that makes sure the build location and the installation location are cleaned up before the build starts. In the zip file are the following files: * failedBoostBuild.log contains all of the output generated by bjam for the failed build. * failedConsoleTranscript.txt is the console output from the build script. It shows the bjam command line for the failed build. * failedInstalledLibList.txt is a "dir" listing of the library installation directory, after the failed build completed. * goodBoostBuild.log, goodConsoleTranscript.txt, and goodInstalledLibList.txt are the equivalents to the above for the successful build. I believe that there is an error shown in failedBoostBuild.log at line 3000. The line says: "LINK : fatal error LNK1104: cannot open file 'boost_serialization-vc80-mt-gd-1_33_1.lib'" and I believe that the error is that the library file name includes the toolset name and the Boost version number. Since I specified --layout=system, neither of these are included in the generated library names. There is a similar error at line 3058. If you compare the failedInstalledLibList.txt and goodInstalledLibList.txt, you can see that none of the boost_wserialization libraries are present in the failed case. I am guessing that they represent the four failed targets reported by bjam at the end of the build. I want to use the --layout=system naming conventions and do internal releases of the Boost libraries to our development environment. I have already done this successfully under Mac OSX, and I expected it to work the same way under Windows. If my conclusion that there is a build bug is correct, is there some workaround possible to make the build succeed? (I looked at the serialization jamfile and came away unenlightened. :-) Is there some other explanation? Thanks, Rush
I'm quoting all of the message for the benefit of the build list which I'm CCing. Rush Manbert wrote:
This is a repost and is directed to Robert Ramey, since the serialization library is his baby and I assume he wrote the build configuration code for it. I got no reply the first time, and I really need to be able to build this way.
I am having problems building Boost 1.33.1 under Windows XP for the vc-8_0 toolset. My problems seem to come from a bug in the build of the serialization library.
The attached zip file contains information from 2 builds. One of them succeeds and the other fails. The difference between them is that the failed build includes "--layout=system" on the bjam command line, while the successful build does not. In both cases, the build is run by a script that makes sure the build location and the installation location are cleaned up before the build starts.
In the zip file are the following files: * failedBoostBuild.log contains all of the output generated by bjam for the failed build. * failedConsoleTranscript.txt is the console output from the build script. It shows the bjam command line for the failed build. * failedInstalledLibList.txt is a "dir" listing of the library installation directory, after the failed build completed.
* goodBoostBuild.log, goodConsoleTranscript.txt, and goodInstalledLibList.txt are the equivalents to the above for the successful build.
I believe that there is an error shown in failedBoostBuild.log at line 3000. The line says:
"LINK : fatal error LNK1104: cannot open file 'boost_serialization-vc80-mt-gd-1_33_1.lib'"
and I believe that the error is that the library file name includes the toolset name and the Boost version number. Since I specified --layout=system, neither of these are included in the generated library names.
There is a similar error at line 3058.
If you compare the failedInstalledLibList.txt and goodInstalledLibList.txt, you can see that none of the boost_wserialization libraries are present in the failed case. I am guessing that they represent the four failed targets reported by bjam at the end of the build.
I want to use the --layout=system naming conventions and do internal releases of the Boost libraries to our development environment. I have already done this successfully under Mac OSX, and I expected it to work the same way under Windows.
If my conclusion that there is a build bug is correct, is there some workaround possible to make the build succeed? (I looked at the serialization jamfile and came away unenlightened. :-) Is there some other explanation?
Rush, It's the automatic linking, which we know doesn't work with the system layout option, which the Boost Serialization library uses internally by default. You can disable the autolink by defining BOOST_ALL_NO_LIB when building Boost as such: bjam "-sBUILD=debug release <runtime-link>static/dynamic <threading>single/multi <define>BOOST_ALL_NO_LIB" ... Looking at your error output I believe that will fix it for you. For the build list, Should we forcibly set the BOOST_ALL_NO_LIB when building the system layout? -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo
Rene Rivera wrote: <snip>
If my conclusion that there is a build bug is correct, is there some workaround possible to make the build succeed? (I looked at the serialization jamfile and came away unenlightened. :-) Is there some other explanation?
Rush,
It's the automatic linking, which we know doesn't work with the system layout option, which the Boost Serialization library uses internally by default. You can disable the autolink by defining BOOST_ALL_NO_LIB when building Boost as such:
bjam "-sBUILD=debug release <runtime-link>static/dynamic <threading>single/multi <define>BOOST_ALL_NO_LIB" ...
Looking at your error output I believe that will fix it for you.
Thanks Rene, that did the trick. I think I understand now about auto linking, because I had to fight with it again when I made my first Windows app that linked against a Boost library. I can see where the auto linking would be handy if it worked in all cases. Is there any plan to fix it for the system layout case? Maybe in 1.34? - Rush
participants (2)
-
Rene Rivera
-
Rush Manbert