[RF] Move RooFit headers not starting with Roo in RooFit directory#9394
Conversation
|
Starting build on |
|
Build failed on ROOT-ubuntu2004/soversion. Errors:
And 127 more |
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
And 126 more |
|
Build failed on ROOT-performance-centos8-multicore/default. Errors:
And 126 more |
|
Build failed on mac11/cxx17. Errors:
And 141 more |
|
Build failed on mac1015/python3. Errors:
And 141 more |
cbdde32 to
321778a
Compare
|
Starting build on |
|
Build failed on mac11/cxx17. Failing tests: |
In the v6.26 development cycle cycle, some RooFit helper header files
whose names don't start with the `Roo` prefix sneaked into the
RooFitCore library. These headers have the overly generic names
`Floats.h` and `UniqueId.h`, which calls for trouble in environments
where the ROOT headers are directly installed in the main system include
path (most Linux distributions).
To prevent any possible issues, this commit proposes and follows new
conventions for RooFit headers:
* Installed RooFit headers must start with `Roo*` or must be located
in a subdirectory starting with `Roo*` (e.g. RooFit or RooStats).
* Similarly, if the class name doesn't start with Roo, it has to go in
a `Roo*` namespace (usually `RooFit`)
* Free functions always need to go in this namespace
* For implmentation details that we can't avoid installing, we can use
a `Roo*::Detail` namespace like we have with `ROOT::Detail` (same
with `Experimental`)
We should also keep in mind what we established in PR root-project#9078:
* `inc/` is for installed headers
* `res/` is for headers that are only used at compile time of other
ROOT components
* Headers only used within a library go to `src/`
This means that there is no need in specifiying the headers to install
manually in `roofit/rofitcore/CMakeLists.txt`. We can glob for all the
headers fulfilling the criteria above.
321778a to
7db0dca
Compare
|
Starting build on |
lmoneta
left a comment
There was a problem hiding this comment.
LGTM !
Thank you for this change that avoid exposing headers without a prefix at the top level which could cause conflicts.
|
Is there any of the moved headers that existed before v6.26? |
|
Hi @pcanal, no there isn't, that's why I take the opportunity now to follow the Roo* convention |
|
Build failed on mac11/cxx17. Failing tests: |
|
Starting build on |
|
Build failed on mac1015/python3. Errors:
|
|
Build failed on ROOT-ubuntu2004/soversion. Errors:
|
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
|
|
Build failed on ROOT-ubuntu16/nortcxxmod. Errors:
|
|
Build failed on mac11/cxx17. Errors:
|
|
Build failed on ROOT-performance-centos8-multicore/default. Errors:
|
|
Build failed on windows10/cxx14. Errors:
|
In the v6.26 development cycle cycle, some RooFit helper header files
whose names don't start with the
Rooprefix sneaked into theRooFitCore library. These headers have the overly generic names
Floats.handUniqueId.h, which calls for trouble in environmentswhere the ROOT headers are directly installed in the main system include
path (most Linux distributions).
To prevent any possible issues, this commit proposes and follows new
conventions for RooFit headers:
Roo*or must be locatedin a subdirectory starting with
Roo*(e.g. RooFit or RooStats).a
Roo*namespace (usuallyRooFit)a
Roo*::Detailnamespace like we have withROOT::Detail(samewith
Experimental)We should also keep in mind what we established in PR #9078:
inc/is for installed headersres/is for headers that are only used at compile time of otherROOT components
src/