request to patch libs/serialization/build/Jamfile.v2 for support of msvc-6.5

I tried to port parts of the libs/serialization/build/serialization.jam to bbv2 for better support of the msvc-6.5 compiler. I am currently running a regression which seems to have far lower failing tests. To build with this compiler it is necessary to check out the SPIRIT_RC_1_6_2 branch to a directory first. In the environmet or better in site-config the statement path-constant SPIRIT_RC_1_6_2 : "H:/Projects/boost/SPIRIT_RC_1_6_2" ; has to be added. Of course the shown path needs to be replaced with your checkout path. (Forgetting to do this will emit an error message with instructions.) Unfortunately this approach does not help with borland-8.5.2 because it still does not compile with SPIRIT_RC_1_6_2 in place. Any help on this highly appreciated! (patch attached) Roland ? patch.diff Index: Jamfile.v2 =================================================================== RCS file: /cvsroot/boost/boost/libs/serialization/build/Jamfile.v2,v retrieving revision 1.7 diff -u -r1.7 Jamfile.v2 --- Jamfile.v2 6 Mar 2006 08:20:39 -0000 1.7 +++ Jamfile.v2 26 Jan 2007 19:47:47 -0000 @@ -8,6 +8,8 @@ project boost/serialization : source-location ../src + : requirements + <conditional>@require-boost-spirit-support ; SOURCES = @@ -68,3 +70,32 @@ : : <link>shared:<define>BOOST_SERIALIZATION_DYN_LINK=1 ; + +# building this library needs the 1.6 version of spirit +# for certain compilers +rule require-boost-spirit-support ( properties * ) +{ + local result ; + local req-legacy = false ; + + if <toolset-msvc:version>6.5 in $(properties) { req-legacy = true ; } + if <toolset-borland:version>8.5.2 in $(properties) { req-legacy = true ; } + + if $(req-legacy) = true + { + if $(SPIRIT_RC_1_6_2) { + # using the <cxxflags> for include will ensure it comes before + # the regular boost includes + result += <cxxflags>-I$(SPIRIT_RC_1_6_2) ; + } + else { + echo "**** spirit 1.6x required to build serialization library with this compiler ****" ; + echo "**** You wil need to get branch SPIRIT_RC_1_6_2 from CVS and add ****" ; + echo "**** path-constant SPIRIT_RC_1_6_2 : your_path_to_checked_out_branch ; ****" ; + echo "**** to site-config.jam . ==> skipping build for now. ****" ; + result += <build>no ; + } + } + + return $(result) ; +}

Roland Schwarz wrote:
I tried to port parts of the libs/serialization/build/serialization.jam to bbv2 for better support of the msvc-6.5 compiler. [...] Unfortunately this approach does not help with borland-8.5.2 because it still does not compile with SPIRIT_RC_1_6_2 in place. Any help on this highly appreciated! [...] + if <toolset-borland:version>8.5.2 in $(properties) { req-legacy = true ; } ^ This should be 5.8.2!
Cheers, Nicola Musatti

Roland Schwarz wrote: [...]
Unfortunately this approach does not help with borland-8.5.2 because it still does not compile with SPIRIT_RC_1_6_2 in place. Any help on this highly appreciated!
Roland, I just realized that there's another problem: the branch to use is SPIRIT_1_6; although SPIRIT_RC_1_6_2 appears to be younger, it is a dead end. Sorry I didn't spot this any sooner and thanks for your help! Cheers, Nicola Musatti

Nicola Musatti wrote: Thanks for the 5.8.2!
Roland, I just realized that there's another problem: the branch to use is SPIRIT_1_6; although SPIRIT_RC_1_6_2 appears to be younger, it is a dead end.
Ok, I indeed found the SPIRIT_1_6 branch before I tried the SPIRIT_RC_1_6_2. But it didn't look like to be a complete tree. Should I use the same procedure to build? I.e. 1) checkout to say H:\SPIRIT_1_1 2) point my SPIRIT_RC_1_6_2 path constant to H:\SPIRIT_1_1 Roland

