Project

General

Profile

Bug #14294

‘boost::filesystem::path’ has no member named ‘native’ when trying to build novasoft with art2/root6

Added by Christopher Backhouse about 3 years ago. Updated about 3 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
10/26/2016
Due date:
% Done:

0%

Estimated time:
Occurs In:
Scope:
Internal
Experiment:
NOvA
SSI Package:
Duration:

Description

Beginning conversion of novasoft to art2/root6 (specifically, I setup nutools v2_02_00), the first module I try to build, after running fix_headers_art.pl fails with this message

In file included from /grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Framework/Services/Registry/ServiceMacros.h:79:0,
                 from /grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Framework/Services/Optional/RandomNumberGenerator.h:162,
                 from /grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Framework/Core/EngineCreator.h:11,
                 from /grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Framework/Core/EDAnalyzer.h:10,
                 from /nova/app/users/bckhouse/dev_root6_attempt2/dev/RawData/DAQHeaderAna_module.cc:10:
/nova/app/users/bckhouse/dev_root6_attempt2/dev/RawData/DAQHeaderAna_module.cc: In function ‘std::string get_source_location()’:
/grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Utilities/BasicHelperMacros.h:25:29: error: ‘boost::filesystem::path’ has no member named ‘native’
     return bfs::complete(p).native();                    \
                             ^
/grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Framework/Core/ModuleMacros.h:46:5: note: in expansion of macro ‘PROVIDE_FILE_PATH’
     PROVIDE_FILE_PATH()                                                 \
     ^
/nova/app/users/bckhouse/dev_root6_attempt2/dev/RawData/DAQHeaderAna_module.cc:123:1: note: in expansion of macro ‘DEFINE_ART_MODULE’
 DEFINE_ART_MODULE(novaddt::DAQHeaderAna)
 ^
/grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Utilities/BasicHelperMacros.h:26:3: warning: control reaches end of non-void function [-Wreturn-type]
   }
   ^
/grid/fermiapp/products/nova/externals/art/v2_02_01/include/art/Framework/Core/ModuleMacros.h:46:5: note: in expansion of macro ‘PROVIDE_FILE_PATH’
     PROVIDE_FILE_PATH()                                                 \
     ^
/nova/app/users/bckhouse/dev_root6_attempt2/dev/RawData/DAQHeaderAna_module.cc:123:1: note: in expansion of macro ‘DEFINE_ART_MODULE’
 DEFINE_ART_MODULE(novaddt::DAQHeaderAna)
 ^

The version of boost setup is v1_61_0. Is DEFINE_ART_MODULE still what we should be using?

History

#1 Updated by Christopher Backhouse about 3 years ago

I'm suspecting some kind of version skew on our side, but if I build with VERBOSE=1 make I see -I/grid/fermiapp/products/nova/externals/boost/v1_61_0/Linux64bit+2.6-2.12-e10-debug/include and no other mentions of boost, and looking in /grid/fermiapp/products/nova/externals/boost/v1_61_0/Linux64bit+2.6-2.12-e10-debug/include/boost/filesystem/path.hpp the native() function is indeed in there.

Hmm, fiddling with the order of the options so that that -I comes much earlier seems to have fixed it. strace indicates that without that we wind up finding the boost headers from /usr/include/

So, fixed (if you count adding boost lines to all our makefiles "fixed"). But, colour me puzzled.

#2 Updated by Kyle Knoepfel about 3 years ago

Hi Chris, do you confirm, then, that this is not a bug in art, but it is a build-system issue?

#3 Updated by Kyle Knoepfel about 3 years ago

  • Status changed from New to Feedback

#4 Updated by Christopher Backhouse about 3 years ago

For those following along at home I finally solved it.

Our Makefiles have -I$(CPP0X_INC) -I$(BOOST_INC), and $CPP0X_INC doesn't exist anymore. So actually we were never searching for the boost headers in the right place. It's kind of sad that there's a fallback to the system headers instead of an actual failure, but I don't know what we can do about that. Maybe a #error if some boost preprocessor variable indicates we have a very old version?

#5 Updated by Kyle Knoepfel about 3 years ago

  • Status changed from Feedback to Rejected

After discussion, we conclude that this is an error in the build system and not art.



Also available in: Atom PDF