[Rivet] Rivet boost::BOOST_FOREACH

Andrii Verbytskyi andrii.verbytskyi at desy.de
Tue Aug 4 13:05:45 BST 2015


Dear Andy,
I just tried to compile 2.* versions of Rivet on CentOS
7/gcc4.8.3/boost1.53.
All those attempts failed, the compiler doesn't accept
the Rivet code:

----------------------------------------------------------------------
  CXX      libRivetCore_la-Run.lo
In file included from ../../include/Rivet/Run.hh:5:0,
                 from Run.cc:2:
../../include/Rivet/Tools/RivetBoost.hh:16:36: error: declaration of
namespace 'boost::BOOST_FOREACH' conflicts with
   namespace BOOST_FOREACH = foreach;
                                    ^
In file included from /usr/include/boost/foreach.hpp:89:0,
                 from ../../include/Rivet/Tools/RivetBoost.hh:12,
                 from ../../include/Rivet/Run.hh:5,
                 from Run.cc:2:
/usr/include/boost/foreach_fwd.hpp:56:1: error: previous declaration of
namespace 'boost::BOOST_FOREACH' here
 {
 ^
In file included from ../../include/Rivet/Math/MathUtils.hh:5:0,
                 from ../../include/Rivet/Math/Math.hh:5,
                 from ../../include/Rivet/Tools/Utils.hh:5,
                 from ../../include/Rivet/Config/RivetCommon.hh:26,
                 from ../../include/Rivet/AnalysisHandler.hh:5,
                 from Run.cc:3:
../../include/Rivet/Math/MathHeader.hh:45:16: warning: 'Rivet::MAXINT'
defined but not used [-Wunused-variable]
   const double MAXINT = std::numeric_limits<int>::max();
----------------------------------------------------------------------


It looks the reason is a well known (since 4 years!) BOOST bug.
1) Which compilers do you use for tests, i.e. with which compiler Rivet
will work?
2) Has anyone tried to compile Rivet with (new)gcc?
3) Is it possible to drop that construction from Rivet? It looks it
doesn't appear too often in the code and when it does the replacement is
obvious.


Best regards,
Andrii








On Fri, 2014-12-05 at 14:10 +0100, Andrii Verbytskyi wrote:
> Hi,
> yes, environment variables are working, however passing arguments via
> environment variables is implicit way and implicit way is worse that
> explicit. Also, in many cases environment variables will make things
> less convenient or even defunct. A good example is using rivet
> from a Makefile. One can say the same about using rivet in system() and
> so on. Also, the way of setting environment variables depends on shell
> --> less convenient usage of rivet even from shell.
> 
> 
> Best regards,
> Andrii
> 
> 
> 
> On Fri, 2014-12-05 at 13:00 +0000, Andy Buckley wrote:
> > Hi Andrii,
> > 
> > Don't the environment variables work for these? --analysis-path is just
> > syntactic sugar for those, and to be honest I was considering removing
> > it to clean up the command-line interface!
> > 
> > Andy
> > 
> > 
> > On 05/12/14 12:44, Andrii Verbytskyi wrote:
> > > Dear Andy,
> > > here are some (hopefully useful) improvements for Rivet.
> > > 
> > > In addition to --analysis-path I think it would be useful to have
> > > 
> > > --ref-path, --info-path, --plot-path.
> > > 
> > > 
> > > So here are the files with the changes. Please note that rivet should be
> > > generated from rivet.in with a substitution of install paths.
> > > 
> > > Best regards,
> > > Andrii
> > > 
> > 
> > 
> 
> 




More information about the Rivet mailing list