Roland Schwarz wrote:
Nicola Musatti wrote:
Thanks for the 5.8.2!
Roland, I just realized that there's another problem: the branch to use is SPIRIT_1_6; although SPIRIT_RC_1_6_2 appears to be younger, it is a dead end.
Ok, I indeed found the SPIRIT_1_6 branch before I tried the SPIRIT_RC_1_6_2. But it didn't look like to be a complete tree. Should I use the same procedure to build?
I.e.
1) checkout to say H:\SPIRIT_1_1
2) point my SPIRIT_RC_1_6_2 path constant to H:\SPIRIT_1_1
Yes, that should be the way. The important thing is the <cxxflags>-I BBv2 setting. Cheers, Nicola Musatti

Nicola Musatti wrote:
Roland Schwarz wrote:
1) checkout to say H:\SPIRIT_1_1
2) point my SPIRIT_RC_1_6_2 path constant to H:\SPIRIT_1_1
Yes, that should be the way. The important thing is the <cxxflags>-I BBv2 setting.
Sorry to tell you, but this is worse than branch SPIRIT_RC_1_6_2. It does not even compile the library (tested so far with msvc-6.5, I'll shortly give a try with borland-5.8.2). Roland

Roland Schwarz wrote:
Nicola Musatti wrote:
Roland Schwarz wrote:
1) checkout to say H:\SPIRIT_1_1
2) point my SPIRIT_RC_1_6_2 path constant to H:\SPIRIT_1_1 Yes, that should be the way. The important thing is the <cxxflags>-I BBv2 setting.
Sorry to tell you, but this is worse than branch SPIRIT_RC_1_6_2. It does not even compile the library (tested so far with msvc-6.5, I'll shortly give a try with borland-5.8.2).
I think I found a possible reason. The Spirit branches in the Boost CVS repository include also enough of Boost to make it possible to use Spirit without the full Boost distribution. This appears to be incompatible with the current 1.34 RC, at least where the Borland compiler is involved. In contrast the Spirit-Only distribution contains just /boost/boost/spirit.hpp /boost/boost/spirit/ /boost/libs/spirit/ I see three alternatives now: - I post my patched Spirit-Only somewhere, but I don't have an ftp site available; - You download Spirit-Only from the Spirit only site and patch it; - You remove the unnecessary directory and files from what you already have; I'm attaching the Python script I used to patch my distribution, in case you chose the second option. I'm sorry about all this. I set up my environment almost a year ago and forgot everything about it. Cheers, Nicola Musatti

Nicola Musatti wrote:
Roland Schwarz wrote:
Nicola Musatti wrote:
Roland Schwarz wrote:
1) checkout to say H:\SPIRIT_1_1
2) point my SPIRIT_RC_1_6_2 path constant to H:\SPIRIT_1_1 Yes, that should be the way. The important thing is the <cxxflags>-I BBv2 setting.
Sorry to tell you, but this is worse than branch SPIRIT_RC_1_6_2. It does not even compile the library (tested so far with msvc-6.5, I'll shortly give a try with borland-5.8.2).
I think I found a possible reason. The Spirit branches in the Boost CVS repository include also enough of Boost to make it possible to use Spirit without the full Boost distribution. This appears to be incompatible with the current 1.34 RC, at least where the Borland compiler is involved.
In contrast the Spirit-Only distribution contains just /boost/boost/spirit.hpp /boost/boost/spirit/ /boost/libs/spirit/
Is this "Spirit-Only" distribution available anywhere?
I see three alternatives now: - I post my patched Spirit-Only somewhere, but I don't have an ftp site available; - You download Spirit-Only from the Spirit only site and patch it; - You remove the unnecessary directory and files from what you already have;
I'm attaching the Python script I used to patch my distribution, in case you chose the second option.
I don't see any attachments, did you forget it?
I'm sorry about all this. I set up my environment almost a year ago and forgot everything about it.
Let me clarify -- does it means that no release of Spirit is known to work with 1.34 RC state of serialization and borland compiler? Then, maybe we should not spend much more time getting serialization tests to work with borland, because even if you or Roland succeed in making all tests green, then users might think everything is OK, while in practice they should follow non-trivial procedure to get it to work. What do you think? - Volodya

Vladimir Prus wrote:
Nicola Musatti wrote:
Roland Schwarz wrote: [...] In contrast the Spirit-Only distribution contains just /boost/boost/spirit.hpp /boost/boost/spirit/ /boost/libs/spirit/
Is this "Spirit-Only" distribution available anywhere?
I see three alternatives now: - I post my patched Spirit-Only somewhere, but I don't have an ftp site available; - You download Spirit-Only from the Spirit only site and patch it; - You remove the unnecessary directory and files from what you already have;
I'm attaching the Python script I used to patch my distribution, in case you chose the second option.
I don't see any attachments, did you forget it?
Oops, sorry.
I'm sorry about all this. I set up my environment almost a year ago and forgot everything about it.
Let me clarify -- does it means that no release of Spirit is known to work with 1.34 RC state of serialization and borland compiler?
It depends on how you plan to do it. If you replace Spirit within the Boost source tree, then version 1.6.3 does work. However this isn't a viable approach for regression tests. Unfortunately Spirit 1.6.3 requires my patch in order to be usable with Borland from outside the Boost source tree.
Then, maybe we should not spend much more time getting serialization tests to work with borland, because even if you or Roland succeed in making all tests green, then users might think everything is OK, while in practice they should follow non-trivial procedure to get it to work.
My plan is to issue Spirit 1.6.4 specifically for this reason; with Roland's patch using serialization with Borland is going to be much easier. Still, I wouldn't want 1.34 to be further delayed just for this reason. Unfortunately, what with the shift to BBv2 and the false positives in the regression tests I didn't realize what was going on until recently. Cheers, Nicola Musatti import os, re baseDir = "D:\\src\\boost\\boost\\spirit" inclRe = re.compile(R"^(\s*#\s*include\s*)\"(boost.*)\"(\s*)$") extensions = ( ".cpp", ".hpp", ".ipp" ) for path, dirs, files in os.walk(baseDir) : for fn in files : e = os.path.splitext(fn)[1] if e in extensions : p = os.path.join(path,fn) src = file(p) for l in src : if inclRe.match(l) : src.close() src = file(p) temp = p+".NEW" dest = file(temp,"w+") for ln in src : m = inclRe.match(ln) if m : dest.write(m.group(1)+"<"+m.group(2)+">"+ m.group(3)) else : dest.write(ln) src.close() dest.close() backup = p+".BAK" if os.access(backup,os.F_OK) : os.remove(backup) os.rename(p,backup) os.rename(temp,p) break if 'CVS' in dirs : dirs.remove('CVS')

Vladimir Prus wrote:
Then, maybe we should not spend much more time getting serialization tests to work with borland, because even if you or Roland succeed in making all tests green, then users might think everything is OK, while in practice they should follow non-trivial procedure to get it to work.
What do you think?
Either we do have a simple enough procedure for the user to follow (which we don't have yet) or we shouldn't waste more time to get the serialization regressions to run for 1.34. Also a user that really needs serialization always can opt. to use an older version of boost serialization. Having said this I nevertheless think it will be fine if Nicola can mange it to provide a working back ported version for the both compilers. This very well can be done after the release of 1.34. So my vote is for flagging serialization as "n/a The library author marked it as unusable on this particular platform/toolset." for msvc-6.5 and borland-5.8.2 The last word of course is up to Thomas Witt. Roland

Roland Schwarz wrote:
So my vote is for flagging serialization as "n/a The library author marked it as unusable on this particular platform/toolset." for msvc-6.5 and borland-5.8.2
I have two concern here, given that serialization is supported for 1.33.1. THis is earmarked as the last officially support Boost release for MSVC6 (and BCB6 for that matter, once MetaComm tests return) It would be a shame if all that effort was wasted, as dropping a major library like serialization at the last minute might kill the adoption rate. This is a much bigger problem for Borland 5.8.2 users though, as Boost 1.33.1 does not support that compiler. I am desperate to see a new Boost release, just to be using a stable release package rather than my 'home-hack' from April. But I know lack of serialization would be a major issue for Borland customers. Given this seemed to be working a couple of weeks ago, and Nicola is on the case for updating the build instructions, I would like to see him given the time to do that. After waiting almost 14 months already, I would really like the end result to pay off. A scary option would be to mark them n/a to hasten release, and plan a short-cycle 1.34.1 once the updated Spirit support is in. My concern with this plan is that everyone will lose interest once 1.34 ships, and without testing 1.34.1 will never happen.
The last word of course is up to Thomas Witt.
Absolutely. -- AlisdairM

AlisdairM wrote:
Roland Schwarz wrote:
So my vote is for flagging serialization as "n/a The library author marked it as unusable on this particular platform/toolset." for msvc-6.5 and borland-5.8.2
I have two concern here, given that serialization is supported for 1.33.1.
Given this seemed to be working a couple of weeks ago, and Nicola is on
I think the key issue here is "seemed".
the case for updating the build instructions, I would like to see him given the time to do that. After waiting almost 14 months already, I would really like the end result to pay off.
A scary option would be to mark them n/a to hasten release, and plan a short-cycle 1.34.1 once the updated Spirit support is in. My concern with this plan is that everyone will lose interest once 1.34 ships, and without testing 1.34.1 will never happen.
I understand your concerns, but at this stage I think we have to focus on getting it out the door. A slightly more optimistic way to look at it: If there is enough user interest there will be support for 1.34.1.
The last word of course is up to Thomas Witt.
I am with Roland on this one. That being said I don't want to discourage people working on this. As long as it does not take time from 1.34.0 it's still worthwile I think. Thomas -- Thomas Witt witt@acm.org

Thomas Witt wrote:
AlisdairM wrote:
Roland Schwarz wrote: [...] A scary option would be to mark them n/a to hasten release, and plan a short-cycle 1.34.1 once the updated Spirit support is in. My concern with this plan is that everyone will lose interest once 1.34 ships, and without testing 1.34.1 will never happen.
I understand your concerns, but at this stage I think we have to focus on getting it out the door. A slightly more optimistic way to look at it: If there is enough user interest there will be support for 1.34.1. [...] I am with Roland on this one. That being said I don't want to discourage people working on this. As long as it does not take time from 1.34.0 it's still worthwile I think.
The current situation is much better than what it looks like from the latest reports. Yesterday's tests from Anthony (JustSoftwareSolutions-debug) lack proper Spirit 1.6 setup, but show the positive effect of Volodya's latest Borland patch; the monday tests from Roland (speedsnail-dbg) lack Volodya's patch, but show the positive effect of correctly setting Spirit 1.6 for Borland. Once we manage to get a set of tests with both effects combined there should only be very many tests still failing which shall probably be marked expected. Cheers, Nicola Musatti

Nicola Musatti <Nicola.Musatti@gmail.com> writes:
The current situation is much better than what it looks like from the latest reports. Yesterday's tests from Anthony (JustSoftwareSolutions-debug) lack proper Spirit 1.6 setup, but show the positive effect of Volodya's latest Borland patch; the monday tests from Roland (speedsnail-dbg) lack Volodya's patch, but show the positive effect of correctly setting Spirit 1.6 for Borland.
Once we manage to get a set of tests with both effects combined there should only be very many tests still failing which shall probably be marked expected.
I'm just about to kick off such a test run. Anthony -- Anthony Williams Just Software Solutions Ltd - http://www.justsoftwaresolutions.co.uk Registered in England, Company Number 5478976. Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL

Anthony Williams <anthony_w.geo@yahoo.com> writes:
Nicola Musatti <Nicola.Musatti@gmail.com> writes:
The current situation is much better than what it looks like from the latest reports. Yesterday's tests from Anthony (JustSoftwareSolutions-debug) lack proper Spirit 1.6 setup, but show the positive effect of Volodya's latest Borland patch; the monday tests from Roland (speedsnail-dbg) lack Volodya's patch, but show the positive effect of correctly setting Spirit 1.6 for Borland.
Once we manage to get a set of tests with both effects combined there should only be very many tests still failing which shall probably be marked expected.
I'm just about to kick off such a test run.
I did.... and there's a problem: my bjam.log says syntax error at EOF warning: Python location is not configured warning: the Boost.Python library won't be built error: Unable to find file or target named error: '/boost/python//boost_python' error: referred from project at error: '../libs/parameter/test' Here's my new user-config.jam, just in case that's the problem: using python : 2.5 : c:/local/python25 ; using msvc : 6.5 : c:/progra~1/micros~3/vc98/bin/cl.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost"; using msvc : all ; using gcc : 3.4.0 : c:/local/mingw/bin/g++.exe ; using borland : 5.8.2 : c:/progra~1/borland/bds/4.0/bin/bcc32.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost" ; using msvc : 6.5~release : c:/progra~1/micros~3/vc98/bin/cl.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost"; using msvc : 7.1~release : c:/local/vc71/bin/cl.exe ; using msvc : 8.0express~release : c:/progra~1/MID05A~1/vc/bin/cl.exe ; using gcc : 3.4.0~release : "c:/local/mingw/bin/g++.exe" ; using borland : 5.8.2~release : c:/progra~1/borland/bds/4.0/bin/bcc32.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost"; Anthony -- Anthony Williams Just Software Solutions Ltd - http://www.justsoftwaresolutions.co.uk Registered in England, Company Number 5478976. Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL

I think (not sure!) you need a whitespace character before the trailing semicolon. Boris ----- Original Message ----- From: "Anthony Williams" <anthony_w.geo@yahoo.com> To: <boost@lists.boost.org> Sent: Wednesday, January 31, 2007 2:40 PM Subject: Re: [boost] request to patch libs/serialization/build/Jamfile.v2forsupport of msvc-6.5
Anthony Williams <anthony_w.geo@yahoo.com> writes:
Nicola Musatti <Nicola.Musatti@gmail.com> writes:
The current situation is much better than what it looks like from the latest reports. Yesterday's tests from Anthony (JustSoftwareSolutions-debug) lack proper Spirit 1.6 setup, but show the positive effect of Volodya's latest Borland patch; the monday tests from Roland (speedsnail-dbg) lack Volodya's patch, but show the positive effect of correctly setting Spirit 1.6 for Borland.
Once we manage to get a set of tests with both effects combined there should only be very many tests still failing which shall probably be marked expected.
I'm just about to kick off such a test run.
I did.... and there's a problem: my bjam.log says
syntax error at EOF warning: Python location is not configured warning: the Boost.Python library won't be built error: Unable to find file or target named error: '/boost/python//boost_python' error: referred from project at error: '../libs/parameter/test'
Here's my new user-config.jam, just in case that's the problem:
using python : 2.5 : c:/local/python25 ;
using msvc : 6.5 : c:/progra~1/micros~3/vc98/bin/cl.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost"; using msvc : all ; using gcc : 3.4.0 : c:/local/mingw/bin/g++.exe ; using borland : 5.8.2 : c:/progra~1/borland/bds/4.0/bin/bcc32.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost" ;
using msvc : 6.5~release : c:/progra~1/micros~3/vc98/bin/cl.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost"; using msvc : 7.1~release : c:/local/vc71/bin/cl.exe ; using msvc : 8.0express~release : c:/progra~1/MID05A~1/vc/bin/cl.exe ; using gcc : 3.4.0~release : "c:/local/mingw/bin/g++.exe" ; using borland : 5.8.2~release : c:/progra~1/borland/bds/4.0/bin/bcc32.exe : <cxxflags>-I"g:/boost/spirit-1.6.4/boost";
Anthony -- Anthony Williams Just Software Solutions Ltd - http://www.justsoftwaresolutions.co.uk Registered in England, Company Number 5478976. Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Boris Gubenko wrote:
I think (not sure!) you need a whitespace character before the trailing semicolon.
Almost for sure! Hint: Try bjam --debug-configuration this should print out the found paths. Roland

Roland Schwarz <roland.schwarz@chello.at> writes:
Boris Gubenko wrote:
I think (not sure!) you need a whitespace character before the trailing semicolon.
Almost for sure!
Thanks guys! I knew that, but didn't spot it. I'll do a run tonight now that's fixed. Anthony -- Anthony Williams Just Software Solutions Ltd - http://www.justsoftwaresolutions.co.uk Registered in England, Company Number 5478976. Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL
participants (7)
-
AlisdairM
-
Anthony Williams
-
Boris Gubenko
-
Nicola Musatti
-
Roland Schwarz
-
Thomas Witt
-
Vladimir Prus