1212#define FRAMEWORK_RUN_DATA_PROCESSING_H
1313
1414#include < fmt/format.h>
15+ #include " Framework/ConfigParamSpec.h"
1516#include " Framework/ChannelConfigurationPolicy.h"
1617#include " Framework/CallbacksPolicy.h"
1718#include " Framework/CompletionPolicy.h"
2223#include " Framework/SendingPolicy.h"
2324#include " Framework/WorkflowSpec.h"
2425#include " Framework/ConfigContext.h"
25- #include " Framework/BoostOptionsRetriever.h"
2626#include " Framework/CustomWorkflowTerminationHook.h"
2727#include " Framework/CommonServices.h"
2828#include " Framework/WorkflowCustomizationHelpers.h"
29- #include " Framework/ResourcePolicyHelpers.h"
3029#include " Framework/Logger.h"
3130#include " Framework/CheckTypes.h"
3231#include " Framework/StructToTuple.h"
33- #include " Framework/ConfigParamDiscovery.h"
3432#include " ResourcePolicy.h"
35- #include " ServiceRegistryRef.h"
3633#include < vector>
3734
3835namespace o2 ::framework
@@ -120,7 +117,9 @@ struct UserCustomizationsHelper {
120117namespace o2 ::framework
121118{
122119class ConfigContext ;
123- }
120+ class ConfigParamRegistry ;
121+ class ConfigParamSpec ;
122+ } // namespace o2::framework
124123// / Helper used to customize a workflow pipelining options
125124void overridePipeline (o2::framework::ConfigContext& ctx, std::vector<o2::framework::DataProcessorSpec>& workflow);
126125
@@ -155,10 +154,18 @@ std::vector<T> injectCustomizations()
155154 return policies;
156155}
157156
157+ void overrideAll (o2::framework::ConfigContext& ctx, std::vector<o2::framework::DataProcessorSpec>& workflow);
158+
159+ o2::framework::ConfigContext createConfigContext (std::unique_ptr<o2::framework::ConfigParamRegistry>& workflowOptionsRegistry,
160+ o2::framework::ServiceRegistry& configRegistry,
161+ std::vector<o2::framework::ConfigParamSpec>& workflowOptions,
162+ std::vector<o2::framework::ConfigParamSpec>& extraOptions, int argc, char ** argv);
163+
164+ std::unique_ptr<o2::framework::ServiceRegistry> createRegistry ();
165+
158166int mainNoCatch (int argc, char ** argv)
159167{
160168 using namespace o2 ::framework;
161- using namespace boost ::program_options;
162169
163170 std::vector<o2::framework::ConfigParamSpec> workflowOptions;
164171 UserCustomizationsHelper::userDefinedCustomization (workflowOptions);
@@ -171,24 +178,13 @@ int mainNoCatch(int argc, char** argv)
171178 std::vector<CallbacksPolicy> callbacksPolicies = injectCustomizations<CallbacksPolicy>();
172179 std::vector<SendingPolicy> sendingPolicies = injectCustomizations<SendingPolicy>();
173180
174- std::vector<std::unique_ptr<ParamRetriever>> retrievers;
175- std::unique_ptr<ParamRetriever> retriever{new BoostOptionsRetriever (true , argc, argv)};
176- retrievers.emplace_back (std::move (retriever));
177- auto workflowOptionsStore = std::make_unique<ConfigParamStore>(workflowOptions, std::move (retrievers));
178- workflowOptionsStore->preload ();
179- workflowOptionsStore->activate ();
180- ConfigParamRegistry workflowOptionsRegistry (std::move (workflowOptionsStore));
181- auto extraOptions = o2::framework::ConfigParamDiscovery::discover (workflowOptionsRegistry, argc, argv);
182- for (auto & extra : extraOptions) {
183- workflowOptions.push_back (extra);
184- }
181+ std::unique_ptr<ServiceRegistry> configRegistry = createRegistry ();
182+ std::vector<ConfigParamSpec> extraOptions;
183+ std::unique_ptr<ConfigParamRegistry> workflowOptionsRegistry{nullptr };
184+ auto configContext = createConfigContext (workflowOptionsRegistry, *configRegistry, workflowOptions, extraOptions, argc, argv);
185185
186- ServiceRegistry configRegistry;
187- ConfigContext configContext (workflowOptionsRegistry, ServiceRegistryRef{configRegistry}, argc, argv);
188186 o2::framework::WorkflowSpec specs = defineDataProcessing (configContext);
189- overrideCloning (configContext, specs);
190- overridePipeline (configContext, specs);
191- overrideLabels (configContext, specs);
187+ overrideAll (configContext, specs);
192188 for (auto & spec : specs) {
193189 UserCustomizationsHelper::userDefinedCustomization (spec.requiredServices );
194190 }
@@ -207,7 +203,6 @@ char* getIdString(int argc, char** argv);
207203int main (int argc, char ** argv)
208204{
209205 using namespace o2 ::framework;
210- using namespace boost ::program_options;
211206
212207 int result = callMain (argc, argv, mainNoCatch);
213208
0 commit comments