Bug #24652
A problem remains with selectors in art v3_06_01
Description
After the work in issue #24640 a problem remains with a selector that contains an operator!(). To reproduce on any mu2egpvm* machine:
Edit Log time Watch
Bug #24640
source /cvmfs/mu2e.opensciencegrid.org/setupmu2e-art.sh
git clone git@github.com:kutschke/Offline
cd Offline
scons -j 8 TrackerMC/src/MakeStrawGasSteps_module.os
The error message is:
In file included from /cvmfs/mu2e.opensciencegrid.org/artexternals/art/v3_06_01/include/art/Framework/Principal/DataViewImpl.h:11,
from /cvmfs/mu2e.opensciencegrid.org/artexternals/art/v3_06_01/include/art/Framework/Principal/Event.h:12,
from TrackerMC/src/MakeStrawGasSteps_module.cc:7:
/cvmfs/mu2e.opensciencegrid.org/artexternals/art/v3_06_01/include/art/Framework/Principal/Selector.h: In instantiation of 'std::enable_if_t<is_selector<A>, art::NotHelper<A> > art::operator!(A&&) [with A = art::ModuleLabelSelector; std::enable_if_t<is_selector<A>, art::NotHelper<A> > = art::NotHelper<art::ModuleLabelSelector>]':
TrackerMC/src/MakeStrawGasSteps_module.cc:147:55: required from here
/cvmfs/mu2e.opensciencegrid.org/artexternals/art/v3_06_01/include/art/Framework/Principal/Selector.h:278:24: error: cannot bind rvalue reference of type 'art::ModuleLabelSelector&&' to lvalue of type 'art::ModuleLabelSelector'
return NotHelper<A>{a};
^
/cvmfs/mu2e.opensciencegrid.org/artexternals/art/v3_06_01/include/art/Framework/Principal/Selector.h:255:12: note: initializing argument 1 of 'art::NotHelper<A>::NotHelper(A&&) [with A = art::ModuleLabelSelector]'
explicit NotHelper(A&& a) : a_{std::forward<A>(a)} {}
^~~~~~~
scons: *** [TrackerMC/src/MakeStrawGasSteps_module.os] Error 1
scons: building terminated because of errors.
Associated revisions
History
#1 Updated by Kyle Knoepfel 9 months ago
- Status changed from New to Feedback
- Category set to Infrastructure
Yes, there still appears to be a problem with the selectors. A short-term solution is to forgo the temporary module-label selector and add a private data member:
+ art::ModuleLabelSelector _labelSelector;
art::Selector _selector;
then in the initialization list of the constructor:
_keepDeltas(config().keepDeltas()),
+ _labelSelector{config().stepsToSkip()},
_selector{art::ProductInstanceNameSelector(config().trackerSteps()) &&
- !art::ModuleLabelSelector(config().stepsToSkip()) },
+ !_labelSelector },
It this is an acceptable solution, can I mark this bug as Low priority and slate the fix for our next release?
#2 Updated by Rob Kutschke 9 months ago
With that change it compiles. It will take maybe an hour to verify that the output is correct.
How long would it take to solve properly and make art v3_06_02 mu distribution available? I want to run production with this starting no later than Friday evening. If that's off the table we will do the temporary hack but I prefer not to.
#3 Updated by Kyle Knoepfel 9 months ago
I'm unlikely to get a new release of art out this week.
#4 Updated by Kyle Knoepfel 9 months ago
- % Done changed from 0 to 100
- Assignee set to Kyle Knoepfel
- Status changed from Feedback to Resolved
It was a simple, but subtle fix--and now we have the test in place to ensure it doesn't occur again. Fixed with commit art:b6f7c27.
Not certain about the release schedule yet. Stay tuned.
#5 Updated by Kyle Knoepfel 9 months ago
- Target version set to 3.06.02
#6 Updated by Kyle Knoepfel 9 months ago
- Status changed from Resolved to Closed
Fix issue #24652: Support 'not' rvalue selectors.