Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
dad567b
PR fixes recommendations.
hariharan-devarajan Nov 7, 2025
db2413d
feat: Enhance argument parsing and logging, add UTF-8 character remov…
hariharan-devarajan Nov 7, 2025
3ac58e3
PR fixes recommendations.
hariharan-devarajan Nov 7, 2025
6a985fa
Change states to be store in /run
hariharan-devarajan Nov 7, 2025
25b6ebd
Added Lustre configurations
hariharan-devarajan Nov 11, 2025
13269f1
Merge pull request #153 from LLNL/bugfix/bash
hariharan-devarajan Nov 11, 2025
66a44fa
Added slurm integration
hariharan-devarajan Nov 13, 2025
7e2dac1
Merge pull request #155 from LLNL/feature/slurm
hariharan-devarajan Nov 14, 2025
016f54f
The composable names are checked in user's and install user's directory.
hariharan-devarajan Nov 14, 2025
410d465
handle bool variables while printing help
hariharan-devarajan Nov 14, 2025
2929250
Merge pull request #160 from LLNL/bugfix/help-sub-command
hariharan-devarajan Nov 15, 2025
b268d09
Merge pull request #159 from LLNL/feature/compose-install-user
hariharan-devarajan Nov 15, 2025
67daa4d
Enhance probe management by adding enable_explorer flag and loading e…
hariharan-devarajan Nov 16, 2025
6fb898b
Merge pull request #161 from LLNL/feature/selective-exploration
hariharan-devarajan Nov 16, 2025
0970508
added initial docs
hariharan-devarajan Nov 21, 2025
68cfe63
Merge pull request #163 from LLNL/docs/initial_docs
hariharan-devarajan Nov 22, 2025
02762d8
Enhance DataCrumbs scripts by adding server start/stop functionality …
hariharan-devarajan Nov 29, 2025
8032827
Merge pull request #164 from LLNL/bugfix/compose_rimn
hariharan-devarajan Nov 29, 2025
416a3a7
adding callgraph docs
asparsa Dec 1, 2025
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
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// Sets the run context to one level up instead of the .devcontainer folder.
"context": "..",
// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
"dockerfile": "../Dockerfile",
"dockerfile": "../infrastructure/docker/Dockerfile",
},
"runArgs": [
"-ti",
Expand Down
62 changes: 31 additions & 31 deletions .github/workflows/docker-build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Docker Build and Test
on:
push:
pull_request:
branches: [ develop, stage-in ]
branches: [develop, stage-in]
workflow_dispatch:

env:
Expand All @@ -13,37 +13,37 @@ env:
jobs:
docker-build-and-test:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build Docker image
run: |
docker buildx build \
--cache-from=type=gha \
--cache-to=type=gha,mode=max \
--load \
-t ${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_TAG }} \
-f infrastrutcure/docker/Dockerfile \
.
- name: Build Docker image
run: |
docker buildx build \
--cache-from=type=gha \
--cache-to=type=gha,mode=max \
--load \
-t ${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_TAG }} \
-f infrastructure/docker/Dockerfile \
.

- name: Run DataCrumbs tests
run: |
docker run --rm \
-v /lib/modules/:/lib/modules:ro \
-v /sys/kernel/debug/:/sys/kernel/debug:rw \
--net=host \
--pid=host \
--privileged \
--cap-add sys_admin \
--cap-add sys_ptrace \
--hostname docker \
-v /sys/fs/bpf:/sys/fs/bpf \
${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_TAG }} \
bash -c /opt/datacrumbs/infrastrutcure/docker/test_run.sh
- name: Run DataCrumbs tests
run: |
docker run --rm \
-v /lib/modules/:/lib/modules:ro \
-v /sys/kernel/debug/:/sys/kernel/debug:rw \
--net=host \
--pid=host \
--privileged \
--cap-add sys_admin \
--cap-add sys_ptrace \
--hostname docker \
-v /sys/fs/bpf:/sys/fs/bpf \
${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_TAG }} \
bash -c /opt/datacrumbs/infrastructure/docker/test_run.sh
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,8 @@ poc/bpf-core/vmlinux.h
deps

