Opened 12 years ago

Closed 12 years ago

#4912 closed Bugs (fixed)

boost filesystem v3 does not compile on AIX/v11.1

Reported by: Avi Singh Bahra <avibahra@…> 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)

comment:1 by Beman Dawes, 12 years ago

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

comment:2 by avibahra@…, 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

in reply to:  1 comment:3 by Avi Singh Bahra <avibahra@…>, 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\}:!$

in reply to:  2 comment:4 by Avi Singh Bahra <avibahra@…>, 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 Beman Dawes, 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

comment:6 by Beman Dawes, 12 years ago

Resolution: fixed
Status: newclosed

(In [66945]) Fix #4912

Note: See TracTickets for help on using tickets.