Opened 12 years ago
Closed 12 years ago
#4912 closed Bugs (fixed)
boost filesystem v3 does not compile on AIX/v11.1
Reported by: | Owned by: | Beman Dawes | |
---|---|---|---|
Milestone: | To Be Determined | Component: | filesystem |
Version: | Boost 1.45.0 | Severity: | Showstopper |
Keywords: | Cc: |
Description
boost file system does compile on AIX v11.1 compiler
Error's of the following are shown:
vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/operations.o "./boost/filesystem/v3/path.hpp", line 482.7: 1540-0716 (S) The template argument "boost::iterator" does not match the template parameter "class Derived".
If this is compiler specific please contact Michael Wong, IBM, Toronto
Change History (6)
follow-up: 3 comment:1 by , 12 years ago
follow-up: 4 comment:2 by , 12 years ago
Yes the problem was with boost version 1.45. Version 1.43 compiles and all prevous versions are ok. My workaround at the moment was to comment on v3 filesystem src in the jamfile, until a solution is found. Is there any more information I can supply or try ?
Best regards Avi
comment:3 by , 12 years ago
Replying to bemandawes:
The regression tests are not showing this problem. The test compiler is reported as XL C/C++ Enterprise Edition for AIX, V11.1.0.0
Was the problem with the Boost 1.45.0 release?
I'm not going to be able to do anything without more to go on.
--Beman
Here is the bjam command line used to build file system c1b0104\{/s1a/emos_esuite/emos_data/sms/boost_1_45_0\}:!$ cd $BOOST_ROOT c1b0104\{/s1a/emos_esuite/emos_data/sms/boost_1_45_0\}:!$ bjam -d2 --build-dir=./tmpBuildDir toolset=vacpp stage link=static --layout=tagged --with-filesystem variant=debug ...patience... ...found 492 targets... ...updating 6 targets... vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/operations.o
xlC_r -c -qsuppress=1540-0198 -DAIX -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_STATIC_LINK=1 -qcpluscmt -qNOOPTimize -qnoinline -g -qfullpath -qfuncsect -qeh -qrtti -I"." -I"/s1a/emos_esuite/emos_data/sms/boost_1_45_0" -o "tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/operations.o" "libs/filesystem/v3/src/operations.cpp"
"./boost/filesystem/v3/path.hpp", line 482.7: 1540-0716 (S) The template argument "boost::iterator" does not match the template parameter "class Derived". ...failed vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/operations.o... vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/path.o
xlC_r -c -qsuppress=1540-0198 -DAIX -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_STATIC_LINK=1 -qcpluscmt -qNOOPTimize -qnoinline -g -qfullpath -qfuncsect -qeh -qrtti -I"." -I"/s1a/emos_esuite/emos_data/sms/boost_1_45_0" -o "tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/path.o" "libs/filesystem/v3/src/path.cpp"
"./boost/filesystem/v3/path.hpp", line 482.7: 1540-0716 (S) The template argument "boost::iterator" does not match the template parameter "class Derived". ...failed vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/path.o... vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/portability.o
xlC_r -c -qsuppress=1540-0198 -DAIX -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_STATIC_LINK=1 -qcpluscmt -qNOOPTimize -qnoinline -g -qfullpath -qfuncsect -qeh -qrtti -I"." -I"/s1a/emos_esuite/emos_data/sms/boost_1_45_0" -o "tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/portability.o" "libs/filesystem/v3/src/portability.cpp"
"./boost/filesystem/v3/path.hpp", line 482.7: 1540-0716 (S) The template argument "boost::iterator" does not match the template parameter "class Derived". ...failed vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/portability.o... vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/unique_path.o
xlC_r -c -qsuppress=1540-0198 -DAIX -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_STATIC_LINK=1 -qcpluscmt -qNOOPTimize -qnoinline -g -qfullpath -qfuncsect -qeh -qrtti -I"." -I"/s1a/emos_esuite/emos_data/sms/boost_1_45_0" -o "tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/unique_path.o" "libs/filesystem/v3/src/unique_path.cpp"
"./boost/filesystem/v3/path.hpp", line 482.7: 1540-0716 (S) The template argument "boost::iterator" does not match the template parameter "class Derived". ...failed vacpp.compile.c++ tmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi/v3/src/unique_path.o... ...skipped <ptmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi>libboost_filesystem-mt-d.a for lack of <ptmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi>v3/src/operations.o... ...skipped <pstage/lib>libboost_filesystem-mt-d.a for lack of <ptmpBuildDir/boost/bin.v2/libs/filesystem/build/vacpp/debug/link-static/threading-multi>libboost_filesystem-mt-d.a... ...failed updating 4 targets... ...skipped 2 targets... c1b0104\{/s1a/emos_esuite/emos_data/sms/boost_1_45_0\}:!$
comment:4 by , 12 years ago
Replying to avibahra@…:
Yes the problem was with boost version 1.45. Version 1.43 compiles and all prevous versions are ok. My workaround at the moment was to comment on v3 filesystem src in the jamfile, until a solution is found. Is there any more information I can supply or try ?
Best regards Avi
TO *FIX* the file system v3 for AIX./v11.1
Change file path.hpp: FROM:
------------------------------------------------------------------------------------ class path::iterator ------------------------------------------------------------------------------------
class path::iterator
: public boost::iterator_facade<
iterator, path const, boost::bidirectional_traversal_tag >
{
....
TO:
------------------------------------------------------------------------------------ class path::iterator ------------------------------------------------------------------------------------
class path::iterator
: public boost::iterator_facade<
path::iterator, path const, boost::bidirectional_traversal_tag >
{
....
ie. since iterator_facade uses CRTP, the iterator is being interperted as "boost::iterator"
passing "path::iterator" as the template argument fixes the compile error on AIX. This should be safe for other platforms as well
comment:5 by , 12 years ago
Interesting. I had just been wondering if that was the problem, and run a test that confirmed the change was harmless on VC++ 10.
I'll push the change up to trunk as soon as I've verified it is OK on older VC++ and on GCC.
You might want to file a bug report with IBM, and also verify you are at the latest patch level. The 1.45.0 code is being accepted by all other compilers being tested.
--Beman
The regression tests are not showing this problem. The test compiler is reported as XL C/C++ Enterprise Edition for AIX, V11.1.0.0
Was the problem with the Boost 1.45.0 release?
I'm not going to be able to do anything without more to go on.
--Beman