#nfs
*.nfs*
*.nfs*

# Sphinx documentation builds
docs/_build/
docs/_static/__pycache__/
3 changes: 0 additions & 3 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
{
"cmake.configureArgs": [
"-DCMAKE_PREFIX_PATH=/home/cc/datacrumbs/dependency/.spack-env/view"
],
"editor.formatOnSave": true,
"files.associations": {
"string": "cpp",
Expand Down
27 changes: 22 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ option(DATACRUMBS_TRACE_ALL_PROCESSES_OPT "Trace all processes" OFF)
set(DATACRUMBS_INCLUSION_PATH "NONE" CACHE STRING "Inclusion path for datacrumbs")
set(DATACRUMBS_CONFIGURED_TRACE_DIR "/tmp" CACHE STRING "Trace directory for datacrumbs")
set(DATACRUMBS_CONFIGURED_LOG_DIR "/tmp" CACHE STRING "Log directory for datacrumbs")
set(DATACRUMBS_CONFIGURED_RUN_DIR "NONE" CACHE STRING "Run directory for datacrumbs")

option(DATACRUMBS_BPF_PRINT_ENABLE "Enable BPF print" OFF)
set(DATACRUMBS_MODE_STR "TRACE" CACHE STRING "Mode for datacrumbs (TRACE or PROFILE)")
Expand All @@ -84,6 +85,15 @@ set(DATACRUMBS_SKIP_SMALL_EVENTS_THRESHOLD_NS "1000" CACHE STRING "Threshold in
# Profiling Options
set(DATACRUMBS_TIME_INTERVAL_NS "1000000" CACHE STRING "Profiling time interval in nanosecond")

# Scheduling Options
set(DATACRUMBS_SCHEDULER_TYPE "FLUX" CACHE STRING "Scheduler type for datacrumbs (FLUX, SLURM, OPENMPI, or NONE)")
set_property(CACHE DATACRUMBS_SCHEDULER_TYPE PROPERTY STRINGS FLUX SLURM OPENMPI NONE)
set(DATACRUMBS_SCHEDULER_JOBID_ENV_VAR "NONE" CACHE STRING "Scheduler job ID environment variable name")
set(DATACRUMBS_SCHEDULER_NODES_CMD_OPT "NONE" CACHE STRING "Scheduler option for setting nodes")
set(DATACRUMBS_SCHEDULER_PPN_CMD_OPT "NONE" CACHE STRING "Scheduler option for setting processes per node")
set(DATACRUMBS_SCHEDULER_RUN_CMD "NONE" CACHE STRING "Scheduler run command")
set(DATACRUMBS_SCHEDULER_RUN_EXTRA_ARGS "" CACHE STRING "Scheduler run extra args")

# Other options
set(DATACRUMBS_LOG_LEVEL_STR "INFO" CACHE STRING "Log Level for compiling ${UPPER_PROJECT_NAME}")
set_property(CACHE DATACRUMBS_LOG_LEVEL_STR PROPERTY STRINGS ERROR WARN INFO DEBUG TRACE)
Expand All @@ -92,7 +102,6 @@ set(DATACRUMBS_KERNEL_HEADERS_PATH "" CACHE STRING "Path to the kernel headers d
option(DATACRUMBS_BUILD_ONLY "Build only the datacrumbs library without installation" OFF)
set(DATACRUMBS_KERNEL_PATH "" CACHE STRING "Path to the kernel source directory")


# ------------------------------------------------------------------------------
# Derive CMake variables based on options
# ------------------------------------------------------------------------------
Expand Down Expand Up @@ -140,10 +149,16 @@ message(STATUS " - Found kernel headers at: ${DATACRUMBS_KERNEL_HEAD
message(STATUS " - DATACRUMBS_KERNEL_UNAME_R: ${DATACRUMBS_KERNEL_UNAME_R}")
message(STATUS " - DATACRUMBS_CONFIGURED_TRACE_DIR: ${DATACRUMBS_CONFIGURED_TRACE_DIR}")
message(STATUS " - DATACRUMBS_CONFIGURED_LOG_DIR: ${DATACRUMBS_CONFIGURED_LOG_DIR}")
message(STATUS " - DATACRUMBS_SCHEDULER_TYPE: ${DATACRUMBS_SCHEDULER_TYPE}")
message(STATUS " - DATACRUMBS_SCHEDULER_JOBID_ENV_VAR: ${DATACRUMBS_SCHEDULER_JOBID_ENV_VAR}")
message(STATUS " - DATACRUMBS_SCHEDULER_NODES_CMD_OPT: ${DATACRUMBS_SCHEDULER_NODES_CMD_OPT}")
message(STATUS " - DATACRUMBS_SCHEDULER_PPN_CMD_OPT: ${DATACRUMBS_SCHEDULER_PPN_CMD_OPT}")
message(STATUS " - DATACRUMBS_SCHEDULER_RUN_CMD: ${DATACRUMBS_SCHEDULER_RUN_CMD}")

if(NOT EXISTS "${DATACRUMBS_CONFIGURED_TRACE_DIR}")
message(FATAL_ERROR "[${UPPER_PROJECT_NAME}] DATACRUMBS_CONFIGURED_TRACE_DIR does not exist: ${DATACRUMBS_CONFIGURED_TRACE_DIR}")
endif()

if(NOT EXISTS "${DATACRUMBS_CONFIGURED_LOG_DIR}")
message(FATAL_ERROR "[${UPPER_PROJECT_NAME}] DATACRUMBS_CONFIGURED_LOG_DIR does not exist: ${DATACRUMBS_CONFIGURED_LOG_DIR}")
endif()
Expand Down Expand Up @@ -424,7 +439,7 @@ add_dependencies(datacrumbs_obj datacrumbs_bpf_skel)

# Build the final executable by linking server.cpp and the object library
add_executable(${PROJECT_NAME} ${DATACRUMBS_SERVER_SRC})
target_link_libraries(${PROJECT_NAME} ${DEPENDENCY_LIB} datacrumbs_obj)
target_link_libraries(${PROJECT_NAME} datacrumbs_obj ${DEPENDENCY_LIB})
add_dependencies(${PROJECT_NAME} datacrumbs_bpf_skel datacrumbs_obj)

# Install the main processing executable into DATACRUMBS_INSTALL_BINARYDIR
Expand Down Expand Up @@ -587,6 +602,8 @@ set(_DATACRUMBS_DATA_FILES
"${CMAKE_DATA_OUTPUT_DIRECTORY}/categories-${DATACRUMBS_USER}-${DATACRUMBS_HOST}.json"
"${CMAKE_DATA_OUTPUT_DIRECTORY}/probes-${DATACRUMBS_USER}-${DATACRUMBS_HOST}.json"
)
# Ensure the data output directory exists
file(MAKE_DIRECTORY ${CMAKE_DATA_OUTPUT_DIRECTORY})

if(_DATACRUMBS_DATA_FILES)
install(FILES ${_DATACRUMBS_DATA_FILES}
Expand Down Expand Up @@ -795,15 +812,15 @@ if(NOT DATACRUMBS_INCLUSION_PATH STREQUAL "NONE")
set(DATACRUMBS_VARS ${DATACRUMBS_VARS} --inclusion_path ${DATACRUMBS_INCLUSION_PATH})
endif()

add_test(NAME datacrumbs_start COMMAND ${DATACRUMBS_PATH}/datacrumbs start ${DATACRUMBS_HOST} ${DATACRUMBS_VARS})
add_test(NAME datacrumbs_start COMMAND ${DATACRUMBCMAKE_RUNTIME_OUTPUT_DIRECTORYS_PATH}/datacrumbs start ${DATACRUMBS_HOST} ${DATACRUMBS_VARS})
set_tests_properties(datacrumbs_start PROPERTIES DEPENDS datacrumbs_pretest)
set_tests_properties(datacrumbs_start PROPERTIES DEPENDS ${PROJECT_NAME})

add_test(NAME datacrumbs_run COMMAND ${DATACRUMBS_PATH}/datacrumbs run ${DATACRUMBS_HOST} ${DATACRUMBS_VARS})
add_test(NAME datacrumbs_run COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/datacrumbs run ${DATACRUMBS_HOST} ${DATACRUMBS_VARS})
set_tests_properties(datacrumbs_run PROPERTIES DEPENDS datacrumbs_pretest)
set_tests_properties(datacrumbs_run PROPERTIES DEPENDS ${PROJECT_NAME})

add_test(NAME datacrumbs_stop COMMAND ${DATACRUMBS_PATH}/datacrumbs stop ${DATACRUMBS_HOST} ${DATACRUMBS_VARS})
add_test(NAME datacrumbs_stop COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/datacrumbs stop ${DATACRUMBS_HOST} ${DATACRUMBS_VARS})
set_tests_properties(datacrumbs_stop PROPERTIES DEPENDS datacrumbs_pretest)
set_tests_properties(datacrumbs_stop PROPERTIES DEPENDS ${PROJECT_NAME})

Expand Down
1 change: 1 addition & 0 deletions cmake/configure_files/datacrumbs_config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#cmakedefine DATACRUMBS_CONFIG_PATH "@DATACRUMBS_CONFIG_PATH@"
#cmakedefine DATACRUMBS_LOG_DIR "@DATACRUMBS_LOG_DIR@"
#cmakedefine DATACRUMBS_DATA_DIR "@DATACRUMBS_DATA_DIR@"
#cmakedefine DATACRUMBS_INSTALL_RUNSTATEDIR "@DATACRUMBS_INSTALL_RUNSTATEDIR@/@PROJECT_NAME@"

#cmakedefine DATACRUMBS_ENABLE_INCLUSION_PATH @DATACRUMBS_ENABLE_INCLUSION_PATH@
#ifndef DATACRUMBS_ENABLE_INCLUSION_PATH
Expand Down
76 changes: 69 additions & 7 deletions cmake/modules/datacrumbs-utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ macro(include_dependencies)
message(FATAL_ERROR "[${UPPER_PROJECT_NAME}] libbpf version 1.0.0 or newer is required, but found ${LIBBPF_VERSION}")
endif()

set(PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})

# include all links
if(LIBBPF_FOUND)
include_directories(${LIBBPF_INCLUDEDIR})
Expand Down Expand Up @@ -94,7 +96,7 @@ macro(include_dependencies)
if(json-c_FOUND)
get_filename_component(json-c_INCLUDE_DIR "${json-c_DIR}/../../../include" ABSOLUTE)
get_filename_component(json-c_LIBRARY_DIR "${json-c_DIR}/../../" ABSOLUTE)
include_directories(json-c::json-c)
include_directories(${json-c_INCLUDE_DIR})
list(APPEND DEPENDENCY_LIBRARY_DIRS ${json-c_LIBRARY_DIR})
set(DEPENDENCY_LIB ${DEPENDENCY_LIB} -ljson-c)
else()
Expand All @@ -105,7 +107,7 @@ macro(include_dependencies)
include_directories(${ZLIB_INCLUDE_DIRS})
get_filename_component(ZLIB_LIBRARY_DIRS "${ZLIB_LIBRARIES}/../" ABSOLUTE)
list(APPEND DEPENDENCY_LIBRARY_DIRS ${ZLIB_LIBRARY_DIRS})
set(DEPENDENCY_LIB ${DEPENDENCY_LIB} ZLIB::ZLIB)
set(DEPENDENCY_LIB ${DEPENDENCY_LIB} -lz)
else()
message(FATAL_ERROR "-- [${UPPER_PROJECT_NAME}] zlib is needed for ${PROJECT_NAME} build")
endif()
Expand All @@ -119,11 +121,13 @@ macro(include_dependencies)
if(MPI_CXX_LIBRARIES)
# If MPI_CXX_LIBRARIES is a list, get parent dir of each library
set(MPI_CXX_LIBRARY_DIR "")

foreach(_lib ${MPI_CXX_LIBRARIES})
get_filename_component(_lib_dir "${_lib}" DIRECTORY)
get_filename_component(_lib_dir "${_lib_dir}" ABSOLUTE)
list(APPEND MPI_CXX_LIBRARY_DIR "${_lib_dir}")
endforeach()

list(REMOVE_DUPLICATES MPI_CXX_LIBRARY_DIR)
else()
get_filename_component(MPI_CXX_LIBRARY_DIR "${MPI_CXX_LIBRARIES}" DIRECTORY)
Expand Down Expand Up @@ -152,6 +156,7 @@ macro(include_dependencies)
string(REPLACE ";" ":" DEPENDENCY_LIBRARY_DIRS_COLON "${DEPENDENCY_LIBRARY_DIRS}")
set(CMAKE_INSTALL_RPATH "${DEPENDENCY_LIBRARY_DIRS}")
set(CMAKE_BUILD_RPATH "${DEPENDENCY_LIBRARY_DIRS}")

# print_all_variables()
endmacro(include_dependencies)

Expand Down Expand Up @@ -259,6 +264,59 @@ macro(derive_configurations)
endif()

set(DATACRUMBS_CMAKE_KERNEL_VERSION "(${KERNEL_VERSION_MAJOR}, ${KERNEL_VERSION_MINOR}, ${KERNEL_VERSION_PATCH})")

# Set Scheduler options
# Check if scheduler configuration is complete
if((DATACRUMBS_SCHEDULER_JOBID_ENV_VAR STREQUAL "NONE" OR
DATACRUMBS_SCHEDULER_NODES_CMD_OPT STREQUAL "NONE" OR
DATACRUMBS_SCHEDULER_PPN_CMD_OPT STREQUAL "NONE" OR
DATACRUMBS_SCHEDULER_RUN_CMD STREQUAL "NONE") AND
DATACRUMBS_SCHEDULER_TYPE STREQUAL "NONE")
message(FATAL_ERROR "[${UPPER_PROJECT_NAME}] Incomplete scheduler configuration. Either use a predefined scheduler option by setting DATACRUMBS_SCHEDULER_TYPE, or set all of the following variables: DATACRUMBS_SCHEDULER_ALLOC_CMD, DATACRUMBS_SCHEDULER_JOBID_ENV_VAR, DATACRUMBS_SCHEDULER_NODES_CMD_OPT, DATACRUMBS_SCHEDULER_PPN_CMD_OPT, DATACRUMBS_SCHEDULER_RUN_CMD")
endif()

if (DATACRUMBS_SCHEDULER_JOBID_ENV_VAR STREQUAL "NONE")
if(DATACRUMBS_SCHEDULER_TYPE STREQUAL "SLURM")
set(DATACRUMBS_SCHEDULER_JOBID_ENV_VAR "SLURM_JOB_ID")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "OPENMPI")
set(DATACRUMBS_SCHEDULER_JOBID_ENV_VAR "OMPI_COMM_WORLD_RANK")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "FLUX")
set(DATACRUMBS_SCHEDULER_JOBID_ENV_VAR "FLUX_JOB_ID")
endif()
endif()

if (DATACRUMBS_SCHEDULER_NODES_CMD_OPT STREQUAL "NONE")
if(DATACRUMBS_SCHEDULER_TYPE STREQUAL "SLURM")
set(DATACRUMBS_SCHEDULER_NODES_CMD_OPT "-N")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "OPENMPI")
set(DATACRUMBS_SCHEDULER_NODES_CMD_OPT "-N")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "FLUX")
set(DATACRUMBS_SCHEDULER_NODES_CMD_OPT "-N")
endif()
endif()

if (DATACRUMBS_SCHEDULER_PPN_CMD_OPT STREQUAL "NONE")
if(DATACRUMBS_SCHEDULER_TYPE STREQUAL "SLURM")
set(DATACRUMBS_SCHEDULER_PPN_CMD_OPT "--ntasks-per-node")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "OPENMPI")
set(DATACRUMBS_SCHEDULER_PPN_CMD_OPT "--map-by ppr:")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "FLUX")
set(DATACRUMBS_SCHEDULER_PPN_CMD_OPT "--tasks-per-node")
endif()
endif()

