1 #ifndef ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
2 #define ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
4 #include "art/Framework/Core/EDProducer.h"
5 #include "art/Framework/Core/ModuleMacros.h"
6 #include "art/Framework/Principal/Event.h"
7 #include "art/Framework/Principal/Run.h"
8 #include "artdaq-core/Data/PackageBuildInfo.hh"
9 #include "fhiclcpp/ParameterSet.h"
19 #define TRACE_NAME "BuildInfo"
38 explicit BuildInfo(fhicl::ParameterSet
const& p);
60 void produce(art::Event& e)
override;
68 std::unique_ptr<std::vector<PackageBuildInfo>> packages_;
69 std::string instanceName_;
71 template<
typename... Args>
74 template<
typename Arg>
75 struct fill_packages<Arg>
77 static void doit(std::vector<PackageBuildInfo>& packages)
79 packages.emplace_back(Arg::getPackageBuildInfo());
83 template<
typename Arg,
typename... Args>
84 struct fill_packages<Arg, Args...>
86 static void doit(std::vector<PackageBuildInfo>& packages)
88 packages.emplace_back(Arg::getPackageBuildInfo());
89 fill_packages<Args...>::doit(packages);
97 , packages_(new std::vector<PackageBuildInfo>())
98 , instanceName_(ps.get<std::string>(
"instance_name", *
instanceName))
100 fill_packages<Pkgs...>::doit(*packages_);
102 produces<std::vector<PackageBuildInfo>, art::InRun>(instanceName_);
119 auto packages_deep_copy_ptr = std::make_unique<std::vector<PackageBuildInfo>>(*packages_);
121 TLOG(TLVL_INFO,
"BuildInfo") <<
"Placing BuildInfo with instance name \"" << instanceName_ <<
"\"";
122 for (
auto& pbi : *packages_)
124 TLOG(TLVL_DEBUG) <<
"Package " << pbi.getPackageName() <<
": version " << pbi.getPackageVersion() <<
" built at " << pbi.getBuildTimestamp();
126 r.put(std::move(packages_deep_copy_ptr), instanceName_, art::fullRun());
136 #endif // ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
virtual ~BuildInfo()=default
Default Destructor.
void produce(art::Event &e) override
Perform actions for each event.
void beginRun(art::Run &r) override
Perform actions at the beginning of the Run.
BuildInfo(fhicl::ParameterSet const &p)
BuildInfo module Constructor.
BuildInfo is an art::EDProducer which saves information about package builds to the data file...
static std::string instanceName
Name of this BuildInfo instance.