Skip to content

Storage of job execution environment in output files [4/4] #794

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ find_package(ifdhc REQUIRED )
find_package(ifdh_art REQUIRED )
find_package(Range-v3 REQUIRED )
find_package(sbnobj REQUIRED )
find_package(sbncode REQUIRED )
find_package(icarus_signal_processing REQUIRED )
find_package(icarusalg REQUIRED )
find_package(icarusutil REQUIRED )
Expand Down Expand Up @@ -91,10 +92,11 @@ find_package(FFTW3f REQUIRED )
find_package(FFTW3q REQUIRED )
find_package(FFTW3l REQUIRED )

# macros for dictionary and simple_plugin
# macros for dictionary and cet_build_plugin
include(ArtDictionary)
include(ArtMake)
include(BuildPlugins)
include(SBNutils)

# ADD SOURCE CODE SUBDIRECTORIES HERE
add_subdirectory(icaruscode)
Expand Down
14 changes: 14 additions & 0 deletions fcl/configurations/rootoutput_icarus.fcl
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,20 @@ icarus_rootoutput: {
compressionLevel: 1
dataTier: "simulated" # still parroting something I don't understand
saveMemoryObjectThreshold: 0

# this will run the SaveJobEnvironment results producer module every time
# RootOutput is used; see
# https://cdcvs.fnal.gov/redmine/projects/art/wiki/Release_Notes_11600#-Release-feature-Issue-7449-Analysis-support-requires-ability-to-store-objects-in-file-in-branch-other-than-Run-SubRun-or-Event
results: {
producers: {
writeConfig: {
plugin_type: SaveJobEnvironment
Repositories: [ icaruscode, sbndcode ]
}
}
result_path: [ writeConfig ]
}

} # icarus_rootoutput


Expand Down
1 change: 1 addition & 0 deletions icaruscode/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ add_subdirectory(RecoUtils)
add_subdirectory(TPC)
add_subdirectory(Utilities)
#add_subdirectory(Supera)
add_subdirectory(Metadata)
17 changes: 17 additions & 0 deletions icaruscode/Metadata/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
GenerateRepoVersionSource(${CMAKE_PROJECT_NAME})

message(DEBUG "Generated source file '${${CMAKE_PROJECT_NAME}_GIT_REPO_VERSION_SOURCE}.h'")

art_make_library()

cet_build_plugin(icaruscodeRepositoryVersion art::tool
LIBRARIES
icaruscode::Metadata
icarusalg::Metadata
sbncode::Metadata
sbnobj::Common_Metadata
)

install_headers(LIST "${CMAKE_CURRENT_BINARY_DIR}/${${CMAKE_PROJECT_NAME}_GIT_REPO_VERSION_SOURCE}.h")
install_source(LIST "${CMAKE_CURRENT_BINARY_DIR}/${${CMAKE_PROJECT_NAME}_GIT_REPO_VERSION_SOURCE}.cxx")

16 changes: 16 additions & 0 deletions icaruscode/Metadata/GITrepoVersion.cxx.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/**
* @file ${gitRepoVersionSourceStem}.cxx
* @brief GIT version for repository `${gitRepoName}`.
* @author automatically generated;
* template: Gianluca Petrillo (petrillo@slac.stanford.edu)
* @date January 18, 2025
* @see ${gitRepoVersionSourceStem}.h
*/

#include "${gitRepoVersionSourceStem}.h"

// -----------------------------------------------------------------------------
const char RepositoryVersion_${gitRepoName}[] = "${gitRepoVersion}";


// -----------------------------------------------------------------------------
18 changes: 18 additions & 0 deletions icaruscode/Metadata/GITrepoVersion.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* @file ${gitRepoVersionSourceStem}.h
* @brief GIT version for repository `${gitRepoName}`.
* @author automatically generated;
* template: Gianluca Petrillo (petrillo@slac.stanford.edu)
* @date January 18, 2025
* @see ${gitRepoVersionSourceStem}.cxx
*/

#ifndef ${gitRepoName}_${gitRepoVersionSourceStem}_H
#define ${gitRepoName}_${gitRepoVersionSourceStem}_H


/// Repository version for ${gitRepoName}.
extern const char RepositoryVersion_${gitRepoName}[];


#endif // ${gitRepoName}_${gitRepoVersionSourceStem}_H
67 changes: 67 additions & 0 deletions icaruscode/Metadata/icaruscodeRepositoryVersion_tool.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* @file RepositoryVersion_icaruscode_tool.cc
* @brief _art_ tool reporting the version of `icaruscode`-related packages.
* @author Gianluca Petrillo (petrillo@slac.stanford.edu)
* @date January 18, 2025
*
*/

// SBN libraries
#include "icaruscode/Metadata/RepositoryVersion_icaruscode.h"
#include "icarusalg/Metadata/RepositoryVersion_icarusalg.h"
#include "sbncode/Metadata/RepositoryVersionReportUtils.h"
#include "sbncode/Metadata/RepositoryVersionReporter.h"

// framework libraries
#include "art/Utilities/ToolMacros.h"
#include "art/Utilities/ToolConfigTable.h"
#include "messagefacility/MessageLogger/MessageLogger.h"

// C++ standard libraries
#include <string>
#include <vector>


// -----------------------------------------------------------------------------
namespace sbn { struct icaruscodeRepositoryVersion; }
/**
* @brief Implements the `sbn::RepositoryVersionReporter` interface for
* `icaruscode`.
*
* It collects information from the following repositories: `icaruscode`,
* `icarusalg` and `sbncode` (and its dependencies).
*
*/
struct sbn::icaruscodeRepositoryVersion: public sbn::RepositoryVersionReporter {

struct Config {};

using Parameters = art::ToolConfigTable<Config>;

icaruscodeRepositoryVersion(Parameters const&);

}; // sbn::icaruscodeRepositoryVersion()


// -----------------------------------------------------------------------------
// --- implementation
// -----------------------------------------------------------------------------
sbn::icaruscodeRepositoryVersion::icaruscodeRepositoryVersion(Parameters const&)
{

// this will consult with `sbncode` plugin and report its dependencies too:
addVersionFromRepository(packageVersions, "sbncode");

packageVersions.items.emplace_back("icarusalg", ::RepositoryVersion_icarusalg);
packageVersions.items.emplace_back("icaruscode", ::RepositoryVersion_icaruscode);

packageVersions.finish();

}


// -----------------------------------------------------------------------------
DEFINE_ART_CLASS_TOOL(sbn::icaruscodeRepositoryVersion)


// -----------------------------------------------------------------------------