if (DATACRUMBS_SCHEDULER_RUN_CMD STREQUAL "NONE")
if(DATACRUMBS_SCHEDULER_TYPE STREQUAL "SLURM")
set(DATACRUMBS_SCHEDULER_RUN_CMD "srun")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "OPENMPI")
set(DATACRUMBS_SCHEDULER_RUN_CMD "mpirun")
elseif(DATACRUMBS_SCHEDULER_TYPE STREQUAL "FLUX")
set(DATACRUMBS_SCHEDULER_RUN_CMD "flux run")
endif()
endif()



endmacro(derive_configurations)

macro(find_system_details)
Expand Down Expand Up @@ -419,10 +477,10 @@ macro(load_build_variables)
set(CMAKE_INSTALL_INCLUDEDIR include)
set(CMAKE_INSTALL_DOCDIR doc)
set(CMAKE_INSTALL_SYSCONFDIR etc)
set(CMAKE_INSTALL_LIBEXECDIR libexec)
set(CMAKE_INSTALL_RUNSTATEDIR run)
endif()

set(CMAKE_INSTALL_LIBEXEC_DIR libexec)

set(DATACRUMBS_INSTALL_BINARYDIR
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})
set(DATACRUMBS_INSTALL_SBINARYDIR
Expand All @@ -436,7 +494,7 @@ macro(load_build_variables)
set(DATACRUMBS_INSTALL_SYSCONFDIR
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_SYSCONFDIR}/${PROJECT_NAME})
set(DATACRUMBS_INSTALL_LIBEXEC
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXEC_DIR}/${PROJECT_NAME})
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME})
else()
set(DATACRUMBS_INSTALL_BINARYDIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
set(DATACRUMBS_INSTALL_SBINARYDIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
Expand All @@ -445,9 +503,8 @@ macro(load_build_variables)
set(DATACRUMBS_INSTALL_DOCDIR "${CMAKE_BINARY_DIR}/doc")
set(DATACRUMBS_INSTALL_SYSCONFDIR "${CMAKE_BINARY_DIR}/etc/${PROJECT_NAME}")
set(DATACRUMBS_INSTALL_LIBEXEC ${CMAKE_LIBEXEC_OUTPUT_DIRECTORY})
set(DATACRUMBS_RUNSTATEDIR "run")
endif()

set(CMAKE_INSTALL_LIBEXEC_DIR libexec)
set(CMAKE_INSTALL_CONFIGS_DIR configs)
set(CMAKE_INSTALL_DATA_DIR data)
set(CMAKE_INSTALL_MODULES_DIR lmod/modulefiles)
Expand All @@ -459,6 +516,11 @@ macro(load_build_variables)
set(DATACRUMBS_INSTALL_ETC_CMAKE ${DATACRUMBS_INSTALL_SYSCONFDIR}/cmake)
set(DATACRUMBS_INSTALL_ETC_SYSTEMD ${DATACRUMBS_INSTALL_SYSCONFDIR}/systemd)
set(DATACRUMBS_INSTALL_ETC_FLUX ${DATACRUMBS_INSTALL_SYSCONFDIR}/flux)
if (DATACRUMBS_CONFIGURED_RUN_DIR AND NOT DATACRUMBS_CONFIGURED_RUN_DIR STREQUAL "" AND NOT DATACRUMBS_CONFIGURED_RUN_DIR STREQUAL "NONE")
set(DATACRUMBS_INSTALL_RUNSTATEDIR ${DATACRUMBS_CONFIGURED_RUN_DIR})
else()
set(DATACRUMBS_INSTALL_RUNSTATEDIR /${CMAKE_INSTALL_RUNSTATEDIR})
endif()

# Set this at the top level of your project, before any install commands
set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY TRUE)
Expand Down
Binary file added docs/DataCrumbs_IPDPS_26-2.pdf
Binary file not shown.
Loading